ZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCA0ZTMzNWM0Li4yOTI3ZjUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvTWFrZWZpbGUgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL01ha2VmaWxlCmluZGV4IGYxMTg0Y2IuLjU2NDRmYWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvTWFrZWZpbGUKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9NYWtlZmlsZQpAQCAtMSw1NSArMSwzMCBAQAogIy8qDQotIyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotIwkNCi0jDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSMgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0jICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0jICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotIyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSMgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0jICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotIyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jDQotIw0KLSMgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0jDQotIyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotIyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0jICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0jICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSMgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0jICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotIyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0jICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotIyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotIyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSMgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSMgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSMgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0jICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLSMNCi0jICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSMNCi0jICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSMgICAgY29udGFjdCBkZXRhaWxzLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotIyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0jICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotIyovDQorIyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorIyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjICoNCisjICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyMgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyMgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorIyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorIyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisjICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorIyAqDQorIyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyMgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyMgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorIyAqDQorIyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorIyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorIyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyMgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisjICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisjICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisjICoNCisjICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisjICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorIyAqDQorIyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyMgKi8NCiANCiBDQz1hcm0tZWxmLWdjYw0KIE9CSkNPUFk9YXJtLWVsZi1vYmpjb3B5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggNWMzMWIxNS4uNmExOTBhOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL21haW4uYwppbmRleCAwOGQ5YTAzLi4yMGM4NDBhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGRjMmRmNDAuLjljNTZkNWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxRlI0MDAwOF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVTQVJUMC4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFGUjQwMDA4X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwppbmRleCBiZWE2N2Q3Li4yMDUwY2Y1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MUZSNDAwMDhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDc3NTBjYzEuLjQ1MGQ2MDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMGUzNjFiNC4uZjc0YWQ4ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAicGFydGVzdC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvVVNCL1VTQlNhbXBsZS5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9VU0IvVVNCU2FtcGxlLmMKaW5kZXggOTNjNWIzNy4uN2Q1NDk2MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9VU0IvVVNCU2FtcGxlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0FUOTFTQU03UzY0X0lBUi9VU0IvVVNCU2FtcGxlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCVNhbXBsZSBpbnRlcnJ1cHQgZHJpdmVuIFVTQiBkZXZpY2UgZHJpdmVyLiAgVGhpcyBpcyBhIG1pbmltYWwgaW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvbWFpbi5jCmluZGV4IDE1MmEwYTUuLjc0ZjIxNjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfQVQ5MVNBTTdTNjRfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDYyMDZkMTYuLjQ1ZWE2NmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19BVDkxU0FNN1M2NF9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDFmYjAwMzQuLmNkZDhhMmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9NYWtlZmlsZSBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9NYWtlZmlsZQppbmRleCBhNjE1Y2MzLi5lMjMzOTYyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvTWFrZWZpbGUKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL01ha2VmaWxlCkBAIC0xLDU1ICsxLDMwIEBACiAjLyoNCi0jICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0jCQ0KLSMNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotIyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSMgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSMgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0jICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotIyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSMgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0jICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMNCi0jDQotIyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLSMNCi0jICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0jICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSMgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSMgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotIyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSMgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0jICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSMgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0jICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0jICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotIyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotIyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotIyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSMgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotIw0KLSMgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotIw0KLSMgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotIyAgICBjb250YWN0IGRldGFpbHMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0jICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSMgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0jKi8NCisjICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisjICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMgKg0KKyMgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorIyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorIyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisjICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisjICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyMgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisjICoNCisjICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorIyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorIyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisjICoNCisjICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisjICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisjICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorIyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyMgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyMgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyMgKg0KKyMgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyMgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisjICoNCisjICogMSB0YWIgPT0gNCBzcGFjZXMhDQorIyAqLw0KIA0KIENDPWFybS1lbGYtZ2NjDQogT0JKQ09QWT1hcm0tZWxmLW9iamNvcHkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZGM2MTNlZC4uZjQyMDE1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYyLjUuMg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0MvbWFpbi5jCmluZGV4IDE3YTIwMjEuLjQ1MTc1MmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL3NlcmlhbC9zZXJpYWwuYwppbmRleCA2MjFmMjYwLi5lOGQ5OTEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMi40LjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMDZfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwppbmRleCA2ZTgyOTdhLi42ZGNlMDdlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEwNl9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTA2X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMjI0ZTVjZi4uY2FkMDU4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDBmZjk5NmQuLjhmMWQ4YmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcyBmb3IgdGhlIExFRCdzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvbWFpbi5jCmluZGV4IDVjMjc1YzkuLjVhYmJlOTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCAzOTRhYjJmLi5iZmMxOTYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvRnJlZVJUT1NDb25maWcuaAppbmRleCAxOWYxOTc5Li40OTNjMzIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggNjE2MDYzYi4uZmJlZTdiZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9tYWluLmMKaW5kZXggODg4ZGQ3NC4uYjNjYzU2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAJTk9URSA6IFRhc2tzIHJ1biBpbiBzeXN0ZW0gbW9kZSBhbmQgdGhlIHNjaGVkdWxlciBydW5zIGluIFN1cGVydmlzb3IgbW9kZS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL3NlcmlhbC9zZXJpYWwuYwppbmRleCA2MjdmYjhjLi43Y2NmODhlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsSVNSLnMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEyOV9LZWlsX1JWRFMvc2VyaWFsL3NlcmlhbElTUi5zCmluZGV4IDQ0ODNmYTIuLmM4MjNiMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTI5X0tlaWxfUlZEUy9zZXJpYWwvc2VyaWFsSVNSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMjlfS2VpbF9SVkRTL3NlcmlhbC9zZXJpYWxJU1IucwpAQCAtMSw2NCArMSwzOSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQotCQkNCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KIAlJTkNMVURFIHBvcnRtYWNyby5pbmMNCi0JDQorDQogCTtUaGUgVUFSVCBpbnRlcnJ1cHQgZW50cnkgcG9pbnQgaXMgZGVmaW5lZCB3aXRoaW4gYW4gYXNzZW1ibHkgd3JhcHBlcg0KIAk7d2l0aGluIHRoaXMgZmlsZS4gIFRoaXMgdGFrZXMgY2FyZSBvZiB0aGUgdGFzayBjb250ZXh0IHNhdmluZyBiZWZvcmUgaXQNCiAJO2NhbGxzIHRoZSBtYWluIGhhbmRsZXIgKHZVQVJUX0lTUkhhbmRsZXIoKSkgd2hpY2ggaXMgd3JpdHRlbiBpbiBDIHdpdGhpbg0KIAk7c2VyaWFsLmMuICBUaGUgZXhlY3V0aW9uIG9mIHRoZSBoYW5kbGVyIGNhbiB1bmJsb2NrIHRhc2tzIHRoYXQgd2VyZSBibG9ja2VkDQotCTt3YWl0aW5nIGZvciBVQVJUIGV2ZW50cy4gIE9uY2UgdGhlIGhhbmRsZXIgY29tcGxldGVzIHRoZSBhc20gd3JhcHBlciANCi0JO2ZpbmlzaGVzIG9mZiBieQlyZXN0b3JpbmcgdGhlIGNvbnRleHQgb2Ygd2hpY2hldmVyIHRhc2sgaXMgbm93IHNlbGVjdGVkIHRvIA0KKwk7d2FpdGluZyBmb3IgVUFSVCBldmVudHMuICBPbmNlIHRoZSBoYW5kbGVyIGNvbXBsZXRlcyB0aGUgYXNtIHdyYXBwZXINCisJO2ZpbmlzaGVzIG9mZiBieQlyZXN0b3JpbmcgdGhlIGNvbnRleHQgb2Ygd2hpY2hldmVyIHRhc2sgaXMgbm93IHNlbGVjdGVkIHRvDQogCTtlbnRlciB0aGUgUlVOTklORyBzdGF0ZSAod2hpY2ggbWlnaHQgbm93IGJlIGEgZGlmZmVyZW50IHRhc2sgdG8gdGhhdCB3aGljaA0KIAk7d2FzIG9yaWdpbmFsbHkgaW50ZXJydXB0ZWQuDQogCUlNUE9SVCB2VUFSVF9JU1JIYW5kbGVyDQpAQCAtNzQsMTQgKzQ5LDE0IEBACiAJUFJFU0VSVkU4DQogDQogCTsgU2F2ZSB0aGUgY29udGV4dCBvZiB0aGUgaW50ZXJydXB0ZWQgdGFzay4NCi0JcG9ydFNBVkVfQ09OVEVYVAkJCQ0KKwlwb3J0U0FWRV9DT05URVhUDQogDQogCTsgQ2FsbCB0aGUgQyBoYW5kbGVyIGZ1bmN0aW9uIC0gZGVmaW5lZCB3aXRoaW4gc2VyaWFsLmMuDQogCUxEUiBSMCwgPXZVQVJUX0lTUkhhbmRsZXINCi0JTU9WIExSLCBQQwkJCQkNCisJTU9WIExSLCBQQw0KIAlCWCBSMA0KIA0KLQk7IEZpbmlzaCBvZmYgYnkgcmVzdG9yaW5nIHRoZSBjb250ZXh0IG9mIHRoZSB0YXNrIHRoYXQgaGFzIGJlZW4gY2hvc2VuIHRvIA0KKwk7IEZpbmlzaCBvZmYgYnkgcmVzdG9yaW5nIHRoZSBjb250ZXh0IG9mIHRoZSB0YXNrIHRoYXQgaGFzIGJlZW4gY2hvc2VuIHRvDQogCTsgcnVuIG5leHQgLSB3aGljaCBtaWdodCBiZSBhIGRpZmZlcmVudCB0YXNrIHRvIHRoYXQgd2hpY2ggd2FzIG9yaWdpbmFsbHkNCiAJOyBpbnRlcnJ1cHRlZC4NCiAJcG9ydFJFU1RPUkVfQ09OVEVYVA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMjVjYWNmOC4uMjdlYzQ4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9tYWluLmMKaW5kZXggYWYxMTNkOS4uNmEwNjZhZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyBhIGRlbW8gY3JlYXRlZCB0byBleGVjdXRlIG9uIHRoZSBSb3dsZXkgQXNzb2NpYXRlcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9tYWluSVNSLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjEzOF9Sb3dsZXkvbWFpbklTUi5jCmluZGV4IDZlNmQxOTIuLjYzY2MwZDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMTM4X1Jvd2xleS9tYWluSVNSLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIxMzhfUm93bGV5L21haW5JU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInNlbXBoci5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAzMTFlNjFhLi41ODc5ZjJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vTWFrZWZpbGUgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL01ha2VmaWxlCmluZGV4IGMwODAwMmMuLmVjZjZlODQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vTWFrZWZpbGUKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9NYWtlZmlsZQpAQCAtMSw1NSArMSwzMCBAQAogIy8qDQotIyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotIwkNCi0jDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSMgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0jICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0jICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotIyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSMgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0jICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotIyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jDQotIw0KLSMgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0jDQotIyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotIyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0jICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0jICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSMgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0jICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotIyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0jICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotIyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotIyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSMgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSMgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSMgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0jICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLSMNCi0jICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSMNCi0jICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSMgICAgY29udGFjdCBkZXRhaWxzLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotIyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0jICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotIyovDQorIyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorIyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjICoNCisjICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyMgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyMgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorIyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorIyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisjICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorIyAqDQorIyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyMgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyMgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorIyAqDQorIyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorIyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorIyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyMgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisjICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisjICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisjICoNCisjICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisjICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorIyAqDQorIyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyMgKi8NCiANCiANCiBSVE9TX1NPVVJDRV9ESVI9Li4vLi4vLi4vU291cmNlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYjhkOWUyZi4uOTg5MTE5ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUy5vcmcgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL21haW4uYwppbmRleCBhMDZhNzhiLi4yZWNiNjliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCBiNGM4MzVjLi45MDU4MTc5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGRmNWE2MTIuLjVhMmUxODAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiOGQ5ZTJmLi45ODkxMTlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUy5vcmcgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS9tYWluLmMKaW5kZXggNjgwMTY1NS4uYzVlNDRhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBFbnZpcm9ubWVudCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8dGFyZ2V0cy9MUEMyMzY4Lmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9BUk03X0xQQzIzNjhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDFkODBiYTEuLjY0YWNlZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19MUEMyMzY4X1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfTFBDMjM2OF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBmNDU3YzA0Li5kMjg2MmNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA1M2I5YzYxLi5kNzZlNmM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogTGlicmFyeSBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiR1BJTy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL21haW4uYwppbmRleCAxOGQ3YjFkLi5iNGZiNDg5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3MXhfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCBmMjE3ZDZkLi5kNDY0ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzF4X0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjcxeF9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggM2YxYzhhZC4uZDkwZTg2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMDc5YWI0My4uNDY2YWE1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIExpYnJhcnkgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIjc1eF9HUElPLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0MvbWFpbi5jCmluZGV4IDUwNDNkZGQuLjg1NTc3MzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0Mvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDRlODdhNmQuLjk3YmI3NjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0dDQy9zZXJpYWwvc2VyaWFsSVNSLmMKaW5kZXggZDA3YjMwNi4uYTcwYzk2ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9HQ0Mvc2VyaWFsL3NlcmlhbElTUi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfR0NDL3NlcmlhbC9zZXJpYWxJU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIENvbXBvbmVudHMgdGhhdCBjYW4gYmUgY29tcGlsZWQgdG8gZWl0aGVyIEFSTSBvciBUSFVNQiBtb2RlIGFyZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDI1OWQ2ODMuLjlhMzZmYjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDA3OWFiNDMuLjQ2NmFhNTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBMaWJyYXJ5IGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICI3NXhfR1BJTy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL21haW4uYwppbmRleCAyYzIyMzgwLi44NjljNzQ5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNN19TVFI3NXhfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCBkNTM5MzNhLi42MmQyNzk1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTdfU1RSNzV4X0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk03X1NUUjc1eF9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBlMjU1NjViLi4xZDgwYzRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYWQ1ZTYyZS4uZGE5YjY2OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInBhcnRlc3QuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL21haW4uYwppbmRleCBkZmJlZDlhLi41OGQ3ZmFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9BVDkxU0FNOVhFX0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggODM1NTEzYi4uY2U1YWRjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X0FUOTFTQU05WEVfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfQVQ5MVNBTTlYRV9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMDFlODVkNi4uNjAzZThkMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggMGMyYzExMC4uZDFmYWM1YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIExpYnJhcnkgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgICI5MXhfbGliLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbHdpcC9pbmNsdWRlL2x3SVBXZWJTZXJ2ZXIvQmFzaWNXRUIuaCBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL2x3aXAvaW5jbHVkZS9sd0lQV2ViU2VydmVyL0Jhc2ljV0VCLmgKaW5kZXggY2ExMWNiYS4uNWFjNTkxOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbHdpcC9pbmNsdWRlL2x3SVBXZWJTZXJ2ZXIvQmFzaWNXRUIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2luY2x1ZGUvbHdJUFdlYlNlcnZlci9CYXNpY1dFQi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEJBU0lDX1dFQl9TRVJWRVJfSA0KICNkZWZpbmUgQkFTSUNfV0VCX1NFUlZFUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbHdpcC9sd2lwV2ViU2VydmVyL0Jhc2ljV0VCLmMgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2x3aXBXZWJTZXJ2ZXIvQmFzaWNXRUIuYwppbmRleCA2YmY3MzU1Li4zMDVkZTE4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2x3aXBXZWJTZXJ2ZXIvQmFzaWNXRUIuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9sd2lwL2x3aXBXZWJTZXJ2ZXIvQmFzaWNXRUIuYwpAQCAtMSw3MiArMSwzMSBAQAogDQogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJSW1wbGVtZW50cyBhIHNpbXBsaXN0aWMgV0VCIHNlcnZlci4gIEV2ZXJ5IHRpbWUgYSBjb25uZWN0aW9uIGlzIG1hZGUgYW5kDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvbWFpbi5jCmluZGV4IGU3OTk2ZGYuLjYyYjNiZjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCU5PVEUgOiBUYXNrcyBydW4gaW4gc3lzdGVtIG1vZGUgYW5kIHRoZSBzY2hlZHVsZXIgcnVucyBpbiBTdXBlcnZpc29yIG1vZGUuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BUk05X1NUUjkxWF9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDVjZDczNzYuLjNhYTdlZjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FSTTlfU1RSOTFYX0lBUi93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDI2MzM0YjEuLmY3NmUyZTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVJNOV9TVFI5MVhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlIzMl9VQzMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BVlIzMl9VQzMvbWFpbi5jCmluZGV4IDA2MTQxNGMuLjhiMjU1ZDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSMzJfVUMzL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUjMyX1VDMy9tYWluLmMKQEAgLTMwLDczICszMCwzMiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlIDxzdGRpby5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCAzYzM4MWZkLi45NTM4NWZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDYzMzM0MzguLmQ0ODVlNTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYyLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9tYWluLmMKaW5kZXggYzVlZmYwYy4uZGZhMTcyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9yZWd0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuYwppbmRleCA2ZTQzZTA0Li4xYmQwMDQ2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGUgZmlsZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9yZWd0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuaAppbmRleCAwOWYyMDIzLi5mNTg4ZjM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3JlZ3Rlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBSRUdfVEVTVF9IDQogI2RlZmluZSBSRUdfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCBmYjdlMDE0Li4xNzk3NjBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIElBUiBBVlIgUE9SVC4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOTQ4OWM1Ni4uN2JmNmY4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA0YjBjNTliLi5jMzg2Njc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMi4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0FWUl9BVE1lZ2EzMjNfV2luQVZSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvbWFpbi5jCmluZGV4IDhkZTY0NDQuLjhhZjE2YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvcmVndGVzdC5jIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmMKaW5kZXggMzU0NmFkYS4uOWFhMDFiYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlIGZpbGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvcmVndGVzdC5oIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmgKaW5kZXggMDlmMjAyMy4uZjU4OGYzNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9yZWd0ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUkVHX1RFU1RfSA0KICNkZWZpbmUgUkVHX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQVZSX0FUTWVnYTMyM19XaW5BVlIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggMmY3Yzk5MS4uN2M1ZjAxMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9BVlJfQVRNZWdhMzIzX1dpbkFWUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvRnJlZVJUT1NDb25maWcuaAppbmRleCA4NTdmZDQ2Li4yODZmOTVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL1BhclRlc3QuYwppbmRleCBlZDIyOWE5Li43ZTg5NTg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1ibGlua3kuYwppbmRleCA5NmJjOGU5Li42MDgwMGMzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL21haW4tZnVsbC5jCmluZGV4IDZiZDU5Y2IuLjg2ODk0ZDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfSUFSX2FuZF9LZWlsL3VJUF9UYXNrLmMKaW5kZXggOGYyNjcxNC4uMzk0MTUwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX0lBUl9hbmRfS2VpbC91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9JQVJfYW5kX0tlaWwvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDRmMWIzMS4uNzRmZTIwMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9QYXJUZXN0LmMKaW5kZXggZWQyMjlhOS4uN2U4OTU4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1ibGlua3kuYwppbmRleCAzMThkYWQ4NS4uOTU3MzM0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL21haW4tZnVsbC5jCmluZGV4IDM1YWIxOWMuLmRhMzU4NjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0EyRjIwMF9Tb2Z0Q29uc29sZS9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogbWFpbi1ibGlua3kuYyBpcyBpbmNsdWRlZCB3aGVuIHRoZSAiQmxpbmt5IiBidWlsZCBjb25maWd1cmF0aW9uIGlzIHVzZWQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTJGMjAwX1NvZnRDb25zb2xlL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvdUlQX1Rhc2suYwppbmRleCA0NDczOTY0Li5mMzAxNWY3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BMkYyMDBfU29mdENvbnNvbGUvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGMzNjNjYTQuLjEwZDdjZjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCBmMDY3NzZkLi40MDdkNTY3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKaW5kZXggZGEwYTVkOS4uMjM2ZjJhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBmMTc0ODM3Li5iY2RiNjlhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogTk9URTogIEN1cnJlbnRseSBvbmx5IHRpbWVyIDEgYW5kIHRpbWVyIDIgYXJlIHVzZWQgLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggYjg4NjIzMy4uZDdiMGRmYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCmluZGV4IGQ3OGFlZjUuLjQ0NjExNDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLmdsb2JhbCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTUzXzY0LWJpdF9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX0E1My9zcmMvbWFpbi5jCmluZGV4IGNlZGJhZjkuLjMwZjliOTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1M182NC1iaXRfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19BNTMvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNTNfNjQtYml0X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fQTUzL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA0MzA1ZjUyLi4wMzNiNjFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmluZGV4IGY1ZmE5MDIuLjQ3MjYwMmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDFmM2FhZGUuLmIzMTBlYzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IGNkNTUzOWIuLjE3NDI4MWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKaW5kZXggOTQ2MjViZC4uYmY3NTZlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUwpAQCAtMSw3NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOw0KLTsgICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLTsgICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi07ICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotOyAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi07ICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLTsgICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLTsgICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotOyAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlFWFBPUlQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJRVhQT1JUIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0xFRHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9MRURzLmMKaW5kZXggOTQ2ZGQ0OS4uOTk4YzVlZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL0xFRHMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvTEVEcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL1JUT1NEZW1vLmV3ZCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9SVE9TRGVtby5ld2QKaW5kZXggOGUwZWM2ZS4uYjViZDFmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL1JUT1NEZW1vLmV3ZAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdkCkBAIC0xLDE1ODUgKzEsMTQxOSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQogPHByb2plY3Q+DQotICA8ZmlsZVZlcnNpb24+MjwvZmlsZVZlcnNpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+c3JhbTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yODwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICA8ZmlsZVZlcnNpb24+MzwvZmlsZVZlcnNpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+c3JhbTwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLm1hYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXENPTkZJR1xkZWJ1Z2dlclxBdG1lbFxBVFNBTUE1RDM1LmRkZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NS41MC4wLjUxOTA3PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Q01TSVNEQVBfSUQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjYwLjEuMTEyMDY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BUk1TSU1fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFOR0VMX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQW5nZWxIZWFydGJlYXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbXVuaWNhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTkdFTFRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9BbmdlbExvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QW5nZWxMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rSW5pdGlhbFNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RvSmxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQ29tbVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtTcGVlZFJhZGlvVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NVU0JEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RjcElwU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5SRElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWY2NUeXBlRGVmYXVsdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZvbHRhZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRWQ0NEZWZhdWx0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0U2V0dGxpbmd0aW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9KdGFnU3BlZWRUeXBlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0Q29ubmVjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjU8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2VPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8ZGVidWdnZXJQbHVnaW5zPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxIQ0NXYXJlXEhDQ1dhcmUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXFBlcmNlcGlvVHJhY2VFeHBvcnRlclxQZXJjZXBpb1RyYWNlRXhwb3J0UGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xRdWFkcm9zXFF1YWRyb3NfRVdCN19QbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXGNvbmZpZ1xmbGFzaGxvYWRlclw8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHRvb2xjaGFpblxpYXJcc3JhbS5tYWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxDT05GSUdcZGVidWdnZXJcQXRtZWxcQVRTQU1BNUQyNy5kZGY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUuNTAuMC41MTkwNzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkNNU0lTREFQX0lEPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+OC4yMC4xLjE0MTgxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hc3NFcmFzZUJlZm9yZUZsYXNoaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DQURJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDYWRpTWVtb3J5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZhc3QgTW9kZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTaXplTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEQVBOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RlYnVnQWNjZXNzUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USUZFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BdXRvbWF0aWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1iZWRcTWJlZEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcVGFyZ2V0QWNjZXNzU2VydmVyXFRhcmdldEFjY2Vzc1NlcnZlci5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KIDwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdwIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL1JUT1NEZW1vLmV3cAppbmRleCBjMWNkOWI0Li42ODYwYjU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvUlRPU0RlbW8uZXdwCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9SVE9TRGVtby5ld3AKQEAgLTEsMTUwNSArMSwxNTU3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5zcmFtPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgPGZpbGVWZXJzaW9uPjM8L2ZpbGVWZXJzaW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPnNyYW08L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW1cYmluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW1cb2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcsIHdpdGhvdXQgbXVsdGlieXRlIHN1cHBvcnQuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBmbGFncy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+QVRTQU1BNUQyNwlBdG1lbCBBVFNBTUE1RDI3PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5BVFNBTUE1RDI3CUF0bWVsIEFUU0FNQTVEMjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GUFUyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk5yUmVnczwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yNDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zMTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5DT05GSUdfQk9BUkRfU0FNQTVEMl9YUExBSU5FRDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5DT05GSUdfU09DX1NBTUE1RDI3PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPkNPTkZJR19IQVZFX1RXSV9BTFRFUk5BVEVfQ01EPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPkxFRFNfT05fSjE3PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+VFJBQ0VfTEVWRUw9MDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5DT05GSUdfSEFWRV9QSU80PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTExMTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ011bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxGdWxsX0RlbW88L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW88L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHM8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5TT0ZUUEFDSzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklJbnRlcndvcmsyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcERpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NSVFRJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj45PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNhbWE1ZDN4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+X19BU1NFTUJMWV9fPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW0uYmluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DVVNUT008L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KLSAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KLSAgICAgICAgPGhhc1ByaW8+MDwvaGFzUHJpbz4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KLSAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW0ub3V0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLmljZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnJlc2V0SGFuZGxlcjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0NhbGxHcmFwaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkF0bWVsIEZpbGVzPC9uYW1lPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbVxiaW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbVxvYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW1cb2JqPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcsIHdpdGhvdXQgbXVsdGlieXRlIHN1cHBvcnQuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBmbGFncy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+OC4yMC4xLjE0MTgxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BVFNBTUE1RDI3CUF0bWVsIEFUU0FNQTVEMjc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvcmVWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVEZXZpY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BVFNBTUE1RDI3CUF0bWVsIEFUU0FNQTVEMjc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZQVTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk5yUmVnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TkVPTjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NNU0lTUGFja1NlbGVjdERldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PZ0xpYkhlYXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMaWJBZGRpdGlvbmFsTG9jYWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVUYWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlRGlzcGxheU9ubHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5EU1BFeHRlbnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5DT05GSUdfQk9BUkRfU0FNQTVEMl9YUExBSU5FRDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Q09ORklHX1NPQ19TQU1BNUQyNzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Q09ORklHX0hBVkVfVFdJX0FMVEVSTkFURV9DTUQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkxFRFNfT05fSjE3PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD0wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5DT05GSUdfSEFWRV9QSU80PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTExMTEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcRnVsbF9EZW1vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsczwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5TT0ZUUEFDSzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuY0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0V4Y2VwdGlvbnMyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1JUVEkyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zYW1hNWQzeDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X19BU1NFTUJMWV9fPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW0uYmluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KKyAgICAgICAgICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQorICAgICAgICAgICAgICAgIDxoYXNQcmlvPjA8L2hhc1ByaW8+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQorICAgICAgICAgICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtLm91dDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHRvb2xjaGFpblxpYXJcc3JhbS5pY2Y8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5yZXNldEhhbmRsZXI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZV9BbHREZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0hlYXBTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2NhbGVTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5kcml2ZXJzPC9uYW1lPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPmNvcnRleC1hPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNvcnRleGE1X2ludGVycnVwdHMuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjb3J0ZXhhNV9pbnRlcnJ1cHRzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3AxNS5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTUuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1X2FzbV9pYXIuczwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1X3BtdS5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfcG11Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3Bzci5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwc3JfaWFyLnM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcTWFrZWZpbGUuaW5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXG1tdS5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXG1tdS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+bWlzYzwvbmFtZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xtaXNjXGxlZC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXG1pc2NcbGVkLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5wZXJpcGhlcmFsczwvbmFtZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xhaWMuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xhaWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xmbGV4Y29tLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcZmxleGNvbS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGwyY2MuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xsMmNjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbWF0cml4LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbWF0cml4Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvNC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBpbzQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaXQuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaXQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwbWMuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwbWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0Yy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHRjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdHdpLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdHdpZC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHdkdC5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHdkdC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHhkbWFjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNceGRtYWQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPnBvd2VyPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBvd2VyXGFjdDg5NDVhLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCisgICAgICAgIDxuYW1lPkF0bWVsIEZpbGVzPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPmRyaXZlcnM8L25hbWU+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5jb3J0ZXgtYTwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjb3J0ZXhhNV9pbnRlcnJ1cHRzLmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjb3J0ZXhhNV9pbnRlcnJ1cHRzLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1X2FzbV9pYXIuczwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXGNwMTVfcG11LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xjb3J0ZXgtYVxjcDE1X3BtdS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3Bzci5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcY3Bzcl9pYXIuczwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXE1ha2VmaWxlLmluYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXGNvcnRleC1hXG1tdS5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcY29ydGV4LWFcbW11Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgPG5hbWU+bWlzYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xtaXNjXGxlZC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNcbWlzY1xsZWQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5wZXJpcGhlcmFsczwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xhaWMuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXGFpYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcZmxleGNvbS5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcZmxleGNvbS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbDJjYy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbDJjYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcbWF0cml4LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xtYXRyaXguaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBpby5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvNC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGlvNC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccGl0LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1xwaXQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHBtYy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNccG1jLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x0Yy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdGMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHR3aS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcdHdpZC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGRyaXZlcnNccGVyaXBoZXJhbHNcd2R0LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x3ZHQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBlcmlwaGVyYWxzXHhkbWFjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcZHJpdmVyc1xwZXJpcGhlcmFsc1x4ZG1hZC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgIDxuYW1lPnBvd2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xkcml2ZXJzXHBvd2VyXGFjdDg5NDVhLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT50YXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5jb21wb25lbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWNjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9hZGMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2Flcy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWVzYi5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWljLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9heGlteC5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfY2hpcGlkLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9jbGFzc2QuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2ZsZXhjb20uaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2dtYWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2kyc2MuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2ljbS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaXNjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9sMmNjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9sY2RjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9tYXRyaXguaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X21jYW4uaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X21wZGRyYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGRtaWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3Bpby5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGl0Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9wbWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3B3bS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcXNwaS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcnN0Yy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcnRjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9yeGxwLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zY2tjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZG1tYy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2ZjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zZnIuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NmcmJ1Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zaGEuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NoZHdjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zbWMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NwaS5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc3NjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90Yy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdGRlcy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdHJuZy5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdHdpaHMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3VhcnQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3VkcGhzLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF93ZHQuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3hkbWFjLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgPG5hbWU+cGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDIxLmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyMi5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjMuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDI0Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyNi5oPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjcuaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDI4Lmg8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmQuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9sb3dsZXZlbC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX2xvd2xldmVsLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfbWVtb3JpZXMuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXB0Yy1lbmdpLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi12Yi1iZ2ExOTYuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXZiLWJnYTI4OS5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDIteHBsYWluZWQtcHJvdG8uaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXhwbGFpbmVkLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY2hpcC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNoaXAuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjaGlwX3BpbnMuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyMS5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHNhbWE1ZDIyLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjMuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyNC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHNhbWE1ZDI2Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjcuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxzYW1hNWQyOC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+dXRpbHM8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xhc3luYy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGNvbXBpbGVyLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcY3JjLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcZGJnX3V0aWwuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xmb250Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcaGFtbWluZy5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGludG1hdGguaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xpby5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGxjZF9jb2xvci5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGxjZF9kcmF3Lmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2ZvbnQuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xtdXRleC5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHJhbmQuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xyaW5nLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcdGltZXIuaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1x0cmFjZS5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHdhdi5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQogICAgIDwvZ3JvdXA+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT50YXJnZXQ8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+Y29tcG9uZW50PC9uYW1lPg0KKyAgICAgICAgPG5hbWU+Qmxpbmt5IERlbW88L25hbWU+DQogICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfYWNjLmg8L25hbWU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxibGlua3lfZGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2FkYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2Flcy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2Flc2IuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9haWMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9heGlteC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2NoaXBpZC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2NsYXNzZC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2ZsZXhjb20uaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9nbWFjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfaTJzYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2ljbS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2lzYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X2wyY2MuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9sY2RjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbWF0cml4Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfbWNhbi5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X21wZGRyYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3BkbWljLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGlvLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcGl0Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcG1jLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcHdtLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfcXNwaS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3JzdGMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9ydGMuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9yeGxwLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2NrYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NkbW1jLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2ZjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2ZyLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfc2ZyYnUuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zaGEuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF9zaGR3Yy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NtYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NwaS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3NzYy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3RjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNvbXBvbmVudFxjb21wb25lbnRfdGRlcy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3RybmcuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF90d2locy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3VhcnQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY29tcG9uZW50XGNvbXBvbmVudF91ZHBocy5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3dkdC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjb21wb25lbnRcY29tcG9uZW50X3hkbWFjLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5waW88L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjEuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyMi5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDIzLmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjQuaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJccGlvXHBpb19zYW1hNWQyNi5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxwaW9ccGlvX3NhbWE1ZDI3Lmg8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXHBpb1xwaW9fc2FtYTVkMjguaDwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX2xvd2xldmVsLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX21lbW9yaWVzLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGJvYXJkX3NhbWE1ZDItcHRjLWVuZ2kuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi12Yi1iZ2ExOTYuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi12Yi1iZ2EyODkuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcYm9hcmRfc2FtYTVkMi14cGxhaW5lZC1wcm90by5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxib2FyZF9zYW1hNWQyLXhwbGFpbmVkLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHRhcmdldFxzYW1hNWQyXGNoaXAuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcY2hpcC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x0YXJnZXRcc2FtYTVkMlxjaGlwX3BpbnMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjEuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjIuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjQuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjYuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjcuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcc2FtYTVkMjguaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQogICAgIDwvZ3JvdXA+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT51dGlsczwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xhc3luYy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xjb21waWxlci5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xjcmMuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcZGJnX3V0aWwuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcZm9udC5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1xoYW1taW5nLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGludG1hdGguaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcaW8uaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNcbGNkX2NvbG9yLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGxjZF9kcmF3Lmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXGxjZF9mb250Lmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXG11dGV4Lmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHV0aWxzXHJhbmQuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXRpbHNccmluZy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1x0aW1lci5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1x0cmFjZS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1dGlsc1x3YXYuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5CbGlua3kgRGVtbzwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxibGlua3lfZGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GcmVlUlRPUyBTb3VyY2U8L25hbWU+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5NZW1NYW5nPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+RnJlZVJUT1MgU291cmNlPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPnBvcnRhYmxlPC9uYW1lPg0KKyAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgPG5hbWU+TWVtTWFuZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0QVNNLmg8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydEFTTS5zPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnRtYWNyby5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQogICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCiAgICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydEFTTS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQ1xwb3J0QVNNLnM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnRtYWNyby5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQogICAgIDwvZ3JvdXA+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZ1bGwgRGVtbzwvbmFtZT4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkNvbW1vbiBEZW1vIFRhc2tzPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb3VudHNlbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGR5bmFtaWMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCisgICAgICAgIDxuYW1lPkZ1bGwgRGVtbzwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5Db21tb24gRGVtbyBUYXNrczwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXHJlZ190ZXN0LlM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQogICAgIDwvZ3JvdXA+DQogICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcY3N0YXJ0dXBfd2l0aF9GcmVlUlRPU192ZWN0b3JzLnM8L25hbWU+DQogICAgIDwvZmlsZT4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZyZWVSVE9TX3RpY2tfY29uZmlnLmM8L25hbWU+DQogICAgIDwvZmlsZT4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9ccmVnX3Rlc3QuUzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NDb25maWcuaDwvbmFtZT4NCiAgICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXGNzdGFydHVwX3dpdGhfRnJlZVJUT1NfdmVjdG9ycy5zPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NfdGlja19jb25maWcuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXEZyZWVSVE9TQ29uZmlnLmg8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxMRURzLmM8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQotICA8L2ZpbGU+DQorICAgIDxmaWxlPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxMRURzLmM8L25hbWU+DQorICAgIDwvZmlsZT4NCisgICAgPGZpbGU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCisgICAgPC9maWxlPg0KIDwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvYmxpbmt5X2RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9ibGlua3lfZGVtby9tYWluX2JsaW5reS5jCmluZGV4IGE0Nzg0YzguLjhhMDAzYWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9ibGlua3lfZGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9ibGlua3lfZGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvbWFpbi5jCmluZGV4IGNmMGJjM2QuLjQ4OTU4NTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uY3J1biBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCmluZGV4IDViYjVhY2MuLjYyYzIxYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCkBAIC0xLDE2ICsxLDEzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8Y3J1bj4NCi0gIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICA8ZmlsdGVyX2VudHJpZXM+DQotICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KLSAgICAgIDx0eXBlPio8L3R5cGU+DQotICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCi0gICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQotICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQotICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCi0gICAgPC9maWx0ZXI+DQotICA8L2ZpbHRlcl9lbnRyaWVzPg0KKyAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICA8ZmlsdGVyX2VudHJpZXM+DQorICAgICAgICA8ZmlsdGVyIGluZGV4PSIwIiB0eXBlPSJkZWZhdWx0Ij4NCisgICAgICAgICAgICA8dHlwZT4qPC90eXBlPg0KKyAgICAgICAgICAgIDxzdGFydF9maWxlPio8L3N0YXJ0X2ZpbGU+DQorICAgICAgICAgICAgPGVuZF9maWxlPio8L2VuZF9maWxlPg0KKyAgICAgICAgICAgIDxhY3Rpb25fZGVidWdnZXI+MDwvYWN0aW9uX2RlYnVnZ2VyPg0KKyAgICAgICAgICAgIDxhY3Rpb25fbG9nPjE8L2FjdGlvbl9sb2c+DQorICAgICAgICA8L2ZpbHRlcj4NCisgICAgPC9maWx0ZXJfZW50cmllcz4NCiA8L2NydW4+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CmluZGV4IDNjODk1NTcuLmE4MzE5OGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKQEAgLTEsNzEgKzEsNDIyIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQogPFByb2plY3Q+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8RGVidWctTG9nPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz4NCi0gICAgICA8QnVpbGQ+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzPjxXaW5kb3c+PEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5PjwvV2luZG93PjxXaW5kb3c+PEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT48L1dpbmRvdz48L1dpbmRvd3M+PC9QcmVmZXJlZFdpbmRvd3M+PC9CdWlsZD4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4yMjE8L0NvbHVtbjA+PENvbHVtbjE+Mjc8L0NvbHVtbjE+PENvbHVtbjI+Mjc8L0NvbHVtbjI+PENvbHVtbjM+Mjc8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPERpc2Fzc2VtYmx5Pg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxpdGVtPjUwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+DQotICAgICAgICA8RGlzYXNtSGlzdG9yeT48aXRlbT4weDMwNTQ0NDwvaXRlbT48aXRlbT4weDAwMzAyMTFDPC9pdGVtPjxpdGVtPjB4MDAzMDI3NTA8L2l0ZW0+PC9EaXNhc21IaXN0b3J5Pg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+PFNob3dJbnN0clByb2ZpbGluZz4xPC9TaG93SW5zdHJQcm9maWxpbmc+PC9EaXNhc3NlbWJseT4NCi0gICAgPFJlZ2lzdGVyPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PFJlZ0ZpbmRIaXN0b3J5Lz48L1JlZ2lzdGVyPjxXQVRDSF8xPjxleHByZXNzaW9ucz48aXRlbT54VGlja0NvdW50PC9pdGVtPjxpdGVtLz48L2V4cHJlc3Npb25zPjxjb2wtbmFtZXM+PGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjIwNzwvaXRlbT48aXRlbT4xNTA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjI5NDwvaXRlbT48L2NvbC13aWR0aHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L1dBVENIXzE+PENhbGxTdGFjaz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4xPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxjb2wtbmFtZXM+PGl0ZW0+RnJhbWU8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjQwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+PC9DYWxsU3RhY2s+PEJyZWFrcG9pbnRzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQnJlYWtwb2ludHM+PEZpbmQtaW4tRmlsZXM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzPjxXaW5kb3c+PEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5PjwvV2luZG93PjwvV2luZG93cz48L1ByZWZlcmVkV2luZG93cz48Q29sdW1uV2lkdGgwPjQ5NzwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjc0NjwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+MzMxPC9Db2x1bW5XaWR0aDM+PC9GaW5kLWluLUZpbGVzPjxRdWlja1dhdGNoPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5FeHByZXNzaW9uPC9pdGVtPjxpdGVtPkxvY2F0aW9uPC9pdGVtPjxpdGVtPlR5cGU8L2l0ZW0+PGl0ZW0+VmFsdWU8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48UVdhdGNoSGlzdG9yeT48aXRlbT5UQzA8L2l0ZW0+PGl0ZW0+VEMwLSZndDtUQ19DSEFOTkVMWyB0bXJUQzBfQ0hBTk5FTF8wIF0uVENfUkM8L2l0ZW0+PC9RV2F0Y2hIaXN0b3J5PjwvUXVpY2tXYXRjaD48TWVtb3J5PjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PEZpbmREaXJlY3Rpb24+MTwvRmluZERpcmVjdGlvbj48RmluZEFzSGV4PjA8L0ZpbmRBc0hleD48L01lbW9yeT48VEFTS1ZJRVc+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Q29sdW1uOD4xNTA8L0NvbHVtbjg+PENvbHVtbjA+MjAwPC9Db2x1bW4wPjxDb2x1bW4xPjEwMDwvQ29sdW1uMT48Q29sdW1uMj4xMDA8L0NvbHVtbjI+PENvbHVtbjM+MTAwPC9Db2x1bW4zPjxDb2x1bW40PjEwMDwvQ29sdW1uND48Q29sdW1uNT4xMDA8L0NvbHVtbjU+PENvbHVtbjY+MTAwPC9Db2x1bW42PjxDb2x1bW43PjE1MDwvQ29sdW1uNz48L1RBU0tWSUVXPjxRVUVVRVZJRVc+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MzwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Q29sdW1uMD4zMDA8L0NvbHVtbjA+PENvbHVtbjE+MTAwPC9Db2x1bW4xPjxDb2x1bW4yPjEwMDwvQ29sdW1uMj48Q29sdW1uMz4xMDA8L0NvbHVtbjM+PENvbHVtbjQ+MTAwPC9Db2x1bW40PjxDb2x1bW41PjEwMDwvQ29sdW1uNT48Q29sdW1uNj4xMDA8L0NvbHVtbjY+PC9RVUVVRVZJRVc+PFNUQUNLXzE+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MTwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48c3RhY2s+Q1NUQUNLPC9zdGFjaz48d2lkdGg+NDwvd2lkdGg+PHZhcnM+MTwvdmFycz48b2Zmc2V0PjA8L29mZnNldD48Y29sLW5hbWVzPjxpdGVtPkRhdGE8L2l0ZW0+PGl0ZW0+RnJhbWU8L2l0ZW0+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48aXRlbT5WYXJpYWJsZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48L2NvbC13aWR0aHM+PC9TVEFDS18xPjwvU3RhdGljPg0KLSAgICA8V2luZG93cz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFduZDA+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjQ2NzMtMjM4Nzc8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vQmxpbmt5IERlbW88L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TK0NMSTwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDA+PFduZDI+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtMTc5MzYtMjEzOTU8L0lkZW50aXR5PjxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT48RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjwvVGFicz48U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQyPjxXbmQ0PjxUYWJzPjxUYWI+PElkZW50aXR5PlRhYklELTI1MDQtMjMzMjI8L0lkZW50aXR5PjxUYWJOYW1lPldhdGNoIDE8L1RhYk5hbWU+PEZhY3Rvcnk+V0FUQ0hfMTwvRmFjdG9yeT48L1RhYj48L1RhYnM+PFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kND48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTM2PC9ZUG9zMj48U2VsU3RhcnQyPjczOTI8L1NlbFN0YXJ0Mj48U2VsRW5kMj43MzkyPC9TZWxFbmQyPjwvVGFiPjxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjY8L1lQb3MyPjxTZWxTdGFydDI+Njk2MzwvU2VsU3RhcnQyPjxTZWxFbmQyPjY5NjM8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxibGlua3lfZGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+Njk8L1lQb3MyPjxTZWxTdGFydDI+NjcwODwvU2VsU3RhcnQyPjxTZWxFbmQyPjY3MDg8L1NlbEVuZDI+PC9UYWI+PC9QYW5lPjxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+PFNpemVzPjxQYW5lPjxYPjEwMDAwMDA8L1g+PFk+MTAwMDAwMDwvWT48L1BhbmU+PC9TaXplcz48U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT48L0VkaXRvcj4NCi0gICAgPFBvc2l0aW9ucz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFRvcD48Um93MD48U2l6ZXM+PFRvb2xiYXItMDExRTU3NDg+PGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+PC9Ub29sYmFyLTAxMUU1NzQ4PjxUb29sYmFyLTA4QzBBODIwPjxrZXk+ZGVidWdnZXJndWkuZW51MTwva2V5PjwvVG9vbGJhci0wOEMwQTgyMD48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXM+PFRvb2xiYXItMEQyN0M3RTg+PGtleT5hcm1qZXQuZW51MTwva2V5PjwvVG9vbGJhci0wRDI3QzdFOD48L1NpemVzPjwvUm93MT48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDA+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+ODY4PC9Cb3R0b20+PFJpZ2h0PjI5NTwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjI4PC94c2NyZWVuPjx5c2NyZWVuPjIzMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTg3NTA8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAyODIyPC9zaXplSG9yekNZPjxzaXplVmVydENYPjE1NDY4ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43NjcxOTY8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMD48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcz48V25kND48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT44Njg8L0JvdHRvbT48UmlnaHQ+NjQyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjEwNDE2Nzwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xNzYzNjc8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MzM1NDE3PC9zaXplVmVydENYPjxzaXplVmVydENZPjc2NzE5Njwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQ0PjwvU2l6ZXM+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDI+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MTk4PC9Cb3R0b20+PFJpZ2h0PjE5MjI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIwODM8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MTc2MzY3PC9zaXplSG9yekNZPjxzaXplVmVydENYPjEwNDE2Nzwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4xNzYzNjc8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMj48L1NpemVzPjwvUm93MD48L0JvdHRvbT48RmxvYXQ+PFNpemVzLz48L0Zsb2F0PjwvUG9zaXRpb25zPg0KLSAgPC9EZXNrdG9wPg0KKyAgICA8RGVza3RvcD4NCisgICAgICAgIDxTdGF0aWM+DQorICAgICAgICAgICAgPERlYnVnLUxvZz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgPC9EZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MzwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXaW5kb3c+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1dpbmRvdz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V2luZG93Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV2luZG93Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICA8L0J1aWxkPg0KKyAgICAgICAgICAgIDxXb3Jrc3BhY2U+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMjE8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4yNzwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjI3PC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+Mjc8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDwvQ29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgIDwvV29ya3NwYWNlPg0KKyAgICAgICAgICAgIDxEaXNhc3NlbWJseT4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkRpc2Fzc2VtYmx5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8RGlzYXNtSGlzdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjB4MzA1NDQ0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MHgwMDMwMjExQzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjB4MDAzMDI3NTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvRGlzYXNtSGlzdG9yeT4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+DQorICAgICAgICAgICAgICAgIDxTaG93SW5zdHJQcm9maWxpbmc+MTwvU2hvd0luc3RyUHJvZmlsaW5nPg0KKyAgICAgICAgICAgIDwvRGlzYXNzZW1ibHk+DQorICAgICAgICAgICAgPFJlZ2lzdGVyPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPFJlZ0ZpbmRIaXN0b3J5IC8+DQorICAgICAgICAgICAgPC9SZWdpc3Rlcj4NCisgICAgICAgICAgICA8V0FUQ0hfMT4NCisgICAgICAgICAgICAgICAgPGV4cHJlc3Npb25zPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+eFRpY2tDb3VudDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtIC8+DQorICAgICAgICAgICAgICAgIDwvZXhwcmVzc2lvbnM+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5FeHByZXNzaW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+TG9jYXRpb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UeXBlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFsdWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjE1MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjI5NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICA8L1dBVENIXzE+DQorICAgICAgICAgICAgPENhbGxTdGFjaz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4xPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5GcmFtZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NDAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L0NhbGxTdGFjaz4NCisgICAgICAgICAgICA8QnJlYWtwb2ludHM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MzwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+QnJlYWtwb2ludDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L0JyZWFrcG9pbnRzPg0KKyAgICAgICAgICAgIDxGaW5kLWluLUZpbGVzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V2luZG93Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XaW5kb3c+DQorICAgICAgICAgICAgICAgICAgICA8L1dpbmRvd3M+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjQ5NzwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+MzMxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9GaW5kLWluLUZpbGVzPg0KKyAgICAgICAgICAgIDxRdWlja1dhdGNoPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkV4cHJlc3Npb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5Mb2NhdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlR5cGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYWx1ZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTUwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxRV2F0Y2hIaXN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VEMwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VEMwLSZndDtUQ19DSEFOTkVMWyB0bXJUQzBfQ0hBTk5FTF8wIF0uVENfUkM8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvUVdhdGNoSGlzdG9yeT4NCisgICAgICAgICAgICA8L1F1aWNrV2F0Y2g+DQorICAgICAgICAgICAgPE1lbW9yeT4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxGaW5kRGlyZWN0aW9uPjE8L0ZpbmREaXJlY3Rpb24+DQorICAgICAgICAgICAgICAgIDxGaW5kQXNIZXg+MDwvRmluZEFzSGV4Pg0KKyAgICAgICAgICAgIDwvTWVtb3J5Pg0KKyAgICAgICAgICAgIDxUQVNLVklFVz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxDb2x1bW44PjE1MDwvQ29sdW1uOD4NCisgICAgICAgICAgICAgICAgPENvbHVtbjA+MjAwPC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMT4xMDA8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW4yPjEwMDwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbjM+MTAwPC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uND4xMDA8L0NvbHVtbjQ+DQorICAgICAgICAgICAgICAgIDxDb2x1bW41PjEwMDwvQ29sdW1uNT4NCisgICAgICAgICAgICAgICAgPENvbHVtbjY+MTAwPC9Db2x1bW42Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uNz4xNTA8L0NvbHVtbjc+DQorICAgICAgICAgICAgPC9UQVNLVklFVz4NCisgICAgICAgICAgICA8UVVFVUVWSUVXPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPENvbHVtbjA+MzAwPC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uMT4xMDA8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW4yPjEwMDwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbjM+MTAwPC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uND4xMDA8L0NvbHVtbjQ+DQorICAgICAgICAgICAgICAgIDxDb2x1bW41PjEwMDwvQ29sdW1uNT4NCisgICAgICAgICAgICAgICAgPENvbHVtbjY+MTAwPC9Db2x1bW42Pg0KKyAgICAgICAgICAgIDwvUVVFVUVWSUVXPg0KKyAgICAgICAgICAgIDxTVEFDS18xPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjE8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPHN0YWNrPkNTVEFDSzwvc3RhY2s+DQorICAgICAgICAgICAgICAgIDx3aWR0aD40PC93aWR0aD4NCisgICAgICAgICAgICAgICAgPHZhcnM+MTwvdmFycz4NCisgICAgICAgICAgICAgICAgPG9mZnNldD4wPC9vZmZzZXQ+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5EYXRhPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RnJhbWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5Mb2NhdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlR5cGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYWx1ZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhcmlhYmxlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L1NUQUNLXzE+DQorICAgICAgICA8L1N0YXRpYz4NCisgICAgICAgIDxXaW5kb3dzPg0KKyAgICAgICAgICAgIDxXbmQwPg0KKyAgICAgICAgICAgICAgICA8VGFicz4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTI0NjczLTIzODc3PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0JsaW5reSBEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TK0NMSTwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDA+DQorICAgICAgICAgICAgPFduZDI+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTc5MzYtMjEzOTU8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgPFduZDQ+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjUwNC0yMzMyMjwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+V2F0Y2ggMTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5XQVRDSF8xPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kND4NCisgICAgICAgIDwvV2luZG93cz4NCisgICAgICAgIDxFZGl0b3I+DQorICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXG1haW4uYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjEzNjwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjczOTI8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjczOTI8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8QWN0aXZlVGFiPjA8L0FjdGl2ZVRhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjY8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42OTYzPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42OTYzPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcYmxpbmt5X2RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjY5PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NjcwODwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NjcwODwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+DQorICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgICAgIDxYPjEwMDAwMDA8L1g+DQorICAgICAgICAgICAgICAgICAgICA8WT4xMDAwMDAwPC9ZPg0KKyAgICAgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICA8U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT4NCisgICAgICAgIDwvRWRpdG9yPg0KKyAgICAgICAgPFBvc2l0aW9ucz4NCisgICAgICAgICAgICA8VG9wPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhci0wMTFFNTc0OD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyLTAxMUU1NzQ4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTA4QzBBODIwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmRlYnVnZ2VyZ3VpLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDhDMEE4MjA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgICAgIDxSb3cxPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTBEMjdDN0U4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmFybWpldC5lbnUxPC9rZXk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyLTBEMjdDN0U4Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cxPg0KKyAgICAgICAgICAgIDwvVG9wPg0KKyAgICAgICAgICAgIDxMZWZ0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+ODY4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+Mjk1PC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMjg8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMzA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMTg3NTA8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yMDI4MjI8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xNTQ2ODg8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43NjcxOTY8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9MZWZ0Pg0KKyAgICAgICAgICAgIDxSaWdodD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjg2ODwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjY0MjwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MjAwPC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjAwPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTA0MTY3PC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTc2MzY3PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MzM1NDE3PC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NzY3MTk2PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvUmlnaHQ+DQorICAgICAgICAgICAgPEJvdHRvbT4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjE5ODwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE5MjI8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDAyMDgzPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTc2MzY3PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTA0MTY3PC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+MTc2MzY3PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQyPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvQm90dG9tPg0KKyAgICAgICAgICAgIDxGbG9hdD4NCisgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgPC9GbG9hdD4NCisgICAgICAgIDwvUG9zaXRpb25zPg0KKyAgICA8L0Rlc2t0b3A+DQorICAgIDxXaW5kb3dTdG9yYWdlIC8+DQogPC9Qcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmNzcHkuYmF0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uY3NweS5iYXQKaW5kZXggNzU1OGViMS4uZjdlODQxYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uY3NweS5iYXQKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uY3NweS5iYXQKQEAgLTI1LDcgKzI1LDcgQEAKIA0KIEBlY2hvIG9uIA0KIA0KLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGNvbW1vblxiaW5cY3NweWJhdCIgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsIiAtLWJhY2tlbmQgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmRyaXZlci54Y2wiIA0KKyJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGNvbW1vblxiaW5cY3NweWJhdCIgLWYgIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsIiAtLWJhY2tlbmQgLWYgIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmRyaXZlci54Y2wiIA0KIA0KIEBlY2hvIG9mZiANCiBnb3RvIGVuZCANCkBAIC0zNCw3ICszNCw3IEBACiANCiBAZWNobyBvbiANCiANCi0iQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxjb21tb25cYmluXGNzcHliYXQiIC1mICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcc2V0dGluZ3NcUlRPU0RlbW8uc3JhbS5nZW5lcmFsLnhjbCIgIi0tZGVidWdfZmlsZT0lfjEiIC0tYmFja2VuZCAtZiAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbCIgDQorIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA4LjBcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXHNldHRpbmdzXFJUT1NEZW1vLnNyYW0uZ2VuZXJhbC54Y2wiICItLWRlYnVnX2ZpbGU9JX4xIiAtLWJhY2tlbmQgLWYgIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzZXR0aW5nc1xSVE9TRGVtby5zcmFtLmRyaXZlci54Y2wiIA0KIA0KIEBlY2hvIG9mZiANCiA6ZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmRyaXZlci54Y2wKaW5kZXggY2VmNjk4Yi4uMDQ1NDg1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLnNyYW0uZHJpdmVyLnhjbAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5kcml2ZXIueGNsCkBAIC02LDcgKzYsNyBAQAogDQogIi1wIiANCiANCi0iQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxhcm1cQ09ORklHXGRlYnVnZ2VyXEF0bWVsXEFUU0FNQTVEMjcuZGRmIiANCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxhcm1cQ09ORklHXGRlYnVnZ2VyXEF0bWVsXEFUU0FNQTVEMjcuZGRmIiANCiANCiAiLS1kcnZfdmVyaWZ5X2Rvd25sb2FkIiANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uc3JhbS5nZW5lcmFsLnhjbCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsCmluZGV4IGJhODJhOTMuLjZkZmZjYTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5zcmFtLmdlbmVyYWwueGNsCkBAIC0xLDE0ICsxLDE0IEBACi0iQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxhcm1cYmluXGFybXByb2MuZGxsIiANCisiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxhcm1cYmluXGFybXByb2MuZGxsIiANCiANCi0iQzpcRGV2VG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDcuNFxhcm1cYmluXGFybUpFVC5kbGwiIA0KKyJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggOC4wXGFybVxiaW5cYXJtSkVULmRsbCIgDQogDQotIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzcmFtXGJpblxzcmFtLm91dCIgDQorIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX0E1X1NBTUE1RDJ4X1hwbGFpbmVkX0lBUlxzcmFtXGJpblxzcmFtLm91dCIgDQogDQotLS1wbHVnaW4gIkM6XERldlRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA3LjRcYXJtXGJpblxhcm1iYXQuZGxsIiANCistLXBsdWdpbiAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxhcm1cYmluXGFybWJhdC5kbGwiIA0KIA0KLS0tZGV2aWNlX21hY3JvICJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGFybVxjb25maWdcZGVidWdnZXJcQXRtZWxcU0FNQTVEMi5kbWFjIiANCistLWRldmljZV9tYWNybyAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDguMFxhcm1cY29uZmlnXGRlYnVnZ2VyXEF0bWVsXFNBTUE1RDIuZG1hYyIgDQogDQotLS1tYWNybyAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLm1hYyIgDQorLS1tYWNybyAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSXEF0bWVsRmlsZXNcdGFyZ2V0XHNhbWE1ZDJcdG9vbGNoYWluXGlhclxzcmFtLm1hYyIgDQogDQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEMnhfWHBsYWluZWRfSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAppbmRleCA2YzdiZDk1Li5lODI0NThjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdApAQCAtMSw3OCArMSw2MDQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCiA8V29ya3NwYWNlPg0KLSAgPENvbmZpZ0RpY3Rpb25hcnk+DQotICAgIA0KLSAgPEN1cnJlbnRDb25maWdzPjxQcm9qZWN0PlJUT1NEZW1vL3NyYW08L1Byb2plY3Q+PC9DdXJyZW50Q29uZmlncz48L0NvbmZpZ0RpY3Rpb25hcnk+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4zNjI8L0NvbHVtbjA+PENvbHVtbjE+MDwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4wPC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KLSAgICAgIDwvV29ya3NwYWNlPg0KLSAgICAgIDxDUnVuTWVzc2FnZVJ1bGVzPg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgPGl0ZW0+QWN0aW9uPC9pdGVtPg0KLSAgICAgICAgICA8aXRlbT5DaGVjazwvaXRlbT4NCi0gICAgICAgICAgPGl0ZW0+U291cmNlIEZpbGU8L2l0ZW0+DQotICAgICAgICA8L2NvbC1uYW1lcz4NCi0gICAgICAgIDxjb2wtd2lkdGhzPg0KLSAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQotICAgICAgICAgIDxpdGVtPjQwMDwvaXRlbT4NCi0gICAgICAgICAgPGl0ZW0+MjAwPC9pdGVtPg0KLSAgICAgICAgPC9jb2wtd2lkdGhzPg0KLSAgICAgIDwvQ1J1bk1lc3NhZ2VSdWxlcz4NCi0gICAgICA8QnVpbGQ+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+PC9CdWlsZD4NCi0gICAgPERlYnVnLUxvZz48Q29sdW1uV2lkdGgwPjE4PC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xNjI0PC9Db2x1bW5XaWR0aDE+PC9EZWJ1Zy1Mb2c+PFRlcm1pbmFsSU8vPjxTZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPjxDb2x1bW5XaWR0aDA+NTUyPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT43ODwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+OTQ2PC9Db2x1bW5XaWR0aDI+PC9TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPjxGaW5kLWluLUZpbGVzPjxDb2x1bW5XaWR0aDA+ODQ2PC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz48L0ZpbmQtaW4tRmlsZXM+PEJyZWFrcG9pbnRzPjxjb2wtbmFtZXM+PGl0ZW0+QnJlYWtwb2ludDwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+NTAwPC9pdGVtPjxpdGVtPjM1PC9pdGVtPjwvY29sLXdpZHRocz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjwvQnJlYWtwb2ludHM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMD4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMjM1MS0xOTAwODwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUytDTEk8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL091dHB1dDwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDA+PFduZDE+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjEwNzYtMTkyMzc8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8VGFiPjxJZGVudGl0eT5UYWJJRC0yMzUwMi0yMzA4MTwvSWRlbnRpdHk+PFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPjxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PFRhYj48SWRlbnRpdHk+VGFiSUQtMjQ0MzEtMjM4OTQ8L0lkZW50aXR5PjxUYWJOYW1lPkFtYmlndW91cyBEZWZpbml0aW9uczwvVGFiTmFtZT48RmFjdG9yeT5TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48VGFiPjxJZGVudGl0eT5UYWJJRC05MDMzLTYxMTY8L0lkZW50aXR5PjxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+PEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjE8L1NlbGVjdGVkVGFiPjwvV25kMT48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjQ8L1lQb3MyPjxTZWxTdGFydDI+NjkxOTwvU2VsU3RhcnQyPjxTZWxFbmQyPjY5MTk8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42NjwvWVBvczI+PFNlbFN0YXJ0Mj42OTYzPC9TZWxTdGFydDI+PFNlbEVuZDI+Njk2MzwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXGJsaW5reV9kZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42OTwvWVBvczI+PFNlbFN0YXJ0Mj42NzA4PC9TZWxTdGFydDI+PFNlbEVuZDI+NjcwODwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMjZBNTc0OD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDI2QTU3NDg+PC9TaXplcz48L1JvdzA+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQwPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjg0ODwvQm90dG9tPjxSaWdodD40MDk8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE0ODwveHNjcmVlbj48eXNjcmVlbj4xNTE8L3lzY3JlZW4+PHNpemVIb3J6Q1g+NzcwODM8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MTMzMTU3PC9zaXplSG9yekNZPjxzaXplVmVydENYPjIxNDA2Mzwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43NDk1NTk8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMD48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcy8+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDE+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MjQyPC9Cb3R0b20+PFJpZ2h0PjE5MjI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+PHlzY3JlZW4+MjQ0PC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIwODM8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjE1MTY4PC9zaXplSG9yekNZPjxzaXplVmVydENYPjc3MDgzPC9zaXplVmVydENYPjxzaXplVmVydENZPjEzMzE1Nzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQxPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxDb25maWdEaWN0aW9uYXJ5Pg0KKyAgICAgICAgPEN1cnJlbnRDb25maWdzPg0KKyAgICAgICAgICAgIDxQcm9qZWN0PlJUT1NEZW1vL3NyYW08L1Byb2plY3Q+DQorICAgICAgICA8L0N1cnJlbnRDb25maWdzPg0KKyAgICA8L0NvbmZpZ0RpY3Rpb25hcnk+DQorICAgIDxEZXNrdG9wPg0KKyAgICAgICAgPFN0YXRpYz4NCisgICAgICAgICAgICA8V29ya3NwYWNlPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MzYyPC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+MDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjI3PC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+MDwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPENSdW5NZXNzYWdlUnVsZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5BY3Rpb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5DaGVjazwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlNvdXJjZSBGaWxlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4xMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT40MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L0NSdW5NZXNzYWdlUnVsZXM+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9CdWlsZD4NCisgICAgICAgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjE4PC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTYyNDwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgIDwvRGVidWctTG9nPg0KKyAgICAgICAgICAgIDxUZXJtaW5hbElPIC8+DQorICAgICAgICAgICAgPFNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+NTUyPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+Nzg8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj45NDY8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICA8L1NlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+DQorICAgICAgICAgICAgPEZpbmQtaW4tRmlsZXM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+ODQ2PC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICA8L0ZpbmQtaW4tRmlsZXM+DQorICAgICAgICAgICAgPEJyZWFrcG9pbnRzPg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+QnJlYWtwb2ludDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgPC9CcmVha3BvaW50cz4NCisgICAgICAgIDwvU3RhdGljPg0KKyAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgPFduZDA+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjIzNTEtMTkwMDg8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxOb2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MrQ0xJPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL091dHB1dDwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDA+DQorICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMjEwNzYtMTkyMzc8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTIzNTAyLTIzMDgxPC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTI0NDMxLTIzODk0PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5BbWJpZ3VvdXMgRGVmaW5pdGlvbnM8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9uczwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC05MDMzLTYxMTY8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjE8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMT4NCisgICAgICAgIDwvV2luZG93cz4NCisgICAgICAgIDxFZGl0b3I+DQorICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXG1haW4uYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjY0PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NjkxOTwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NjkxOTwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42NjwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjY5NjM8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjY5NjM8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxibGlua3lfZGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+Njk8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj42NzA4PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj42NzA4PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT4NCisgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICAgICAgPFg+MTAwMDAwMDwvWD4NCisgICAgICAgICAgICAgICAgICAgIDxZPjEwMDAwMDA8L1k+DQorICAgICAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgIDxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPg0KKyAgICAgICAgPC9FZGl0b3I+DQorICAgICAgICA8UG9zaXRpb25zPg0KKyAgICAgICAgICAgIDxUb3A+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTAyNkE1NzQ4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmlhcmlkZXBtLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDI2QTU3NDg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9Ub3A+DQorICAgICAgICAgICAgPExlZnQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT44NDg8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD40MDk8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE0ODwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjE1MTwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjc3MDgzPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTMzMTU3PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MjE0MDYzPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NzQ5NTU5PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQwPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvTGVmdD4NCisgICAgICAgICAgICA8UmlnaHQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1JpZ2h0Pg0KKyAgICAgICAgICAgIDxCb3R0b20+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT4yNDI8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4xOTIyPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4xOTI0PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjQ0PC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTAwMjA4Mzwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjIxNTE2ODwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjc3MDgzPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+MTMzMTU3PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvQm90dG9tPg0KKyAgICAgICAgICAgIDxGbG9hdD4NCisgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgPC9GbG9hdD4NCisgICAgICAgIDwvUG9zaXRpb25zPg0KKyAgICA8L0Rlc2t0b3A+DQorICAgIDxXaW5kb3dTdG9yYWdlPg0KKyAgICAgICAgPENoaWxkSWRNYXA+DQorICAgICAgICAgICAgPFRCX0NNU0lTUEFDSz4zNDA0ODwvVEJfQ01TSVNQQUNLPg0KKyAgICAgICAgICAgIDxUQl9NQUlOPjM0MDQ5PC9UQl9NQUlOPg0KKyAgICAgICAgICAgIDxXSU5fQlJFQUtQT0lOVFM+MzQwNTA8L1dJTl9CUkVBS1BPSU5UUz4NCisgICAgICAgICAgICA8V0lOX0JVSUxEPjM0MDUxPC9XSU5fQlVJTEQ+DQorICAgICAgICAgICAgPFdJTl9DQUxMX0dSQVBIPjM0MDUyPC9XSU5fQ0FMTF9HUkFQSD4NCisgICAgICAgICAgICA8V0lOX0NNU0lTUEFDS19BR0VOVF9MT0c+MzQwNTM8L1dJTl9DTVNJU1BBQ0tfQUdFTlRfTE9HPg0KKyAgICAgICAgICAgIDxXSU5fQ1VTVE9NX1NGUj4zNDA1NDwvV0lOX0NVU1RPTV9TRlI+DQorICAgICAgICAgICAgPFdJTl9DX1NUQVQ+MzQwNTU8L1dJTl9DX1NUQVQ+DQorICAgICAgICAgICAgPFdJTl9ERUJVR19MT0c+MzQwNTY8L1dJTl9ERUJVR19MT0c+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+MzQwNTc8L1dJTl9GSU5EX0FMTF9ERUNMQVJBVElPTlM+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0FMTF9SRUZFUkVOQ0VTPjM0MDU4PC9XSU5fRklORF9BTExfUkVGRVJFTkNFUz4NCisgICAgICAgICAgICA8V0lOX0ZJTkRfSU5fRklMRVM+MzQwNTk8L1dJTl9GSU5EX0lOX0ZJTEVTPg0KKyAgICAgICAgICAgIDxXSU5fU0VMRUNUX0FNQklHVU9VU19ERUZJTklUSU9OUz4zNDA2MDwvV0lOX1NFTEVDVF9BTUJJR1VPVVNfREVGSU5JVElPTlM+DQorICAgICAgICAgICAgPFdJTl9TT1VSQ0VfQlJPV1NFUj4zNDA2MTwvV0lOX1NPVVJDRV9CUk9XU0VSPg0KKyAgICAgICAgICAgIDxXSU5fVE9PTF9PVVRQVVQ+MzQwNjI8L1dJTl9UT09MX09VVFBVVD4NCisgICAgICAgICAgICA8V0lOX1dPUktTUEFDRT4zNDA2MzwvV0lOX1dPUktTUEFDRT4NCisgICAgICAgIDwvQ2hpbGRJZE1hcD4NCisgICAgICAgIDxEZXNrdG9wPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0MDAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzQwMDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8VG9vbEJhckNtZElkcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDI0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjA3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQ0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDkwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAyNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDY1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDUzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNTQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzNjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0Mzk5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM4PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L1Rvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIxPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTg2MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT48L0xpdmVGaWxlPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUxvZ0VuYWJsZWQ+MDwvTGl2ZUxvZ0VuYWJsZWQ+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsdGVyTGV2ZWw+LTE8L0xpdmVGaWx0ZXJMZXZlbD4NCisgICAgICAgICAgICA8L0lhclBhbmUtMzQwNTY+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMDg8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4zMDwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjMwPC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+MzA8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDwvQ29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxDb250cm9sQmFyVmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPE1ham9yPjE0PC9NYWpvcj4NCisgICAgICAgICAgICAgICAgPE1pbm9yPjEwPC9NaW5vcj4NCisgICAgICAgICAgICA8L0NvbnRyb2xCYXJWZXJzaW9uPg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyUGFyYW1ldGVycz4NCisgICAgICAgICAgICAgICAgPFRvb2x0aXBzPjE8L1Rvb2x0aXBzPg0KKyAgICAgICAgICAgICAgICA8U2hvcnRjdXRLZXlzPjE8L1Nob3J0Y3V0S2V5cz4NCisgICAgICAgICAgICAgICAgPExhcmdlSWNvbnM+MDwvTGFyZ2VJY29ucz4NCisgICAgICAgICAgICAgICAgPE1lbnVBbmltYXRpb24+MDwvTWVudUFuaW1hdGlvbj4NCisgICAgICAgICAgICAgICAgPFJlY2VudGx5VXNlZE1lbnVzPjE8L1JlY2VudGx5VXNlZE1lbnVzPg0KKyAgICAgICAgICAgICAgICA8TWVudVNoYWRvd3M+MTwvTWVudVNoYWRvd3M+DQorICAgICAgICAgICAgICAgIDxTaG93QWxsTWVudXNBZnRlckRlbGF5PjE8L1Nob3dBbGxNZW51c0FmdGVyRGVsYXk+DQorICAgICAgICAgICAgICAgIDxDb21tYW5kc1VzYWdlPjAwMDAwMDAwMDAwMDwvQ29tbWFuZHNVc2FnZT4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXJQYXJhbWV0ZXJzPg0KKyAgICAgICAgICAgIDxDb21tYW5kTWFuYWdlcj4NCisgICAgICAgICAgICAgICAgPENvbW1hbmRzV2l0aG91dEltYWdlcz4wNjAwMjBGMTAwMDAxMEYwMDAwMDAwRjAwMDAwMjBGMDAwMDAzMEYwMDAwMDYwRjAwMDAwPC9Db21tYW5kc1dpdGhvdXRJbWFnZXM+DQorICAgICAgICAgICAgICAgIDxNZW51VXNlckltYWdlcz4wMDAwPC9NZW51VXNlckltYWdlcz4NCisgICAgICAgICAgICA8L0NvbW1hbmRNYW5hZ2VyPg0KKyAgICAgICAgICAgIDxQYW5lLTU5MzkzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDBEQzAzMDAwMDgwMDcwMDAwRjUwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTU5MzkzPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS01OTM5Mz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUwPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUwPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MCAvPg0KKyAgICAgICAgICAgIDxQYW5lLS0xPg0KKyAgICAgICAgICAgICAgICA8SUQ+NDI5NDk2NzI5NTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAzOTAwMDAwMDE4MDEwMDAwNDQwMjAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLS0xPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0tMT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0tMT4NCisgICAgICAgICAgICA8UGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUxPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDY5MDIwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1MT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEzOTk8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zNzM8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz45MzwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgICAgICA8RmlsdGVyTGV2ZWw+MjwvRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgICAgIDxMaXZlRmlsZT5DOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9BNV9TQU1BNUQyeF9YcGxhaW5lZF9JQVJcQnVpbGRMb2cubG9nPC9MaXZlRmlsZT4NCisgICAgICAgICAgICAgICAgPExpdmVMb2dFbmFibGVkPjA8L0xpdmVMb2dFbmFibGVkPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbHRlckxldmVsPi0xPC9MaXZlRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDUxPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwNjUwMjAwMDA4MDA3MDAwMDIzMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTM+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTMgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU2PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDY5MDIwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTY+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTc8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMDAzMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Nz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTc+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTcgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDY5MDIwMDAwN0MwNzAwMDAwMzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU4IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTk+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1OTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA2OTAyMDAwMDdDMDcwMDAwMDMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1OT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1OSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNjkwMjAwMDA3QzA3MDAwMDAzMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2MD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjA+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjAgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2Mj4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYyPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDY5MDIwMDAwN0MwNzAwMDAwMzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjI+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYyPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYyIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMEFEMDIwMDAwRDAwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMEFEMDIwMDAwQjMwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1Mj4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTI+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTIgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU0PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU0Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1ND4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTU8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDAzNjAxMDAwMERCMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTU+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU1IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjE+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDA1QTAwMDAwMDE0MDEwMDAwRDAwMTAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYxPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2MT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjM8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwNTYwMDAwMDAxODAxMDAwMDQ0MDIwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjM+DQorICAgICAgICAgICAgPERvY2tpbmdNYW5hZ2VyLTI1Nj4NCisgICAgICAgICAgICAgICAgPERvY2tpbmdQYW5lQW5kUGFuZURpdmlkZXJzPjAwMDAwMDAwMEMwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMTgwMTAwMDAzOTAwMDAwMDFDMDEwMDAwNDQwMjAwMDAwMTAwMDAwMDAyMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDBGRkZGRkZGRjAyMDAwMDAwMEQ4NTAwMDAwRjg1MDAwMEZGRkYwMjAwMEIwMDQzNTQ2MTYyNjI2NTY0NTA2MTZFNjUwMDEwMDAwMDAxMDAwMDAwMDAwMDAwMDAxRDAwMDAwMDE4MDEwMDAwRDQwMTAwMDAwMDAwMDAwMDM5MDAwMDAwMTgwMTAwMDA0NDAyMDAwMDAwMDAwMDAwNDAxMDAwNTYwMjAwMDAwMEZGRkVGRjBFNTMwMDZGMDA3NTAwNzIwMDYzMDA2NTAwMjAwMDQyMDA3MjAwNkYwMDc3MDA3MzAwNjUwMDcyMDAwMDAwMDAwMDBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk1NzAwNkYwMDcyMDA2QjAwNzMwMDcwMDA2MTAwNjMwMDY1MDAwMTAwMDAwMDBGODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDEwMDAwMDBGRkZGRkZGRjBEODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDc4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDc4NTAwMDAwMTAwMDAwMDA3ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDY4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDY4NTAwMDAwMTAwMDAwMDA2ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwNDAwMDAwMDA0MDAwMDAwMDAwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDQ4NTAwMDAwMTAwMDAwMDA0ODUwMDAwMDAwMDAwMDAwMDgwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwNDQwMjAwMDA4MDA3MDAwMDQ4MDIwMDAwMDEwMDAwMDAwMTAwMDAxMDA0MDAwMDAwMDEwMDAwMDA0MUZERkZGRjhCMDAwMDAwRkZGRkZGRkYwODAwMDAwMDAzODUwMDAwMDU4NTAwMDAwODg1MDAwMDA5ODUwMDAwMEE4NTAwMDAwQjg1MDAwMDBDODUwMDAwMEU4NTAwMDAwMTgwMDA4MDAwMDAwMTAwMDAwMDAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwMDAwMDAwMDA0ODAyMDAwMDgwMDcwMDAwREMwMzAwMDAwMDAwMDAwMDQwODAwMDU2MDgwMDAwMDBGRkZFRkYwNTQyMDA3NTAwNjkwMDZDMDA2NDAwMDEwMDAwMDAwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBFNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMDIwMDA0QzAwNkYwMDY3MDAwMDAwMDAwMDA1ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMDk0NDAwNjUwMDYyMDA3NTAwNjcwMDIwMDA0QzAwNkYwMDY3MDAwMTAwMDAwMDA4ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEM0NDAwNjUwMDYzMDA2QzAwNjEwMDcyMDA2MTAwNzQwMDY5MDA2RjAwNkUwMDczMDAwMDAwMDAwMDA5ODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEE1MjAwNjUwMDY2MDA2NTAwNzIwMDY1MDA2RTAwNjMwMDY1MDA3MzAwMDAwMDAwMDAwQTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBENDYwMDY5MDA2RTAwNjQwMDIwMDA2OTAwNkUwMDIwMDA0NjAwNjkwMDZDMDA2NTAwNzMwMDAwMDAwMDAwMEI4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYxNTQxMDA2RDAwNjIwMDY5MDA2NzAwNzUwMDZGMDA3NTAwNzMwMDIwMDA0NDAwNjUwMDY2MDA2OTAwNkUwMDY5MDA3NDAwNjkwMDZGMDA2RTAwNzMwMDAwMDAwMDAwMEM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwQjU0MDA2RjAwNkYwMDZDMDAyMDAwNEYwMDc1MDA3NDAwNzAwMDc1MDA3NDAwMDAwMDAwMDAwRTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAxMDAwMDAwRkZGRkZGRkYwMzg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAyODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAyODUwMDAwMDEwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDwvRG9ja2luZ1BhbmVBbmRQYW5lRGl2aWRlcnM+DQorICAgICAgICAgICAgPC9Eb2NraW5nTWFuYWdlci0yNTY+DQorICAgICAgICAgICAgPE1GQ1Rvb2xCYXItMzQwNDg+DQorICAgICAgICAgICAgICAgIDxOYW1lPkNNU0lTLVBhY2s8L05hbWU+DQorICAgICAgICAgICAgICAgIDxCdXR0b25zPjAwMjAwMDAwMDEwMDAwMDAwMjAwRkZGRjAxMDAxMTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQyNzU3NDc0NkY2RUQwODQwMDAwMDAwMDA0MDAwQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODBEMTg0MDAwMDAwMDAwMDAwMEQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjBBNDMwMDREMDA1MzAwNDkwMDUzMDAyRDAwNTAwMDYxMDA2MzAwNkIwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OD4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ4PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAzMDAwMDFDMDAwMDAwNDcwMzAwMDAzODAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDg+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8TmFtZT5NYWluPC9OYW1lPg0KKyAgICAgICAgICAgICAgICA8QnV0dG9ucz4wMDIwMDAwMDAxMDAwMDAwMjAwMEZGRkYwMTAwMTEwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0Mjc1NzQ3NDZGNkUwMEUxMDAwMDAwMDAwMDAwMzYwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDFFMTAwMDAwMDAwMDAwMDM3MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAzRTEwMDAwMDAwMDA0MDAzOTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDgxMDAwMDAwMDAwMDAwMUEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDA3RTEwMDAwMDAwMDA0MDAzQzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjNFMTAwMDAwMDAwMDQwMDNFMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDIyRTEwMDAwMDAwMDA0MDAzRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNUUxMDAwMDAwMDAwNDAwNDAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDJCRTEwMDAwMDAwMDA0MDA0MzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyQ0UxMDAwMDAwMDAwNDAwNDQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwRkZGRjAxMDAxOTAwNDM0RDQ2NDM1NDZGNkY2QzQyNjE3MjQzNkY2RDYyNkY0MjZGNzg0Mjc1NzQ3NDZGNkU0MjgxMDAwMDAwMDAwNDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDEwMDAwMDA3ODAwMDAwMDAyMDAyMDUwRkZGRkZGRkZGRkZFRkYwMDk2MDAwMDAwMDAwMDAwMDAwMDAwMDE4MDIxODEwMDAwMDAwMDA0MDAyRDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNEUxMDAwMDAwMDAwNDAwM0YwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjhFMTAwMDAwMDAwMDQwMDQxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI5RTEwMDAwMDAwMDA0MDA0MjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMjgxMDAwMDAwMDAwNDAwMUMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjk4MTAwMDAwMDAwMDQwMDMxMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI3ODEwMDAwMDAwMDA0MDAyRjAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyODgxMDAwMDAwMDAwNDAwMzAwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMUQ4MTAwMDAwMDAwMDAwMDI5MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDFFODEwMDAwMDAwMDA0MDAyQTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEI4MTAwMDAwMDAwMDQwMDIwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBDODEwMDAwMDAwMDAwMDAyMTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODA1Rjg2MDAwMDAwMDAwMDAwMzUwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBFODEwMDAwMDAwMDAwMDAyMzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwRjgxMDAwMDAwMDAwMDAwMjQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMDAwMDAwMEZGRkVGRjA0NEQwMDYxMDA2OTAwNkUwMEZGN0YwMDAwPC9CdXR0b25zPg0KKyAgICAgICAgICAgIDwvTUZDVG9vbEJhci0zNDA0OT4NCisgICAgICAgICAgICA8UGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDQ5PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wQTAwMDAwMDBBMDAwMDAwNkUwMDAwMDA2RTAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDFDMDAwMDAwMDAwMzAwMDAzOTAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjgxOTI8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MTwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNDk+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDQ5Pg0KKyAgICAgICAgPC9EZXNrdG9wPg0KKyAgICAgICAgPE1ESVdpbmRvd3M+DQorICAgICAgICAgICAgPE1ESUNsaWVudEFyZWEtMD4NCisgICAgICAgICAgICAgICAgPE1ESVRhYnNTdGF0ZT4wMTAwMDAwMDAzMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDAyODAwMDAwMDI4MDAwMDAwMDEwMDAwMDAwMzAwMDAwMDAyMDAwMDAwMDEwMDAwMDBGRkZFRkYyNDI0MDA1NzAwNTMwMDVGMDA0NDAwNDkwMDUyMDAyNDAwNUMwMDJFMDAyRTAwNUMwMDJFMDAyRTAwNUMwMDUzMDA2RjAwNzUwMDcyMDA2MzAwNjUwMDVDMDA2NTAwNzYwMDY1MDA2RTAwNzQwMDVGMDA2NzAwNzIwMDZGMDA3NTAwNzAwMDczMDAyRTAwNjMwMDAxMDAwMDAwRkZGRjAxMDAxNDAwNDk2NjQzNkY2RTc0NjU2RTc0NTM3NDZGNzI2MTY3NjU0OTZENzA2Q0ZGRkVGRjAwRkZGRUZGRkYyODAxM0MwMDNGMDA3ODAwNkQwMDZDMDAyMDAwNzYwMDY1MDA3MjAwNzMwMDY5MDA2RjAwNkUwMDNEMDAyMjAwMzEwMDJFMDAzMDAwMjIwMDIwMDA2NTAwNkUwMDYzMDA2RjAwNjQwMDY5MDA2RTAwNjcwMDNEMDAyMjAwNTUwMDU0MDA0NjAwMkQwMDM4MDAyMjAwM0YwMDNFMDAwQTAwM0MwMDUyMDA2RjAwNkYwMDc0MDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNEUwMDc1MDA2RDAwNTIwMDZGMDA3NzAwNzMwMDNFMDAzMTAwM0MwMDJGMDA0RTAwNzUwMDZEMDA1MjAwNkYwMDc3MDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDRFMDA3NTAwNkQwMDQzMDA2RjAwNkMwMDczMDAzRTAwMzEwMDNDMDAyRjAwNEUwMDc1MDA2RDAwNDMwMDZGMDA2QzAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1ODAwNTAwMDZGMDA3MzAwM0UwMDMwMDAzQzAwMkYwMDU4MDA1MDAwNkYwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTkwMDUwMDA2RjAwNzMwMDNFMDAzMDAwM0MwMDJGMDA1OTAwNTAwMDZGMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDUzMDA3NDAwNjEwMDcyMDA3NDAwM0UwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDUzMDA3NDAwNjEwMDcyMDA3NDAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDNFMDAzMDAwM0MwMDJGMDA1MzAwNjUwMDZDMDA0NTAwNkUwMDY0MDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTgwMDUwMDA2RjAwNzMwMDMyMDAzRTAwMzAwMDNDMDAyRjAwNTgwMDUwMDA2RjAwNzMwMDMyMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTkwMDUwMDA2RjAwNzMwMDMyMDAzRTAwMzIwMDMyMDAzODAwM0MwMDJGMDA1OTAwNTAwMDZGMDA3MzAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA1MzAwNzQwMDYxMDA3MjAwNzQwMDMyMDAzRTAwMzkwMDMwMDAzMDAwMzUwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDMyMDAzRTAwMzkwMDMwMDAzMjAwMzUwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwMzIwMDNFMDAwQTAwM0MwMDJGMDA1MjAwNkYwMDZGMDA3NDAwM0UwMDBBMDBGRkZFRkYwRTY1MDA3NjAwNjUwMDZFMDA3NDAwNUYwMDY3MDA3MjAwNkYwMDc1MDA3MDAwNzMwMDJFMDA2MzAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMjgyNDAwNTcwMDUzMDA1RjAwNDQwMDQ5MDA1MjAwMjQwMDVDMDAyRTAwMkUwMDVDMDAyRTAwMkUwMDVDMDA1MzAwNkYwMDc1MDA3MjAwNjMwMDY1MDA1QzAwNjkwMDZFMDA2MzAwNkMwMDc1MDA2NDAwNjUwMDVDMDA0NjAwNzIwMDY1MDA2NTAwNTIwMDU0MDA0RjAwNTMwMDJFMDA2ODAwMDEwMDAwMDAwMTgwRkZGRUZGMDBGRkZFRkZGRjJBMDEzQzAwM0YwMDc4MDA2RDAwNkMwMDIwMDA3NjAwNjUwMDcyMDA3MzAwNjkwMDZGMDA2RTAwM0QwMDIyMDAzMTAwMkUwMDMwMDAyMjAwMjAwMDY1MDA2RTAwNjMwMDZGMDA2NDAwNjkwMDZFMDA2NzAwM0QwMDIyMDA1NTAwNTQwMDQ2MDAyRDAwMzgwMDIyMDAzRjAwM0UwMDBBMDAzQzAwNTIwMDZGMDA2RjAwNzQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA0RTAwNzUwMDZEMDA1MjAwNkYwMDc3MDA3MzAwM0UwMDMxMDAzQzAwMkYwMDRFMDA3NTAwNkQwMDUyMDA2RjAwNzcwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNEUwMDc1MDA2RDAwNDMwMDZGMDA2QzAwNzMwMDNFMDAzMTAwM0MwMDJGMDA0RTAwNzUwMDZEMDA0MzAwNkYwMDZDMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU4MDA1MDAwNkYwMDczMDAzRTAwMzAwMDNDMDAyRjAwNTgwMDUwMDA2RjAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwM0UwMDMwMDAzQzAwMkYwMDU5MDA1MDAwNkYwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwM0UwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzMDAwM0MwMDJGMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzNzAwMzEwMDMwMDAzQzAwMkYwMDU5MDA1MDAwNkYwMDczMDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDUzMDA3NDAwNjEwMDcyMDA3NDAwMzIwMDNFMDAzMjAwMzEwMDM0MDAzMjAwMzQwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzMjAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDMyMDAzRTAwMzIwMDMxMDAzNDAwMzMwMDMzMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDMyMDAzRTAwMEEwMDNDMDAyRjAwNTIwMDZGMDA2RjAwNzQwMDNFMDAwQTAwRkZGRUZGMEE0NjAwNzIwMDY1MDA2NTAwNTIwMDU0MDA0RjAwNTMwMDJFMDA2ODAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGM0QyNDAwNTcwMDUzMDA1RjAwNDQwMDQ5MDA1MjAwMjQwMDVDMDAyRTAwMkUwMDVDMDAyRTAwMkUwMDVDMDA1MzAwNkYwMDc1MDA3MjAwNjMwMDY1MDA1QzAwNzAwMDZGMDA3MjAwNzQwMDYxMDA2MjAwNkMwMDY1MDA1QzAwNDkwMDQxMDA1MjAwNUMwMDQxMDA1MjAwNEQwMDVGMDA0MzAwNDEwMDM1MDA1RjAwNEUwMDZGMDA1RjAwNDcwMDQ5MDA0MzAwNUMwMDcwMDA2RjAwNzIwMDc0MDA2RDAwNjEwMDYzMDA3MjAwNkYwMDJFMDA2ODAwMDEwMDAwMDAwMTgwRkZGRUZGMDBGRkZFRkZGRjI3MDEzQzAwM0YwMDc4MDA2RDAwNkMwMDIwMDA3NjAwNjUwMDcyMDA3MzAwNjkwMDZGMDA2RTAwM0QwMDIyMDAzMTAwMkUwMDMwMDAyMjAwMjAwMDY1MDA2RTAwNjMwMDZGMDA2NDAwNjkwMDZFMDA2NzAwM0QwMDIyMDA1NTAwNTQwMDQ2MDAyRDAwMzgwMDIyMDAzRjAwM0UwMDBBMDAzQzAwNTIwMDZGMDA2RjAwNzQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA0RTAwNzUwMDZEMDA1MjAwNkYwMDc3MDA3MzAwM0UwMDMxMDAzQzAwMkYwMDRFMDA3NTAwNkQwMDUyMDA2RjAwNzcwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNEUwMDc1MDA2RDAwNDMwMDZGMDA2QzAwNzMwMDNFMDAzMTAwM0MwMDJGMDA0RTAwNzUwMDZEMDA0MzAwNkYwMDZDMDA3MzAwM0UwMDBBMDAyMDAwMjAwMDIwMDAyMDAwM0MwMDU4MDA1MDAwNkYwMDczMDAzRTAwMzAwMDNDMDAyRjAwNTgwMDUwMDA2RjAwNzMwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwM0UwMDMwMDAzQzAwMkYwMDU5MDA1MDAwNkYwMDczMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMzAwMDNDMDAyRjAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNDUwMDZFMDA2NDAwM0UwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzMDAwM0MwMDJGMDA1ODAwNTAwMDZGMDA3MzAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1OTAwNTAwMDZGMDA3MzAwMzIwMDNFMDAzODAwMzEwMDNDMDAyRjAwNTkwMDUwMDA2RjAwNzMwMDMyMDAzRTAwMEEwMDIwMDAyMDAwMjAwMDIwMDAzQzAwNTMwMDY1MDA2QzAwNTMwMDc0MDA2MTAwNzIwMDc0MDAzMjAwM0UwMDMzMDAzMjAwMzMwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDUzMDA3NDAwNjEwMDcyMDA3NDAwMzIwMDNFMDAwQTAwMjAwMDIwMDAyMDAwMjAwMDNDMDA1MzAwNjUwMDZDMDA0NTAwNkUwMDY0MDAzMjAwM0UwMDMzMDAzMjAwMzMwMDMwMDAzQzAwMkYwMDUzMDA2NTAwNkMwMDQ1MDA2RTAwNjQwMDMyMDAzRTAwMEEwMDNDMDAyRjAwNTIwMDZGMDA2RjAwNzQwMDNFMDAwQTAwRkZGRUZGMEI3MDAwNkYwMDcyMDA3NDAwNkQwMDYxMDA2MzAwNzIwMDZGMDAyRTAwNjgwMDAwMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAwMDAwMDAwMTAwMDAwMDBDNUQ0RjIwMEZGREM3ODAwQkVDRUExMDBGMEEwQTEwMEJDQThFMTAwOUNDMUI2MDBGN0I4ODYwMEQ5QURDMjAwQTVDMkQ3MDBCM0E2QkUwMEVBRDZBMzAwRjZGQTdEMDBCNUU5OUQwMDVGQzNDRjAwQzE4MzgzMDBDQUNBRDUwMDAxMDAwMDAwMDEwMDAwMDAwMjAwMDAwMDFDMDEwMDAwNTYwMDAwMDA4MDA3MDAwMDYxMDIwMDAwPC9NRElUYWJzU3RhdGU+DQorICAgICAgICAgICAgPC9NRElDbGllbnRBcmVhLTA+DQorICAgICAgICA8L01ESVdpbmRvd3M+DQorICAgIDwvV2luZG93U3RvcmFnZT4NCiA8L1dvcmtzcGFjZT4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvQ0RDQ29tbWFuZENvbnNvbGUuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCmluZGV4IDE1ODg2OTMuLjA5ZGQ5NjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9DRENDb21tYW5kQ29uc29sZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIE5PVEU6ICBUaGlzIGZpbGUgdXNlcyBhIHRoaXJkIHBhcnR5IFVTQiBDREMgZHJpdmVyLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNmI2MjViZC4uZGQzMmU4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYwppbmRleCAyNTFjYWFkLi4xNzY0OTI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnJlZVJUT1NfdGlja19jb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAyMDdiMzcwLi5kMGZjZTIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCA5ODFjNjVlLi4yMzExNjQ2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCmluZGV4IDk0NjI1YmQuLmJmNzU2ZTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsNCi07ICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi07ICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotOyAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLTsgICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotOyAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi07ICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi07ICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLTsgICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJRVhQT1JUIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCUVYUE9SVCB2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9MRURzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvTEVEcy5jCmluZGV4IDkwOGUwYjIuLjk2YmM1YWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9MRURzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL0xFRHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9ibGlua3lfZGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKaW5kZXggYTg2OTFkOC4uNjQxMzg3YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL2JsaW5reV9kZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDN4X1hwbGFpbmVkX0lBUi9tYWluLmMKaW5kZXggZmU3M2YwZi4uMTQ4YzY1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVEM3hfWHBsYWluZWRfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQzeF9YcGxhaW5lZF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggYTg2OTFkOC4uNjQxMzg3YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0NEQ0NvbW1hbmRDb25zb2xlLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQ0RDQ29tbWFuZENvbnNvbGUuYwppbmRleCAwNDFjZGYyLi41OTMxNmY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQ0RDQ29tbWFuZENvbnNvbGUuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvQ0RDQ29tbWFuZENvbnNvbGUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBOT1RFOiAgVGhpcyBmaWxlIHVzZXMgYSB0aGlyZCBwYXJ0eSBVU0IgQ0RDIGRyaXZlci4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDgzMzY3YjguLjc0ZjY0MzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKaW5kZXggY2MxMmY0Ny4uOWUwYTY2YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMGU1ZDk1NS4uNWI1ZjQwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZjIyOGJjMS4uNGRmMGZkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9GdWxsX0RlbW8vcmVnX3Rlc3QuUwppbmRleCA1YjAwYTAzLi4wZjcxYzM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvRnVsbF9EZW1vL3JlZ190ZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0Z1bGxfRGVtby9yZWdfdGVzdC5TCkBAIC0xLDc2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOyAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotOyAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLTsgICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi07ICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLTsgICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotOyAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotOyAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi07ICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0xFRHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9MRURzLmMKaW5kZXggOTA4ZTBiMi4uOTZiYzVhYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL0xFRHMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvTEVEcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL1JUT1NEZW1vLmV3ZCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9SVE9TRGVtby5ld2QKaW5kZXggNTg5N2MyNC4uOGE3YzE0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL1JUT1NEZW1vLmV3ZAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdkCkBAIC0xLDI2OTcgKzEsMjgzNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQogPHByb2plY3Q+DQotICA8ZmlsZVZlcnNpb24+MjwvZmlsZVZlcnNpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+c3JhbTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICA8ZmlsZVZlcnNpb24+MzwvZmlsZVZlcnNpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+c3JhbTwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4LWVrLXNyYW0ubWFjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NS41MC4wLjUxOTA3PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjIwLjIuNzQxODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRBdHRhY2hUb1Byb2dyYW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk92ZXJyaWRlRGVmRmxhc2hCb2FyZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RldmljZUNvbmZpZ01hY3JvRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RlYnVnZ2VyRXh0cmFPcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NBbGxNVEJPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTnJPZkNvcmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTWFzdGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVXb3Jrc3BhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlUHJvamVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVDb25maWd1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4LWVrLXNyYW0ubWFjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NS41MC4wLjUxOTA3PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43LjIwLjIuNzQxODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk92ZXJyaWRlRGVmRmxhc2hCb2FyZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RldmljZUNvbmZpZ01hY3JvRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RlYnVnZ2VyRXh0cmFPcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NBbGxNVEJPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTnJPZkNvcmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTWFzdGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MzQ2MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVXb3Jrc3BhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlUHJvamVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVDb25maWd1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEV4dHJhSW1hZ2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NBdHRhY2hTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYXNzRXJhc2VCZWZvcmVGbGFzaGluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5BUk1TSU1fSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Ecml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltRW5hYmxlUFNQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DU2ltUHNwT3ZlcnJpZGVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BDb25maWdGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q0FESV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ2FkaU1lbW9yeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GYXN0IE1vZGVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBRElMb2dGaWxlQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBRElMb2dGaWxlRWRpdEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjQ8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTaXplTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hCb2FyZFBhdGhTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtTcGVlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rREFQTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEZWJ1Z0FjY2Vzc1BvcnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1iZWRcTWJlZEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcVGFyZ2V0QWNjZXNzU2VydmVyXFRhcmdldEFjY2Vzc1NlcnZlci5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPmRkcmFtPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSUk9NX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE1PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NUY3BJcEFsdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUEVNaWNyb0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0ludGVyZmFjZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0p0YWdTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiNVTklOSVRJQUxJWkVEIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9TZXJpYWxQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9UQ1BJUEF1dG9TY2FuTmV0d29yazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwLjAuMC4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvQ29tbUNtZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1hEUzEwMEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPGRlYnVnZ2VyUGx1Z2lucz4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcSENDV2FyZVxIQ0NXYXJlLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xTYWZlUlRPU1xTYWZlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xTeW1MaXN0XFN5bUxpc3QuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5kZHJhbTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXGNvbmZpZ1xmbGFzaGxvYWRlclw8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHJlc291cmNlc1xld2FybVxzYW1hNWQ0eC1lay1kZHJhbS5tYWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41LjQxLjIuNTE3OTg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuMjAuMi43NDE4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEF0dGFjaFRvUHJvZ3JhbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSUk9NX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE1PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjY8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT41PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaENIUkVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVGNwSXBBbHQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RjcElwU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua0RldmljZU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5NQUNSQUlHT1JfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0VtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MEBBUk03VERNSTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnbzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VW51c2VkQWRkcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDA4MDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1BFTWljcm9BdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9JbnRlcmZhY2VMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9KdGFnU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jVU5JTklUSUFMSVpFRCM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9VU0JEZXZpY2U8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvU2VyaWFsUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvVENQSVBBdXRvU2Nhbk5ldHdvcms8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMC4wLjAuMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0NvbW1DbWRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlJESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJRHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NYRFMxMDBBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2VPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5USVBhY2thZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXEhDQ1dhcmVcSENDV2FyZS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQVZJWFxBVklYLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcZW1iT1NcZW1iT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1RWFxNUVhSdG9zUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcU2FmZVJUT1NcU2FmZVJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRocmVhZFhcVGhyZWFkWEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktMjg2LUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xDb2RlQ292ZXJhZ2VcQ29kZUNvdmVyYWdlLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcT3J0aVxPcnRpLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcU3ltTGlzdFxTeW1MaXN0LkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcdUNQcm9iZVx1Q1Byb2JlUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgPC9kZWJ1Z2dlclBsdWdpbnM+DQotICA8L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4LWVrLWRkcmFtLm1hYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUuNDEuMi41MTc5ODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkpMSU5LX0lEPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+OC4yMC4xLjE0MTgxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hc3NFcmFzZUJlZm9yZUZsYXNoaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DQURJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDYWRpTWVtb3J5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZhc3QgTW9kZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaEJvYXJkUGF0aFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rREFQTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEZWJ1Z0FjY2Vzc1BvcnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1iZWRcTWJlZEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcVGFyZ2V0QWNjZXNzU2VydmVyXFRhcmdldEFjY2Vzc1NlcnZlci5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KIDwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdwIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL1JUT1NEZW1vLmV3cAppbmRleCBmMTAzMjVkLi40MGE3NjAxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvUlRPU0RlbW8uZXdwCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9SVE9TRGVtby5ld3AKQEAgLTEsMjE2MCArMSwyMzAzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5zcmFtPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgPGZpbGVWZXJzaW9uPjM8L2ZpbGVWZXJzaW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPnNyYW08L25hbWU+DQorICAgICAgICA8dG9vbGNoYWluPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCisgICAgICAgIDwvdG9vbGNoYWluPg0KICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtXGJpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbVxvYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLCB3aXRob3V0IG11bHRpYnl0ZSBzdXBwb3J0Ljwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gZmxhZ3MuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GUFU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny4yMC4yLjc0MTg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtXGJpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtXG9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbVxvYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBzY2FuIHNldCwgbm8gYXNzaWdubWVudCBzdXBwcmVzc2luZywgd2l0aG91dCBtdWx0aWJ5dGUgc3VwcG9ydC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgYSwgQSwgbm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIGZsYWdzLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R091dHB1dEJpbmFyeTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ01TSVNQYWNrU2VsZWN0RGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9nTGliSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xpYkFkZGl0aW9uYWxMb2NhbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50Zk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZVRhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVEaXNwbGF5T25seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRTUEV4dGVuc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zNDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5zcmFtPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD0wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTExMTEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmJvYXJkX3NhbWE1ZDR4LWVrPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXMvbGliY2hpcF9zYW1hNWQ0eDwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHgvaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2U8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTEk8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcRnVsbF9EZW1vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+U09GVFBBQ0s8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NSVFRJMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbS5iaW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DVVNUT008L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQorICAgICAgICAgICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCisgICAgICAgICAgICAgICAgPGhhc1ByaW8+MDwvaGFzUHJpbz4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCisgICAgICAgICAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW0ub3V0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkL0F0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtccmVzb3VyY2VzXGV3YXJtXHNhbWE1ZDR4XHNyYW0uaWNmPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+cmVzZXRIYW5kbGVyPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0NhbGxHcmFwaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVfQWx0RGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtIZWFwU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9jYWxlU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KKyAgICA8Y29uZmlndXJhdGlvbj4NCisgICAgICAgIDxuYW1lPmRkcmFtPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c2FtYTVkNHg8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD0wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTExMTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ011bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmJvYXJkX3NhbWE1ZDR4LWVrPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4L2luY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2U8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTEk8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxGdWxsX0RlbW88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5TT0ZUUEFDSzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklJbnRlcndvcmsyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcERpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NSVFRJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj45PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbS5iaW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQotICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCi0gICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTGliSU9Db25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+WExpbmtNaXNyYUhhbmRsZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJbnB1dEZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zcmFtLm91dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHJlc291cmNlc1xld2FybVxzYW1hNWQ0eFxzcmFtLmljZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnJlc2V0SGFuZGxlcjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+ZGRyYW08L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yMjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5kZHJhbVxiaW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ZGRyYW1cb2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5kZHJhbVxvYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Njwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZQVTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3RTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT40LjMwQTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuMjAuMi43NDE4PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5EZWZhdWx0CU5vbmU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40ODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zMTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5zYW1hNWQ0eDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5kZHJhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD00PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlBhMTMxLCBQYTAzOTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDAwMDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ011bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmJvYXJkX3NhbWE1ZDR4LWVrPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4L2luY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2U8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E1X05vX0dJQzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1DTEk8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxGdWxsX0RlbW88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5TT0ZUUEFDSzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklJbnRlcndvcmsyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcERpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NSVFRJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj45PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cbGlicmFyaWVzPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtLmJpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCi0gICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KLSAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmRkcmFtLm91dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHJlc291cmNlc1xld2FybVxzYW1hNWQ0eFxkZHJhbS5pY2Y8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5yZXNldEhhbmRsZXI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MTEwMjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNCaXRPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUaHJlYWRzU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5BdG1lbCBGaWxlczwvbmFtZT4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+Mjk8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtXGJpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZHJhbVxvYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRkcmFtXG9iajwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NC4zMEE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44LjIwLjEuMTQxODE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ29uZmlnUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT41MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkRlZmF1bHQJTm9uZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ01TSVNQYWNrU2VsZWN0RGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9nTGliSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xpYkFkZGl0aW9uYWxMb2NhbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50Zk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZVRhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVEaXNwbGF5T25seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRTUEV4dGVuc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zNDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZHJhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+VFJBQ0VfTEVWRUw9NDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5QYTEzMSwgUGEwMzk8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wMDAwMDAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWJ1Z0luZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUVuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGFuZ0NvbmZvcm1hbmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2lnbmVkUGxhaW5DaGFyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUmVxdWlyZVByb3RvdHlwZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJib2FyZF9zYW1hNWQ0eC1lazwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC9BdG1lbEZpbGVzL2xpYmNoaXBfc2FtYTVkNHg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlcy9saWJjaGlwX3NhbWE1ZDR4L2luY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGluY2x1ZGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlNPRlRQQUNLPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDcHBJbmxpbmVTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRmxvYXRTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NOb0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3lTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0Qm9tPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjUlRUSTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU9ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRW5kaWFuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFDYXNlU2Vuc2l0aXZpdHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjcm9DaGFyczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNhbWE1ZDR4PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZHJhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT44PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXC4uXGxpYnJhcmllczwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJC8uPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPk9CSkNPUFk8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0Rm9ybWF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ZGRyYW0uYmluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPGV4dGVuc2lvbnM+PC9leHRlbnNpb25zPg0KKyAgICAgICAgICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQorICAgICAgICAgICAgICAgIDxoYXNQcmlvPjA8L2hhc1ByaW8+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQorICAgICAgICAgICAgICAgIDxwb3N0YnVpbGQ+PC9wb3N0YnVpbGQ+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5kZHJhbS5vdXQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQvQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xyZXNvdXJjZXNcZXdhcm1cc2FtYTVkNHhcZGRyYW0uaWNmPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+cmVzZXRIYW5kbGVyPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0NhbGxHcmFwaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVfQWx0RGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtIZWFwU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9jYWxlU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KICAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+bGliYm9hcmRfc2FtYTVkNHgtZWs8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGJvYXJkX2NzdGFydHVwX2lhci5zPC9uYW1lPg0KLSAgICAgICAgPGV4Y2x1ZGVkPg0KLSAgICAgICAgICA8Y29uZmlndXJhdGlvbj5zcmFtPC9jb25maWd1cmF0aW9uPg0KLSAgICAgICAgICA8Y29uZmlndXJhdGlvbj5kZHJhbTwvY29uZmlndXJhdGlvbj4NCi0gICAgICAgIDwvZXhjbHVkZWQ+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHNvdXJjZVxib2FyZF9sb3dsZXZlbC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJib2FyZF9zYW1hNWQ0eC1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGRiZ191dGlsLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHNvdXJjZVxkYmd1X2NvbnNvbGUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCisgICAgICAgIDxuYW1lPkF0bWVsIEZpbGVzPC9uYW1lPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPmxpYmJvYXJkX3NhbWE1ZDR4LWVrPC9uYW1lPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGJvYXJkX2NzdGFydHVwX2lhci5zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZXhjbHVkZWQ+DQorICAgICAgICAgICAgICAgICAgICA8Y29uZmlndXJhdGlvbj5zcmFtPC9jb25maWd1cmF0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPGNvbmZpZ3VyYXRpb24+ZGRyYW08L2NvbmZpZ3VyYXRpb24+DQorICAgICAgICAgICAgICAgIDwvZXhjbHVkZWQ+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGJvYXJkX21lbW9yaWVzLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGRiZ191dGlsLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliYm9hcmRfc2FtYTVkNHgtZWtcc291cmNlXGRiZ3VfY29uc29sZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmJvYXJkX3NhbWE1ZDR4LWVrXHNvdXJjZVxsZWQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgIDxuYW1lPmxpYmNoaXBfc2FtYTVkNHg8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxhaWMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XGNwMTVcY3AxNS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcY3AxNVxjcDE1X2FzbV9pYXIuczwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxtbXUuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwaW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwaW9faXQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwaXQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwbWMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVx0Yy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXFVTQkRfSEFMLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2Vcd2R0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5VU0I8L25hbWU+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5jb21tb248L25hbWU+DQorICAgICAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPmNkYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNkY1xDRENMaW5lQ29kaW5nLmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGNvbW1vblxjZGNcQ0RDU2V0Q29udHJvbExpbmVTdGF0ZVJlcXVlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Y29yZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNvcmVcVVNCRGVzY3JpcHRvcnMuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNvcmVcVVNCUmVxdWVzdHMuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICAgICAgPG5hbWU+ZGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5jZGMtc2VyaWFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY2RjLXNlcmlhbFxDRENEU2VyaWFsLmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjZGMtc2VyaWFsXENEQ0RTZXJpYWxfQ2FsbGJhY2tzLmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjZGMtc2VyaWFsXENEQ0RTZXJpYWxEcml2ZXIuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbFBvcnQuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Y29yZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRC5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxkZXZpY2VcY29yZVxVU0JEQ2FsbGJhY2tzLmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjb3JlXFVTQkREcml2ZXIuYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRERyaXZlckNhbGxiYWNrcy5jPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcVVNCRERyaXZlckRlc2NyaXB0b3JzLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCiAgICAgPC9ncm91cD4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPmxpYmNoaXBfc2FtYTVkNHg8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VcYWljLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcY3AxNVxjcDE1LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcY3AxNVxjcDE1X2FzbV9pYXIuczwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VcbW11LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBpby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxwaW9faXQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcbGliY2hpcF9zYW1hNWQ0eFxzb3VyY2VccGl0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXGxpYmNoaXBfc2FtYTVkNHhcc291cmNlXHBtYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVx0Yy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVxVU0JEX0hBTC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1xsaWJjaGlwX3NhbWE1ZDR4XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5VU0I8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+Y29tbW9uPC9uYW1lPg0KLSAgICAgICAgPGdyb3VwPg0KLSAgICAgICAgICA8bmFtZT5jZGM8L25hbWU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNkY1xDRENMaW5lQ29kaW5nLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxBdG1lbEZpbGVzXHVzYlxjb21tb25cY2RjXENEQ1NldENvbnRyb2xMaW5lU3RhdGVSZXF1ZXN0LmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDwvZ3JvdXA+DQotICAgICAgICA8Z3JvdXA+DQotICAgICAgICAgIDxuYW1lPmNvcmU8L25hbWU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcY29tbW9uXGNvcmVcVVNCRGVzY3JpcHRvcnMuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGNvbW1vblxjb3JlXFVTQlJlcXVlc3RzLmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDwvZ3JvdXA+DQotICAgICAgPC9ncm91cD4NCi0gICAgICA8Z3JvdXA+DQotICAgICAgICA8bmFtZT5kZXZpY2U8L25hbWU+DQotICAgICAgICA8Z3JvdXA+DQotICAgICAgICAgIDxuYW1lPmNkYy1zZXJpYWw8L25hbWU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbC5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNkYy1zZXJpYWxcQ0RDRFNlcmlhbF9DYWxsYmFja3MuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjZGMtc2VyaWFsXENEQ0RTZXJpYWxEcml2ZXIuYzwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXGRldmljZVxjZGMtc2VyaWFsXENEQ0RTZXJpYWxQb3J0LmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDwvZ3JvdXA+DQotICAgICAgICA8Z3JvdXA+DQotICAgICAgICAgIDxuYW1lPmNvcmU8L25hbWU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRC5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRENhbGxiYWNrcy5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRERyaXZlci5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQXRtZWxGaWxlc1x1c2JcZGV2aWNlXGNvcmVcVVNCRERyaXZlckNhbGxiYWNrcy5jPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8L2dyb3VwPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEF0bWVsRmlsZXNcdXNiXFVTQkREcml2ZXJEZXNjcmlwdG9ycy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkJsaW5reSBEZW1vPC9uYW1lPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZyZWVSVE9TIFNvdXJjZTwvbmFtZT4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPnBvcnRhYmxlPC9uYW1lPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPk1lbU1hbmc8L25hbWU+DQorICAgICAgICA8bmFtZT5CbGlua3kgRGVtbzwvbmFtZT4NCiAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCiAgICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydEFTTS5zPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnJlZVJUT1MrQ0xJPC9uYW1lPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GdWxsIERlbW88L25hbWU+DQogICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5Db21tb24gRGVtbyBUYXNrczwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkeW5hbWljLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGZsb3AuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEdlblFUZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQorICAgICAgICA8bmFtZT5GcmVlUlRPUyBTb3VyY2U8L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQorICAgICAgICAgICAgPGdyb3VwPg0KKyAgICAgICAgICAgICAgICA8bmFtZT5NZW1NYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBNV9Ob19HSUNccG9ydC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTVfTm9fR0lDXHBvcnRBU00uczwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRpbWVycy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5GcmVlUlRPUytDTEk8L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5GdWxsIERlbW88L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+Q29tbW9uIERlbW8gVGFza3M8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGR5bmFtaWMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGZsb3AuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50UXVldWUuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxDRENDb21tYW5kQ29uc29sZS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xyZWdfdGVzdC5TPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXERlbW9cQ29tbW9uXEZyZWVSVE9TX1BsdXNfQ0xJX0RlbW9zXFNhbXBsZS1DTEktY29tbWFuZHMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCiAgICAgPC9ncm91cD4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxDRENDb21tYW5kQ29uc29sZS5jPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxjc3RhcnR1cF93aXRoX0ZyZWVSVE9TX3ZlY3RvcnMuczwvbmFtZT4NCiAgICAgPC9maWxlPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZyZWVSVE9TX3RpY2tfY29uZmlnLmM8L25hbWU+DQogICAgIDwvZmlsZT4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZyZWVSVE9TQ29uZmlnLmg8L25hbWU+DQogICAgIDwvZmlsZT4NCiAgICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9ccmVnX3Rlc3QuUzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcTEVEcy5jPC9uYW1lPg0KICAgICA8L2ZpbGU+DQogICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xEZW1vXENvbW1vblxGcmVlUlRPU19QbHVzX0NMSV9EZW1vc1xTYW1wbGUtQ0xJLWNvbW1hbmRzLmM8L25hbWU+DQorICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXG1haW4uYzwvbmFtZT4NCiAgICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXGNzdGFydHVwX3dpdGhfRnJlZVJUT1NfdmVjdG9ycy5zPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcRnJlZVJUT1NfdGlja19jb25maWcuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXEZyZWVSVE9TQ29uZmlnLmg8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxMRURzLmM8L25hbWU+DQotICA8L2ZpbGU+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQotICA8L2ZpbGU+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvbWFpbi5jCmluZGV4IGM4ZmQ1NmQuLmIyZjM0YjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8uY3J1biBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCmluZGV4IDViYjVhY2MuLjYyYzIxYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCkBAIC0xLDE2ICsxLDEzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8Y3J1bj4NCi0gIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICA8ZmlsdGVyX2VudHJpZXM+DQotICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KLSAgICAgIDx0eXBlPio8L3R5cGU+DQotICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCi0gICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQotICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQotICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCi0gICAgPC9maWx0ZXI+DQotICA8L2ZpbHRlcl9lbnRyaWVzPg0KKyAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICA8ZmlsdGVyX2VudHJpZXM+DQorICAgICAgICA8ZmlsdGVyIGluZGV4PSIwIiB0eXBlPSJkZWZhdWx0Ij4NCisgICAgICAgICAgICA8dHlwZT4qPC90eXBlPg0KKyAgICAgICAgICAgIDxzdGFydF9maWxlPio8L3N0YXJ0X2ZpbGU+DQorICAgICAgICAgICAgPGVuZF9maWxlPio8L2VuZF9maWxlPg0KKyAgICAgICAgICAgIDxhY3Rpb25fZGVidWdnZXI+MDwvYWN0aW9uX2RlYnVnZ2VyPg0KKyAgICAgICAgICAgIDxhY3Rpb25fbG9nPjE8L2FjdGlvbl9sb2c+DQorICAgICAgICA8L2ZpbHRlcj4NCisgICAgPC9maWx0ZXJfZW50cmllcz4NCiA8L2NydW4+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CmluZGV4IDgxYTE1OWEuLjUxZjM2NDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BNV9TQU1BNUQ0eF9FS19JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKQEAgLTEsODcgKzEsMzQ4IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQogPFByb2plY3Q+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8RGVidWctTG9nPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xNjIyPC9Db2x1bW5XaWR0aDE+PC9EZWJ1Zy1Mb2c+DQotICAgICAgPEJ1aWxkPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+MzI0PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPjwvQnVpbGQ+DQotICAgICAgPFdvcmtzcGFjZT4NCi0gICAgICAgIDxDb2x1bW5XaWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPENvbHVtbjA+MjE0PC9Db2x1bW4wPjxDb2x1bW4xPjI3PC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjI3PC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KLSAgICAgIDwvV29ya3NwYWNlPg0KLSAgICAgIDxEaXNhc3NlbWJseT4NCi0gICAgICAgIDxjb2wtbmFtZXM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxpdGVtPkRpc2Fzc2VtYmx5PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz4NCi0gICAgICAgIDxjb2wtd2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MjA8L2l0ZW0+PC9jb2wtd2lkdGhzPg0KLSAgICAgICAgPERpc2FzbUhpc3RvcnkvPg0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+PFNob3dJbnN0clByb2ZpbGluZz4xPC9TaG93SW5zdHJQcm9maWxpbmc+PC9EaXNhc3NlbWJseT4NCi0gICAgPEJyZWFrcG9pbnRzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQnJlYWtwb2ludHM+PFNUQUNLXzE+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MTwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48c3RhY2s+Q1NUQUNLPC9zdGFjaz48d2lkdGg+NDwvd2lkdGg+PHZhcnM+MTwvdmFycz48b2Zmc2V0PjA8L29mZnNldD48Y29sLW5hbWVzPjxpdGVtPkRhdGE8L2l0ZW0+PGl0ZW0+RnJhbWU8L2l0ZW0+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48aXRlbT5WYXJpYWJsZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48L2NvbC13aWR0aHM+PC9TVEFDS18xPjxDYWxsU3RhY2s+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MTwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48Y29sLW5hbWVzPjxpdGVtPkZyYW1lPC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT40MDA8L2l0ZW0+PGl0ZW0+MjA8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQ2FsbFN0YWNrPjxXQVRDSF8xPjxleHByZXNzaW9ucz48aXRlbT54VGlja0NvdW50PC9pdGVtPjxpdGVtLz48L2V4cHJlc3Npb25zPjxjb2wtbmFtZXM+PGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xNTA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48L2NvbC13aWR0aHM+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L1dBVENIXzE+PFJlZ2lzdGVyPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9SZWdpc3Rlcj48TG9jYWxzPjxjb2wtbmFtZXM+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48aXRlbT5WYXJpYWJsZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4xNTA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xODU8L2l0ZW0+PC9jb2wtd2lkdGhzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9Mb2NhbHM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMT4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTg0MS0xODc3MTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTMxOS0xODc4MTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDE+PFduZDI+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMzA1OTAtMTg3NzU8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MgU291cmNlPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUyBTb3VyY2UvcG9ydGFibGU8L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TIFNvdXJjZS9wb3J0YWJsZS9NZW1NYW5nPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GdWxsIERlbW88L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL091dHB1dDwvRXhwYW5kZWROb2RlPjwvTm9kZURpY3Q+PC9TZXNzaW9uPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDI+PFduZDU+PFRhYnM+PFRhYj48SWRlbnRpdHk+VGFiSUQtNDg2OS01MTE1PC9JZGVudGl0eT48VGFiTmFtZT5SZWdpc3RlcjwvVGFiTmFtZT48RmFjdG9yeT5SZWdpc3RlcjwvRmFjdG9yeT48U2Vzc2lvbj48UkVHMT4wPC9SRUcxPjxSRUcyPjA8L1JFRzI+PEdyb3VwPjA8L0dyb3VwPjxTdGF0ZXM+MDwvU3RhdGVzPjwvU2Vzc2lvbj48L1RhYj48L1RhYnM+PFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kNT48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTExPC9ZUG9zMj48U2VsU3RhcnQyPjYxMzE8L1NlbFN0YXJ0Mj48U2VsRW5kMj42MTMxPC9TZWxFbmQyPjwvVGFiPjxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjYzPC9ZUG9zMj48U2VsU3RhcnQyPjA8L1NlbFN0YXJ0Mj48U2VsRW5kMj4wPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjM8L1lQb3MyPjxTZWxTdGFydDI+NzU2PC9TZWxTdGFydDI+PFNlbEVuZDI+NzU2PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAwNzA1M0Q4PjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMDcwNTNEOD48L1NpemVzPjwvUm93MD48Um93MT48U2l6ZXM+PFRvb2xiYXItMEY0MEIwNzA+PGtleT5kZWJ1Z2dlcmd1aS5lbnUxPC9rZXk+PC9Ub29sYmFyLTBGNDBCMDcwPjwvU2l6ZXM+PC9Sb3cxPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMj48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT43MTg8L0JvdHRvbT48UmlnaHQ+Mjg4PC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTcyNjE5PC9zaXplVmVydENYPjxzaXplVmVydENZPjczMTcwNzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQyPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzPjxXbmQ1PjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjcxODwvQm90dG9tPjxSaWdodD4xOTg8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzMxNzA3PC9zaXplVmVydENZPjwvUmVjdD48L1duZDU+PC9TaXplcz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMT48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4xOTg8L0JvdHRvbT48UmlnaHQ+MTY4MjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTY4NDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPjxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQxPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxEZXNrdG9wPg0KKyAgICAgICAgPFN0YXRpYz4NCisgICAgICAgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgIDwvRGVidWctTG9nPg0KKyAgICAgICAgICAgIDxCdWlsZD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgIDwvQnVpbGQ+DQorICAgICAgICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjIxNDwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjI3PC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4yNzwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPERpc2Fzc2VtYmx5Pg0KKyAgICAgICAgICAgICAgICA8Y29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjUwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjIwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxEaXNhc21IaXN0b3J5IC8+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8U2hvd0NvZGVDb3ZlcmFnZT4xPC9TaG93Q29kZUNvdmVyYWdlPg0KKyAgICAgICAgICAgICAgICA8U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz4NCisgICAgICAgICAgICA8L0Rpc2Fzc2VtYmx5Pg0KKyAgICAgICAgICAgIDxCcmVha3BvaW50cz4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4zPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5CcmVha3BvaW50PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQnJlYWtwb2ludHM+DQorICAgICAgICAgICAgPFNUQUNLXzE+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MTwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICA8c3RhY2s+Q1NUQUNLPC9zdGFjaz4NCisgICAgICAgICAgICAgICAgPHdpZHRoPjQ8L3dpZHRoPg0KKyAgICAgICAgICAgICAgICA8dmFycz4xPC92YXJzPg0KKyAgICAgICAgICAgICAgICA8b2Zmc2V0PjA8L29mZnNldD4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkRhdGE8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5GcmFtZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkxvY2F0aW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VHlwZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhbHVlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFyaWFibGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvU1RBQ0tfMT4NCisgICAgICAgICAgICA8Q2FsbFN0YWNrPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjE8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkZyYW1lPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT40MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgIDwvQ2FsbFN0YWNrPg0KKyAgICAgICAgICAgIDxXQVRDSF8xPg0KKyAgICAgICAgICAgICAgICA8ZXhwcmVzc2lvbnM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT54VGlja0NvdW50PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0gLz4NCisgICAgICAgICAgICAgICAgPC9leHByZXNzaW9ucz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkV4cHJlc3Npb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5Mb2NhdGlvbjwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlR5cGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5WYWx1ZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgIDxjb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTUwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgIDwvV0FUQ0hfMT4NCisgICAgICAgICAgICA8UmVnaXN0ZXI+DQorICAgICAgICAgICAgICAgIDxQcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgICAgICA8UG9zaXRpb24+MjwvUG9zaXRpb24+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT4NCisgICAgICAgICAgICAgICAgICAgIDxXaW5kb3dzIC8+DQorICAgICAgICAgICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgIDwvUmVnaXN0ZXI+DQorICAgICAgICAgICAgPExvY2Fscz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkxvY2F0aW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VHlwZTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPlZhbHVlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFyaWFibGU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjE1MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjE4NTwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICA8L0xvY2Fscz4NCisgICAgICAgIDwvU3RhdGljPg0KKyAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTk4NDEtMTg3NzE8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTkzMTktMTg3ODE8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgIDxXbmQyPg0KKyAgICAgICAgICAgICAgICA8VGFicz4NCisgICAgICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTMwNTkwLTE4Nzc1PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TIFNvdXJjZTwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUyBTb3VyY2UvcG9ydGFibGU8L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MgU291cmNlL3BvcnRhYmxlL01lbU1hbmc8L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnVsbCBEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL091dHB1dDwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgPFduZDU+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtNDg2OS01MTE1PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5SZWdpc3RlcjwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5SZWdpc3RlcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJFRzE+MDwvUkVHMT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJFRzI+MDwvUkVHMj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEdyb3VwPjA8L0dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8U3RhdGVzPjA8L1N0YXRlcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Nlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQ1Pg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+MTExPC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NjEzMTwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NjEzMTwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjM8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj4wPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj4wPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjM8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj43NTY8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjc1NjwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+DQorICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgICAgIDxYPjEwMDAwMDA8L1g+DQorICAgICAgICAgICAgICAgICAgICA8WT4xMDAwMDAwPC9ZPg0KKyAgICAgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICA8U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT4NCisgICAgICAgIDwvRWRpdG9yPg0KKyAgICAgICAgPFBvc2l0aW9ucz4NCisgICAgICAgICAgICA8VG9wPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhci0wMDcwNTNEOD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyLTAwNzA1M0Q4Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgICAgICA8Um93MT4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VG9vbGJhci0wRjQwQjA3MD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGtleT5kZWJ1Z2dlcmd1aS5lbnUxPC9rZXk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9Ub29sYmFyLTBGNDBCMDcwPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cxPg0KKyAgICAgICAgICAgIDwvVG9wPg0KKyAgICAgICAgICAgIDxMZWZ0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+NzE4PC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+Mjg4PC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4yMDA8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xNzI2MTk8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT43MzE3MDc8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9MZWZ0Pg0KKyAgICAgICAgICAgIDxSaWdodD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjcxODwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE5ODwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MjAwPC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjAwPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NzMxNzA3PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQ1Pg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvUmlnaHQ+DQorICAgICAgICAgICAgPEJvdHRvbT4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjE5ODwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjE2ODI8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjE2ODQ8L3hzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eXNjcmVlbj4yMDA8L3lzY3JlZW4+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvQm90dG9tPg0KKyAgICAgICAgICAgIDxGbG9hdD4NCisgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgPC9GbG9hdD4NCisgICAgICAgIDwvUG9zaXRpb25zPg0KKyAgICA8L0Rlc2t0b3A+DQorICAgIDxXaW5kb3dTdG9yYWdlIC8+DQogPC9Qcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E1X1NBTUE1RDR4X0VLX0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQKaW5kZXggOTM5MTRlZi4uNGQyMDEwMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSL3NldHRpbmdzL1JUT1NEZW1vLndzZHQKQEAgLTEsNjYgKzEsNTk2IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIj8+DQogPFdvcmtzcGFjZT4NCi0gIDxDb25maWdEaWN0aW9uYXJ5Pg0KLSAgICANCi0gIDxDdXJyZW50Q29uZmlncz48UHJvamVjdD5SVE9TRGVtby9kZHJhbTwvUHJvamVjdD48L0N1cnJlbnRDb25maWdzPjwvQ29uZmlnRGljdGlvbmFyeT4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjI0NzwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCi0gICAgICA8L1dvcmtzcGFjZT4NCi0gICAgICA8QnVpbGQ+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+PC9CdWlsZD4NCi0gICAgPEZpbmQtaW4tRmlsZXM+PENvbHVtbldpZHRoMD40OTc8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj43NDY8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjMzMTwvQ29sdW1uV2lkdGgzPjwvRmluZC1pbi1GaWxlcz48VGVybWluYWxJTy8+PERlYnVnLUxvZz48Q29sdW1uV2lkdGgwPjE5PC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xNjIzPC9Db2x1bW5XaWR0aDE+PC9EZWJ1Zy1Mb2c+PFNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PENvbHVtbldpZHRoMD44NzU8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj45OTQ8L0NvbHVtbldpZHRoMj48L1NlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PEJyZWFrcG9pbnRzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQnJlYWtwb2ludHM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMj4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC00MjMtMjg1MDQ8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vZG9jdW1lbnRhdGlvbjwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vbGlicmFyaWVzPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9yZXNvdXJjZXM8L0V4cGFuZGVkTm9kZT48L05vZGVEaWN0PjwvU2Vzc2lvbj4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQyPjxXbmQzPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTYyODEtMTUwNzE8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8VGFiPjxJZGVudGl0eT5UYWJJRC0xMzUyNi0xNTIwNTwvSWRlbnRpdHk+PFRhYk5hbWU+RmluZCBpbiBGaWxlczwvVGFiTmFtZT48RmFjdG9yeT5GaW5kLWluLUZpbGVzPC9GYWN0b3J5PjxTZXNzaW9uLz48L1RhYj48VGFiPjxJZGVudGl0eT5UYWJJRC0zMjQwNi0xNzQ8L0lkZW50aXR5PjxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT48RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjxUYWI+PElkZW50aXR5PlRhYklELTE4Ni01ODUzPC9JZGVudGl0eT48VGFiTmFtZT5BbWJpZ3VvdXMgRGVmaW5pdGlvbnM8L1RhYk5hbWU+PEZhY3Rvcnk+U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9uczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMz48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjM8L1lQb3MyPjxTZWxTdGFydDI+NTgwNjwvU2VsU3RhcnQyPjxTZWxFbmQyPjU4MDY8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjM8L1lQb3MyPjxTZWxTdGFydDI+MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjA8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj43NTY8L1NlbFN0YXJ0Mj48U2VsRW5kMj43NTY8L1NlbEVuZDI+PC9UYWI+PC9QYW5lPjxBY3RpdmVQYW5lPjA8L0FjdGl2ZVBhbmU+PFNpemVzPjxQYW5lPjxYPjEwMDAwMDA8L1g+PFk+MTAwMDAwMDwvWT48L1BhbmU+PC9TaXplcz48U3BsaXRNb2RlPjE8L1NwbGl0TW9kZT48L0VkaXRvcj4NCi0gICAgPFBvc2l0aW9ucz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFRvcD48Um93MD48U2l6ZXM+PFRvb2xiYXItMDA3MDUzRDg+PGtleT5pYXJpZGVwbS5lbnUxPC9rZXk+PC9Ub29sYmFyLTAwNzA1M0Q4PjwvU2l6ZXM+PC9Sb3cwPjxSb3cxPjxTaXplcy8+PC9Sb3cxPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMj48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT43Njc8L0JvdHRvbT48UmlnaHQ+MzIxPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTkyMjYyPC9zaXplVmVydENYPjxzaXplVmVydENZPjc4MTUwNDwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQyPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzLz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMz48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4xNzM8L0JvdHRvbT48UmlnaHQ+MTY4MjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTY4NDwveHNjcmVlbj48eXNjcmVlbj4xNzU8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4xNzc4NDY8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPjxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQzPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxDb25maWdEaWN0aW9uYXJ5Pg0KKyAgICAgICAgPEN1cnJlbnRDb25maWdzPg0KKyAgICAgICAgICAgIDxQcm9qZWN0PlJUT1NEZW1vL2RkcmFtPC9Qcm9qZWN0Pg0KKyAgICAgICAgPC9DdXJyZW50Q29uZmlncz4NCisgICAgPC9Db25maWdEaWN0aW9uYXJ5Pg0KKyAgICA8RGVza3RvcD4NCisgICAgICAgIDxTdGF0aWM+DQorICAgICAgICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjI0NzwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjI3PC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4yNzwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPEJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9CdWlsZD4NCisgICAgICAgICAgICA8RmluZC1pbi1GaWxlcz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD40OTc8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgyPjc0NjwvQ29sdW1uV2lkdGgyPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgzPjMzMTwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgIDwvRmluZC1pbi1GaWxlcz4NCisgICAgICAgICAgICA8VGVybWluYWxJTyAvPg0KKyAgICAgICAgICAgIDxEZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MTk8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xNjIzPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgPC9EZWJ1Zy1Mb2c+DQorICAgICAgICAgICAgPFNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+ODc1PC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj45OTQ8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICA8L1NlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+DQorICAgICAgICAgICAgPEJyZWFrcG9pbnRzPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjM8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkJyZWFrcG9pbnQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5fSTA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjUwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC13aWR0aHM+DQorICAgICAgICAgICAgPC9CcmVha3BvaW50cz4NCisgICAgICAgIDwvU3RhdGljPg0KKyAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgPFduZDI+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtNDIzLTI4NTA0PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL2RvY3VtZW50YXRpb248L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vbGlicmFyaWVzPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL3Jlc291cmNlczwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvU2Vzc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8L1RhYnM+DQorICAgICAgICAgICAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj4NCisgICAgICAgICAgICA8L1duZDI+DQorICAgICAgICAgICAgPFduZDM+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtNjI4MS0xNTA3MTwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTM1MjYtMTUyMDU8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0zMjQwNi0xNzQ8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTg2LTU4NTM8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkFtYmlndW91cyBEZWZpbml0aW9uczwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5TZWxlY3QtQW1iaWd1b3VzLURlZmluaXRpb25zPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uIC8+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQzPg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NjM8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj41ODA2PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj41ODA2PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjA8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjA8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42MzwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjc1NjwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NzU2PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT4NCisgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICAgICAgPFg+MTAwMDAwMDwvWD4NCisgICAgICAgICAgICAgICAgICAgIDxZPjEwMDAwMDA8L1k+DQorICAgICAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgIDxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPg0KKyAgICAgICAgPC9FZGl0b3I+DQorICAgICAgICA8UG9zaXRpb25zPg0KKyAgICAgICAgICAgIDxUb3A+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTAwNzA1M0Q4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmlhcmlkZXBtLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDA3MDUzRDg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgICAgIDxSb3cxPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgICAgIDwvUm93MT4NCisgICAgICAgICAgICA8L1RvcD4NCisgICAgICAgICAgICA8TGVmdD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjc2NzwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjMyMTwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MjAwPC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjAwPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTkyMjYyPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NzgxNTA0PC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQyPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvTGVmdD4NCisgICAgICAgICAgICA8UmlnaHQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1JpZ2h0Pg0KKyAgICAgICAgICAgIDxCb3R0b20+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT4xNzM8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4xNjgyPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4xNjg0PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MTc1PC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjE3Nzg0Njwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMz4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0JvdHRvbT4NCisgICAgICAgICAgICA8RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxTaXplcyAvPg0KKyAgICAgICAgICAgIDwvRmxvYXQ+DQorICAgICAgICA8L1Bvc2l0aW9ucz4NCisgICAgPC9EZXNrdG9wPg0KKyAgICA8V2luZG93U3RvcmFnZT4NCisgICAgICAgIDxDaGlsZElkTWFwPg0KKyAgICAgICAgICAgIDxUQl9DTVNJU1BBQ0s+MzQwNDg8L1RCX0NNU0lTUEFDSz4NCisgICAgICAgICAgICA8VEJfTUFJTj4zNDA0OTwvVEJfTUFJTj4NCisgICAgICAgICAgICA8V0lOX0JSRUFLUE9JTlRTPjM0MDUwPC9XSU5fQlJFQUtQT0lOVFM+DQorICAgICAgICAgICAgPFdJTl9CVUlMRD4zNDA1MTwvV0lOX0JVSUxEPg0KKyAgICAgICAgICAgIDxXSU5fQ0FMTF9HUkFQSD4zNDA1MjwvV0lOX0NBTExfR1JBUEg+DQorICAgICAgICAgICAgPFdJTl9DTVNJU1BBQ0tfQUdFTlRfTE9HPjM0MDUzPC9XSU5fQ01TSVNQQUNLX0FHRU5UX0xPRz4NCisgICAgICAgICAgICA8V0lOX0NVU1RPTV9TRlI+MzQwNTQ8L1dJTl9DVVNUT01fU0ZSPg0KKyAgICAgICAgICAgIDxXSU5fQ19TVEFUPjM0MDU1PC9XSU5fQ19TVEFUPg0KKyAgICAgICAgICAgIDxXSU5fREVCVUdfTE9HPjM0MDU2PC9XSU5fREVCVUdfTE9HPg0KKyAgICAgICAgICAgIDxXSU5fRklORF9BTExfREVDTEFSQVRJT05TPjM0MDU3PC9XSU5fRklORF9BTExfREVDTEFSQVRJT05TPg0KKyAgICAgICAgICAgIDxXSU5fRklORF9BTExfUkVGRVJFTkNFUz4zNDA1ODwvV0lOX0ZJTkRfQUxMX1JFRkVSRU5DRVM+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0lOX0ZJTEVTPjM0MDU5PC9XSU5fRklORF9JTl9GSUxFUz4NCisgICAgICAgICAgICA8V0lOX1NFTEVDVF9BTUJJR1VPVVNfREVGSU5JVElPTlM+MzQwNjA8L1dJTl9TRUxFQ1RfQU1CSUdVT1VTX0RFRklOSVRJT05TPg0KKyAgICAgICAgICAgIDxXSU5fU09VUkNFX0JST1dTRVI+MzQwNjE8L1dJTl9TT1VSQ0VfQlJPV1NFUj4NCisgICAgICAgICAgICA8V0lOX1RPT0xfT1VUUFVUPjM0MDYyPC9XSU5fVE9PTF9PVVRQVVQ+DQorICAgICAgICAgICAgPFdJTl9XT1JLU1BBQ0U+MzQwNjM8L1dJTl9XT1JLU1BBQ0U+DQorICAgICAgICA8L0NoaWxkSWRNYXA+DQorICAgICAgICA8RGVza3RvcD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPFRvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNDAwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0MDAxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9Ub29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA0OD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPFRvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAyNDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2Mzc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA5MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDU3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMjY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2NTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDYzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA1MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDU0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNDM5OTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzODwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9Ub29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA0OT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjE4NjI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPEZpbHRlckxldmVsPjI8L0ZpbHRlckxldmVsPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbGU+PC9MaXZlRmlsZT4NCisgICAgICAgICAgICAgICAgPExpdmVMb2dFbmFibGVkPjA8L0xpdmVMb2dFbmFibGVkPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbHRlckxldmVsPi0xPC9MaXZlRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MjA4PC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+MzA8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMj4zMDwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4zPjMwPC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgPE5vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8Q29udHJvbEJhclZlcnNpb24+DQorICAgICAgICAgICAgICAgIDxNYWpvcj4xNDwvTWFqb3I+DQorICAgICAgICAgICAgICAgIDxNaW5vcj4xMDwvTWlub3I+DQorICAgICAgICAgICAgPC9Db250cm9sQmFyVmVyc2lvbj4NCisgICAgICAgICAgICA8TUZDVG9vbEJhclBhcmFtZXRlcnM+DQorICAgICAgICAgICAgICAgIDxUb29sdGlwcz4xPC9Ub29sdGlwcz4NCisgICAgICAgICAgICAgICAgPFNob3J0Y3V0S2V5cz4xPC9TaG9ydGN1dEtleXM+DQorICAgICAgICAgICAgICAgIDxMYXJnZUljb25zPjA8L0xhcmdlSWNvbnM+DQorICAgICAgICAgICAgICAgIDxNZW51QW5pbWF0aW9uPjA8L01lbnVBbmltYXRpb24+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRseVVzZWRNZW51cz4xPC9SZWNlbnRseVVzZWRNZW51cz4NCisgICAgICAgICAgICAgICAgPE1lbnVTaGFkb3dzPjE8L01lbnVTaGFkb3dzPg0KKyAgICAgICAgICAgICAgICA8U2hvd0FsbE1lbnVzQWZ0ZXJEZWxheT4xPC9TaG93QWxsTWVudXNBZnRlckRlbGF5Pg0KKyAgICAgICAgICAgICAgICA8Q29tbWFuZHNVc2FnZT4wMDAwMDAwMDAwMDA8L0NvbW1hbmRzVXNhZ2U+DQorICAgICAgICAgICAgPC9NRkNUb29sQmFyUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8Q29tbWFuZE1hbmFnZXI+DQorICAgICAgICAgICAgICAgIDxDb21tYW5kc1dpdGhvdXRJbWFnZXM+MDYwMDIwRjEwMDAwMTBGMDAwMDAwMEYwMDAwMDIwRjAwMDAwMzBGMDAwMDA2MEYwMDAwMDwvQ29tbWFuZHNXaXRob3V0SW1hZ2VzPg0KKyAgICAgICAgICAgICAgICA8TWVudVVzZXJJbWFnZXM+MDAwMDwvTWVudVVzZXJJbWFnZXM+DQorICAgICAgICAgICAgPC9Db21tYW5kTWFuYWdlcj4NCisgICAgICAgICAgICA8UGFuZS01OTM5Mz4NCisgICAgICAgICAgICAgICAgPElEPjA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjBBMDAwMDAwMEEwMDAwMDA2RTAwMDAwMDZFMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwREMwMzAwMDA4MDA3MDAwMEY1MDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS01OTM5Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtNTkzOTM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtNTkzOTM+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTA+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMDM2MDEwMDAwREIwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1MD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTA+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTA+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTAgLz4NCisgICAgICAgICAgICA8UGFuZS0tMT4NCisgICAgICAgICAgICAgICAgPElEPjQyOTQ5NjcyOTU8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMzkwMDAwMDAxODAxMDAwMEZEMDIwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0tMT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtLTE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtLTE+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTE+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjE8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xMzk5PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+MzczPC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+OTM8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICAgICAgPEZpbHRlckxldmVsPjI8L0ZpbHRlckxldmVsPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbGU+QzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfQTVfU0FNQTVENHhfRUtfSUFSXEJ1aWxkTG9nLmxvZzwvTGl2ZUZpbGU+DQorICAgICAgICAgICAgICAgIDxMaXZlTG9nRW5hYmxlZD4wPC9MaXZlTG9nRW5hYmxlZD4NCisgICAgICAgICAgICAgICAgPExpdmVGaWx0ZXJMZXZlbD4tMTwvTGl2ZUZpbHRlckxldmVsPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Mz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUzPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDFFMDMwMDAwODAwNzAwMDBEQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTM+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUzIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTY+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Nz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU3PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTc+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU3IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTg+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1ODwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1OD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1OD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1OCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTk8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1OT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTk+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTk+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTkgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2MD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYwPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjA+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYwIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjI+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYyPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2Mj4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2Mj4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MiAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTI8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDBBRDAyMDAwMEQwMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDBBRDAyMDAwMEIzMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTI+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUyIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMDM2MDEwMDAwREIwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1ND4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTQgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1NT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU1PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1NT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1NT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYxPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjE8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNUEwMDAwMDAxNDAxMDAwMEQwMDEwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2MT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjE+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjEgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2Mz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYzPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMTgwMTAwMDBENDAxMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDU2MDAwMDAwMTgwMTAwMDBGRDAyMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjM+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxEb2NraW5nTWFuYWdlci0yNTY+DQorICAgICAgICAgICAgICAgIDxEb2NraW5nUGFuZUFuZFBhbmVEaXZpZGVycz4wMDAwMDAwMDBDMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjE4MDEwMDAwMzkwMDAwMDAxQzAxMDAwMEZEMDIwMDAwMDEwMDAwMDAwMjAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYwMjAwMDAwMDBEODUwMDAwMEY4NTAwMDBGRkZGMDIwMDBCMDA0MzU0NjE2MjYyNjU2NDUwNjE2RTY1MDAxMDAwMDAwMTAwMDAwMDAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwMDAwMDAwMDAzOTAwMDAwMDE4MDEwMDAwRkQwMjAwMDAwMDAwMDAwMDQwMTAwMDU2MDIwMDAwMDBGRkZFRkYwRTUzMDA2RjAwNzUwMDcyMDA2MzAwNjUwMDIwMDA0MjAwNzIwMDZGMDA3NzAwNzMwMDY1MDA3MjAwMDAwMDAwMDAwRDg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjA5NTcwMDZGMDA3MjAwNkIwMDczMDA3MDAwNjEwMDYzMDA2NTAwMDEwMDAwMDAwRjg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwRDg1MDAwMDAxMDAwMDAwRkZGRkZGRkYwRDg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA3ODUwMDAwMDEwMDAwMDAwNzg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA2ODUwMDAwMDEwMDAwMDAwNjg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA0ODUwMDAwMDEwMDAwMDAwNDg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMEZEMDIwMDAwODAwNzAwMDAwMTAzMDAwMDAxMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGMDgwMDAwMDAwMzg1MDAwMDA1ODUwMDAwMDg4NTAwMDAwOTg1MDAwMDBBODUwMDAwMEI4NTAwMDAwQzg1MDAwMDBFODUwMDAwMDE4MDAwODAwMDAwMDEwMDAwMDAwMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDAwMDAwMDAwMDEwMzAwMDA4MDA3MDAwMERDMDMwMDAwMDAwMDAwMDA0MDgwMDA1NjA4MDAwMDAwRkZGRUZGMDU0MjAwNzUwMDY5MDA2QzAwNjQwMDAxMDAwMDAwMDM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwRTQzMDA0RDAwNTMwMDQ5MDA1MzAwMkQwMDUwMDA2MTAwNjMwMDZCMDAyMDAwNEMwMDZGMDA2NzAwMDAwMDAwMDAwNTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjA5NDQwMDY1MDA2MjAwNzUwMDY3MDAyMDAwNEMwMDZGMDA2NzAwMDEwMDAwMDAwODg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBDNDQwMDY1MDA2MzAwNkMwMDYxMDA3MjAwNjEwMDc0MDA2OTAwNkYwMDZFMDA3MzAwMDAwMDAwMDAwOTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBBNTIwMDY1MDA2NjAwNjUwMDcyMDA2NTAwNkUwMDYzMDA2NTAwNzMwMDAwMDAwMDAwMEE4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwRDQ2MDA2OTAwNkUwMDY0MDAyMDAwNjkwMDZFMDAyMDAwNDYwMDY5MDA2QzAwNjUwMDczMDAwMDAwMDAwMDBCODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMTU0MTAwNkQwMDYyMDA2OTAwNjcwMDc1MDA2RjAwNzUwMDczMDAyMDAwNDQwMDY1MDA2NjAwNjkwMDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDczMDAwMDAwMDAwMDBDODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEI1NDAwNkYwMDZGMDA2QzAwMjAwMDRGMDA3NTAwNzQwMDcwMDA3NTAwNzQwMDAwMDAwMDAwMEU4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMDM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGMDM4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMjg1MDAwMDAxMDAwMDAwMDI4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA8L0RvY2tpbmdQYW5lQW5kUGFuZURpdmlkZXJzPg0KKyAgICAgICAgICAgIDwvRG9ja2luZ01hbmFnZXItMjU2Pg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8TmFtZT5DTVNJUy1QYWNrPC9OYW1lPg0KKyAgICAgICAgICAgICAgICA8QnV0dG9ucz4wMDIwMDAwMDAxMDAwMDAwMDIwMEZGRkYwMTAwMTEwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0Mjc1NzQ3NDZGNkVEMDg0MDAwMDAwMDAwNDAwMEMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwRDE4NDAwMDAwMDAwMDAwMDBEMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDBGRkZFRkYwQTQzMDA0RDAwNTMwMDQ5MDA1MzAwMkQwMDUwMDA2MTAwNjMwMDZCMDBGRjdGMDAwMDwvQnV0dG9ucz4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXItMzQwNDg+DQorICAgICAgICAgICAgPFBhbmUtMzQwNDg+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA0ODwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMzAwMDAxQzAwMDAwMDQ3MDMwMDAwMzgwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD44MTkyPC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjE8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA0OD4NCisgICAgICAgICAgICA8TUZDVG9vbEJhci0zNDA0OT4NCisgICAgICAgICAgICAgICAgPE5hbWU+TWFpbjwvTmFtZT4NCisgICAgICAgICAgICAgICAgPEJ1dHRvbnM+MDAyMDAwMDAwMTAwMDAwMDIwMDBGRkZGMDEwMDExMDA0MzRENDY0MzU0NkY2RjZDNDI2MTcyNDI3NTc0NzQ2RjZFMDBFMTAwMDAwMDAwMDAwMDM2MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAxRTEwMDAwMDAwMDAwMDAzNzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwM0UxMDAwMDAwMDAwNDAwMzkwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDA4MTAwMDAwMDAwMDAwMDFBMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwN0UxMDAwMDAwMDAwNDAwM0MwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDIzRTEwMDAwMDAwMDA0MDAzRTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyMkUxMDAwMDAwMDAwNDAwM0QwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjVFMTAwMDAwMDAwMDQwMDQwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyQkUxMDAwMDAwMDAwNDAwNDMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMkNFMTAwMDAwMDAwMDQwMDQ0MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEZGRkYwMTAwMTkwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0MzZGNkQ2MjZGNDI2Rjc4NDI3NTc0NzQ2RjZFNDI4MTAwMDAwMDAwMDQwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwNzgwMDAwMDAwMjAwMjA1MEZGRkZGRkZGRkZGRUZGMDA5NjAwMDAwMDAwMDAwMDAwMDAwMDAxODAyMTgxMDAwMDAwMDAwNDAwMkQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjRFMTAwMDAwMDAwMDQwMDNGMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI4RTEwMDAwMDAwMDA0MDA0MTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyOUUxMDAwMDAwMDAwNDAwNDIwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDI4MTAwMDAwMDAwMDQwMDFDMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI5ODEwMDAwMDAwMDA0MDAzMTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNzgxMDAwMDAwMDAwNDAwMkYwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjg4MTAwMDAwMDAwMDQwMDMwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDFEODEwMDAwMDAwMDA0MDAyOTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAxRTgxMDAwMDAwMDAwNDAwMkEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBCODEwMDAwMDAwMDA0MDAyMDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwQzgxMDAwMDAwMDAwMDAwMjEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwNUY4NjAwMDAwMDAwMDAwMDM1MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwRTgxMDAwMDAwMDAwMDAwMjMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEY4MTAwMDAwMDAwMDAwMDI0MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDBGRkZFRkYwNDREMDA2MTAwNjkwMDZFMDBGRjdGMDAwMDwvQnV0dG9ucz4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXItMzQwNDk+DQorICAgICAgICAgICAgPFBhbmUtMzQwNDk+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA0OTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAxQzAwMDAwMDAwMDMwMDAwMzkwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD44MTkyPC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjE8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA0OT4NCisgICAgICAgIDwvRGVza3RvcD4NCisgICAgICAgIDxNRElXaW5kb3dzPg0KKyAgICAgICAgICAgIDxNRElDbGllbnRBcmVhLTA+DQorICAgICAgICAgICAgICAgIDxNRElUYWJzU3RhdGU+MDEwMDAwMDAwMzAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMjgwMDAwMDAyODAwMDAwMDAwMDAwMDAwPC9NRElUYWJzU3RhdGU+DQorICAgICAgICAgICAgPC9NRElDbGllbnRBcmVhLTA+DQorICAgICAgICA8L01ESVdpbmRvd3M+DQorICAgIDwvV2luZG93U3RvcmFnZT4NCiA8L1dvcmtzcGFjZT4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZTE4ZGFhOS4uNzIyYjU5MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL0xFRHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvTEVEcy5jCmluZGV4IDI4YWQxNTMuLjBmYzI2NmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvTEVEcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvTEVEcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW4uYwppbmRleCAzNzI5NDQ0Li5lMTIzMGIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fYmxpbmt5LmMKaW5kZXggNDQ1ZTQzMS4uMTJjZWIyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9tYWluX2Z1bGwuYwppbmRleCA4NmUyNzgwLi40MjJlNDg5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9yZWdfdGVzdC5TCmluZGV4IDdmMmRjYWEuLjcwN2I2YTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvcmVnX3Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3JlZ190ZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLmdsb2JhbCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X0N5Y2xvbmVfVl9Tb0NfREsvc2VyaWFsLmMKaW5kZXggNTMxMmU1Ny4uY2YwNTVjMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfQ3ljbG9uZV9WX1NvQ19ESy9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9DeWNsb25lX1ZfU29DX0RLL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBTRVJJQUwgUE9SVCBEUklWRVIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLmNwcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvLmNwcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGE2ZmNkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5jcHJvamVjdAorKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iPz4NCi08P2ZpbGVWZXJzaW9uIDQuMC4wPz48Y3Byb2plY3Qgc3RvcmFnZV90eXBlX2lkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5YbWxQcm9qZWN0RGVzY3JpcHRpb25TdG9yYWdlIj4NCi0JPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIj4NCi0JCTxjY29uZmlndXJhdGlvbiBpZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkLmNvbmZpZy5iYXJlbWV0YWwuZXhlLmRlYnVnLjIwODU3MzMwODUiPg0KLQkJCTxzdG9yYWdlTW9kdWxlIGJ1aWxkU3lzdGVtSWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLmNvbmZpZ3VyYXRpb25EYXRhUHJvdmlkZXIiIGlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWcuMjA4NTczMzA4NSIgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIiBuYW1lPSJEZWJ1ZyI+DQotCQkJCTxleHRlcm5hbFNldHRpbmdzLz4NCi0JCQkJPGV4dGVuc2lvbnM+DQotCQkJCQk8ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HbWFrZUVycm9yUGFyc2VyIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRXJyb3JQYXJzZXIiLz4NCi0JCQkJCTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkNXRExvY2F0b3IiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLQkJCQkJPGV4dGVuc2lvbiBpZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkZXIuYXJtY2MuZXJyb3IiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLQkJCQk8L2V4dGVuc2lvbnM+DQotCQkJPC9zdG9yYWdlTW9kdWxlPg0KLQkJCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJjZHRCdWlsZFN5c3RlbSIgdmVyc2lvbj0iNC4wLjAiPg0KLQkJCQk8Y29uZmlndXJhdGlvbiBhcnRpZmFjdEV4dGVuc2lvbj0iYXhmIiBhcnRpZmFjdE5hbWU9IiR7UHJvak5hbWV9IiBidWlsZEFydGVmYWN0VHlwZT0iY29tLmFybS5lY2xpcHNlLmJ1aWxkLmFydGVmYWN0LmJhcmVtZXRhbC5leGUiIGJ1aWxkUHJvcGVydGllcz0ib3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlPW9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkVHlwZS5kZWJ1ZyxvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZEFydGVmYWN0VHlwZT1jb20uYXJtLmVjbGlwc2UuYnVpbGQuYXJ0ZWZhY3QuYmFyZW1ldGFsLmV4ZSIgY2xlYW5Db21tYW5kPSJjbGVhbiIgZGVzY3JpcHRpb249IiIgaWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1IiBuYW1lPSJEZWJ1ZyIgcGFyZW50PSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWciPg0KLQkJCQkJPGZvbGRlckluZm8gaWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1LiIgbmFtZT0iLyIgcmVzb3VyY2VQYXRoPSIiPg0KLQkJCQkJCTx0b29sQ2hhaW4gaWQ9ImNvbS5hcm0udG9vbGNoYWluLmJhcmVtZXRhbC5leGUuZGVidWcuMTI5MDExODk1MSIgbmFtZT0iQVJNIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2xjaGFpbi5iYXJlbWV0YWwuZXhlLmRlYnVnIj4NCi0JCQkJCQkJPHRhcmdldFBsYXRmb3JtIGlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWcuMjA4NTczMzA4NS4uMTY2MzM2NzU3NCIgbmFtZT0iIi8+DQotCQkJCQkJCTxidWlsZGVyIGJ1aWxkUGF0aD0iJHt3b3Jrc3BhY2VfbG9jOi9GcmVlUlRPU19EZW1vL0RlYnVnfSIgaWQ9ImNvbS5hcm0udG9vbGNoYWluLmJhcmVtZXRhbC5idWlsZGVyLjE2Njk3NDg2MTIiIGtlZXBFbnZpcm9ubWVudEluQnVpbGRmaWxlPSJmYWxzZSIgbWFuYWdlZEJ1aWxkT249InRydWUiIG5hbWU9IkdudSBNYWtlIEJ1aWxkZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbGNoYWluLmJhcmVtZXRhbC5idWlsZGVyIi8+DQotCQkJCQkJCTx0b29sIGNvbW1hbmQ9ImFybWNjIiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4xMzQxMjk1NTMiIG5hbWU9IkFSTSBDIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnIj4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5kZWZtYWMuMTg5NTA2MzU3OSIgbmFtZT0iRGVmaW5lIG1hY3JvICgtRCkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5kZWZtYWMiIHZhbHVlVHlwZT0iZGVmaW5lZFN5bWJvbHMiPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSJBUk1fU0lNIi8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9Il9fU1RBTkRBTE9ORV9fIi8+DQotCQkJCQkJCQk8L29wdGlvbj4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi51bmRlZm1hYy4xMzM1Nzc3MDgwIiBuYW1lPSJVbmRlZmluZSBtYWNybyAoLVUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24udW5kZWZtYWMiIHZhbHVlVHlwZT0idW5kZWZEZWZpbmVkU3ltYm9scyI+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IkFSTV9TSU0iLz4NCi0JCQkJCQkJCTwvb3B0aW9uPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0Ljc5OTQ3NzI0MSIgbmFtZT0iT3B0aW1pemF0aW9uIGxldmVsIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLm9wdGlvbi5vcHQiIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24ub3B0bGV2ZWwubWluIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5vcHRmb3IuMjAzMTQyMTM1OSIgbmFtZT0iT3B0aW1pemUgZm9yIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24ub3B0Zm9yIiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLm9wdGZvci50aW1lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi50YXJnZXRjcHUuMTU0MjU3MDgzNSIgbmFtZT0iVGFyZ2V0IENQVSAoLS1jcHUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24udGFyZ2V0Y3B1IiB2YWx1ZT0iQ29ydGV4LUE5IiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmVuZGlhbi4xMDcxMzk3NTgwIiBuYW1lPSJCeXRlIG9yZGVyIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uZW5kaWFuIiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmVuZGlhbi5saXR0bGUiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmluc3QuMTMzMTgwODU0NCIgbmFtZT0iSW5zdHJ1Y3Rpb24gc2V0IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uaW5zdCIgdmFsdWU9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5pbnN0LmFybSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uZmxhZ3MuMTE4MjI4ODEzMiIgbmFtZT0iT3RoZXIgZmxhZ3MiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5mbGFncyIgdmFsdWU9Ii0tYXNtIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmluY3BhdGguMTk0ODcwODIzNiIgbmFtZT0iSW5jbHVkZSBwYXRoICgtSSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5pbmNwYXRoIiB2YWx1ZVR5cGU9ImluY2x1ZGVQYXRoIj4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGV9JnF1b3Q7Ii8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlfSZxdW90OyIvPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvaW5jbHVkZX0mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvRnJlZVJUT1MtU291cmNlL1BvcnRhYmxlL1JWRFMvQVJNX0NBOX0mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvRnVsbC1EZW1vfSZxdW90OyIvPg0KLQkJCQkJCQkJCTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEl9JnF1b3Q7Ii8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC9hcGl9JnF1b3Q7Ii8+DQotCQkJCQkJCQkJPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovJHtQcm9qTmFtZX0vU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lc30mcXVvdDsiLz4NCi0JCQkJCQkJCQk8bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlfSZxdW90OyIvPg0KLQkJCQkJCQkJPC9vcHRpb24+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb25zLmRlYnVnLmZvcm1hdC4xNTkyOTY5OTAzIiBuYW1lPSJEZWJ1ZyBmb3JtYXQiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbnMuZGVidWcuZm9ybWF0IiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9ucy5kZWJ1Zy5mb3JtYXQuZHdhcmYyIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5mcHBjcy4xNjE2NTU2NjA4IiBuYW1lPSJGbG9hdGluZy1wb2ludCBQQ1MgKC0tYXBjcykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5mcHBjcyIgdmFsdWU9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5mcHBjcy5hdXRvIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi50YXJnZXRmcHUuMTQ1MTg0MDI4MCIgbmFtZT0iVGFyZ2V0IEZQVSAoLS1mcHUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24udGFyZ2V0ZnB1IiB2YWx1ZT0iIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmludGVyLjE2MjAyNjYxODMiIG5hbWU9IkludGVyd29ya2luZyAoLS1hcGNzPS9pbnRlcndvcmspIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uaW50ZXIiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5zdXBwcmVzcy43NjA4MTc0NzMiIG5hbWU9IlN1cHByZXNzICgtLWRpYWdfc3VwcHJlc3MpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb24uc3VwcHJlc3MiIHZhbHVlPSIxOTEiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5pbnB1dC4xMzgwOTk0ODc3IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5pbnB1dCIvPg0KLQkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY29tLmFybS50b29sLmNwcC5jb21waWxlci5pbnB1dC4xNDc0NTY4MTQ5IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuY3BwLmNvbXBpbGVyLmlucHV0Ii8+DQotCQkJCQkJCTwvdG9vbD4NCi0JCQkJCQkJPHRvb2wgaWQ9ImNvbS5hcm0udG9vbC5jcHAuY29tcGlsZXIuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4xODE0MDE0NjM4IiBuYW1lPSJBUk0gQysrIENvbXBpbGVyIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuY3BwLmNvbXBpbGVyLmJhcmVtZXRhbC5leGUuZGVidWciLz4NCi0JCQkJCQkJPHRvb2wgY29tbWFuZD0iYXJtYXNtIiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci4xNjA3NTU0MTMiIG5hbWU9IkFSTSBBc3NlbWJsZXIiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIiPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24udW5hbGlnbi44MDgzOTc2MzYiIG5hbWU9IkRpc2FibGUgdW5hbGlnbmVkIGFjY2Vzc2VzICgtLW5vX3VuYWxpZ25lZF9hY2Nlc3MpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi51bmFsaWduIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5jcHUuMTE4NzQzNjM5OSIgbmFtZT0iVGFyZ2V0IENQVSAoLS1jcHUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5jcHUiIHZhbHVlPSJDb3J0ZXgtQTkiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5kZWJ1Zy5mb3JtYXQuMTE2OTMwMzkzMiIgbmFtZT0iRGVidWcgZm9ybWF0IiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5kZWJ1Zy5mb3JtYXQiIHZhbHVlPSJjb20uYXJtLnRvb2wuYy5jb21waWxlci5vcHRpb25zLmRlYnVnLmZvcm1hdC5kd2FyZjIiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uZmxhZ3MuMTU1ODU4NjgxMyIgbmFtZT0iT3RoZXIgZmxhZ3MiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmZsYWdzIiB2YWx1ZT0iLS1wcmVkZWZpbmUgJnF1b3Q7X19JQVNNQVJNX18gU0VUQSAwJnF1b3Q7IC1JJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi8ke1Byb2pOYW1lfS9Tb3VyY2UvRnJlZVJUT1MtU291cmNlL1BvcnRhYmxlL1JWRFMvQVJNX0NBOX0mcXVvdDsgLUkmcXVvdDske3dvcmtzcGFjZV9sb2M6LyR7UHJvak5hbWV9L1NvdXJjZX0mcXVvdDsiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5mcHBjcy4xNTM3OTAyNjI4IiBuYW1lPSJGbG9hdGluZy1wb2ludCBQQ1MgKC0tYXBjcykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5hc3NlbWJsZXIub3B0aW9uLmZwcGNzIiB2YWx1ZT0iY29tLmFybS50b29sLmMuY29tcGlsZXIub3B0aW9uLmZwcGNzLmF1dG8iIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uZnB1LjI4MTg1MzY0NCIgbmFtZT0iVGFyZ2V0IEZQVSAoLS1mcHUpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5mcHUiIHZhbHVlPSIiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5pbnRlci40MDg2MDg4NzQiIG5hbWU9IkludGVyd29ya2luZyAoLS1hcGNzPS9pbnRlcndvcmspIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5pbnRlciIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uaW5zdC42Mzg3NDE1MTYiIG5hbWU9Ikluc3RydWN0aW9uIHNldCIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24uaW5zdCIgdmFsdWU9ImNvbS5hcm0udG9vbC5jLmNvbXBpbGVyLm9wdGlvbi5pbnN0LmFybSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYXNzZW1ibGVyLm9wdGlvbi5wcmVwcm9jZmxhZ3MuMTkyNTczNDk0IiBuYW1lPSJQcmVwcm9jZXNzb3Igb3B0aW9ucyAoLS1jcHJlcHJvY19vcHRzKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24ucHJlcHJvY2ZsYWdzIiB2YWx1ZT0iIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24ucHJlcHJvYy4xMjMzNzkzOTc5IiBuYW1lPSJQcmVwcm9jZXNzIGlucHV0IGJlZm9yZSBhc3NlbWJsaW5nICgtLWNwcmVwcm9jKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmFzc2VtYmxlci5vcHRpb24ucHJlcHJvYyIgdmFsdWU9ImZhbHNlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJPC90b29sPg0KLQkJCQkJCQk8dG9vbCBpZD0iY29tLmFybS50b29sLmMubGlua2VyLjIxNjQyNzkzOCIgbmFtZT0iQVJNIExpbmtlciIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyIj4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uY3B1LjE2NDk0NjU4MjMiIG5hbWU9IlRhcmdldCBDUFUgKC0tY3B1KSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5jcHUiIHZhbHVlPSJDb3J0ZXgtQTkiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmVudHJ5LjEwNTc3NDk1MzYiIG5hbWU9IkltYWdlIGVudHJ5IHBvaW50ICgtLWVudHJ5KSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5lbnRyeSIgdmFsdWU9IlN0YXJ0IiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5zY2F0dGVyLjUwMjQwNTAwNSIgbmFtZT0iU2NhdHRlciBmaWxlICgtLXNjYXR0ZXIpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLnNjYXR0ZXIiIHZhbHVlPSIuLlxzY2F0dGVyLnNjYXQiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmVsZW1pbmF0ZS4xNDcyNTQxMDk0IiBuYW1lPSJFbGltaW5hdGUgdW51c2VkIHNlY3Rpb25zICgtLXJlbW92ZSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZWxlbWluYXRlIiB2YWx1ZT0iZmFsc2UiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5jYWxsZ3JhcGguOTk4ODIzMzEwIiBuYW1lPSJHZW5lcmF0ZSBjYWxsIGdyYXBoICgtLWNhbGxncmFwaCkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uY2FsbGdyYXBoIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmltYWdlbWFwLjQxOTExNjQzOCIgbmFtZT0iR2VuZXJhdGUgaW1hZ2UgbWFwICgtLW1hcCkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uaW1hZ2VtYXAiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24udmVyYm9zZS44MTg0MDU2MzIiIG5hbWU9IlZlcmJvc2Ugb3V0cHV0ICgtLXZlcmJvc2UpIiBzdXBlckNsYXNzPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLnZlcmJvc2UiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24udG90YWxzLjE4NzgxMzg4OCIgbmFtZT0iTGlzdCB0b3RhbCBjb2RlIGFuZCBkYXRhIHNpemVzIG9mIG91dHB1dCBpbWFnZSAoLS1pbmZvPXRvdGFscykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24udG90YWxzIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmVsaW0uNzg3NDY0OTU5IiBuYW1lPSJMaXN0IHVudXNlZCBzZWN0aW9ucyB0aGF0IGFyZSBlbGltaW5hdGVkICgtLWluZm89dW51c2VkKSIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLm9wdGlvbi5lbGltIiB2YWx1ZT0idHJ1ZSIgdmFsdWVUeXBlPSJib29sZWFuIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLnN0YWNrLjEwOTIxMDg4NDEiIG5hbWU9Ikxpc3Qgc3RhY2sgdXNhZ2Ugb2YgZ2xvYmFsIHN5bWJvbHMgKC0taW5mbz1zdGFjaykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uc3RhY2siIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi0JCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uaW5saW5laW5mby4xOTIzOTg0MDYzIiBuYW1lPSJMaXN0IGZ1bmN0aW9ucyBpbmxpbmVkIGJ5IGxpbmtlciAoLS1pbmZvPWlubGluZSkiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uaW5saW5laW5mbyIgdmFsdWU9InRydWUiIHZhbHVlVHlwZT0iYm9vbGVhbiIvPg0KLQkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLmFybS50b29sLmMubGluay5vcHRpb24uc3VwcHJlc3MuMTc5MjY0NzQ4NyIgbmFtZT0iU3VwcHJlc3MgKC0tZGlhZ19zdXBwcmVzcykiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmsub3B0aW9uLnN1cHByZXNzIiB2YWx1ZT0iTDYzMTQiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotCQkJCQkJCQk8b3B0aW9uIGlkPSJjb20uYXJtLnRvb2wuYy5saW5rZXIub3B0aW9uLmZsYWdzLjM1MTY0MTI5NSIgbmFtZT0iT3RoZXIgZmxhZ3MiIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5jLmxpbmtlci5vcHRpb24uZmxhZ3MiIHZhbHVlPSItLXN5bWJvbHMgLS1sb2FkX2FkZHJfbWFwX2luZm8gLS1kYXRhY29tcHJlc3Nvcj1vZmYgLS1saXN0PUZyZWVSVE9TX0RlbW8ubWFwIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLQkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY29tLmFybS50b29sLmMubGlua2VyLmlucHV0LjUyNjMwMjM4NyIgc3VwZXJDbGFzcz0iY29tLmFybS50b29sLmMubGlua2VyLmlucHV0Ij4NCi0JCQkJCQkJCQk8YWRkaXRpb25hbElucHV0IGtpbmQ9ImFkZGl0aW9uYWxpbnB1dGRlcGVuZGVuY3kiIHBhdGhzPSIkKFVTRVJfT0JKUykiLz4NCi0JCQkJCQkJCQk8YWRkaXRpb25hbElucHV0IGtpbmQ9ImFkZGl0aW9uYWxpbnB1dGRlcGVuZGVuY3kiIHBhdGhzPSIkKExJQlMpIi8+DQotCQkJCQkJCQk8L2lucHV0VHlwZT4NCi0JCQkJCQkJPC90b29sPg0KLQkJCQkJCQk8dG9vbCBpZD0iY29tLmFybS50b29sLmxpYnJhcmlhbi40NjAxNTAyNDMiIG5hbWU9IkFSTSBMaWJyYXJpYW4iIHN1cGVyQ2xhc3M9ImNvbS5hcm0udG9vbC5saWJyYXJpYW4iLz4NCi0JCQkJCQk8L3Rvb2xDaGFpbj4NCi0JCQkJCTwvZm9sZGVySW5mbz4NCi0JCQkJCTxzb3VyY2VFbnRyaWVzPg0KLQkJCQkJCTxlbnRyeSBleGNsdWRpbmc9IklBUnxTb3VyY2Uvc2FtcGxlcyIgZmxhZ3M9IlZBTFVFX1dPUktTUEFDRV9QQVRIfFJFU09MVkVEIiBraW5kPSJzb3VyY2VQYXRoIiBuYW1lPSIiLz4NCi0JCQkJCTwvc291cmNlRW50cmllcz4NCi0JCQkJPC9jb25maWd1cmF0aW9uPg0KLQkJCTwvc3RvcmFnZU1vZHVsZT4NCi0JCQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuZXh0ZXJuYWxTZXR0aW5ncyIvPg0KLQkJPC9jY29uZmlndXJhdGlvbj4NCi0JPC9zdG9yYWdlTW9kdWxlPg0KLQk8c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0iY2R0QnVpbGRTeXN0ZW0iIHZlcnNpb249IjQuMC4wIj4NCi0JCTxwcm9qZWN0IGlkPSJGcmVlUlRPU19EZW1vLmNvbS5hcm0uZWNsaXBzZS5idWlsZC5wcm9qZWN0LmJhcmVtZXRhbC5leGUuNTA4MDkxMzU4IiBuYW1lPSJCYXJlLW1ldGFsIEV4ZWN1dGFibGUiIHByb2plY3RUeXBlPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQucHJvamVjdC5iYXJlbWV0YWwuZXhlIi8+DQotCTwvc3RvcmFnZU1vZHVsZT4NCi0JPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9InJlZnJlc2hTY29wZSIgdmVyc2lvbk51bWJlcj0iMiI+DQotCQk8Y29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uTmFtZT0iRGVidWciPg0KLQkJCTxyZXNvdXJjZSByZXNvdXJjZVR5cGU9IlBST0pFQ1QiIHdvcmtzcGFjZVBhdGg9Ii9GcmVlUlRPU19EZW1vIi8+DQotCQk8L2NvbmZpZ3VyYXRpb24+DQotCTwvc3RvcmFnZU1vZHVsZT4NCi0JPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9InNjYW5uZXJDb25maWd1cmF0aW9uIj4NCi0JCTxhdXRvZGlzY292ZXJ5IGVuYWJsZWQ9InRydWUiIHByb2JsZW1SZXBvcnRpbmdFbmFibGVkPSJ0cnVlIiBzZWxlY3RlZFByb2ZpbGVJZD0iIi8+DQotCQk8c2Nhbm5lckNvbmZpZ0J1aWxkSW5mbyBpbnN0YW5jZUlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWcuMjA4NTczMzA4NTtjb20uYXJtLmVjbGlwc2UuYnVpbGQuY29uZmlnLmJhcmVtZXRhbC5leGUuZGVidWcuMjA4NTczMzA4NS47Y29tLmFybS50b29sLmMuY29tcGlsZXIuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4xMzQxMjk1NTM7Y29tLmFybS50b29sLmMuY29tcGlsZXIuaW5wdXQuMTM4MDk5NDg3NyI+DQotCQkJPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJjb20uYXJtLmVjbGlwc2UuYnVpbGRlci5hcm1jYy5BUk1Db21waWxlckRpc2NvdmVyeVByb2ZpbGUiLz4NCi0JCTwvc2Nhbm5lckNvbmZpZ0J1aWxkSW5mbz4NCi0JCTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1O2NvbS5hcm0uZWNsaXBzZS5idWlsZC5jb25maWcuYmFyZW1ldGFsLmV4ZS5kZWJ1Zy4yMDg1NzMzMDg1Ljtjb20uYXJtLnRvb2wuYy5jb21waWxlci5iYXJlbWV0YWwuZXhlLmRlYnVnLjEzNDEyOTU1Mztjb20uYXJtLnRvb2wuY3BwLmNvbXBpbGVyLmlucHV0LjE0NzQ1NjgxNDkiPg0KLQkJCTxhdXRvZGlzY292ZXJ5IGVuYWJsZWQ9InRydWUiIHByb2JsZW1SZXBvcnRpbmdFbmFibGVkPSJ0cnVlIiBzZWxlY3RlZFByb2ZpbGVJZD0iY29tLmFybS5lY2xpcHNlLmJ1aWxkZXIuYXJtY2MuQVJNQ29tcGlsZXJEaXNjb3ZlcnlQcm9maWxlIi8+DQotCQk8L3NjYW5uZXJDb25maWdCdWlsZEluZm8+DQotCTwvc3RvcmFnZU1vZHVsZT4NCi0JPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGR0YXJnZXRzIi8+DQotCTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5MYW5ndWFnZVNldHRpbmdzUHJvdmlkZXJzIi8+DQotPC9jcHJvamVjdD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS8ucHJvamVjdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5wcm9qZWN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmExOWYxLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsMjUwICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQotPHByb2plY3REZXNjcmlwdGlvbj4NCi0JPG5hbWU+RnJlZVJUT1NfRGVtbzwvbmFtZT4NCi0JPGNvbW1lbnQ+PC9jb21tZW50Pg0KLQk8cHJvamVjdHM+DQotCTwvcHJvamVjdHM+DQotCTxidWlsZFNwZWM+DQotCQk8YnVpbGRDb21tYW5kPg0KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLmdlbm1ha2VidWlsZGVyPC9uYW1lPg0KLQkJCTx0cmlnZ2Vycz5jbGVhbixmdWxsLGluY3JlbWVudGFsLDwvdHJpZ2dlcnM+DQotCQkJPGFyZ3VtZW50cz4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pj9uYW1lPzwva2V5Pg0KLQkJCQkJPHZhbHVlPjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYXBwZW5kX2Vudmlyb25tZW50PC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYXV0b0J1aWxkVGFyZ2V0PC9rZXk+DQotCQkJCQk8dmFsdWU+YWxsPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZEFyZ3VtZW50czwva2V5Pg0KLQkJCQkJPHZhbHVlPjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRDb21tYW5kPC9rZXk+DQotCQkJCQk8dmFsdWU+bWFrZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRMb2NhdGlvbjwva2V5Pg0KLQkJCQkJPHZhbHVlPiR7d29ya3NwYWNlX2xvYzovRnJlZVJUT1NfRGVtby9EZWJ1Z308L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmNsZWFuQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5jbGVhbjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuY29udGVudHM8L2tleT4NCi0JCQkJCTx2YWx1ZT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmFjdGl2ZUNvbmZpZ1NldHRpbmdzPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVBdXRvQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5mYWxzZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZW5hYmxlQ2xlYW5CdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUZ1bGxCdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmZ1bGxCdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmFsbDwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuc3RvcE9uRXJyb3I8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS51c2VEZWZhdWx0QnVpbGRDbWQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCTwvYXJndW1lbnRzPg0KLQkJPC9idWlsZENvbW1hbmQ+DQotCQk8YnVpbGRDb21tYW5kPg0KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdCdWlsZGVyPC9uYW1lPg0KLQkJCTx0cmlnZ2Vycz5mdWxsLGluY3JlbWVudGFsLDwvdHJpZ2dlcnM+DQotCQkJPGFyZ3VtZW50cz4NCi0JCQk8L2FyZ3VtZW50cz4NCi0JCTwvYnVpbGRDb21tYW5kPg0KLQk8L2J1aWxkU3BlYz4NCi0JPG5hdHVyZXM+DQotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5jb3JlLmNuYXR1cmU8L25hdHVyZT4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUubWFuYWdlZEJ1aWxkTmF0dXJlPC9uYXR1cmU+DQotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdOYXR1cmU8L25hdHVyZT4NCi0JPC9uYXR1cmVzPg0KLQk8bGlua2VkUmVzb3VyY2VzPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST52aXJ0dWFsOi92aXJ0dWFsPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvUG9ydGFibGU8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+dmlydHVhbDovdmlydHVhbDwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL2luY2x1ZGU8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZTwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnJlZVJUT1MtU291cmNlL2xpc3QuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL1NvdXJjZS9saXN0LmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9xdWV1ZS5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL3F1ZXVlLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS90YXNrcy5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL3Rhc2tzLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS90aW1lcnMuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL1NvdXJjZS90aW1lcnMuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST52aXJ0dWFsOi92aXJ0dWFsPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEk8L25hbWU+DQotCQkJPHR5cGU+MjwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy1QbHVzL1NvdXJjZS9GcmVlUlRPUy1QbHVzLUNMSTwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNMPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9Qb3J0YWJsZS9NZW1NYW5nPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0ZyZWVSVE9TLVNvdXJjZS9Qb3J0YWJsZS9SVkRTPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPnZpcnR1YWw6L3ZpcnR1YWw8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvQmxvY2tRLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Jsb2NrUS5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL0dlblFUZXN0LmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvUXVldWVPdmVyd3JpdGUuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9UaW1lckRlbW8uYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGltZXJEZW1vLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvYmxvY2t0aW0uYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvYmxvY2t0aW0uYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvbXRlc3QuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9jb3VudHNlbS5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL2RlYXRoLmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2RlYXRoLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvZHluYW1pYy5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9keW5hbWljLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvZmxvcC5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbG9wLmM8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZTwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGU8L2xvY2F0aW9uVVJJPg0KLQkJPC9saW5rPg0KLQkJPGxpbms+DQotCQkJPG5hbWU+U291cmNlL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvcmVjbXV0ZXguYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9zZW10ZXN0LmM8L25hbWU+DQotCQkJPHR5cGU+MTwvdHlwZT4NCi0JCQk8bG9jYXRpb25VUkk+RnJlZVJUT1NfUk9PVC9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYzwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNML01lZGlhLURyaXZlcjwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST52aXJ0dWFsOi92aXJ0dWFsPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wvYXBpPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvYXBpPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wvY29tbW9uPC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvZmF0X3NsL2NvbW1vbjwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNML3J0YzwvbmFtZT4NCi0JCQk8dHlwZT4yPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TLVBsdXMvU291cmNlL0ZyZWVSVE9TLVBsdXMtRkFULVNML3BzcC90YXJnZXQvcnRjPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvUG9ydGFibGUvTWVtTWFuZy9oZWFwXzQuYzwvbmFtZT4NCi0JCQk8dHlwZT4xPC90eXBlPg0KLQkJCTxsb2NhdGlvblVSST5GcmVlUlRPU19ST09UL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JCTxsaW5rPg0KLQkJCTxuYW1lPlNvdXJjZS9GcmVlUlRPUy1Tb3VyY2UvUG9ydGFibGUvUlZEUy9BUk1fQ0E5PC9uYW1lPg0KLQkJCTx0eXBlPjI8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOTwvbG9jYXRpb25VUkk+DQotCQk8L2xpbms+DQotCQk8bGluaz4NCi0JCQk8bmFtZT5Tb3VyY2UvRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtRkFULVNML01lZGlhLURyaXZlci9yYW1kcnZfZi5jPC9uYW1lPg0KLQkJCTx0eXBlPjE8L3R5cGU+DQotCQkJPGxvY2F0aW9uVVJJPkZyZWVSVE9TX1JPT1QvRnJlZVJUT1MtUGx1cy9Tb3VyY2UvRnJlZVJUT1MtUGx1cy1GQVQtU0wvbWVkaWEtZHJ2L3JhbS9yYW1kcnZfZi5jPC9sb2NhdGlvblVSST4NCi0JCTwvbGluaz4NCi0JPC9saW5rZWRSZXNvdXJjZXM+DQotCTx2YXJpYWJsZUxpc3Q+DQotCQk8dmFyaWFibGU+DQotCQkJPG5hbWU+RnJlZVJUT1NfUk9PVDwvbmFtZT4NCi0JCQk8dmFsdWU+JCU3QlBBUkVOVC0zLVBST0pFQ1RfTE9DJTdEPC92YWx1ZT4NCi0JCTwvdmFyaWFibGU+DQotCTwvdmFyaWFibGVMaXN0Pg0KLTwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYyOTkwMS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuY29yZS5yZXNvdXJjZXMucHJlZnMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLSNTdW4gSnVuIDE2IDIwOjE2OjM3IEJTVCAyMDEzDQotZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCi1lbmNvZGluZy8vU291cmNlL1JlbmVzYXNGaWxlcy9oYW5kbGVyL3Jlc2V0X2hhbmRsZXIucz1VVEYtOA0KLWVuY29kaW5nLy9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmUuaD1VVEYtOA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9Mb3dMZXZlbEluaXRpYWxpc2UuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9Mb3dMZXZlbEluaXRpYWxpc2UuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEyYTlmYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvTG93TGV2ZWxJbml0aWFsaXNlLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogICBVc2VkIHdpdGggSUNDQVJNIGFuZCBBQVJNLg0KLSAqDQotICogICAgKGMpIENvcHlyaWdodCBJQVIgU3lzdGVtcyAyMDEzDQotICoNCi0gKiAgICBGaWxlIG5hbWUgICA6IG1haW4uYw0KLSAqICAgIERlc2NyaXB0aW9uIDogbWFpbiBtb2R1bGUNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoNCi0gKiBDYWxsZWQgZnJvbSBDc3RhcnQucyB0byBjb25maWd1cmUgdGhlIGNoaXAgYW5kIGJvYXJkIHNwZWNpZmljIElPIGJlZm9yZQ0KLSAqIG1haW4oKSBpcyBjYWxsZWQuDQotICovDQotDQotLyoqIGluY2x1ZGUgZmlsZXMgKiovDQotI2luY2x1ZGUgPGludHJpbnNpY3MuaD4NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotI2luY2x1ZGUgImFybXY3YV9jcDE1X2Rydi5oIg0KLSNpbmNsdWRlICJkZXZkcnZfY29tbW9uLmgiDQotDQotLyogUmVuZXNhcyBpbmNsdWRlIGZpbGVzLiAqLw0KLSNpbmNsdWRlICJzdGJfaW5pdC5oIg0KLSNpbmNsdWRlICJwb3J0X2luaXQuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCINCi0NCi0NCi0vKiogZXh0ZXJuYWwgZGF0YSAqKi8NCi0jcHJhZ21hIHNlY3Rpb24gPSAiLmludHZlYyINCi0NCi1leHRlcm4gdm9pZCBQZXJpcGhlcmFsX0Jhc2ljSW5pdCggdm9pZCApOw0KLXZvaWQgTG93TGV2ZWxJbml0aWFsaXNhdGlvbih2b2lkKTsNCi11bnNpZ25lZCBsb25nIF9fd3JpdGUoaW50IGZpbGRlcywgY29uc3Qgdm9pZCAqYnVmLCB1bnNpZ25lZCBsb25nIG5ieXRlcyk7DQotDQotLyogQ2FsbGVkIGZyb20gY3N0YXJ0dXAucyBiZWZvcmUgdGhlIGtlcm5lbCBpcyBzdGFydGVkLiAqLw0KLXZvaWQgTG93TGV2ZWxJbml0aWFsaXNhdGlvbih2b2lkKQ0KLXsNCi0JLyogQ2hpcCBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBmcm9tIElBUi4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotCS8qIERpc2FibGUgTU1VLCBlbmFibGUgSUNhY2hlICovDQotCUNQMTVfTW11KEZBTFNFKTsNCi0JQ1AxNV9JQ2FjaGUoRkFMU0UpOw0KLQlDUDE1X1NldFZlY3RvckJhc2UoICh1aW50MzJfdCApX19zZWN0aW9uX2JlZ2luKCAiLmludHZlYyIgKSApOw0KLQ0KLQkvKiBTZXQgTG93IHZlY3RvcnMgbW9kZSBpbiBDUDE1IENvbnRyb2wgUmVnaXN0ZXIgKi8NCi0JQ1AxNV9TZXRIaWdoVmVjdG9ycyhGQUxTRSk7DQotDQotDQotCS8qIENoaXAgYW5kIGJvYXJkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIGZyb20gUmVuZXNhcy4gKioqKioqKioqLw0KLQlQZXJpcGhlcmFsX0Jhc2ljSW5pdCgpOw0KLQlTVEJfSW5pdCgpOw0KLQlQT1JUX0luaXQoKTsNCi0gICAgUl9CU0NfSW5pdCggKCB1aW50OF90ICkgKCBCU0NfQVJFQV9DUzIgfCBCU0NfQVJFQV9DUzMgKSApOw0KLSAgICBSX0lOVENfSW5pdCgpOw0KLQ0KLQ0KLQlDUDE1X0lDYWNoZShUUlVFKTsNCi0NCi0JLyogU3RhcnQgd2l0aCBpbnRlcnJ1cHRzIGVuYWJsZWQuICovDQotICAgIF9fZW5hYmxlX2lycSgpOw0KLSAgICBfX2VuYWJsZV9maXEoKTsNCi19DQotDQotLyogS2VlcCB0aGUgbGlua2VyIGhhcHB5LiAqLw0KLXVuc2lnbmVkIGxvbmcgX193cml0ZShpbnQgZmlsZGVzLCBjb25zdCB2b2lkICpidWYsIHVuc2lnbmVkIGxvbmcgbmJ5dGVzKQ0KLXsNCi0JcmV0dXJuIDA7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9SVE9TRGVtby5ld2QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvUlRPU0RlbW8uZXdkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjlhNGE5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9SVE9TRGVtby5ld2QKKysrIC9kZXYvbnVsbApAQCAtMSwxMzUyICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCi08cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5SQU0gRGVidWc8L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNvbmZpZ1xSVEs3NzIxMDBGQzAwMDAwQlJfTk9SLm1hYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXENPTkZJR1xkZWJ1Z2dlclxSZW5lc2FzXFI3UzcyMTAwMS5kZGY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjYuNTAuNi40OTUyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+SkxJTktfSUQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjIwLjIuNzQxODwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRBdHRhY2hUb1Byb2dyYW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTM0NjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+R0RCU0VSVkVSX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSUk9NX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlckZyb21Qcm9iZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFByb3RvY29sUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFN3b1BpbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0Q3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QcmVzY2FsZXJMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkpMSU5LX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE1PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5KTGlua0luaXRpYWxTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMyPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NUY3BJcEFsdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPk1BQ1JBSUdPUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdVNwZWVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wQEFSTTdURE1JPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11SFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWdvPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5VbnVzZWRBZGRyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwMDgwMDAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlBFTUlDUk9fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUEVNaWNyb0F0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0ludGVyZmFjZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb0p0YWdTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiNVTklOSVRJQUxJWkVEIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9TaG93U2V0dGluZ3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUEVNaWNyb1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9TZXJpYWxQb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlBFTWljcm9UQ1BJUEF1dG9TY2FuTmV0d29yazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1BFTWljcm9UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwLjAuMC4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQRU1pY3JvQ29tbUNtZExpbmVQcm9kdWNlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1hEUzEwMEF0dGFjaFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPGRlYnVnZ2VyUGx1Z2lucz4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcSENDV2FyZVxIQ0NXYXJlLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xTYWZlUlRPU1xTYWZlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xTeW1MaXN0XFN5bUxpc3QuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi08L3Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3cCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9SVE9TRGVtby5ld3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YWQ2ZTcuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3cAorKysgL2Rldi9udWxsCkBAIC0xLDEyNDEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KLTxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPlJBTSBEZWJ1ZzwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjIyPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UkFNIERlYnVnXEV4ZTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SQU0gRGVidWdcT2JqPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TGlzdFBhdGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SQU0gRGVidWdcTGlzdDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjIwPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbnB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Njwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIG4sIG5vIGZsb2F0IG5vciBsb25nIGxvbmcsIG5vIHNjYW4gc2V0LCBubyBhc3NpZ25tZW50IHN1cHByZXNzaW5nLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCB2YXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5vIHNwZWNpZmllciBhLCBBLCBubyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZQVTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NvcmVPckNoaXA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJTZWxlY3RTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+VXNlIHRoZSBub3JtYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgQy9DKysgcnVudGltZSBsaWJyYXJ5LiBObyBsb2NhbGUgaW50ZXJmYWNlLCBDIGxvY2FsZSwgbm8gZmlsZSBkZXNjcmlwdG9yIHN1cHBvcnQsIG5vIG11bHRpYnl0ZXMgaW4gcHJpbnRmIGFuZCBzY2FuZiwgYW5kIG5vIGhleCBmbG9hdHMgaW4gc3RydG9kLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41LjEwLjAuMTU5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny4yMC4yLjc0MTg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlI3UzcyMTAwMQlSZW5lc2FzIFI3UzcyMTAwMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjUxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0JFQ29yZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjUxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPk5PUl9ERUJVRzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5QYTA4MiwgUGUxOTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjAwMDAwMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEZWJ1Z0luZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUVuZGlhbk1vZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGFuZ0NvbmZvcm1hbmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU2lnbmVkUGxhaW5DaGFyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUmVxdWlyZVByb3RvdHlwZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcYm9hcmRcPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbW9kdWxlc1w8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxTb3VyY2U8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xpbmNsdWRlXGlvZGVmaW5lczwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E5PC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxhcGk8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPi50ZXh0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cU291cmNlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E5PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UlRPU0RlbW8uc3JlYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q1VTVE9NPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCi0gICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUNPTVA8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJVSUxEQUNUSU9OPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4xPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KLSAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJUT1NEZW1vLm91dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcbGlua2VyXFJlbmVzYXNccjdzNzIxMDAxLmljZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3VwcHJlc3NEaWFnczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1JlbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc1dhcm48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNFcnI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1dhcm5pbmdzQXJlRXJyb3JzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVXNlRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb3dMZXZlbEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQXV0b0xpYkVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0FkZGl0aW9uYWxMaWJzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPdmVycmlkZVByb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWxTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9faWFyX3Byb2dyYW1fc3RhcnQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MTEwMjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNCaXRPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUaHJlYWRzU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJTElOSzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5CbGlua3ktRGVtbzwvbmFtZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcQmxpbmt5LURlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+Ym9hcmQ8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcYm9hcmRcYm9hcmQuaDwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnJlZVJUT1MtU291cmNlPC9uYW1lPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+aW5jbHVkZTwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcRnJlZVJUT1MuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlXGxpc3QuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlXG1wdV93cmFwcGVycy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVccG9ydGFibGUuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlXHByb2pkZWZzLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVxxdWV1ZS5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcc2VtcGhyLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VcaW5jbHVkZVxTdGFja01hY3Jvcy5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcdGFzay5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXGluY2x1ZGVcdGltZXJzLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+SUFSPC9uYW1lPg0KLSAgICAgICAgPGdyb3VwPg0KLSAgICAgICAgICA8bmFtZT5BUk1fQ0E5PC9uYW1lPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBOVxwb3J0LmM8L25hbWU+DQotICAgICAgICAgIDwvZmlsZT4NCi0gICAgICAgICAgPGZpbGU+DQotICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DQTlccG9ydEFTTS5oPC9uYW1lPg0KLSAgICAgICAgICA8L2ZpbGU+DQotICAgICAgICAgIDxmaWxlPg0KLSAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ0E5XHBvcnRBU00uczwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NBOVxwb3J0bWFjcm8uaDwvbmFtZT4NCi0gICAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPC9ncm91cD4NCi0gICAgICA8L2dyb3VwPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPk1lbU1hbmc8L25hbWU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICA8L2dyb3VwPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlxTb3VyY2VccXVldWUuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cU291cmNlXHRpbWVycy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGdyb3VwPg0KLSAgICA8bmFtZT5GdWxsLURlbW88L25hbWU+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5Db21tb24tRGVtby1Tb3VyY2U8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXGNvbXRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcc2VtdGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cQ29tbW9uXE1pbmltYWxcVGltZXJEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+RnJlZVJUT1MtUGx1cy1DTEk8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtQ0xJXEZyZWVSVE9TX0NMSS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkZyZWVSVE9TLVBsdXMtRkFULVNMPC9uYW1lPg0KLSAgICAgIDxncm91cD4NCi0gICAgICAgIDxuYW1lPkFQSTwvbmFtZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGFwaVxhcGlfbWRyaXZlci5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcYXBpXGFwaV9tZHJpdmVyX3JhbS5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcYXBpXGZhdF9zbC5oPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+Q29tbW9uPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxkaXIuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZHJ2LmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXGZfbG9jay5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblxmYXQuYzwvbmFtZT4NCi0gICAgICAgIDwvZmlsZT4NCi0gICAgICAgIDxmaWxlPg0KLSAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMXGZhdF9zbFxjb21tb25cZmlsZS5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcZmF0X3NsXGNvbW1vblx1dGlsLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHV0aWxfc2ZuLmM8L25hbWU+DQotICAgICAgICA8L2ZpbGU+DQotICAgICAgICA8ZmlsZT4NCi0gICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUZBVC1TTFxmYXRfc2xcY29tbW9uXHZvbHVtZS5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+TWVkaWEtRHJpdmVyPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xcbWVkaWEtZHJ2XHJhbVxyYW1kcnZfZi5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgICAgPGdyb3VwPg0KLSAgICAgICAgPG5hbWU+cnRjPC9uYW1lPg0KLSAgICAgICAgPGZpbGU+DQotICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1GQVQtU0xccHNwXHRhcmdldFxydGNccHNwX3J0Yy5jPC9uYW1lPg0KLSAgICAgICAgPC9maWxlPg0KLSAgICAgIDwvZ3JvdXA+DQotICAgIDwvZ3JvdXA+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xGaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xGaWxlLXN5c3RlbS1kZW1vLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXG1haW5fZnVsbC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xyZWdfdGVzdC5zPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xTYW1wbGUtQ0xJLWNvbW1hbmRzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnVsbC1EZW1vXHNlcmlhbC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXEZ1bGwtRGVtb1xVQVJUQ29tbWFuZENvbnNvbGUuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+SUFSLUZpbGVzPC9uYW1lPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXG1vZHVsZXNcYXJtdjdhX2NwMTVfZHJ2LmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPlJlbmVzYXMtRmlsZXM8L25hbWU+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5pbmNsdWRlPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGluY2x1ZGVcaW9kZWZpbmUuaDwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxncm91cD4NCi0gICAgICA8bmFtZT5Jbml0aWFsaXNhdGlvbiBhbmQgRHJpdmVyczwvbmFtZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xkcml2ZXJzXGNvbW1vblxjb21tb25fZHJpdmVyXGJzYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xkcml2ZXJzXGNvbW1vblx1c2VyZGVmXGJzY191c2VyZGVmLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGRyaXZlcnNcaW50Y1xpbnRjX2RyaXZlclxpbnRjLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGRyaXZlcnNcaW50Y1xpbnRjX2RyaXZlclxpbnRjX2hhbmRsZXIuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xpbnRjXHVzZXJkZWZcaW50Y191c2VyZGVmLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGRyaXZlcnNcb3N0bVxvc3RtX2RyaXZlclxvc3RtLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHBlcmlwaGVyYWxfaW5pdF9iYXNpYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xib2FyZF9zZXR0aW5nc1xwb3J0X2luaXQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xzY2lmX3VhcnRcc2NpZl91YXJ0X2RyaXZlclxzY2lmX3VhcnQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxSZW5lc2FzRmlsZXNcZHJpdmVyc1xzY2lmX3VhcnRcdXNlcmRlZlxzY2lmX3VhcnRfdXNlcmRlZi5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xib2FyZF9zZXR0aW5nc1xzaW9jaGFyLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcUmVuZXNhc0ZpbGVzXGJvYXJkX3NldHRpbmdzXHN0Yl9pbml0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICA8L2dyb3VwPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGNzdGFydHVwLnM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFwuLlxTb3VyY2VcRnJlZVJUT1NfdGlja19jb25maWcuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXFNvdXJjZVxGcmVlUlRPU0NvbmZpZy5oPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXExFRHMuYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi0gIDxmaWxlPg0KLSAgICA8bmFtZT4kUFJPSl9ESVIkXExvd0xldmVsSW5pdGlhbGlzZS5jPC9uYW1lPg0KLSAgPC9maWxlPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cU291cmNlXG1haW4uYzwvbmFtZT4NCi0gIDwvZmlsZT4NCi08L3Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3dyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9SVE9TRGVtby5ld3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOWI5YWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL1JUT1NEZW1vLmV3dworKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCi08d29ya3NwYWNlPg0KLSAgPHByb2plY3Q+DQotICAgIDxwYXRoPiRXU19ESVIkXFJUT1NEZW1vLmV3cDwvcGF0aD4NCi0gIDwvcHJvamVjdD4NCi0gIDxiYXRjaEJ1aWxkPg0KLSAgICA8YmF0Y2hEZWZpbml0aW9uPg0KLSAgICAgIDxuYW1lPkFsbDwvbmFtZT4NCi0gICAgICA8bWVtYmVyPg0KLSAgICAgICAgPHByb2plY3Q+UlRPU0RlbW88L3Byb2plY3Q+DQotICAgICAgICA8Y29uZmlndXJhdGlvbj5OT1IgRGVidWc8L2NvbmZpZ3VyYXRpb24+DQotICAgICAgPC9tZW1iZXI+DQotICAgICAgPG1lbWJlcj4NCi0gICAgICAgIDxwcm9qZWN0PlJUT1NEZW1vPC9wcm9qZWN0Pg0KLSAgICAgICAgPGNvbmZpZ3VyYXRpb24+UkFNIERlYnVnPC9jb25maWd1cmF0aW9uPg0KLSAgICAgIDwvbWVtYmVyPg0KLSAgICAgIDxtZW1iZXI+DQotICAgICAgICA8cHJvamVjdD5SVE9TRGVtbzwvcHJvamVjdD4NCi0gICAgICAgIDxjb25maWd1cmF0aW9uPlNlcmlhbEZsYXNoIERlYnVnPC9jb25maWd1cmF0aW9uPg0KLSAgICAgIDwvbWVtYmVyPg0KLSAgICAgIDxtZW1iZXI+DQotICAgICAgICA8cHJvamVjdD5SVE9TRGVtbzwvcHJvamVjdD4NCi0gICAgICAgIDxjb25maWd1cmF0aW9uPlNlcmlhbEZsYXNoIGZvciBCb290bG9hZGVyPC9jb25maWd1cmF0aW9uPg0KLSAgICAgIDwvbWVtYmVyPg0KLSAgICAgIDxtZW1iZXI+DQotICAgICAgICA8cHJvamVjdD5Cb290bG9hZGVyPC9wcm9qZWN0Pg0KLSAgICAgICAgPGNvbmZpZ3VyYXRpb24+U2VyaWFsRmxhc2ggQm9vdGxvYWRlcjwvY29uZmlndXJhdGlvbj4NCi0gICAgICA8L21lbWJlcj4NCi0gICAgPC9iYXRjaERlZmluaXRpb24+DQotICA8L2JhdGNoQnVpbGQ+DQotPC93b3Jrc3BhY2U+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2JvYXJkL2FybV9jb21tLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvYm9hcmQvYXJtX2NvbW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJkMzdkZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvYm9hcmQvYXJtX2NvbW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoqDQotICoqICAgIENvbW1vbiBkZWZpbml0aW9uIGZvciBJQVIgRVcgQVJNDQotICoqDQotICoqICAgIFVzZWQgd2l0aCBBUk0gSUFSIEMvQysrIENvbXBpbGVyIGFuZCBBc3NlbWJsZXIuDQotICoqDQotICoqICAgIChjKSBDb3B5cmlnaHQgSUFSIFN5c3RlbXMgMjAwNg0KLSAqKg0KLSAqKiAgICAkUmV2aXNpb246IDUyNzA1ICQNCi0gKioNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlIDxpbnRyaW5zaWNzLmg+DQotDQotI2lmbmRlZiBfX0FSTV9DT01NX0RFRl9IDQotI2RlZmluZSBfX0FSTV9DT01NX0RFRl9IDQotDQotI2RlZmluZSBNSFogICAgICAgICAgICoxMDAwMDAwbA0KLSNkZWZpbmUgS0haICAgICAgICAgICAqMTAwMGwNCi0jZGVmaW5lIEhaICAgICAgICAgICAgKjFsDQotDQotI2lmbmRlZiBGQUxTRQ0KLSNkZWZpbmUgRkFMU0UgKDEgPT0gMCkNCi0jZW5kaWYNCi0NCi0jaWZuZGVmIFRSVUUNCi0jZGVmaW5lIFRSVUUgICgxID09IDEpDQotI2VuZGlmDQotDQotI2lmbmRlZiBOVUxMDQotI2RlZmluZSBOVUxMICgodm9pZCopMCkNCi0jZW5kaWYNCi0NCi10eXBlZGVmIGRvdWJsZSAgICAgICAgICAgICAgICBGbG82NDsgICAgLy8gRG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludA0KLXR5cGVkZWYgZG91YmxlICAgICAgICAgICAgICAqIHBGbG82NDsNCi10eXBlZGVmIGZsb2F0ICAgICAgICAgICAgICAgICBGbG8zMjsgICAgLy8gU2luZ2xlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludA0KLXR5cGVkZWYgZmxvYXQgICAgICAgICAgICAgICAqIHBGbG8zMjsNCi10eXBlZGVmIHNpZ25lZCAgIGxvbmcgbG9uZyAgICBJbnQ2NFM7ICAgLy8gU2lnbmVkICAgNjQgYml0IHF1YW50aXR5DQotdHlwZWRlZiBzaWduZWQgICBsb25nIGxvbmcgICogcEludDY0UzsNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgICBJbnQ2NFU7ICAgLy8gVW5zaWduZWQgNjQgYml0IHF1YW50aXR5DQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgICogcEludDY0VTsNCi10eXBlZGVmIHNpZ25lZCAgIGludCAgICAgICAgICBJbnQzMlM7ICAgLy8gU2lnbmVkICAgMzIgYml0IHF1YW50aXR5DQotdHlwZWRlZiBzaWduZWQgICBpbnQgICAgICAgICogcEludDMyUzsNCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgICBJbnQzMlU7ICAgLy8gVW5zaWduZWQgMzIgYml0IHF1YW50aXR5DQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgICogcEludDMyVTsNCi10eXBlZGVmIHNpZ25lZCAgIHNob3J0ICAgICAgICBJbnQxNlM7ICAgLy8gU2lnbmVkICAgMTYgYml0IHF1YW50aXR5DQotdHlwZWRlZiBzaWduZWQgICBzaG9ydCAgICAgICogcEludDE2UzsNCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgICAgICBJbnQxNlU7ICAgLy8gVW5zaWduZWQgMTYgYml0IHF1YW50aXR5DQotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgICAgICogcEludDE2VTsNCi10eXBlZGVmIHNpZ25lZCAgIGNoYXIgICAgICAgICBJbnQ4UzsgICAgLy8gU2lnbmVkICAgIDggYml0IHF1YW50aXR5DQotdHlwZWRlZiBzaWduZWQgICBjaGFyICAgICAgICogcEludDhTOw0KLXR5cGVkZWYgdW5zaWduZWQgY2hhciAgICAgICAgIEludDhVOyAgICAvLyBVbnNpZ25lZCAgOCBiaXQgcXVhbnRpdHkNCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgICAgKiBwSW50OFU7DQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgICAgQm9vbGVhbjsgIC8vIEJvb2xlYW4NCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgICAgKiBwQm9vbGVhbjsNCi0NCi0jZGVmaW5lIE1BWChhLCBiKSAoKChhKSA+IChiKSkgPyAoYSkgOiAoYikpDQotI2RlZmluZSBNSU4oYSwgYikgKCgoYSkgPCAoYikpID8gKGEpIDogKGIpKQ0KLSNkZWZpbmUgXzJCTChhKSAgIChJbnQ4VSkoYSksKEludDhVKShhPj44KQ0KLSNkZWZpbmUgXzJCQihhKSAgIChJbnQ4VSkoYT4+OCksKEludDhVKShhKSwNCi0jZGVmaW5lIF8zQkwoYSkgICAoSW50OFUpKGEpLChJbnQ4VSkoYT4+OCksKEludDhVKShhPj4xNikNCi0jZGVmaW5lIF8zQkIoYSkgICAoSW50OFUpKGE+PjE2KSwoSW50OFUpKGE+PjgpLChJbnQ4VSkoYSkNCi0jZGVmaW5lIF80QkwoYSkgICAoSW50OFUpKGEpLChJbnQ4VSkoYT4+OCksKEludDhVKShhPj4xNiksKEludDhVKShhPj4yNCkNCi0jZGVmaW5lIF80QkIoYSkgICAoSW50OFUpKGE+PjI0KSwoSW50OFUpKGE+PjE2KSwoSW50OFUpKGE+PjgpLChJbnQ4VSkoYSkNCi0NCi10eXBlZGVmIHZvaWQgKiAoKkNvbW1Vc2VyRnBudF90KSh2b2lkICopOw0KLXR5cGVkZWYgdm9pZCAgICgqVm9pZEZwbnRfdCkodm9pZCk7DQotDQotLy8gQXRvbWljIGV4Y2hhbmdlIG9mIGRhdGEgYmV0d2VlbiBhIG1lbW9yeSBjZWxsIGFuZCBhIHJlZ2lzdGVyDQotLy8gcmV0dXJuIHZhbHVlIG9mIHRoZSBtZW1vcnkgY2VsbA0KLSNpZiBfX0NPUkVfXyA8IDcNCi1pbmxpbmUgX19hcm0gSW50MzJVIEF0b21pY0V4Y2hhbmdlIChJbnQzMlUgU3RhdGUsIHBJbnQzMlUgRmxhZykNCi17DQotICBhc20oInN3cCAgcjAsIHIwLCBbcjFdIik7DQotICByZXR1cm4oU3RhdGUpOw0KLX0NCi0NCi0jZGVmaW5lIElSUV9GTEFHICAgICAgICAweDgwDQotI2RlZmluZSBGSVFfRkxBRyAgICAgICAgMHg0MA0KLQ0KLWlubGluZSBfX2FybSBJbnQzMlUgRW50ckNyaXRTZWN0aW9uKHZvaWQpDQotew0KLXVuc2lnbmVkIGxvbmcgdG1wOw0KLSAgdG1wID0gX19nZXRfQ1BTUigpOw0KLSAgX19zZXRfQ1BTUih0bXAgfCBJUlFfRkxBRyk7DQotICByZXR1cm4odG1wKTsNCi19DQotDQotaW5saW5lIF9fYXJtIHZvaWQgRXh0Q3JpdFNlY3Rpb24oSW50MzJVIFNhdmUpDQotew0KLXVuc2lnbmVkIGxvbmcgdG1wOw0KLSAgdG1wID0gX19nZXRfQ1BTUigpOw0KLSAgX19zZXRfQ1BTUih0bXAgJiAoU2F2ZSB8IH5JUlFfRkxBRykpOw0KLX0NCi0NCi1pbmxpbmUgX19hcm0gSW50MzJVIEVudHJDcml0U2VjdGlvbkZpcSh2b2lkKQ0KLXsNCi11bnNpZ25lZCBsb25nIHRtcDsNCi0gIHRtcCA9IF9fZ2V0X0NQU1IoKTsNCi0gIF9fc2V0X0NQU1IodG1wIHwgKElSUV9GTEFHIHwgRklRX0ZMQUcpKTsNCi0gIHJldHVybih0bXApOw0KLX0NCi0NCi1pbmxpbmUgX19hcm0gdm9pZCBFeHRDcml0U2VjdGlvbkZpcShJbnQzMlUgU2F2ZSkNCi17DQotdW5zaWduZWQgbG9uZyB0bXA7DQotICB0bXAgPSBfX2dldF9DUFNSKCk7DQotICBfX3NldF9DUFNSKHRtcCAmIChTYXZlIHwgfihJUlFfRkxBRyB8IEZJUV9GTEFHKSkpOw0KLX0NCi0NCi0jZGVmaW5lIEVOVFJfQ1JUX1NFQ1RJT04oU2F2ZSkgU2F2ZSA9IEVudHJDcml0U2VjdGlvbigpDQotI2RlZmluZSBFWFRfQ1JUX1NFQ1RJT04oU2F2ZSkgIEV4dENyaXRTZWN0aW9uKFNhdmUpDQotDQotI2RlZmluZSBFTlRSX0NSVF9TRUNUSU9OX0YoU2F2ZSkgU2F2ZSA9IEVudHJDcml0U2VjdGlvbkZpcSgpDQotI2RlZmluZSBFWFRfQ1JUX1NFQ1RJT05fRihTYXZlKSAgRXh0Q3JpdFNlY3Rpb25GaXEoU2F2ZSkNCi0NCi0jZWxpZiAgX19DT1JFX18gPT0gNw0KLQ0KLWV4dGVybiBJbnQzMlUgQ3JpdGljYWxTZWNDbnRyOw0KLQ0KLWlubGluZSB2b2lkIEVudHJDcml0U2VjdGlvbih2b2lkKQ0KLXsNCi0gIGlmKENyaXRpY2FsU2VjQ250ciA9PSAwKQ0KLSAgew0KLSAgICBhc20oIkNQU0lEIGkiKTsNCi0gIH0NCi0gIC8vIGF2b2lkIGxvc3Qgb2Ygb25lIGNvdW50IGluIGNhc2Ugb2Ygc2ltdWx0YW5lb3VzbHkgY2FsbGluZyBmcm9tIGJvdGggcGxhY2VzDQotICArK0NyaXRpY2FsU2VjQ250cjsNCi19DQotDQotaW5saW5lIHZvaWQgRXh0Q3JpdFNlY3Rpb24odm9pZCkNCi17DQotICBpZigtLUNyaXRpY2FsU2VjQ250ciA9PSAwKQ0KLSAgew0KLSAgICBhc20oIkNQU0lFIGkiKTsNCi0gIH0NCi19DQotDQotaW5saW5lIEludDMyVSBBdG9taWNFeGNoYW5nZSAoSW50MzJVIFN0YXRlLCBwSW50MzJVIEZsYWcpDQotew0KLUludDMyVSBIb2xkOw0KLSAgRW50ckNyaXRTZWN0aW9uKCk7DQotICBIb2xkID0gKkZsYWc7DQotICAqRmxhZyA9IFN0YXRlOw0KLSAgRXh0Q3JpdFNlY3Rpb24oKTsNCi0gIHJldHVybihIb2xkKTsNCi19DQotDQotI2RlZmluZSBFTlRSX0NSVF9TRUNUSU9OKCkgRW50ckNyaXRTZWN0aW9uKCkNCi0jZGVmaW5lIEVYVF9DUlRfU0VDVElPTigpICBFeHRDcml0U2VjdGlvbigpDQotI2VuZGlmDQotDQotI2RlZmluZSBMb25nVG9CaW4obikgKCgobiA+PiAyMSkgJiAweDgwKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgKChuID4+IDE4KSAmIDB4NDApIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAoKG4gPj4gMTUpICYgMHgyMCkgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICgobiA+PiAxMikgJiAweDEwKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgKChuID4+ICA5KSAmIDB4MDgpIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAoKG4gPj4gIDYpICYgMHgwNCkgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICgobiA+PiAgMykgJiAweDAyKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgKChuICAgICAgKSAmIDB4MDEpKQ0KLQ0KLSNkZWZpbmUgX19CSU4obikgTG9uZ1RvQmluKDB4IyNuIyNsKQ0KLQ0KLSNkZWZpbmUgQklOOChuKSAgICAgICAgICAgICAgICAgICAgICAgX19CSU4obikNCi0jZGVmaW5lIEJJTihuKSAgICAgICAgICAgICAgICAgICAgICAgIF9fQklOKG4pDQotI2RlZmluZSBCSU4xNihiMSxiMikgICAgICAgICgoICAgICAgICBfX0JJTihiMSkgIDw8ICA4VUwpICsgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19CSU4oYjIpKQ0KLSNkZWZpbmUgQklOMzIoYjEsYjIsYjMsYjQpICgoKChJbnQzMlUpX19CSU4oYjEpKSA8PCAyNFVMKSArIFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoSW50MzJVKV9fQklOKGIyKSkgPDwgMTZVTCkgKyBcDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoKEludDMyVSlfX0JJTihiMykpIDw8ICA4VUwpICsgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnQzMlUpX19CSU4oYjQpKQ0KLQ0KLSNlbmRpZiAvLyBfX0FSTV9DT01NX0RFRl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfTk9SLmljZiBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX05PUi5pY2YKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZWQ0NDUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfTk9SLmljZgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIyMjSUNGIyMjIFNlY3Rpb24gaGFuZGxlZCBieSBJQ0YgZWRpdG9yLCBkb24ndCB0b3VjaCEgKioqKi8NCi0vKi1FZGl0b3IgYW5ub3RhdGlvbiBmaWxlLSovDQotLyogSWNmRWRpdG9yRmlsZT0iJFRPT0xLSVRfRElSJFxjb25maWdcaWRlXEljZkVkaXRvclxhX3YxXzAueG1sIiAqLw0KLS8qLVNwZWNpYWxzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18gPSAweDAwMDAwMDAwOw0KLS8qLU1lbW9yeSBSZWdpb25zLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgPSAweDAwMDAwMDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9ST01fZW5kX18gICAgID0gMHgwN0ZGRkZGRjsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICA9IDB4MjAwMjAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfXyAgICAgPSAweDIwOUZGRkZGOw0KLS8qLVNpemVzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgID0gMHg4MDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfc3Zjc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9pcnFzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2ZpcXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfdW5kc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9hYnRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2hlYXBfXyAgICAgPSAweDgwMDA7DQotLyoqKiogRW5kIG9mIElDRiBlZGl0b3Igc2VjdGlvbi4gIyMjSUNGIyMjKi8NCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgPSAweDIwMDAwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX18gICAgICAgICA9IDB4MjAwMUZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgID0gMHg2MDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fICAgICAgPSAweDYwOUZGRkZGOw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyA9IDB4NjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfXyAgID0gMHg2MDAxRkZGRjsNCi0NCi1kZWZpbmUgbWVtb3J5IG1lbSB3aXRoIHNpemUgPSA0RzsNCi0NCi1kZWZpbmUgcmVnaW9uIFJPTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9ST01fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSQU1fcmVnaW9uICAgICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICAgICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gUmV0UkFNX3JlZ2lvbiAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9zdGFydF9fICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJBTV9yZWdpb24gICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fc3RhcnRfXyAgICB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBNaXJyb3JSZXRSQU1fcmVnaW9uID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX3N0YXJ0X18gdG8gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fZW5kX19dOw0KLQ0KLWRlZmluZSBibG9jayBDU1RBQ0sgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfY3N0YWNrX18gICB7IH07DQotZGVmaW5lIGJsb2NrIFNWQ19TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgSVJRX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBGSVFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIFVORF9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgQUJUX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBIRUFQICAgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICB7IH07DQotDQotaW5pdGlhbGl6ZSBieSBjb3B5IHsgcmVhZHdyaXRlIH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiAubm9pbml0IH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiBNTVVfVFQgfTsNCi0NCi1wbGFjZSBhdCBhZGRyZXNzIG1lbTpfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18geyByZWFkb25seSBzZWN0aW9uIC5pbnR2ZWMgfTsNCi0NCi1wbGFjZSBpbiBST01fcmVnaW9uICAgICB7IHJlYWRvbmx5IH07DQotcGxhY2UgaW4gUkFNX3JlZ2lvbiAgICAgeyByZWFkd3JpdGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBDU1RBQ0ssIGJsb2NrIFNWQ19TVEFDSywgYmxvY2sgSVJRX1NUQUNLLCBibG9jayBGSVFfU1RBQ0ssDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBVTkRfU1RBQ0ssIGJsb2NrIEFCVF9TVEFDSywgYmxvY2sgSEVBUCB9Ow0KLQ0KLXBsYWNlIGluIFJldFJBTV9yZWdpb24gICAgICAgeyBzZWN0aW9uIC5yZXRyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSQU1fcmVnaW9uICAgIHsgc2VjdGlvbiAubWlycm9ycmFtIH07DQotcGxhY2UgaW4gTWlycm9yUmV0UkFNX3JlZ2lvbiB7IHNlY3Rpb24gLm1pcnJvcnJldHJhbSB9Ow0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX05PUi5tYWMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9OT1IubWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGYwMDZmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX05PUi5tYWMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1zZXR1cCgpDQotew0KLV9fdmFyIFJlZzsNCi0NCi0gIC8vIEVuYWJsZSBJIENhY2hlDQotICAvLyBEaXNhYmxlIE1NVSBhbmQgZW5hYmxlIElDYWNoZQ0KLSAgUmVnID0gX19qdGFnQ1AxNVJlYWRSZWcoMSwgMCwgMCwgMCk7DQotICBSZWcgJj0gMHhGRkZGRkZGQTsNCi0gIFJlZyB8PSAxPDwxMjsNCi0gIF9fanRhZ0NQMTVXcml0ZVJlZygxLCAwLCAwLCAwLCBSZWcpOw0KLQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMEZGNDEsIDB4RkNGRTcyMUMsICJNZW1vcnkiKTsgLy8gc2V0IFBJUEM3LjYgZGlyZWN0aW9uIGNvbnRyb2xsZWQgYnkgYWx0LldFMA0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMEZGNDEsIDB4RkNGRTM0MUMsICJNZW1vcnkiKTsgLy8gc2V0IFBNQzcuNiB0byBiZSBhbHQuV0UwDQotDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwRkZGRiwgMHhGQ0ZFNzIyMCwgIk1lbW9yeSIpOyAvLyBzZXQgUElQQzggZGlyZWN0aW9uIGNvbnRyb2xsZWQgYnkgYWx0LkE4LUEyMw0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMEZGRkYsIDB4RkNGRTM0MjAsICJNZW1vcnkiKTsgLy8gc2V0IFBNQzggdG8gYmUgYWx0LkE4LUEyMw0KLQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMDAwMDMsIDB4RkNGRTcyMjQsICJNZW1vcnkiKTsgLy8gc2V0IFBJUEM5IGRpcmVjdGlvbiBjb250cm9sbGVkIGJ5IGFsdC5BMjQtQTI1DQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwMDAwMywgMHhGQ0ZFMzQyNCwgIk1lbW9yeSIpOyAvLyBzZXQgUE1DOSB0byBiZSBhbHQuQTI0LUEyNQ0KLQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDAwMDAwODAsIDB4RkNGRTcyMEMsICJNZW1vcnkiKTsgLy8gc2V0IFBJUEMzIGRpcmVjdGlvbiBjb250cm9sbGVkIGJ5IGFsdC5DUzENCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwMDAwMDgwLCAweEZDRkUzNDBDLCAiTWVtb3J5Iik7IC8vIHNldCBQTUMzIHRvIGJlIGFsdC5DUzENCi0gIF9fd3JpdGVNZW1vcnkxNigweDAwMDAwMDgwLCAweEZDRkUzNjBDLCAiTWVtb3J5Iik7IC8vIHNldCBQRkNFMyB0byBiZSBhbHQuQ1MxDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMDAwMDA4MCwgMHhGQ0ZFM0EwQywgIk1lbW9yeSIpOyAvLyBzZXQgUEZDQUUzIHRvIGJlIGFsdC5DUzENCi19DQotDQotZXhlY1VzZXJQcmVsb2FkKCkNCi17DQotICBfX21lc3NhZ2UgIi0tLS0tIFByZXBhcmUgaGFyZHdhcmUgZm9yIGRlYnVnIC0tLS0tXG4iOw0KLSAgX19od1Jlc2V0KDApOw0KLSAgc2V0dXAoKTsNCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2guaWNmIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2guaWNmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzJlMTc1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoLmljZgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIyMjSUNGIyMjIFNlY3Rpb24gaGFuZGxlZCBieSBJQ0YgZWRpdG9yLCBkb24ndCB0b3VjaCEgKioqKi8NCi0vKi1FZGl0b3IgYW5ub3RhdGlvbiBmaWxlLSovDQotLyogSWNmRWRpdG9yRmlsZT0iJFRPT0xLSVRfRElSJFxjb25maWdcaWRlXEljZkVkaXRvclxhX3YxXzAueG1sIiAqLw0KLS8qLVNwZWNpYWxzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18gPSAweDE4MDAwMDAwOw0KLS8qLU1lbW9yeSBSZWdpb25zLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgPSAweDE4MDAwMDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9ST01fZW5kX18gICAgID0gMHgxODA3RkZGRjsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICA9IDB4MjAwMjAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfXyAgICAgPSAweDIwOUZGRkZGOw0KLS8qLVNpemVzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgID0gMHg4MDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfc3Zjc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9pcnFzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2ZpcXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfdW5kc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9hYnRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2hlYXBfXyAgICAgPSAweDgwMDA7DQotLyoqKiogRW5kIG9mIElDRiBlZGl0b3Igc2VjdGlvbi4gIyMjSUNGIyMjKi8NCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgPSAweDIwMDAwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX18gICAgICAgICA9IDB4MjAwMUZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgID0gMHg2MDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fICAgICAgPSAweDYwOUZGRkZGOw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyA9IDB4NjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfXyAgID0gMHg2MDAxRkZGRjsNCi0NCi1kZWZpbmUgbWVtb3J5IG1lbSB3aXRoIHNpemUgPSA0RzsNCi0NCi1kZWZpbmUgcmVnaW9uIFJPTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9ST01fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSQU1fcmVnaW9uICAgICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICAgICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gUmV0UkFNX3JlZ2lvbiAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9zdGFydF9fICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJBTV9yZWdpb24gICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fc3RhcnRfXyAgICB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBNaXJyb3JSZXRSQU1fcmVnaW9uID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX3N0YXJ0X18gdG8gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fZW5kX19dOw0KLQ0KLWRlZmluZSBibG9jayBDU1RBQ0sgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfY3N0YWNrX18gICB7IH07DQotZGVmaW5lIGJsb2NrIFNWQ19TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgSVJRX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBGSVFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIFVORF9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgQUJUX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBIRUFQICAgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICB7IH07DQotDQotaW5pdGlhbGl6ZSBieSBjb3B5IHsgcmVhZHdyaXRlIH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiAubm9pbml0IH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiBNTVVfVFQgfTsNCi0NCi1wbGFjZSBhdCBhZGRyZXNzIG1lbTpfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18geyByZWFkb25seSBzZWN0aW9uIC5pbnR2ZWMgfTsNCi0NCi1wbGFjZSBpbiBST01fcmVnaW9uICAgICB7IHJlYWRvbmx5IH07DQotcGxhY2UgaW4gUkFNX3JlZ2lvbiAgICAgeyByZWFkd3JpdGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBDU1RBQ0ssIGJsb2NrIFNWQ19TVEFDSywgYmxvY2sgSVJRX1NUQUNLLCBibG9jayBGSVFfU1RBQ0ssDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBVTkRfU1RBQ0ssIGJsb2NrIEFCVF9TVEFDSywgYmxvY2sgSEVBUCB9Ow0KLQ0KLXBsYWNlIGluIFJldFJBTV9yZWdpb24gICAgICAgeyBzZWN0aW9uIC5yZXRyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSQU1fcmVnaW9uICAgIHsgc2VjdGlvbiAubWlycm9ycmFtIH07DQotcGxhY2UgaW4gTWlycm9yUmV0UkFNX3JlZ2lvbiB7IHNlY3Rpb24gLm1pcnJvcnJldHJhbSB9Ow0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoLm1hYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoLm1hYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNiYzQ4Yy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaC5tYWMKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1zZXR1cCgpDQotew0KLV9fdmFyIFJlZzsNCi0NCi0gIC8vIEVuYWJsZSBJIENhY2hlDQotICAvLyBEaXNhYmxlIE1NVSBhbmQgZW5hYmxlIElDYWNoZQ0KLSAgUmVnID0gX19qdGFnQ1AxNVJlYWRSZWcoMSwgMCwgMCwgMCk7DQotICBSZWcgJj0gMHhGRkZGRkZGQTsNCi0gIFJlZyB8PSAxPDwxMjsNCi0gIF9fanRhZ0NQMTVXcml0ZVJlZygxLCAwLCAwLCAwLCBSZWcpOw0KLQ0KLSAgLy9fX3dyaXRlTWVtb3J5MTYoMHgwMDM1LCAweEZDRkUwMDEwLCAiTWVtb3J5Iik7ICAgICAvLyBGUlFDUg0KLSAgLy9fX3dyaXRlTWVtb3J5MTYoMHgwMDAxLCAweEZDRkUwMDE0LCAiTWVtb3J5Iik7ICAgICAvLyBGUlFDUjINCi0NCi0gIC8vIFR1cm4gb24gY2xvY2sgZm9yIFNQSQ0KLSAgX193cml0ZU1lbW9yeTgoMHgwMCwgMHhGQ0ZFMDQzOCwgIk1lbW9yeSIpOyAgICAgICAgLy8gUERNX1NUQkNSOQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFBPUlRTIGZvciBTUEkgKHNlcmlhbCBmbGFzaCAxKQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDBGQywgMHhGQ0ZFNzIyNCwgIk1lbW9yeSIpOyAgICAgLy8gUElQQzkgMi03IC0+IGFsdCBJTyBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkUzNDI0LCAiTWVtb3J5Iik7ICAgICAvLyBQTUM5IDItNyAtPiBhbHQgbW9kZQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDBGQywgMHhGQ0ZFMzUyNCwgIk1lbW9yeSIpOyAgICAgLy8gUEZDOSAyLTcgLT4gYWx0IG1vZGUNCi0NCi0gIC8vIENvbmZpZ3VyZSBQT1JUUyBmb3IgU1BJIChzZXJpYWwgZmxhc2ggMikNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTcyMDgsICJNZW1vcnkiKTsgICAgIC8vIFBJUEMyIDEyLTE1IC0+IGFsdCBJTyBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNDA4LCAiTWVtb3J5Iik7ICAgICAvLyBQTUMyIDEyLTE1IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNTA4LCAiTWVtb3J5Iik7ICAgICAvLyBQRkMyIDEyLTE1IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNjA4LCAiTWVtb3J5Iik7ICAgICAvLyBQRkNFMiAxMi0xNSAtPiBhbHQgbW9kZQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFNQSSBmb3IgRVhUUkVBRCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMUFBNDAyMCwgMHgzRkVGQTAwMCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfQ01OQ1IgMS1tZW1vcnksIENQSEE9MCwgQ1BPTD0wLCBTRkRFPTENCi0NCi0gIC8vIENvbmZpZ3VyZSBTUEkgcmVnaXN0ZXJzDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDEzMDAwMCwgMHgzRkVGQTAxMCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJDTVIgQ01EID0gMHgxMw0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDRGMDAsIDB4M0ZFRkEwMUMsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSRU5SIEFERSA9IDB4RiwgQ0RFPTENCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMDEwMTAxLCAweDNGRUZBMDBDLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19EUkNSIGVuYWJsZSBidXJzdA0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDAwMDEsIDB4M0ZFRkEwMTQsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSRUFSIGVuYWJsZSBleHRlbmRlZCBhZGRyZXNzIHJhbmdlDQotDQotICAvLyBTZXQgQml0IFJhdGUNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMDAwMDAzLCAweDNGRUZBMDA4LCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19TUEJDUiBTUEJSPTAsIEJSRFY9Mw0KLQ0KLSAgLy8gRmx1c2ggUmVhZCBDYWNoZQ0KLSAgUmVnID0gX19yZWFkTWVtb3J5MzIoMHgzRkVGQTAwQywgIk1lbW9yeSIpOyAgICAgICAgLy8gUmVhZCBTUElCU0NfRFJDUl8wDQotICBSZWcgfD0gMHgwMDAwMDIwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZXQgUkNGIGJpdA0KLSAgX193cml0ZU1lbW9yeTMyKFJlZywgMHgzRkVGQTAwQywgIk1lbW9yeSIpOyAgICAgICAgLy8gU2V0IFNQSUJTQ19EUkNSXzANCi19DQotDQotZXhlY1VzZXJQcmVsb2FkKCkNCi17DQotICBfX21lc3NhZ2UgIi0tLS0tIFByZXBhcmUgaGFyZHdhcmUgZm9yIGRlYnVnIC0tLS0tXG4iOw0KLSAgX19od1Jlc2V0KDApOw0KLSAgc2V0dXAoKTsNCi19DQotDQotZXhlY1VzZXJSZXNldCgpDQotew0KLSAgc2V0dXAoKTsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2hfYXBwLmljZiBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoX2FwcC5pY2YKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5MTdjODMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL2NvbmZpZy9SVEs3NzIxMDBGQzAwMDAwQlJfU2VyaWFsRmxhc2hfYXBwLmljZgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qIyMjSUNGIyMjIFNlY3Rpb24gaGFuZGxlZCBieSBJQ0YgZWRpdG9yLCBkb24ndCB0b3VjaCEgKioqKi8NCi0vKi1FZGl0b3IgYW5ub3RhdGlvbiBmaWxlLSovDQotLyogSWNmRWRpdG9yRmlsZT0iJFRPT0xLSVRfRElSJFxjb25maWdcaWRlXEljZkVkaXRvclxhX3YxXzAueG1sIiAqLw0KLS8qLVNwZWNpYWxzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18gPSAweDE4MDgwMDAwOw0KLS8qLU1lbW9yeSBSZWdpb25zLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JPTV9zdGFydF9fICAgPSAweDE4MDgwMDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9ST01fZW5kX18gICAgID0gMHgxQkZGRkZGRjsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICA9IDB4MjAwMjAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JBTV9lbmRfXyAgICAgPSAweDIwOUZGRkZGOw0KLS8qLVNpemVzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgID0gMHg4MDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfc3Zjc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9pcnFzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2ZpcXN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfdW5kc3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9hYnRzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX2hlYXBfXyAgICAgPSAweDgwMDA7DQotLyoqKiogRW5kIG9mIElDRiBlZGl0b3Igc2VjdGlvbi4gIyMjSUNGIyMjKi8NCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX3N0YXJ0X18gICAgICAgPSAweDIwMDAwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9SZXRSQU1fZW5kX18gICAgICAgICA9IDB4MjAwMUZGRkY7DQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9zdGFydF9fICAgID0gMHg2MDAyMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUkFNX2VuZF9fICAgICAgPSAweDYwOUZGRkZGOw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fc3RhcnRfXyA9IDB4NjAwMDAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJldFJBTV9lbmRfXyAgID0gMHg2MDAxRkZGRjsNCi0NCi1kZWZpbmUgbWVtb3J5IG1lbSB3aXRoIHNpemUgPSA0RzsNCi0NCi1kZWZpbmUgcmVnaW9uIFJPTV9yZWdpb24gICAgICAgICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9ST01fc3RhcnRfXyAgICAgICAgICB0byBfX0lDRkVESVRfcmVnaW9uX1JPTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBSQU1fcmVnaW9uICAgICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICAgICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gUmV0UkFNX3JlZ2lvbiAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9zdGFydF9fICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJBTV9yZWdpb24gICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fc3RhcnRfXyAgICB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBNaXJyb3JSZXRSQU1fcmVnaW9uID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX3N0YXJ0X18gdG8gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fZW5kX19dOw0KLQ0KLWRlZmluZSBibG9jayBDU1RBQ0sgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfY3N0YWNrX18gICB7IH07DQotZGVmaW5lIGJsb2NrIFNWQ19TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgSVJRX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBGSVFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIFVORF9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgQUJUX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBIRUFQICAgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICB7IH07DQotDQotaW5pdGlhbGl6ZSBieSBjb3B5IHsgcmVhZHdyaXRlIH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiAubm9pbml0IH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiBNTVVfVFQgfTsNCi0NCi1wbGFjZSBhdCBhZGRyZXNzIG1lbTpfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18geyByZWFkb25seSBzZWN0aW9uIC5pbnR2ZWMgfTsNCi0NCi1wbGFjZSBpbiBST01fcmVnaW9uICAgICB7IHJlYWRvbmx5IH07DQotcGxhY2UgaW4gUkFNX3JlZ2lvbiAgICAgeyByZWFkd3JpdGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBDU1RBQ0ssIGJsb2NrIFNWQ19TVEFDSywgYmxvY2sgSVJRX1NUQUNLLCBibG9jayBGSVFfU1RBQ0ssDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBVTkRfU1RBQ0ssIGJsb2NrIEFCVF9TVEFDSywgYmxvY2sgSEVBUCB9Ow0KLQ0KLXBsYWNlIGluIFJldFJBTV9yZWdpb24gICAgICAgeyBzZWN0aW9uIC5yZXRyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSQU1fcmVnaW9uICAgIHsgc2VjdGlvbiAubWlycm9ycmFtIH07DQotcGxhY2UgaW4gTWlycm9yUmV0UkFNX3JlZ2lvbiB7IHNlY3Rpb24gLm1pcnJvcnJldHJhbSB9Ow0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoX2FwcC5tYWMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY29uZmlnL1JUSzc3MjEwMEZDMDAwMDBCUl9TZXJpYWxGbGFzaF9hcHAubWFjCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDlhYWI5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jb25maWcvUlRLNzcyMTAwRkMwMDAwMEJSX1NlcmlhbEZsYXNoX2FwcC5tYWMKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1zZXR1cCgpDQotew0KLV9fdmFyIFJlZzsNCi0NCi0gIC8vIEVuYWJsZSBJIENhY2hlDQotICAvLyBEaXNhYmxlIE1NVSBhbmQgZW5hYmxlIElDYWNoZQ0KLSAgUmVnID0gX19qdGFnQ1AxNVJlYWRSZWcoMSwgMCwgMCwgMCk7DQotICBSZWcgJj0gMHhGRkZGRkZGQTsNCi0gIFJlZyB8PSAxPDwxMjsNCi0gIF9fanRhZ0NQMTVXcml0ZVJlZygxLCAwLCAwLCAwLCBSZWcpOw0KLQ0KLSAgLy9fX3dyaXRlTWVtb3J5MTYoMHgwMDM1LCAweEZDRkUwMDEwLCAiTWVtb3J5Iik7ICAgICAvLyBGUlFDUg0KLSAgLy9fX3dyaXRlTWVtb3J5MTYoMHgwMDAxLCAweEZDRkUwMDE0LCAiTWVtb3J5Iik7ICAgICAvLyBGUlFDUjINCi0NCi0gIC8vIFR1cm4gb24gY2xvY2sgZm9yIFNQSQ0KLSAgX193cml0ZU1lbW9yeTgoMHgwMCwgMHhGQ0ZFMDQzOCwgIk1lbW9yeSIpOyAgICAgICAgLy8gUERNX1NUQkNSOQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFBPUlRTIGZvciBTUEkgKHNlcmlhbCBmbGFzaCAxKQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDBGQywgMHhGQ0ZFNzIyNCwgIk1lbW9yeSIpOyAgICAgLy8gUElQQzkgMi03IC0+IGFsdCBJTyBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHgwMEZDLCAweEZDRkUzNDI0LCAiTWVtb3J5Iik7ICAgICAvLyBQTUM5IDItNyAtPiBhbHQgbW9kZQ0KLSAgX193cml0ZU1lbW9yeTE2KDB4MDBGQywgMHhGQ0ZFMzUyNCwgIk1lbW9yeSIpOyAgICAgLy8gUEZDOSAyLTcgLT4gYWx0IG1vZGUNCi0NCi0gIC8vIENvbmZpZ3VyZSBQT1JUUyBmb3IgU1BJIChzZXJpYWwgZmxhc2ggMikNCi0gIF9fd3JpdGVNZW1vcnkxNigweEYwMDAsIDB4RkNGRTcyMDgsICJNZW1vcnkiKTsgICAgIC8vIFBJUEMyIDEyLTE1IC0+IGFsdCBJTyBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNDA4LCAiTWVtb3J5Iik7ICAgICAvLyBQTUMyIDEyLTE1IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNTA4LCAiTWVtb3J5Iik7ICAgICAvLyBQRkMyIDEyLTE1IC0+IGFsdCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MTYoMHhGMDAwLCAweEZDRkUzNjA4LCAiTWVtb3J5Iik7ICAgICAvLyBQRkNFMiAxMi0xNSAtPiBhbHQgbW9kZQ0KLQ0KLSAgLy8gQ29uZmlndXJlIFNQSSBmb3IgRVhUUkVBRCBtb2RlDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMUFBNDAyMSwgMHgzRkVGQTAwMCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfQ01OQ1IgMi1tZW1vcnksIENQSEFUPTAsIENQSEFSPTEsIENQT0w9MCwgU0ZERT0xDQotDQotICAvLyBDb25maWd1cmUgU1BJQlNDIDMyLWJpdCBhZGRyZXNzaW5nDQotICBfX3dyaXRlTWVtb3J5MzIoMHgwMDEzMDAwMCwgMHgzRkVGQTAxMCwgIk1lbW9yeSIpOyAvLyBTUElCU0NfRFJDTVIgQ01EID0gMHgxMw0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDRGMDAsIDB4M0ZFRkEwMUMsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSRU5SIEFERSA9IDB4RiwgQ0RFPTENCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMDEwMTAxLCAweDNGRUZBMDBDLCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19EUkNSIGVuYWJsZSBidXJzdA0KLSAgX193cml0ZU1lbW9yeTMyKDB4MDAwMDAwMDEsIDB4M0ZFRkEwMTQsICJNZW1vcnkiKTsgLy8gU1BJQlNDX0RSRUFSIGVuYWJsZSBleHRlbmRlZCBhZGRyZXNzIHJhbmdlDQotDQotICAvLyBTZXQgQml0IFJhdGUNCi0gIF9fd3JpdGVNZW1vcnkzMigweDAwMDAwMDAzLCAweDNGRUZBMDA4LCAiTWVtb3J5Iik7IC8vIFNQSUJTQ19TUEJDUiBTUEJSPTAsIEJSRFY9Mw0KLQ0KLSAgLy8gRmx1c2ggUmVhZCBDYWNoZQ0KLSAgUmVnID0gX19yZWFkTWVtb3J5MzIoMHgzRkVGQTAwQywgIk1lbW9yeSIpOyAgICAgICAgLy8gUmVhZCBTUElCU0NfRFJDUg0KLSAgUmVnIHw9IDB4MDAwMDAyMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2V0IFJDRiBiaXQNCi0gIF9fd3JpdGVNZW1vcnkzMihSZWcsIDB4M0ZFRkEwMEMsICJNZW1vcnkiKTsgICAgICAgIC8vIFNldCBTUElCU0NfRFJDUg0KLX0NCi0NCi1leGVjVXNlclByZWxvYWQoKQ0KLXsNCi0gIF9fbWVzc2FnZSAiLS0tLS0gUHJlcGFyZSBoYXJkd2FyZSBmb3IgZGVidWcgLS0tLS1cbiI7DQotICBfX2h3UmVzZXQoMCk7DQotICBzZXR1cCgpOw0KLX0NCi0NCi1leGVjVXNlclJlc2V0KCkNCi17DQotICBzZXR1cCgpOw0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvY3N0YXJ0dXAucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jc3RhcnR1cC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNTdmNmQ3Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9jc3RhcnR1cC5zCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCi07Ow0KLTs7IFBhcnQgb25lIG9mIHRoZSBzeXN0ZW0gaW5pdGlhbGl6YXRpb24gY29kZSwNCi07OyBjb250YWlucyBsb3ctbGV2ZWwNCi07OyBpbml0aWFsaXphdGlvbi4NCi07Ow0KLTs7IENvcHlyaWdodCAyMDA3IElBUiBTeXN0ZW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTs7DQotOzsgJFJldmlzaW9uOiA0OTkxOSAkDQotOzsNCi0NCi0gICAgICAgIE1PRFVMRSAgP2NzdGFydHVwDQotDQotICAgICAgICA7OyBGb3J3YXJkIGRlY2xhcmF0aW9uIG9mIHNlY3Rpb25zLg0KLSAgICAgICAgU0VDVElPTiBJUlFfU1RBQ0s6REFUQTpOT1JPT1QoMykNCi0gICAgICAgIFNFQ1RJT04gRklRX1NUQUNLOkRBVEE6Tk9ST09UKDMpDQotCQlTRUNUSU9OIFNWQ19TVEFDSzpEQVRBOk5PUk9PVCgzKQ0KLSAgICAgICAgU0VDVElPTiBDU1RBQ0s6REFUQTpOT1JPT1QoMykNCi0NCi07DQotOyBUaGUgbW9kdWxlIGluIHRoaXMgZmlsZSBhcmUgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcmllcywgYW5kIG1heSBiZQ0KLTsgcmVwbGFjZWQgYnkgYW55IHVzZXItZGVmaW5lZCBtb2R1bGVzIHRoYXQgZGVmaW5lIHRoZSBQVUJMSUMgc3ltYm9sDQotOyBfX2lhcl9wcm9ncmFtX3N0YXJ0IG9yIGEgdXNlciBkZWZpbmVkIHN0YXJ0IHN5bWJvbC4NCi07DQotOyBUbyBvdmVycmlkZSB0aGUgY3N0YXJ0dXAgZGVmaW5lZCBpbiB0aGUgbGlicmFyeSwgc2ltcGx5IGFkZCB5b3VyDQotOyBtb2RpZmllZCB2ZXJzaW9uIHRvIHRoZSB3b3JrYmVuY2ggcHJvamVjdC4NCi0NCi0gICAgICAgIFNFQ1RJT04gLmludHZlYzpDT0RFOk5PUk9PVCgyKQ0KLQ0KLSAgICAgICAgUFVCTElDICBfX3ZlY3Rvcg0KLSAgICAgICAgUFVCTElDICBfX2lhcl9wcm9ncmFtX3N0YXJ0DQotICAgICAgICBFWFRFUk4gIFVuZGVmaW5lZF9IYW5kbGVyDQotICAgICAgICBFWFRFUk4gIFNXSV9IYW5kbGVyDQotICAgICAgICBFWFRFUk4gIFByZWZldGNoX0hhbmRsZXINCi0gICAgICAgIEVYVEVSTiAgQWJvcnRfSGFuZGxlcg0KLSAgICAgICAgRVhURVJOICBJUlFfSGFuZGxlcg0KLSAgICAgICAgRVhURVJOICBGSVFfSGFuZGxlcg0KLQkJRVhURVJOICBMb3dMZXZlbEluaXRpYWxpc2F0aW9uDQotDQotICAgICAgICBEQVRBDQotDQotX19pYXJfaW5pdCQkZG9uZTogICAgICAgICAgICAgICA7IFRoZSB2ZWN0b3IgdGFibGUgaXMgbm90IG5lZWRlZA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyB1bnRpbCBhZnRlciBjb3B5IGluaXRpYWxpemF0aW9uIGlzIGRvbmUNCi0NCi1fX3ZlY3RvcjogICAgICAgICAgICAgICAgICAgICAgIDsgTWFrZSB0aGlzIGEgREFUQSBsYWJlbCwgc28gdGhhdCBzdGFjayB1c2FnZQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBhbmFseXNpcyBkb2Vzbid0IGNvbnNpZGVyIGl0IGFuIHVuY2FsbGVkIGZ1bg0KLQ0KLSAgICAgICAgQVJNDQotDQotICAgICAgICA7IEFsbCBkZWZhdWx0IGV4Y2VwdGlvbiBoYW5kbGVycyAoZXhjZXB0IHJlc2V0KSBhcmUNCi0gICAgICAgIDsgZGVmaW5lZCBhcyB3ZWFrIHN5bWJvbCBkZWZpbml0aW9ucy4NCi0gICAgICAgIDsgSWYgYSBoYW5kbGVyIGlzIGRlZmluZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGl0IHdpbGwgdGFrZSBwcmVjZWRlbmNlLg0KLSAgICAgICAgTERSICAgICBQQyxSZXNldF9BZGRyICAgICAgICAgICA7IFJlc2V0DQotICAgICAgICBMRFIgICAgIFBDLFVuZGVmaW5lZF9BZGRyICAgICAgIDsgVW5kZWZpbmVkIGluc3RydWN0aW9ucw0KLSAgICAgICAgTERSICAgICBQQyxTV0lfQWRkciAgICAgICAgICAgICA7IFNvZnR3YXJlIGludGVycnVwdCAoU1dJL1NWQykNCi0gICAgICAgIExEUiAgICAgUEMsUHJlZmV0Y2hfQWRkciAgICAgICAgOyBQcmVmZXRjaCBhYm9ydA0KLSAgICAgICAgTERSICAgICBQQyxBYm9ydF9BZGRyICAgICAgICAgICA7IERhdGEgYWJvcnQNCi0gICAgICAgIERDRCAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgOyBSRVNFUlZFRA0KLSAgICAgICAgTERSICAgICBQQyxJUlFfQWRkciAgICAgICAgICAgICA7IElSUQ0KLSAgICAgICAgTERSICAgICBQQyxGSVFfQWRkciAgICAgICAgICAgICA7IEZJUQ0KLQ0KLSAgICAgICAgREFUQQ0KLQ0KLVJlc2V0X0FkZHI6ICAgICBEQ0QgICBfX2lhcl9wcm9ncmFtX3N0YXJ0DQotVW5kZWZpbmVkX0FkZHI6IERDRCAgIFVuZGVmaW5lZF9IYW5kbGVyDQotU1dJX0FkZHI6ICAgICAgIERDRCAgIFNXSV9IYW5kbGVyDQotUHJlZmV0Y2hfQWRkcjogIERDRCAgIFByZWZldGNoX0hhbmRsZXINCi1BYm9ydF9BZGRyOiAgICAgRENEICAgQWJvcnRfSGFuZGxlcg0KLUlSUV9BZGRyOiAgICAgICBEQ0QgICBJUlFfSGFuZGxlcg0KLUZJUV9BZGRyOiAgICAgICBEQ0QgICBGSVFfSGFuZGxlcg0KLQ0KLQ0KLTsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi07ID9jc3RhcnR1cCAtLSBsb3ctbGV2ZWwgc3lzdGVtIGluaXRpYWxpemF0aW9uIGNvZGUuDQotOw0KLTsgQWZ0ZXIgYSByZXNldCBleGVjdXRpb24gc3RhcnRzIGhlcmUsIHRoZSBtb2RlIGlzIEFSTSwgc3VwZXJ2aXNvcg0KLTsgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLg0KLTsNCi0NCi0NCi0NCi0gICAgICAgIFNFQ1RJT04gLnRleHQ6Q09ERTpOT1JPT1QoMikNCi0NCi0gICAgICAgIEVYVEVSTiAgX19jbWFpbg0KLSAgICAgICAgUkVRVUlSRSBfX3ZlY3Rvcg0KLSAgICAgICAgRVhUV0VBSyBfX2lhcl9pbml0X2NvcmUNCi0gICAgICAgIEVYVFdFQUsgX19pYXJfaW5pdF92ZnANCi0NCi0NCi0gICAgICAgIEFSTQ0KLQ0KLV9faWFyX3Byb2dyYW1fc3RhcnQ6DQotP2NzdGFydHVwOg0KLQ0KLTsNCi07IEFkZCBpbml0aWFsaXphdGlvbiBuZWVkZWQgYmVmb3JlIHNldHVwIG9mIHN0YWNrcG9pbnRlcnMgaGVyZS4NCi07DQotDQotOw0KLTsgSW5pdGlhbGl6ZSB0aGUgc3RhY2sgcG9pbnRlcnMuDQotOyBUaGUgcGF0dGVybiBiZWxvdyBjYW4gYmUgdXNlZCBmb3IgYW55IG9mIHRoZSBleGNlcHRpb24gc3RhY2tzOg0KLTsgRklRLCBJUlEsIFNWQywgQUJULCBVTkQsIFNZUy4NCi07IFRoZSBVU1IgbW9kZSB1c2VzIHRoZSBzYW1lIHN0YWNrIGFzIFNZUy4NCi07IFRoZSBzdGFjayBzZWdtZW50cyBtdXN0IGJlIGRlZmluZWQgaW4gdGhlIGxpbmtlciBjb21tYW5kIGZpbGUsDQotOyBhbmQgYmUgZGVjbGFyZWQgYWJvdmUuDQotOw0KLQ0KLQ0KLTsgLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi07IE1vZGUsIGNvcnJlc3BvcmRzIHRvIGJpdHMgMC01IGluIENQU1INCi0NCi0jZGVmaW5lIE1PREVfTVNLIDB4MUYgICAgICAgICAgICA7IEJpdCBtYXNrIGZvciBtb2RlIGJpdHMgaW4gQ1BTUg0KLQ0KLSNkZWZpbmUgVVNSX01PREUgMHgxMCAgICAgICAgICAgIDsgVXNlciBtb2RlDQotI2RlZmluZSBGSVFfTU9ERSAweDExICAgICAgICAgICAgOyBGYXN0IEludGVycnVwdCBSZXF1ZXN0IG1vZGUNCi0jZGVmaW5lIElSUV9NT0RFIDB4MTIgICAgICAgICAgICA7IEludGVycnVwdCBSZXF1ZXN0IG1vZGUNCi0jZGVmaW5lIFNWQ19NT0RFIDB4MTMgICAgICAgICAgICA7IFN1cGVydmlzb3IgbW9kZQ0KLSNkZWZpbmUgQUJUX01PREUgMHgxNyAgICAgICAgICAgIDsgQWJvcnQgbW9kZQ0KLSNkZWZpbmUgVU5EX01PREUgMHgxQiAgICAgICAgICAgIDsgVW5kZWZpbmVkIEluc3RydWN0aW9uIG1vZGUNCi0jZGVmaW5lIFNZU19NT0RFIDB4MUYgICAgICAgICAgICA7IFN5c3RlbSBtb2RlDQotDQotDQotICAgICAgICBNUlMgICAgIHIwLCBjcHNyICAgICAgICAgICAgICAgIDsgT3JpZ2luYWwgUFNSIHZhbHVlDQotDQotICAgICAgICA7OyBTZXQgdXAgdGhlIGludGVycnVwdCBzdGFjayBwb2ludGVyLg0KLQ0KLSAgICAgICAgQklDICAgICByMCwgcjAsICNNT0RFX01TSyAgICAgICA7IENsZWFyIHRoZSBtb2RlIGJpdHMNCi0gICAgICAgIE9SUiAgICAgcjAsIHIwLCAjSVJRX01PREUgICAgICAgOyBTZXQgSVJRIG1vZGUgYml0cw0KLSAgICAgICAgTVNSICAgICBjcHNyX2MsIHIwICAgICAgICAgICAgICA7IENoYW5nZSB0aGUgbW9kZQ0KLSAgICAgICAgTERSICAgICBzcCwgPVNGRShJUlFfU1RBQ0spICAgICA7IEVuZCBvZiBJUlFfU1RBQ0sNCi0gICAgICAgIEJJQyAgICAgc3Asc3AsIzB4NyAgICAgICAgICAgICAgOyBNYWtlIHN1cmUgU1AgaXMgOCBhbGlnbmVkDQotDQotICAgICAgICA7OyBTZXQgdXAgdGhlIGZhc3QgaW50ZXJydXB0IHN0YWNrIHBvaW50ZXIuDQotDQotICAgICAgICBCSUMgICAgIHIwLCByMCwgI01PREVfTVNLICAgICAgIDsgQ2xlYXIgdGhlIG1vZGUgYml0cw0KLSAgICAgICAgT1JSICAgICByMCwgcjAsICNGSVFfTU9ERSAgICAgICA7IFNldCBGSVIgbW9kZSBiaXRzDQotICAgICAgICBNU1IgICAgIGNwc3JfYywgcjAgICAgICAgICAgICAgIDsgQ2hhbmdlIHRoZSBtb2RlDQotICAgICAgICBMRFIgICAgIHNwLCA9U0ZFKEZJUV9TVEFDSykgICAgIDsgRW5kIG9mIEZJUV9TVEFDSw0KLSAgICAgICAgQklDICAgICBzcCxzcCwjMHg3ICAgICAgICAgICAgICA7IE1ha2Ugc3VyZSBTUCBpcyA4IGFsaWduZWQNCi0NCi0gICAgICAgIDs7IFNldCB1cCB0aGUgbm9ybWFsIFNWQyBwb2ludGVyLg0KLTs7IEZyZWVSVE9TIE5vdGU6DQotOzsgRnJlZVJUT1MgZG9lcyBub3QgbmVlZCBhIFN5c3RlbS9Vc2VyIG1vZGUgc3RhY2sgYXMgb25seSB0YXNrcyBydW4gaW4NCi07OyBTeXN0ZW0vVXNlciBtb2RlLCBhbmQgdGhlaXIgc3RhY2sgaXMgYWxsb2NhdGVkIHdoZW4gdGhlIHRhc2sgaXMgY3JlYXRlZC4NCi07OyBUaGVyZWZvcmUgdGhlIENTVEFDSyBhbGxvY2F0ZWQgaW4gdGhlIGxpbmtlciBzY3JpcHQgaXMgaW5zdGVhZCBnaXZlbiB0bw0KLTs7IFN1cGVydmlzb3IgbW9kZSwgYW5kIG1haW4oKSBpcyBjYWxsZWQgZnJvbSBTdXBlcnZpc29yIG1vZGUuDQotICAgICAgICBCSUMgICAgIHIwICxyMCwgI01PREVfTVNLICAgICAgIDsgQ2xlYXIgdGhlIG1vZGUgYml0cw0KLSAgICAgICAgT1JSICAgICByMCAscjAsICNTVkNfTU9ERSAgICAgICA7IFNldCBTeXN0ZW0gbW9kZSBiaXRzDQotICAgICAgICBNU1IgICAgIGNwc3JfYywgcjAgICAgICAgICAgICAgIDsgQ2hhbmdlIHRoZSBtb2RlDQotICAgICAgICBMRFIgICAgIHNwLCA9U0ZFKENTVEFDSykgICAgICAgIDsgRW5kIG9mIENTVEFDSw0KLSAgICAgICAgQklDICAgICBzcCxzcCwjMHg3ICAgICAgICAgICAgICA7IE1ha2Ugc3VyZSBTUCBpcyA4IGFsaWduZWQNCi0NCi0gICAgICAgIDs7IFR1cm4gb24gY29yZSBmZWF0dXJlcyBhc3N1bWVkIHRvIGJlIGVuYWJsZWQuDQotICAgICAgICAgIEZVTkNBTEwgX19pYXJfcHJvZ3JhbV9zdGFydCwgX19pYXJfaW5pdF9jb3JlDQotICAgICAgICBCTCAgICAgIF9faWFyX2luaXRfY29yZQ0KLQ0KLSAgICAgICAgOzsgSW5pdGlhbGl6ZSBWRlAgKGlmIG5lZWRlZCkuDQotICAgICAgICAgIEZVTkNBTEwgX19pYXJfcHJvZ3JhbV9zdGFydCwgX19pYXJfaW5pdF92ZnANCi0gICAgICAgIEJMICAgICAgX19pYXJfaW5pdF92ZnANCi0NCi0JCTs7IENoaXAgYW5kIGJvYXJkIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24NCi0JCUJMIAkJTG93TGV2ZWxJbml0aWFsaXNhdGlvbg0KLQ0KLTs7Ow0KLTs7OyBBZGQgbW9yZSBpbml0aWFsaXphdGlvbiBoZXJlDQotOzs7DQotDQotOzs7IENvbnRpbnVlIHRvIF9fY21haW4gZm9yIEMtbGV2ZWwgaW5pdGlhbGl6YXRpb24uDQotDQotICAgICAgICAgIEZVTkNBTEwgX19pYXJfcHJvZ3JhbV9zdGFydCwgX19jbWFpbg0KLSAgICAgICAgQiAgICAgICBfX2NtYWluDQotDQotICAgICAgICBFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvbW9kdWxlcy9hcm12N2FfY3AxNV9kcnYuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9tb2R1bGVzL2FybXY3YV9jcDE1X2Rydi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTNmZmZlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9tb2R1bGVzL2FybXY3YV9jcDE1X2Rydi5jCisrKyAvZGV2L251bGwKQEAgLTEsNzY4ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiAgICBVc2VkIHdpdGggSUNDQVJNIGFuZCBBQVJNLg0KLSAqDQotICogICAgKGMpIENvcHlyaWdodCBJQVIgU3lzdGVtcyAyMDEyDQotICoNCi0gKiAgICBGaWxlIG5hbWUgICA6IGFybXY3YV9jcDE1X2Rydi5jDQotICogICAgRGVzY3JpcHRpb24gOiBEcml2ZXIgZm9yIHRoZSBDUDE1IG9mIEFSTXY3LUENCi0gKg0KLSAqICAgIEhpc3RvcnkgOg0KLSAqICAgIDEuIERhdGUgICAgICAgIDogU2VwdGVtYmVyLCA4IDIwMDYNCi0gKiAgICAgICBBdXRob3IgICAgICA6IFN0YW5pbWlyIEJvbmV2DQotICogICAgICAgRGVzY3JpcHRpb24gOiBEcml2ZXIgZm9yIHRoZSBBUk05MjZFSidzIENQMTUNCi0gKg0KLSAqICAgIDIuIERhdGUgICAgICAgIDogT2N0b2JlciwgIDIwMDgNCi0gKiAgICAgICBBdXRob3IgICAgICA6IFN0b3lhbiBDaG95bmV2DQotICogICAgICAgRGVzY3JpcHRpb24gOiBQb3J0IGZvciBBUk0xMTM2SkYuIFRoZSBkcml2ZXIgaXMgYmFja3dhcmRzIGNvbXBhdGlibGUNCi0gKiAgICAgICAgICAgICAgICAgICAgIHdpdGggQVJNdjUgb3IgZWFybGllciBwcm9jZXNzb3JzLg0KLSAqDQotICogICAgMy4gRGF0ZSAgICAgICAgOiBNYXJjaCwgIDIwMTINCi0gKiAgICAgICBBdXRob3IgICAgICA6IEF0YW5hcyBVenVub3YNCi0gKiAgICAgICBEZXNjcmlwdGlvbiA6IFBvcnQgZm9yIEFSTXY3LUEgYXJjaGl0ZWN0dXJlLg0KLSAqICAgICAgICAgICAgICAgICAgICAgQWRkZWQgY2FjaGUgbWFpbnRlbmFuY2UgZnVuY3Rpb25zLg0KLSAqDQotICogICAgJFJldmlzaW9uOiA1MjcwNSAkDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLSNpbmNsdWRlICJhcm12N2FfY3AxNV9kcnYuaCINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0SUQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIElEIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRJRCAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0lELDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0Q2FjaGVUeXBlDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5zIHRoZSBDYWNoZSB0eXBlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRDYWNoZVR5cGUgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9JRCwwLDEpKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFRDTV9TdGF0dXMNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIFRDTSBzdGF0dXMNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFRDTV9TdGF0dXMgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9JRCwwLDIpKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFR0YjANCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIFRUQjAgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFR0YjAgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9UVEJfQUREUiwwLDApKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFR0YjENCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIFRUQjEgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFR0YjEgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9UVEJfQUREUiwwLDEpKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFN0YXR1cw0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIGNvbnRyb2wgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldFN0YXR1cyAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0NUUkwsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXREb21haW4NCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIE1NVSBkb21haW4gYWNjZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXREb21haW4gKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9EQV9DVFJMLDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0RG9tYWlucw0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBEb21haW5BY2Nlc3MNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gc2V0IHRoZSBNTVUgZG9tYWluIGFjY2VzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldERvbWFpbnMgKEludDMyVSBEb21haW5BY2Nlc3MpDQotew0KLXJlZ2lzdGVyIEludDMyVSBWYWwgPSBEb21haW5BY2Nlc3M7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X0RBX0NUUkwsMCwwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBsb2cyX25fdXANCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgbg0KLSAqDQotICogUmV0dXJuOiBJbnQzMlMNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBMb2dhcml0aG0gYXQgYmFzZSAyICwgcm91bmRlZCB1cA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotSW50MzJTIGxvZzJfdXAoSW50MzJVIG4pDQotew0KLSAgSW50MzJTIGxvZyA9IC0xOw0KLSAgSW50MzJVIHQgPSBuOw0KLSAgd2hpbGUodCkNCi0gIHsNCi0gICAgbG9nKys7IHQgPj49MTsNCi0gIH0NCi0gIC8qIGlmIG4gbm90IHBvd2VyIG9mIDIgLT4gcm91bmQgdXAqLw0KLSAgaWYgKCBuICYgKG4gLSAxKSApIGxvZysrOw0KLSAgcmV0dXJuIGxvZzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X01haW50YWluRENhY2hlU2V0V2F5DQotICogUGFyYW1ldGVyczogSW50MzJVIGxldmVsIC0gbGV2ZWwgb2YgY2FjaGUsIA0KLSAqICAgICAgICAgICAgIEludDMyVSBtYWludCAtIG1haW50ZW5hbmNlIHR5cGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IE1haW50YWluIGRhdGEgY2FjaGUgbGluZSBieSBTZXQvV2F5DQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfTWFpbnRhaW5EQ2FjaGVTZXRXYXkoSW50MzJVIGxldmVsLCBJbnQzMlUgbWFpbnQpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBEdW1teTsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgY2NzaWRyOw0KLUludDMyVSBudW1fc2V0czsNCi1JbnQzMlUgbnVtX3dheXM7DQotSW50MzJVIHNoaWZ0X3dheTsNCi1JbnQzMlUgbG9nMl9saW5lc2l6ZTsNCi1JbnQzMlUgbG9nMl9udW1fd2F5czsNCi0NCi0gIER1bW15ID0gbGV2ZWwgPDwgMTsNCi0gIC8qIHNldCBjc3NlbHIsIHNlbGVjdCBjY3NpZHIgcmVnaXN0ZXIgKi8NCi0gIF9fTUNSKDE1LDIsRHVtbXksMCwwLDApOw0KLSAgLyogZ2V0IGN1cnJlbnQgY2NzaWRyIHJlZ2lzdGVyICovDQotICBjY3NpZHIgPSBfX01SQygxNSwxLDAsMCwwKTsNCi0gIG51bV9zZXRzID0gKChjY3NpZHIgJiAweDBGRkZFMDAwKSA+PiAxMykgKyAxOw0KLSAgbnVtX3dheXMgPSAoKGNjc2lkciAmIDB4MDAwMDFGRjgpID4+IDMpICsgMTsNCi0gIGxvZzJfbGluZXNpemUgPSAoY2NzaWRyICYgMHgwMDAwMDAwNykgKyAyICsgMjsNCi0gIGxvZzJfbnVtX3dheXMgPSBsb2cyX3VwKG51bV93YXlzKTsNCi0gIHNoaWZ0X3dheSA9IDMyIC0gbG9nMl9udW1fd2F5czsNCi0gIGZvcihpbnQgd2F5ID0gbnVtX3dheXMtMTsgd2F5ID49IDA7IHdheS0tKQ0KLSAgICBmb3IoaW50IHNldCA9IG51bV9zZXRzLTE7IHNldCA+PSAwOyBzZXQtLSkNCi0gICAgew0KLSAgICAgIER1bW15ID0gKGxldmVsIDw8IDEpIHwgKHNldCA8PCBsb2cyX2xpbmVzaXplKSB8ICh3YXkgPDwgc2hpZnRfd2F5KTsNCi0gICAgICBzd2l0Y2ggKG1haW50KQ0KLSAgICAgIHsNCi0gICAgICAgIGNhc2UgRENBQ0hFX0NMRUFOX0FORF9JTlZBTElEQVRFOg0KLSAgICAgICAgICAgICBfX01DUigxNSwwLER1bW15LDcsMTQsMik7DQotICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgDQotICAgICAgICBjYXNlIERDQUNIRV9JTlZBTElEQVRFOg0KLSAgICAgICAgICAgICBfX01DUigxNSwwLER1bW15LDcsNiwyKTsNCi0gICAgICAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLSAgICB9DQotICAgIF9fRE1CKCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9NYWludEFsbERDYWNoZQ0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBvcGVyIC0gdHlwZSBvZiBtYWludGVuYW5jZSwgb25lIG9mOg0KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICBEQ0FDSEVfQ0xFQU5fQU5EX0lOVkFMSURBVEUNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgRENBQ0hFX0lOVkFMSURBVEUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IE1haW50ZW5hbmNlIG9mIGFsbCBkYXRhIGNhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfTWFpbnRhaW5BbGxEQ2FjaGUoSW50MzJVIG9wZXIpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBjbGlkcjsgIA0KLUludDMyVSBjYWNoZV90eXBlOw0KLSAgY2xpZHIgPSAgX19NUkMoMTUsMSwwLDAsMSk7DQotICBmb3IoSW50MzJVIGkgPSAwOyBpPDc7IGkrKykNCi0gIHsNCi0gICAgY2FjaGVfdHlwZSA9IChjbGlkciA+PiBpKjMpICYgMHg3VUw7DQotICAgIGlmICgoY2FjaGVfdHlwZSA+PSAyKSAmJiAoY2FjaGVfdHlwZSA8PSA0KSkNCi0gICAgew0KLSAgICAgIENQMTVfTWFpbnRhaW5EQ2FjaGVTZXRXYXkoaSxvcGVyKTsNCi0gICAgfQ0KLSAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxJbnN0ckNhY2hlDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogSW52YWxpZGF0ZSBpbnN0cnVjdGlvbiBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X0ludmFsSW5zdHJDYWNoZSh2b2lkKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgRHVtbXk7DQotICBfX01DUigxNSwwLER1bW15LENQMTVfQ0FDSEVfT1BSLDUsMCk7DQotICBDUDE1X0ludmFsUHJlZGljdEFycmF5KCk7DQotICBfX0RTQigpOw0KLSAgX19JU0IoKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0ludmFsUHJlZGljdEFycmF5DQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogSW52YWxpZGF0ZSBwcmVkaWN0aW9uIGFycmF5DQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfSW52YWxQcmVkaWN0QXJyYXkodm9pZCkNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIER1bW15Ow0KLSAgX19NQ1IoMTUsMCxEdW1teSxDUDE1X0NBQ0hFX09QUiw1LDYpOyAgX19JU0IoKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0ludmFsQWxsVGJsDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogSW52YWxpZGF0ZSBUTEINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9JbnZhbEFsbFRibCAodm9pZCkNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIER1bW15Ow0KLSAgLyogSW52YWxpZGF0ZSBlbnRpcmUgdW5pZmllZCBUTEIqLw0KLSAgX19NQ1IoMTUsMCxEdW1teSxDUDE1X1RCTF9PUFIsNywwKTsNCi0gIC8qIEludmFsaWRhdGUgZW50aXJlIGRhdGEgVExCKi8NCi0gIF9fTUNSKDE1LDAsRHVtbXksQ1AxNV9UQkxfT1BSLDYsMCk7DQotICAvKiBJbnZhbGlkYXRlIGVudGlyZSBpbnN0cnVjdGlvbiBUTEIqLw0KLSAgX19NQ1IoMTUsMCxEdW1teSxDUDE1X1RCTF9PUFIsNSwwKTsNCi0gIF9fRFNCKCk7DQotICBfX0lTQigpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0U3RhdHVzDQotICogUGFyYW1ldGVyczogSW50MzJVIEN0cmwNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBDUDE1IENUUiAoY29udHJvbCkgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRTdGF0dXMgKEludDMyVSBDdHJsKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgVmFsID0gQ3RybDsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfQ1RSTCwwLDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0VHRiMA0KLSAqIFBhcmFtZXRlcnM6IHBJbnQzMlUgcFR0Yg0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgVFRCMCBiYXNlIGFkZHJlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRUdGIwIChwSW50MzJVIHBUdGIpDQotew0KLXJlZ2lzdGVyIHZvbGF0aWxlIEludDMyVSBWYWwgPSAoSW50MzJVKXBUdGI7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X1RUQl9BRERSLDAsMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRUdGIxDQotICogUGFyYW1ldGVyczogcEludDMyVSBwVHRiDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBUVEIxIGJhc2UgYWRkcmVzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFR0YjEgKHBJbnQzMlUgcFR0YikNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIFZhbCA9IChJbnQzMlUpcFR0YjsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfVFRCX0FERFIsMCwxKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldERhYw0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBkYQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgZG9tYWluIGFjY2VzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldERhYyAoSW50MzJVIGRhKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgVmFsID0gZGE7DQotICBfX01DUigxNSwwLFZhbCxDUDE1X0RBX0NUUkwsMCwwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1dyaXRlQnVmZkZsdXNoDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogIEZsdXNoIHRoZSB3cml0ZSBidWZmZXIgYW5kIHdhaXQgZm9yIGNvbXBsZXRpb24NCi0gKiAgICAgICAgICAgICAgb2YgdGhlIGZsdXNoLg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1dyaXRlQnVmZkZsdXNoICh2b2lkKQ0KLXsNCi1yZWdpc3RlciB2b2xhdGlsZSBJbnQzMlUgVmFsOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9DQUNIRV9PUFIsMTAsNCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGYXVsdFN0YXQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIE1NVSBmYXVsdCBzdGF0dXMgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldEZhdWx0U3RhdCAodm9pZCkNCi17DQotICByZXR1cm4oX19NUkMoMTUsMCxDUDE1X0ZBVUxUX1NUQVQsMCwwKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGYXVsdEFkZHINCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIE1NVSBmYXVsdCBhZGRyZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRGYXVsdEFkZHIgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9GQVVMVF9BRERSLDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0RmNzZVBpZA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJucyB0aGUgTU1VIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIEZDU0UgUElEIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRGY3NlUGlkICh2b2lkKQ0KLXsNCi0gIHJldHVybihfX01SQygxNSwwLENQMTVfUFJPQ0VTU19JRE5GLDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0UHJhY2VQcm9jSWQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybnMgdGhlIE1NVSBUcmFjZSBQcm9jZXNzIGlkZW50aWZpZXINCi0gKiAgICAgICAgICAgICByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0UHJhY2VQcm9jSWQgKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9QUk9DRVNTX0lETkYsMCwxKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRGY3NlUGlkDQotICogUGFyYW1ldGVyczogSW50MzJVIEZjc2VQaWQNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHNldCB0aGUgTU1VIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIEZDU0UgUElEIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0RmNzZVBpZCAoSW50MzJVIEZjc2VQaWQpDQotew0KLXJlZ2lzdGVyIEludDMyVSBWYWwgPSBGY3NlUGlkOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9QUk9DRVNTX0lETkYsMCwwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFByYWNlUHJvY0lkDQotICogUGFyYW1ldGVyczogSW50MzJVDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiBzZXQgdGhlIE1NVSBUcmFjZSBQcm9jZXNzIGlkZW50aWZpZXINCi0gKiAgICAgICAgICAgICByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFByYWNlUHJvY0lkKEludDMyVSBUcmFjZSkNCi17DQotcmVnaXN0ZXIgSW50MzJVIFZhbCA9IFRyYWNlOw0KLSAgX19NQ1IoMTUsMCxWYWwsQ1AxNV9QUk9DRVNTX0lETkYsMCwxKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0luaXRNbXVUdGINCi0gKiBQYXJhbWV0ZXJzOiBwVHRTZWN0aW9uQmxvY2tfdCBwVHRTQiwgcFR0VGFibGVCbG9ja190IHBUdFRCDQotICoNCi0gKiBSZXR1cm46IEJvb2xlYW4NCi0gKg0KLSAqICBSZXR1cm5zIGVycm9yIGlmIE1NVSBpcyBlbmFibGVkIG9yIGlmIHRhcmdldA0KLSAqIFRyYW5zbGF0aW9uIFRhYmxlIGFkZHJlc3MgaXMgbm90IDE2SyBhbGlnbmVkLiBDbGVhciB0aGUNCi0gKiBUcmFuc2xhdGlvbiBUYWJsZSBhcmVhLiBCdWlsZCB0aGUgVHJhbnNsYXRpb24gVGFibGUgZnJvbSB0aGUNCi0gKiBpbml0aWFsaXphdGlvbiBkYXRhIGluIHRoZSBTZWN0aW9uIEJsb2NrIGFycmF5LiBSZXR1cm4gbm8gZXJyb3IuDQotICoNCi0gKiBEZXNjcmlwdGlvbjogIEluaXRpYWxpemVzIHRoZSBNTVUgdGFibGVzLg0KLSAqDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1Cb29sZWFuIENQMTVfSW5pdE1tdVR0Yihjb25zdCBUdFNlY3Rpb25CbG9ja190ICogcFR0U0IsDQotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHRUYWJsZUJsb2NrX3QgKiBwVHRUQikNCi17DQotSW50MzJVIGksIHBhLCBwYV9pbmMsIHZhX2luZDsNCi1wSW50MzJVIHBUdGI7DQotVGFibGVUeXBlX3QgVGFibGVUeXBlOw0KLSAgd2hpbGUoMSkNCi0gIHsNCi0gICAgVGFibGVUeXBlID0gcFR0VEItPlRhYmxlVHlwZTsNCi0gICAgc3dpdGNoKFRhYmxlVHlwZSkNCi0gICAgew0KLSAgICBjYXNlIFRhYmxlTDE6DQotICAgICAgcFR0YiA9IHBUdFRCLT5UYWJsZUFkZHI7DQotICAgICAgaWYoKEludDMyVSlwVHRiICYgTDFfRU5UUklFU19OVU1CLTEpDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuKEZBTFNFKTsNCi0gICAgICB9DQotICAgICAgcGFfaW5jID0gMHgxMDAwMDA7DQotICAgICAgcGEgPSBMMV9FTlRSSUVTX05VTUI7DQotICAgICAgYnJlYWs7DQotICAgIGNhc2UgVGFibGVMMl9QYWdlVGFibGU6DQotICAgICAgcFR0YiA9IHBUdFRCLT5UYWJsZUFkZHI7DQotICAgICAgaWYoKEludDMyVSlwVHRiICYgTDJfQ1BfRU5UUklFU19OVU1CLTEpDQotICAgICAgew0KLSAgICAgICAgcmV0dXJuKEZBTFNFKTsNCi0gICAgICB9DQotICAgICAgcGFfaW5jID0gMHgxMDAwOw0KLSAgICAgIHBhID0gTDJfQ1BfRU5UUklFU19OVU1COw0KLSAgICAgIGJyZWFrOw0KLSAgICBkZWZhdWx0Og0KLSAgICAgIHJldHVybihUUlVFKTsNCi0gICAgfQ0KLQ0KLSAgICAvLyBDbGVhciB0aGUgZW50aXJlIFRyYW5zbGF0aW9uIFRhYmxlIFRoaXMgcmVzdWx0cyBpbiBMeERfVFlQRV9GQVVMVA0KLSAgICAvLyBiZWluZyB0aGUgZGVmYXVsdCBmb3IgYW55IHVuaW5pdGlhbGl6ZWQgZW50cmllcy4NCi0gICAgZm9yKGkgPSAwOyBpIDwgcGE7ICsraSkNCi0gICAgew0KLSAgICAgICoocFR0YitpKSA9IFRUX0VOVFJZX0lOVkFMSUQ7DQotICAgIH0NCi0NCi0gICAgLy8gQnVpbGQgdGhlIHRyYW5zbGF0aW9uIHRhYmxlIGZyb20gdXNlciBwcm92aWRlZCBwVHRTZWN0aW9uQmxvY2tfdCBhcnJheQ0KLSAgICB3aGlsZShwVHRTQi0+TnVick9mU2VjdGlvbnMgIT0gMCkNCi0gICAgew0KLUludDMyVSBFbnRyeXMgPSBwVHRTQi0+TnVick9mU2VjdGlvbnM7DQotSW50MzJVIERhdGEgPSAgcFR0U0ItPkVudHJ5LkRhdGE7ICAgDQotICAgICAgcGEgPSBwVHRTQi0+UGh5c0FkZHI7DQotICAgICAgDQotICAgICAgc3dpdGNoKFRhYmxlVHlwZSkNCi0gICAgICB7DQotICAgICAgY2FzZSBUYWJsZUwxOg0KLSAgICAgICAgdmFfaW5kID0gKHBUdFNCLT5WaXJ0QWRkciA+PiAyMCkgJiAoTDFfRU5UUklFU19OVU1CLTEpOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgIGlmKCh2YV9pbmQgKyBFbnRyeXMpID4gTDFfRU5UUklFU19OVU1CKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4oRkFMU0UpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgY2FzZSBUYWJsZUwyX1BhZ2VUYWJsZToNCi0gICAgICAgIHZhX2luZCA9IChwVHRTQi0+VmlydEFkZHIgPj4gMTIpICYgKEwyX0NQX0VOVFJJRVNfTlVNQi0xKTsNCi0gICAgICAgIGlmKCh2YV9pbmQgKyBFbnRyeXMpID4gTDJfQ1BfRU5UUklFU19OVU1CKQ0KLSAgICAgICAgew0KLSAgICAgICAgICByZXR1cm4oRkFMU0UpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgfQ0KLSAgICAgIGZvcihpID0gMDsgaSA8IEVudHJ5czsgKytpLCArK3ZhX2luZCkNCi0gICAgICB7DQotICAgICAgICBzd2l0Y2goVGFibGVUeXBlKQ0KLSAgICAgICAgew0KLSAgICAgICAgY2FzZSBUYWJsZUwxOg0KLSAgICAgICAgICBzd2l0Y2gocFR0U0ItPkVudHJ5LlR5cGUpDQotICAgICAgICAgIHsNCi0gICAgICAgICAgY2FzZSBUdEwxUGFnZVRhYmxlOg0KLSAgICAgICAgICAgICoocFR0Yit2YV9pbmQpIHw9IERhdGEgfCAocGEgJiBUVEwxX1BUX1BBRERSX01BU0spOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICBjYXNlIFR0TDFTZWN0aW9uOg0KLSAgICAgICAgICAgICoocFR0Yit2YV9pbmQpIHw9IERhdGEgfCAocGEgJiBUVEwxX1NFQ1RJT05fUEFERFJfTUFTSyk7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgIGNhc2UgVHRMMVN1cGVyU2VjdGlvbjoNCi0gICAgICAgICAgICAgICoocFR0Yit2YV9pbmQpIHw9IERhdGEgfCAocGEgJiBUVEwxX1NfU0VDVElPTl9QQUREUl9NQVNLKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICByZXR1cm4oRkFMU0UpOw0KLSAgICAgICAgICB9DQotICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBUYWJsZUwyX1BhZ2VUYWJsZToNCi0gICAgICAgICAgc3dpdGNoKHBUdFNCLT5FbnRyeS5UeXBlKQ0KLSAgICAgICAgICB7DQotICAgICAgICAgIGNhc2UgVHRMMkxhcmdlUGFnZToNCi0gICAgICAgICAgICAqKHBUdGIrdmFfaW5kKSB8PSBEYXRhIHwgKHBhICYgVFRMMl9MUF9QQUREUl9NQVNLKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgY2FzZSBUdEwyU21hbGxQYWdlOg0KLSAgICAgICAgICAgICoocFR0Yit2YV9pbmQpIHw9IERhdGEgfCAocGEgJiBUVEwyX1NQX1BBRERSX01BU0spOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIHJldHVybihGQUxTRSk7DQotICAgICAgICAgIH0NCi0gICAgICAgICAgYnJlYWs7DQotICAgICAgICB9DQotICAgICAgICBwYSArPSBwYV9pbmM7DQotICAgICAgfQ0KLSAgICAgICsrcFR0U0I7DQotICAgIH0NCi0gICAgKytwVHRTQjsNCi0gICAgKytwVHRUQjsNCi0gIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X01tdQ0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBFbmFibGUvRGlzYWJsZSBNTVUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9NbXUoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgew0KLSAgICBDUDE1X0ludmFsQWxsVGJsKCk7DQotICAgIFZhbCB8PSBDUDE1X0NUUkxfTTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgVmFsICY9IH4oQ1AxNV9DVFJMX00gfCBDUDE1X0NUUkxfQyk7DQotICB9ICANCi0gIENQMTVfU2V0U3RhdHVzKFZhbCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9DYWNoZQ0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBFbmFibGUvRGlzYWJsZSBCb3RoIENhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfQ2FjaGUoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgeyANCi0gICAgVmFsIHw9IENQMTVfQ1RSTF9NIHwgQ1AxNV9DVFJMX0MgfCBDUDE1X0NUUkxfSTsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgVmFsICY9IH5DUDE1X0NUUkxfQzsNCi0gIH0NCi0gIENQMTVfU2V0U3RhdHVzKFZhbCk7ICANCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0ludmFsaWRhdGVDYWNoZQ0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIENhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfSW52YWxpZGF0ZUNhY2hlKCkNCi17DQotICBDUDE1X01haW50YWluQWxsRENhY2hlKERDQUNIRV9JTlZBTElEQVRFKTsNCi0gIF9fRFNCKCk7DQotICBDUDE1X0ludmFsSW5zdHJDYWNoZSgpOyAvKiBpbmNsdWRlcyBpbnZhbGlkYXRpb24gb2YgYnJhbmNoIHByZWRpY3RvciAqLw0KLSAgX19EU0IoKTsNCi0gIF9fSVNCKCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9JQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgSSBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X0lDYWNoZSAoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgew0KLSAgICBWYWwgfD0gQ1AxNV9DVFJMX0k7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIFZhbCAmPSB+Q1AxNV9DVFJMX0k7DQotICB9DQotICBDUDE1X1NldFN0YXR1cyhWYWwpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfRENhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIEQgY2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9EQ2FjaGUgKEJvb2xlYW4gRW5hYmxlKQ0KLXsNCi1JbnQzMlUgVmFsID0gQ1AxNV9HZXRTdGF0dXMoKTsNCi0gIGlmKEVuYWJsZSkNCi0gIHsNCi0gICAgVmFsIHw9IENQMTVfQ1RSTF9NIHwgQ1AxNV9DVFJMX0M7DQotICB9DQotICBlbHNlDQotICB7DQotICAgIFZhbCAmPSB+Q1AxNV9DVFJMX0M7DQotICB9DQotICBDUDE1X1NldFN0YXR1cyhWYWwpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfUHJvZ0Zsb3dQcmVkaWN0aW9uDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIHByb2dyYW0gZmxvdyBwcmVkaWN0aW9uLg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X1Byb2dGbG93UHJlZGljdGlvbiAoQm9vbGVhbiBFbmFibGUpDQotew0KLUludDMyVSBWYWwgPSBDUDE1X0dldFN0YXR1cygpOw0KLSAgaWYoRW5hYmxlKQ0KLSAgew0KLSAgICBDUDE1X0ludmFsUHJlZGljdEFycmF5KCk7DQotICAgIFZhbCB8PSBDUDE1X0NUUkxfWjsNCi0gIH0NCi0gIGVsc2UNCi0gIHsNCi0gICAgVmFsICY9IH5DUDE1X0NUUkxfWjsNCi0gIH0NCi0gIENQMTVfU2V0U3RhdHVzKFZhbCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRWZWN0b3JCYXNlDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBHZXQgVmVjdG9yIEJhc2UgUmVnaXN0ZXIgKFZCQVIpDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRWZWN0b3JCYXNlKHZvaWQpDQotew0KLSAgcmV0dXJuKF9fTVJDKDE1LDAsQ1AxNV9WQkFSLDAsMCkpOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0VmVjdG9yQmFzZQ0KLSAqIFBhcmFtZXRlcnM6IEludDMyVQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IFZlY3RvciBCYXNlIFJlZ2lzdGVyIChWQkFSKQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFZlY3RvckJhc2UoSW50MzJVIHZlY3RvcikNCi17DQotcmVnaXN0ZXIgdm9sYXRpbGUgSW50MzJVIFZhbCA9IHZlY3RvcjsNCi0gIF9fTUNSKDE1LDAsVmFsLENQMTVfVkJBUiwwLDApOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0SGlnaFZlY3RvcnMNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZWxlY3QgSGlnaCBvciBMb3cgdmVjdG9ycyBiYXNlIGluIENQMTUgY29udHJvbCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldEhpZ2hWZWN0b3JzKEJvb2xlYW4gRW5hYmxlKQ0KLXsNCi1JbnQzMlUgVmFsID0gQ1AxNV9HZXRTdGF0dXMoKTsNCi0gIGlmKEVuYWJsZSkNCi0gIHsNCi0gICAgVmFsIHw9IENQMTVfQ1RSTF9WOw0KLSAgfQ0KLSAgZWxzZQ0KLSAgew0KLSAgICBWYWwgJj0gfkNQMTVfQ1RSTF9WOw0KLSAgfQ0KLSAgQ1AxNV9TZXRTdGF0dXMoVmFsKTsNCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL21vZHVsZXMvYXJtdjdhX2NwMTVfZHJ2LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvbW9kdWxlcy9hcm12N2FfY3AxNV9kcnYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE2Yzc0ZC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvbW9kdWxlcy9hcm12N2FfY3AxNV9kcnYuaAorKysgL2Rldi9udWxsCkBAIC0xLDU2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogICAgVXNlZCB3aXRoIElDQ0FSTSBhbmQgQUFSTS4NCi0gKg0KLSAqICAgIChjKSBDb3B5cmlnaHQgSUFSIFN5c3RlbXMgMjAxMg0KLSAqDQotICogICAgRmlsZSBuYW1lICAgOiBhcm12N2FfY3AxNV9kcnYuaA0KLSAqICAgIERlc2NyaXB0aW9uIDogRGVmaW5pdGlvbnMgb2YgYSBkcml2ZXIgZm9yIHRoZSBDUDE1IG9mIEFSTXY3LUENCi0gKg0KLSAqICAgIEhpc3RvcnkgOg0KLSAqICAgIDEuIERhdGUgICAgICAgIDogU2VwdGVtYmVyLCA4IDIwMDYNCi0gKiAgICAgICBBdXRob3IgICAgICA6IFN0YW5pbWlyIEJvbmV2DQotICogICAgICAgRGVzY3JpcHRpb24gOiBDcmVhdGUNCi0gKg0KLSAqICAgIDIuIERhdGUgICAgICAgIDogT2N0b2JlciwgIDIwMDgNCi0gKiAgICAgICBBdXRob3IgICAgICA6IFN0b3lhbiBDaG95bmV2DQotICogICAgICAgRGVzY3JpcHRpb24gOiBQb3J0IGZvciBBUk0xMTM2SkYuIFRoZSBkcml2ZXIgaXMgYmFja3dhcmRzIGNvbXBhdGlibGUgd2l0aCBBUk12NSBvciBlYXJsaWVyDQotICogICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3JzDQotICoNCi0gKiAgICAzLiBEYXRlICAgICAgICA6IE1hcmNoLCAgMjAxMg0KLSAqICAgICAgIEF1dGhvciAgICAgIDogQXRhbmFzIFV6dW5vdg0KLSAqICAgICAgIERlc2NyaXB0aW9uIDogUG9ydCBmb3IgQVJNdjctQSBhcmNoaXRlY3R1cmUuDQotICogICAgICAgICAgICAgICAgICAgICBBZGRlZCBjYWNoZSBtYWludGVuYW5jZSBmdW5jdGlvbnMuDQotICoNCi0gKiAgICAkUmV2aXNpb246IDUyNzA1ICQNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgPGludHJpbnNpY3MuaD4NCi0jaW5jbHVkZSAiYXJtX2NvbW0uaCINCi0NCi0jaWZuZGVmIF9fQVJNVjdBX0NQMTVfRFJWX0gNCi0jZGVmaW5lIF9fQVJNVjdBX0NQMTVfRFJWX0gNCi0NCi0jZGVmaW5lIE5PTl9DQUNIQUJMRV9BRERSICAgICAweEZGRkZGRkZDDQotDQotI2RlZmluZSBMMV9FTlRSSUVTX05VTUIgICAgICAgNDA5Ng0KLSNkZWZpbmUgTDJfQ1BfRU5UUklFU19OVU1CICAgIDI1Ng0KLQ0KLSNkZWZpbmUgRENBQ0hFX0NMRUFOX0FORF9JTlZBTElEQVRFICAxDQotI2RlZmluZSBEQ0FDSEVfSU5WQUxJREFURSAgICAgICAgICAgIDINCi0NCi0jZGVmaW5lIFRTQl9JTlZBTElEIHsgMCwgMCwgMCwgMCB9DQotI2RlZmluZSBUVEJfSU5WQUxJRCB7IDAsIFRhYmxlSW52YWxpZCB9DQotDQotI2RlZmluZSBMMV9QQUdFX1RBQkxFX0VOVFJZKE51bWIsIFZpcnRBZGRyICxQaEFkZHIsIERvbWFpbiwgTlMpIFwNCi0gIHsgTnVtYiwgVmlydEFkZHIsIFBoQWRkciwgXA0KLSAgKChEb21haW4gPDwgNSkgfCAoTlMgPDwgMykgfCBcDQotICAgIFR0TDFQYWdlVGFibGUpfQ0KLQ0KLSNkZWZpbmUgTDFfU0VDVElPTl9FTlRSWShOdW1iLCBWaXJ0QWRkciAsUGhBZGRyLCBOUywgbkcsIFMsIEFQMiwgVEVYLCBBUDAxLCBEb21haW4sIFhOLCBDLCBCKSBcDQotICB7IE51bWIsIFZpcnRBZGRyLCBQaEFkZHIsIFwNCi0gICgoTlMgPDwgMTkpIHwgKG5HIDw8IDE3KSB8IChTIDw8IDE2KSB8IChBUDIgPDwgMTUpIHwgKFRFWCA8PCAxMikgfCAoQVAwMSA8PCAxMCkgfCAoRG9tYWluIDw8IDUpIHwgKFhOIDw8IDQpIHwgKEMgPDwgMykgfCAoQiA8PCAyKSB8IFwNCi0gICAgVHRMMVNlY3Rpb24pfQ0KLQ0KLSNkZWZpbmUgTDFfU1VQRVJTRUNUSU9OX0VOVFJZKE51bWIsIFZpcnRBZGRyLCBQaEFkZHIsIEV4dEJhc2VBZGRyLCBOUywgbkcsIFMsIEFQMiwgVEVYLCBBUDAxLCBEb21haW4sIFhOLCBDLCBCKSBcDQotICB7IE51bWIqMTYsIFZpcnRBZGRyLCBQaEFkZHIsIFwNCi0gICgoKEV4dEJhc2VBZGRyJjB4MEZVTCkgPDwgMjApIHwgKCgoRXh0QmFzZUFkZHImMHhGMFVMKT4+NCkgPDwgNSkgfCAoTlMgPDwgMTkpIHwgKG5HIDw8IDE3KSB8IChTIDw8IDE2KSB8IChBUDIgPDwgMTUpIHwgKFRFWCA8PCAxMikgfCAoQVAwMSA8PCAxMCkgfCAoRG9tYWluIDw8IDUpIHwgKFhOIDw8IDQpIHwgKEMgPDwgMykgfCAoQiA8PCAyKSB8IFwNCi0gICAgVHRMMVN1cGVyU2VjdGlvbil9DQotDQotI2RlZmluZSBMMl9MQVJHRV9QQUdFX0VOVFJZKE51bWIsIFZpcnRBZGRyICxQaEFkZHIsIFhOLCBURVgsIG5HLCBTLCBBUDIsIEFQMDEsIEMsIEIpIFwNCi0gIHsgTnVtYioxNiwgVmlydEFkZHIsIFBoQWRkciwgXA0KLSAgKChYTiA8PCAxNSkgfCAoVEVYIDw8IDEyKSB8IChuRyA8PCAxMSkgfCAoUyA8PCAxMCkgfCAoQVAyIDw8IDkpIHwgKEFQMDEgPDwgNCkgfCAoQyA8PCAzKSB8IChCIDw8IDIpIHwgXA0KLSAgICBUdEwyTGFyZ2VQYWdlKX0NCi0NCi0jZGVmaW5lIEwyX1NNQUxMX1BBR0VfRU5UUlkoTnVtYiwgVmlydEFkZHIgLFBoQWRkciwgWE4sIFRFWCwgbkcsIFMsIEFQMiwgQVAwMSwgQywgQikgXA0KLSAgeyBOdW1iLCBWaXJ0QWRkciwgUGhBZGRyLCBcDQotICAoKG5HIDw8IDExKSB8IChTIDw8IDEwKSB8IChBUDIgPDwgOSkgfCAoVEVYPDw2KSB8IChBUDAxIDw8IDQpIHwgKEMgPDwgMykgfCAoQiA8PCAyKSB8ICAoWE4gPDwgMCkgfCBcDQotICAgIFR0TDJTbWFsbFBhZ2UpfQ0KLQ0KLS8vIENQMTUgUmVnaXN0ZXJzDQotLy8gSUQgcmVnaXN0ZXINCi0jZGVmaW5lIENQMTVfSUQgICAgICAgICAgIDANCi0NCi0vLyBDb250cm9sIHJlZ2lzdGVyDQotI2RlZmluZSBDUDE1X0NUUkwgICAgICAgICAxDQotLy8gQ1AxNSBDb250cm9sIHJlZ2lzdGVyIGJpdHMNCi0jZGVmaW5lIENQMTVfQ1RSTF9NICAgICAgKDFVTCA8PCAgMCkgICAgLy8gTU1VIGVuYWJsZS9kaXNhYmxlDQotI2RlZmluZSBDUDE1X0NUUkxfQSAgICAgICgxVUwgPDwgIDEpICAgIC8vIEFsaWdubWVudCBmYXVsdCBlbmFibGUvZGlzYWJsZQ0KLSNkZWZpbmUgQ1AxNV9DVFJMX0MgICAgICAoMVVMIDw8ICAyKSAgICAvLyBEQ2FjaGUgZW5hYmxlL2Rpc2FibGUNCi0jZGVmaW5lIENQMTVfQ1RSTF9aICAgICAgKDFVTCA8PCAxMSkgICAgLy8gUHJvZ3JhbSBmbG93IHByZWRpY3Rpb24NCi0jZGVmaW5lIENQMTVfQ1RSTF9JICAgICAgKDFVTCA8PCAxMikgICAgLy8gSUNhY2hlIGVuYWJsZS9kaXNhYmxlDQotI2RlZmluZSBDUDE1X0NUUkxfViAgICAgICgxVUwgPDwgMTMpICAgIC8vIExvY2F0aW9uIG9mIGV4Y2VwdGlvbiB2ZWN0b3JzDQotI2RlZmluZSBDUDE1X0NUUkxfRUUgICAgICgxVUwgPDwgMjUpICAgIC8vIENQU1IgRSBiaXQgb24gZXhjZXB0aW9uDQotI2RlZmluZSBDUDE1X0NUUkxfTk1GSSAgICgxVUwgPDwgMjcpICAgIC8vIEZJUSBlbmFibGUgYml0ICgxIC0gRklRIGNhbm5vdCBiZSBtYXNrZWQpIFJFQUQtT05MWQ0KLSNkZWZpbmUgQ1AxNV9DVFJMX1RSRSAgICAoMVVMIDw8IDI4KSAgICAvLyBURVggcmVtYXAgZnVuY3Rpb25hbGl0eSBiaXQuIChURVggZW5hYmxlZC9kaXNhYmxlZCkNCi0jZGVmaW5lIENQMTVfQ1RSTF9BRkUgICAgKDFVTCA8PCAyOSkgICAgLy8gQWNjZXNzIEZsYWcgRW5hYmxlIGJpdC4NCi0jZGVmaW5lIENQMTVfQ1RSTF9URSAgICAgKDFVTCA8PCAzMCkgICAgLy8gVGh1bWIgRXhjZXB0aW9uIGVuYWJsZSBiaXQuDQotDQotLy8gVHJhbnNsYXRpb24gdGFibGUgYmFzZSBhZGRyZXNzIChhbGlnbm1lbnQgNEtCKQ0KLSNkZWZpbmUgQ1AxNV9UVEJfQUREUiAgICAgMg0KLQ0KLS8vIERvbWFpbiBhY2Nlc3MgY29udHJvbCByZWdpc3Rlcg0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMICAgICAgMw0KLQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QwKFZhbCkgICgoVmFsICYgMHgzKSA8PCAgMCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMShWYWwpICAoKFZhbCAmIDB4MykgPDwgIDIpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDIoVmFsKSAgKChWYWwgJiAweDMpIDw8ICA0KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QzKFZhbCkgICgoVmFsICYgMHgzKSA8PCAgNikNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9ENChWYWwpICAoKFZhbCAmIDB4MykgPDwgIDgpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDUoVmFsKSAgKChWYWwgJiAweDMpIDw8IDEwKQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0Q2KFZhbCkgICgoVmFsICYgMHgzKSA8PCAxMikNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9ENyhWYWwpICAoKFZhbCAmIDB4MykgPDwgMTQpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDgoVmFsKSAgKChWYWwgJiAweDMpIDw8IDE2KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0Q5KFZhbCkgICgoVmFsICYgMHgzKSA8PCAxOCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMTAoVmFsKSAoKFZhbCAmIDB4MykgPDwgMjApDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDExKFZhbCkgKChWYWwgJiAweDMpIDw8IDIyKQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QxMihWYWwpICgoVmFsICYgMHgzKSA8PCAyNCkNCi0jZGVmaW5lIENQMTVfREFfQ1RSTF9EMTMoVmFsKSAoKFZhbCAmIDB4MykgPDwgMjUpDQotI2RlZmluZSBDUDE1X0RBX0NUUkxfRDE0KFZhbCkgKChWYWwgJiAweDMpIDw8IDI4KQ0KLSNkZWZpbmUgQ1AxNV9EQV9DVFJMX0QxNShWYWwpICgoVmFsICYgMHgzKSA8PCAzMCkNCi0NCi0vLyBDUDE1IGZhdWx0IHN0YXR1cyByZWdpc3Rlcg0KLSNkZWZpbmUgQ1AxNV9GQVVMVF9TVEFUICAgNQ0KLQ0KLS8vIENQMTUgZmF1bHQgYWRkcmVzcyByZWdpc3Rlcg0KLSNkZWZpbmUgQ1AxNV9GQVVMVF9BRERSICAgNg0KLQ0KLS8vIENQMTUgQ2FjaGUgb3BlcmF0aW9ucw0KLSNkZWZpbmUgQ1AxNV9DQUNIRV9PUFIgICAgNw0KLQ0KLS8vIENQMTUgVExCIG9wZXJhdGlvbg0KLSNkZWZpbmUgQ1AxNV9UQkxfT1BSICAgICAgOA0KLQ0KLS8vIENQMTUgQ2FjaGUgbG9ja2Rvd24NCi0jZGVmaW5lIENQMTVfQ19MRCAgICAgICAgIDkNCi0NCi0vLyBDUDE1IFRCTCBsb2NrZG93bg0KLSNkZWZpbmUgQ1AxNV9UQkxfTEQgICAgICAgMTANCi0NCi0vLyBDUDE1IFZCQVINCi0jZGVmaW5lIENQMTVfVkJBUiAgICAgICAgIDEyDQotDQotLy8gQ1AxNSBQcm9jZXNzIGlkZW50aWZpZXIgcmVnaXN0ZXINCi0jZGVmaW5lIENQMTVfUFJPQ0VTU19JRE5GIDEzDQotDQotLy8gQ1AxNSBUZXN0DQotI2RlZmluZSBDUDE1X1RFU1QgICAgICAgICAxNQ0KLQ0KLXR5cGVkZWYgZW51bSB7DQotICBEb21haW5Ob0FjY2VzcyA9IDAsIERvbWFpbkNsaWVudCwgRG9tYWluTWFuYWdlciA9IDMsDQotfSBNbXVEb21haW5UeXBlX3Q7DQotDQotdHlwZWRlZiBlbnVtDQotew0KLSAgVHRMMUludmFsaWQgPSAwLCBUdEwxUGFnZVRhYmxlLCBUdEwxU2VjdGlvbiwgVHRMMVN1cGVyU2VjdGlvbiA9IDB4NDAwMDIsDQotfSBUdEwxRW50cnlUeXBlX3Q7DQotDQotdHlwZWRlZiBlbnVtDQotew0KLSAgVHRMMkludmFsaWQgPSAwLCBUdEwyTGFyZ2VQYWdlLCBUdEwyU21hbGxQYWdlLA0KLX0gVHRMMkVudHJ5VHlwZV90Ow0KLQ0KLXR5cGVkZWYgZW51bQ0KLXsNCi0gIFRhYmxlSW52YWxpZCA9IDAsIFRhYmxlTDEsIFRhYmxlTDJfUGFnZVRhYmxlLA0KLX0gVGFibGVUeXBlX3Q7DQotDQotdHlwZWRlZiBlbnVtDQotew0KLSAgUEMxNV9GQVNUQlVTX01PREUgPSAwLCBQQzE1X1NZTkNfTU9ERSwgUEMxNV9BU1lOQ19NT0RFID0gMw0KLX0gQ2xrTW9kZV90Ow0KLQ0KLQ0KLXR5cGVkZWYgdW5pb24gX1R0RW50cnlfdA0KLXsNCi0gIEludDMyVSBEYXRhOw0KLSAgc3RydWN0DQotICB7DQotICAgIEludDMyVSBUeXBlICAgICA6IDI7DQotICAgIEludDMyVSAgICAgICAgICA6IDM7DQotICAgIEludDMyVSBEb21haW4gICA6IDQ7DQotICAgIEludDMyVSAgICAgICAgICA6MjM7DQotICB9Ow0KLX0gVHRFbnRyeV90LCAqcFR0RW50cnlfdDsNCi0NCi10eXBlZGVmIHN0cnVjdCBfVHRTZWN0aW9uQmxvY2tfdA0KLXsNCi0gIEludDMyVSBOdWJyT2ZTZWN0aW9uczsNCi0gIEludDMyVSBWaXJ0QWRkcjsNCi0gIEludDMyVSBQaHlzQWRkcjsNCi0gIFR0RW50cnlfdCBFbnRyeTsNCi19IFR0U2VjdGlvbkJsb2NrX3QsICogcFR0U2VjdGlvbkJsb2NrX3Q7DQotDQotdHlwZWRlZiBzdHJ1Y3QgX1R0VGFibGVCbG9ja190DQotew0KLSAgcEludDMyVSAgICAgVGFibGVBZGRyOw0KLSAgVGFibGVUeXBlX3QgVGFibGVUeXBlOw0KLX0gVHRUYWJsZUJsb2NrX3QsICogcFR0VGFibGVCbG9ja190Ow0KLQ0KLSNkZWZpbmUgVFRfRU5UUllfSU5WQUxJRCAgICAgICAgICAwDQotDQotI2RlZmluZSBUVEwxX1NFQ1RJT05fUEFERFJfTUFTSyAgIDB4RkZGMDAwMDANCi0jZGVmaW5lIFRUTDFfU19TRUNUSU9OX1BBRERSX01BU0sgMHhGRjAwMDAwMA0KLSNkZWZpbmUgVFRMMV9TX1NFQ1RJT05fRVhUMzVfMzJfUEFERFJfTUFTSyAweDAwRjAwMDAwDQotI2RlZmluZSBUVEwxX1NfU0VDVElPTl9FWFQzOV8zNl9QQUREUl9NQVNLIDB4MDAwMDAxRTANCi0jZGVmaW5lIFRUTDFfUFRfUEFERFJfTUFTSyAgICAgICAgMHhGRkZGRkMwMA0KLQ0KLSNkZWZpbmUgVFRMMl9MUF9QQUREUl9NQVNLICAgICAgICAweEZGRkYwMDAwDQotI2RlZmluZSBUVEwyX1NQX1BBRERSX01BU0sgICAgICAgIDB4RkZGRkYwMDANCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0VHRiMA0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBUVEIwIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRUdGIwICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0VHRiMQ0KLSAqIFBhcmFtZXRlcnM6IG5vbmUNCi0gKg0KLSAqIFJldHVybjogSW50MzJVDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBUVEIxIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRUdGIxICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0U3RhdHVzDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIE1NVSBjb250cm9sIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRTdGF0dXMgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXREb21haW4NCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIGRvbWFpbiBhY2Nlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIEludDMyVSBDUDE1X0dldERvbWFpbiAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldERvbWFpbnMNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgRG9tYWluQWNjZXNzDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHNldCB0aGUgTU1VIGRvbWFpbiBhY2Nlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXREb21haW5zIChJbnQzMlUgRG9tYWluQWNjZXNzKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfTWFpbnRhaW5EQ2FjaGVTZXRXYXkNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgbGV2ZWwgLSBsZXZlbCBvZiBjYWNoZSwNCi0gKiAgICAgICAgICAgICBJbnQzMlUgbWFpbnQgLSBtYWludGVuYW5jZSB0eXBlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBNYWludGFpbiBkYXRhIGNhY2hlIGxpbmUgYnkgU2V0L1dheQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X01haW50YWluRENhY2hlU2V0V2F5KEludDMyVSBsZXZlbCwgSW50MzJVIG1haW50KTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfTWFpbnRBbGxEQ2FjaGUNCi0gKiBQYXJhbWV0ZXJzOiBJbnQzMlUgb3BlciAtIHR5cGUgb2YgbWFpbnRlbmFuY2UsIG9uZSBvZjoNCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgRENBQ0hFX0NMRUFOX0FORF9JTlZBTElEQVRFDQotICogICAgICAgICAgICAgICAgICAgICAgICAgIERDQUNIRV9JTlZBTElEQVRFDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBNYWludGVuYW5jZSBvZiBhbGwgZGF0YSBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X01haW50YWluQWxsRENhY2hlKEludDMyVSBvcGVyKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxJbnN0ckNhY2hlDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogSW52YWxpZGF0ZSBpbnN0cnVjdGlvbiBjYWNoZQ0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X0ludmFsSW5zdHJDYWNoZSh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxQcmVkaWN0QXJyYXkNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIHByZWRpY3Rpb24gYXJyYXkNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9JbnZhbFByZWRpY3RBcnJheSh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxBbGxUYmwNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBJbnZhbGlkYXRlIFRMQg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X0ludmFsQWxsVGJsICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0U3RhdHVzDQotICogUGFyYW1ldGVyczogSW50MzJVIEN0cmwNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBDUDE1IENUUiAoY29udHJvbCkgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRTdGF0dXMgKEludDMyVSBDdHJsKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0TW11DQotICogUGFyYW1ldGVyczogSW50MzJVIEN0cmwNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IFNldCBDUDE1IGNvbnRyb2wgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRNbXUgKEludDMyVSBDdHJsKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0VHRiMA0KLSAqIFBhcmFtZXRlcnM6IHBJbnQzMlUgcFR0Yg0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgVFRCMCBiYXNlIGFkZHJlc3MgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRUdGIwIChwSW50MzJVIHBUdGIpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRUdGIxDQotICogUGFyYW1ldGVyczogcEludDMyVSBwVHRiDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgQ1AxNSBUVEIxIGJhc2UgYWRkcmVzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldFR0YjEgKHBJbnQzMlUgcFR0Yik7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X1NldERhYw0KLSAqIFBhcmFtZXRlcnM6IEludDMyVSBkYQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogU2V0IENQMTUgZG9tYWluIGFjY2VzcyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldERhYyAoSW50MzJVIGRhKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfV3JpdGVCdWZmRmx1c2gNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiAgRmx1c2ggdGhlIHdyaXRlIGJ1ZmZlciBhbmQgd2FpdCBmb3IgY29tcGxldGlvbg0KLSAqICAgICAgICAgICAgICBvZiB0aGUgZmx1c2guDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfV3JpdGVCdWZmRmx1c2ggKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGYXVsdFN0YXQNCi0gKiBQYXJhbWV0ZXJzOiBub25lDQotICoNCi0gKiBSZXR1cm46IEludDMyVQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHJldHVybmluZyB0aGUgTU1VIGZhdWx0IHN0YXR1cyByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0RmF1bHRTdGF0ICh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfR2V0RmF1bHRBZGRyDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIE1NVSBmYXVsdCBhZGRyZXNzIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRGYXVsdEFkZHIgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRGY3NlUGlkDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIE1NVSBQcm9jZXNzIGlkZW50aWZpZXINCi0gKiAgICAgICAgICAgICBGQ1NFIFBJRCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0RmNzZVBpZCAodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0dldFByYWNlUHJvY0lkDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIE1NVSBUcmFjZSBQcm9jZXNzIGlkZW50aWZpZXINCi0gKiAgICAgICAgICAgICByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gSW50MzJVIENQMTVfR2V0UHJhY2VQcm9jSWQgKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRGY3NlUGlkDQotICogUGFyYW1ldGVyczogSW50MzJVIEZjc2VQaWQNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEZ1bmN0aW9uIHNldCB0aGUgTU1VIFByb2Nlc3MgaWRlbnRpZmllcg0KLSAqICAgICAgICAgICAgIEZDU0UgUElEIHJlZ2lzdGVyDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0RmNzZVBpZCAoSW50MzJVIEZjc2VQaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRQcmFjZVByb2NJZA0KLSAqIFBhcmFtZXRlcnM6IEludDMyVQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRnVuY3Rpb24gc2V0IHRoZSBNTVUgVHJhY2UgUHJvY2VzcyBpZGVudGlmaWVyDQotICogICAgICAgICAgICAgcmVnaXN0ZXINCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLV9fYXJtIHZvaWQgQ1AxNV9TZXRQcmFjZVByb2NJZCAoSW50MzJVIFRyYWNlKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfV3JpdGVCdWZmRmx1c2gNCi0gKiBQYXJhbWV0ZXJzOiBwVHRTZWN0aW9uQmxvY2tfdCBwVHRTQiwgcFR0VGFibGVCbG9ja190IHBUdFRCDQotICoNCi0gKiBSZXR1cm46IEJvb2xlYW4NCi0gKg0KLSAqICBSZXR1cm4gZXJyb3IgaWYgTU1VIGlzIGVuYWJsZWQuIFJldHVybiBlcnJvciBpZiB0YXJnZXQNCi0gKiBUcmFuc2xhdGlvbiBUYWJsZSBhZGRyZXNzIGlzIG5vdCAxNksgYWxpZ25lZC4gQ2xlYXIgdGhlDQotICogVHJhbnNsYXRpb24gVGFibGUgYXJlYS4gQnVpbGQgdGhlIFRyYW5zbGF0aW9uIFRhYmxlIGZyb20gdGhlDQotICogaW5pdGlhbGl6YXRpb24gZGF0YSBpbiB0aGUgU2VjdGlvbiBCbG9jayBhcnJheS4gUmV0dXJuIG5vIGVycm9yLg0KLSAqDQotICogRGVzY3JpcHRpb246ICBJbml0aWFsaXplcyB0aGUgTU1VIHRhYmxlcy4NCi0gKg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotQm9vbGVhbiBDUDE1X0luaXRNbXVUdGIoY29uc3QgVHRTZWN0aW9uQmxvY2tfdCAqIHBUdFNCLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFR0VGFibGVCbG9ja190ICogcFR0VEIpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9NbXUNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuIEVuYWJsZQ0KLSAqDQotICogUmV0dXJuOiBub25lDQotICoNCi0gKiBEZXNjcmlwdGlvbjogRW5hYmxlL0Rpc2FibGUgTU1VDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfTW11IChCb29sZWFuIEVuYWJsZSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBGdW5jdGlvbiBOYW1lOiBDUDE1X0NhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIENhY2hlDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIENQMTVfQ2FjaGUgKEJvb2xlYW4gRW5hYmxlKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSW52YWxpZGF0ZUNhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEludmFsaWRhdGUgQ2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9JbnZhbGlkYXRlQ2FjaGUoKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfSUNhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIEkgY2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9JQ2FjaGUgKEJvb2xlYW4gRW5hYmxlKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfRENhY2hlDQotICogUGFyYW1ldGVyczogQm9vbGVhbiBFbmFibGUNCi0gKg0KLSAqIFJldHVybjogbm9uZQ0KLSAqDQotICogRGVzY3JpcHRpb246IEVuYWJsZS9EaXNhYmxlIEQgY2FjaGUNCi0gKg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgQ1AxNV9EQ2FjaGUgKEJvb2xlYW4gRW5hYmxlKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfUHJvZ0Zsb3dQcmVkaWN0aW9pbg0KLSAqIFBhcmFtZXRlcnM6IEJvb2xlYW4gRW5hYmxlDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBFbmFibGUvRGlzYWJsZSBwcm9ncmFtIGZsb3cgcHJlZGljdGlvbg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBDUDE1X1Byb2dGbG93UHJlZGljdGlvbiAoQm9vbGVhbiBFbmFibGUpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9HZXRWZWN0b3JCYXNlDQotICogUGFyYW1ldGVyczogbm9uZQ0KLSAqDQotICogUmV0dXJuOiBJbnQzMlUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBHZXQgVmVjdG9yIEJhc2UgUmVnaXN0ZXIgKFZCQVIpDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSBJbnQzMlUgQ1AxNV9HZXRWZWN0b3JCYXNlKHZvaWQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb24gTmFtZTogQ1AxNV9TZXRWZWN0b3JCYXNlDQotICogUGFyYW1ldGVyczogSW50MzJVDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZXQgVmVjdG9yIEJhc2UgUmVnaXN0ZXIgKFZCQVIpDQotICoNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1fX2FybSB2b2lkIENQMTVfU2V0VmVjdG9yQmFzZShJbnQzMlUgdmVjdG9yKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9uIE5hbWU6IENQMTVfU2V0SGlnaFZlY3RvcnMNCi0gKiBQYXJhbWV0ZXJzOiBCb29sZWFuDQotICoNCi0gKiBSZXR1cm46IG5vbmUNCi0gKg0KLSAqIERlc2NyaXB0aW9uOiBTZWxlY3QgSGlnaCBvciBMb3cgVmVjdG9ycyBiYXNlIGluIENQMTUgY29udHJvbCByZWdpc3Rlcg0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19hcm0gdm9pZCBDUDE1X1NldEhpZ2hWZWN0b3JzKEJvb2xlYW4gRW5hYmxlKTsNCi0NCi0jZW5kaWYgLy8gX19BUk1WN0FfQ1AxNV9EUlZfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9yN3M3MjEwMDAuaWNmIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3I3czcyMTAwMC5pY2YKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NWZkMDUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3I3czcyMTAwMC5pY2YKKysrIC9kZXYvbnVsbApAQCAtMSw1OCArMCwwIEBACi0vKiMjI0lDRiMjIyBTZWN0aW9uIGhhbmRsZWQgYnkgSUNGIGVkaXRvciwgZG9uJ3QgdG91Y2ghICoqKiovDQotLyotRWRpdG9yIGFubm90YXRpb24gZmlsZS0qLw0KLS8qIEljZkVkaXRvckZpbGU9IiRUT09MS0lUX0RJUiRcY29uZmlnXGlkZVxJY2ZFZGl0b3JcYV92MV8wLnhtbCIgKi8NCi0vKi1TcGVjaWFscy0qLw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX2ludHZlY19zdGFydF9fID0gMHgyMDAyMDAwMDsNCi0vKi1NZW1vcnkgUmVnaW9ucy0qLw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9ST01fc3RhcnRfXyA9IDB4MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUk9NX2VuZF9fICAgPSAweDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JBTV9zdGFydF9fID0gMHgyMDAyMDA0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUkFNX2VuZF9fICAgPSAweDIwOUZGRkZGOw0KLS8qLVNpemVzLSovDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9jc3RhY2tfXyAgID0gMHg4MDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fID0gMHg4MDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9pcnFzdGFja19fID0gMHg4MDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9maXFzdGFja19fID0gMHg0MDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9zaXplX3VuZHN0YWNrX18gPSAweDQwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3NpemVfYWJ0c3RhY2tfXyA9IDB4NDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfc2l6ZV9oZWFwX18gICAgID0gMHg4Ow0KLS8qKioqIEVuZCBvZiBJQ0YgZWRpdG9yIHNlY3Rpb24uICMjI0lDRiMjIyovDQotDQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9zdGFydF9fICAgICAgID0gMHgyMDAwMDAwMDsNCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX2VuZF9fICAgICAgICAgPSAweDIwMDFGRkZGOw0KLQ0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fc3RhcnRfXyAgICA9IDB4NjAwMjAwMDA7DQotZGVmaW5lIHN5bWJvbCBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9lbmRfXyAgICAgID0gMHg2MDlGRkZGRjsNCi0NCi1kZWZpbmUgc3ltYm9sIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX3N0YXJ0X18gPSAweDYwMDAwMDAwOw0KLWRlZmluZSBzeW1ib2wgX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fZW5kX18gICA9IDB4NjAwMUZGRkY7DQotDQotZGVmaW5lIG1lbW9yeSBtZW0gd2l0aCBzaXplID0gNEc7DQotDQotZGVmaW5lIHJlZ2lvbiBSQU1fcmVnaW9uICAgICAgICAgID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fUkFNX3N0YXJ0X18gICAgICAgICAgdG8gX19JQ0ZFRElUX3JlZ2lvbl9SQU1fZW5kX19dOw0KLWRlZmluZSByZWdpb24gUmV0UkFNX3JlZ2lvbiAgICAgICA9IG1lbTpbZnJvbSBfX0lDRkVESVRfcmVnaW9uX1JldFJBTV9zdGFydF9fICAgICAgIHRvIF9fSUNGRURJVF9yZWdpb25fUmV0UkFNX2VuZF9fXTsNCi1kZWZpbmUgcmVnaW9uIE1pcnJvclJBTV9yZWdpb24gICAgPSBtZW06W2Zyb20gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSQU1fc3RhcnRfXyAgICB0byBfX0lDRkVESVRfcmVnaW9uX01pcnJvclJBTV9lbmRfX107DQotZGVmaW5lIHJlZ2lvbiBNaXJyb3JSZXRSQU1fcmVnaW9uID0gbWVtOltmcm9tIF9fSUNGRURJVF9yZWdpb25fTWlycm9yUmV0UkFNX3N0YXJ0X18gdG8gX19JQ0ZFRElUX3JlZ2lvbl9NaXJyb3JSZXRSQU1fZW5kX19dOw0KLQ0KLWRlZmluZSBibG9jayBDU1RBQ0sgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfY3N0YWNrX18gICB7IH07DQotZGVmaW5lIGJsb2NrIFNWQ19TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV9zdmNzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgSVJRX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2lycXN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBGSVFfU1RBQ0sgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfZmlxc3RhY2tfXyB7IH07DQotZGVmaW5lIGJsb2NrIFVORF9TVEFDSyB3aXRoIGFsaWdubWVudCA9IDgsIHNpemUgPSBfX0lDRkVESVRfc2l6ZV91bmRzdGFja19fIHsgfTsNCi1kZWZpbmUgYmxvY2sgQUJUX1NUQUNLIHdpdGggYWxpZ25tZW50ID0gOCwgc2l6ZSA9IF9fSUNGRURJVF9zaXplX2FidHN0YWNrX18geyB9Ow0KLWRlZmluZSBibG9jayBIRUFQICAgICAgd2l0aCBhbGlnbm1lbnQgPSA4LCBzaXplID0gX19JQ0ZFRElUX3NpemVfaGVhcF9fICAgICB7IH07DQotDQotaW5pdGlhbGl6ZSBieSBjb3B5IHsgcmVhZHdyaXRlIH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiAubm9pbml0IH07DQotZG8gbm90IGluaXRpYWxpemUgIHsgc2VjdGlvbiBNTVVfVFQgfTsNCi0NCi1wbGFjZSBhdCBhZGRyZXNzIG1lbTpfX0lDRkVESVRfaW50dmVjX3N0YXJ0X18geyByZWFkb25seSBzZWN0aW9uIC5pbnR2ZWMgfTsNCi0NCi1wbGFjZSBpbiBSQU1fcmVnaW9uICAgICB7IHJlYWRvbmx5IH07DQotcGxhY2UgaW4gUkFNX3JlZ2lvbiAgICAgeyByZWFkd3JpdGUsDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBDU1RBQ0ssIGJsb2NrIFNWQ19TVEFDSywgYmxvY2sgSVJRX1NUQUNLLCBibG9jayBGSVFfU1RBQ0ssDQotICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayBVTkRfU1RBQ0ssIGJsb2NrIEFCVF9TVEFDSywgYmxvY2sgSEVBUCB9Ow0KLQ0KLXBsYWNlIGluIFJldFJBTV9yZWdpb24gICAgICAgeyBzZWN0aW9uIC5yZXRyYW0gfTsNCi1wbGFjZSBpbiBNaXJyb3JSQU1fcmVnaW9uICAgIHsgc2VjdGlvbiAubWlycm9ycmFtIH07DQotcGxhY2UgaW4gTWlycm9yUmV0UkFNX3JlZ2lvbiB7IHNlY3Rpb24gLm1pcnJvcnJldHJhbSB9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jc3B5LmJhdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5jc3B5LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTVjMzRiYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uY3NweS5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1AUkVNIFRoaXMgYmF0Y2ggZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgdGhlIElBUiBFbWJlZGRlZCBXb3JrYmVuY2gNCi1AUkVNIEMtU1BZIERlYnVnZ2VyLCBhcyBhbiBhaWQgdG8gcHJlcGFyaW5nIGEgY29tbWFuZCBsaW5lIGZvciBydW5uaW5nDQotQFJFTSB0aGUgY3NweWJhdCBjb21tYW5kIGxpbmUgdXRpbGl0eSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgc2V0dGluZ3MuDQotQFJFTQ0KLUBSRU0gTm90ZSB0aGF0IHRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZXZlcnkgdGltZSBhIG5ldyBkZWJ1ZyBzZXNzaW9uDQotQFJFTSBpcyBpbml0aWFsaXplZCwgc28geW91IG1heSB3YW50IHRvIG1vdmUgb3IgcmVuYW1lIHRoZSBmaWxlIGJlZm9yZQ0KLUBSRU0gbWFraW5nIGNoYW5nZXMuDQotQFJFTQ0KLUBSRU0gWW91IGNhbiBsYXVuY2ggY3NweWJhdCBieSB0eXBpbmcgdGhlIG5hbWUgb2YgdGhpcyBiYXRjaCBmaWxlIGZvbGxvd2VkDQotQFJFTSBieSB0aGUgbmFtZSBvZiB0aGUgZGVidWcgZmlsZSAodXN1YWxseSBhbiBFTEYvRFdBUkYgb3IgVUJST0YgZmlsZSkuDQotQFJFTQ0KLUBSRU0gUmVhZCBhYm91dCBhdmFpbGFibGUgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgaW4gdGhlIEMtU1BZIERlYnVnZ2luZw0KLUBSRU0gR3VpZGUuIEhpbnRzIGFib3V0IGFkZGl0aW9uYWwgY29tbWFuZCBsaW5lIHBhcmFtZXRlcnMgdGhhdCBtYXkgYmUNCi1AUkVNIHVzZWZ1bCBpbiBzcGVjaWZpYyBjYXNlczoNCi1AUkVNICAgLS1kb3dubG9hZF9vbmx5ICAgRG93bmxvYWRzIGEgY29kZSBpbWFnZSB3aXRob3V0IHN0YXJ0aW5nIGEgZGVidWcNCi1AUkVNICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiBhZnRlcndhcmRzLg0KLUBSRU0gICAtLXNpbGVudCAgICAgICAgICBPbWl0cyB0aGUgc2lnbi1vbiBtZXNzYWdlLg0KLUBSRU0gICAtLXRpbWVvdXQgICAgICAgICBMaW1pdHMgdGhlIG1heGltdW0gYWxsb3dlZCBleGVjdXRpb24gdGltZS4NCi1AUkVNIA0KLQ0KLQ0KLSJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNi41XGNvbW1vblxiaW5cY3NweWJhdCIgIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjVcYXJtXGJpblxhcm1wcm9jLmRsbCIgIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjVcYXJtXGJpblxhcm1qbGluay5kbGwiICAlMSAtLXBsdWdpbiAiQzpcZGV2dG9vbHNcSUFSIFN5c3RlbXNcRW1iZWRkZWQgV29ya2JlbmNoIDYuNVxhcm1cYmluXGFybWJhdC5kbGwiIC0tbWFjcm8gIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01XElBUlxjb25maWdcUlRLNzcyMTAwRkMwMDAwMEJSX05PUi5tYWMiIC0tYmFja2VuZCAtQiAiLS1lbmRpYW49bGl0dGxlIiAiLS1jcHU9Q29ydGV4LUE5IiAiLS1mcHU9VkZQdjNOZW9uIiAiLXAiICJDOlxkZXZ0b29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNi41XGFybVxDT05GSUdcZGVidWdnZXJcUmVuZXNhc1xSN1M3MjEwMDAuZGRmIiAiLS1kcnZfdmVyaWZ5X2Rvd25sb2FkIiAiLS1zZW1paG9zdGluZz1ub25lIiAiLS1kZXZpY2U9UjdTNzIxMDAwIiAiLS1kcnZfY29tbXVuaWNhdGlvbj1VU0IwIiAiLS1qbGlua19zcGVlZD1hdXRvIiAiLS1qbGlua19pbml0aWFsX3NwZWVkPTMyIiAiLS1kcnZfY2F0Y2hfZXhjZXB0aW9ucz0weDAwMCIgDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzViNThiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdAorKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCi08UHJvamVjdD4NCi0gIDxEZXNrdG9wPg0KLSAgICA8U3RhdGljPg0KLSAgICAgIDxEZWJ1Zy1Mb2c+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz4NCi0gICAgICA8QnVpbGQ+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT4xMjE2PC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj48Q29sdW1uV2lkdGgzPjgxPC9Db2x1bW5XaWR0aDM+PC9CdWlsZD4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4yMjg8L0NvbHVtbjA+PENvbHVtbjE+Mjc8L0NvbHVtbjE+PENvbHVtbjI+Mjc8L0NvbHVtbjI+PENvbHVtbjM+Mjc8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPERpc2Fzc2VtYmx5Pg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxpdGVtPjUwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+DQotICAgICAgICA8RGlzYXNtSGlzdG9yeS8+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PFNob3dDb2RlQ292ZXJhZ2U+MTwvU2hvd0NvZGVDb3ZlcmFnZT48U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz48L0Rpc2Fzc2VtYmx5Pg0KLSAgICA8UmVnaXN0ZXI+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzPjxXaW5kb3c+PEZhY3Rvcnk+V0FUQ0hfMTwvRmFjdG9yeT48L1dpbmRvdz48L1dpbmRvd3M+PC9QcmVmZXJlZFdpbmRvd3M+PC9SZWdpc3Rlcj48V0FUQ0hfMT48ZXhwcmVzc2lvbnM+PGl0ZW0vPjwvZXhwcmVzc2lvbnM+PGNvbC1uYW1lcz48aXRlbT5FeHByZXNzaW9uPC9pdGVtPjxpdGVtPkxvY2F0aW9uPC9pdGVtPjxpdGVtPlR5cGU8L2l0ZW0+PGl0ZW0+VmFsdWU8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+MjM2PC9pdGVtPjxpdGVtPjE1MDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjwvY29sLXdpZHRocz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjwvV0FUQ0hfMT48QXV0bz48Y29sLW5hbWVzPjxpdGVtPkV4cHJlc3Npb248L2l0ZW0+PGl0ZW0+TG9jYXRpb248L2l0ZW0+PGl0ZW0+VHlwZTwvaXRlbT48aXRlbT5WYWx1ZTwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT4xMDA8L2l0ZW0+PGl0ZW0+MTUwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xMDA8L2l0ZW0+PC9jb2wtd2lkdGhzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjI8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PC9BdXRvPjxGaW5kLWluLUZpbGVzPjxDb2x1bW5XaWR0aDA+NTgwPC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+OTk0PC9Db2x1bW5XaWR0aDI+PC9GaW5kLWluLUZpbGVzPjxCcmVha3BvaW50cz48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4zPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxjb2wtbmFtZXM+PGl0ZW0+QnJlYWtwb2ludDwvaXRlbT48aXRlbT5fSTA8L2l0ZW0+PC9jb2wtbmFtZXM+PGNvbC13aWR0aHM+PGl0ZW0+NTAwPC9pdGVtPjxpdGVtPjM1PC9pdGVtPjwvY29sLXdpZHRocz48L0JyZWFrcG9pbnRzPjwvU3RhdGljPg0KLSAgICA8V2luZG93cz4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFduZDA+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtNjgyNC0yNzU0NjwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNzA1MC0yNzU1OTwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24vPg0KLSAgICAgICAgICA8L1RhYj4NCi0gICAgICAgIDxUYWI+PElkZW50aXR5PlRhYklELTExNzk0LTIzNjkwPC9JZGVudGl0eT48VGFiTmFtZT5GaW5kIGluIEZpbGVzPC9UYWJOYW1lPjxGYWN0b3J5PkZpbmQtaW4tRmlsZXM8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4wPC9TZWxlY3RlZFRhYj48L1duZDA+PFduZDE+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTc1NzMtMjc1NDk8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vQmxpbmt5LURlbW88L0V4cGFuZGVkTm9kZT48RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TLVNvdXJjZTwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1MtU291cmNlL3BvcnRhYmxlPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUy1Tb3VyY2UvcG9ydGFibGUvSUFSPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPUy1Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTk8L0V4cGFuZGVkTm9kZT48L05vZGVEaWN0PjwvU2Vzc2lvbj4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQxPjxXbmQyPjxUYWJzPjxUYWI+PElkZW50aXR5PlRhYklELTg3MjEtNzY4MDwvSWRlbnRpdHk+PFRhYk5hbWU+RGlzYXNzZW1ibHk8L1RhYk5hbWU+PEZhY3Rvcnk+RGlzYXNzZW1ibHk8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjwvVGFicz48U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQyPjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcQmxpbmt5LURlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY0PC9ZUG9zMj48U2VsU3RhcnQyPjA8L1NlbFN0YXJ0Mj48U2VsRW5kMj4wPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXG1haW4uYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjEyMjwvWVBvczI+PFNlbFN0YXJ0Mj42MzQ4PC9TZWxTdGFydDI+PFNlbEVuZDI+NjM0ODwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXGNzdGFydHVwLnM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xMjA8L1lQb3MyPjxTZWxTdGFydDI+MzY3MjwvU2VsU3RhcnQyPjxTZWxFbmQyPjM2NzI8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxMb3dMZXZlbEluaXRpYWxpc2UuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjE0PC9ZUG9zMj48U2VsU3RhcnQyPjEwODA8L1NlbFN0YXJ0Mj48U2VsRW5kMj4xMDgwPC9TZWxFbmQyPjwvVGFiPjxBY3RpdmVUYWI+MzwvQWN0aXZlVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbW9kdWxlc1xhcm12N2FfY3AxNV9kcnYuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjU3MzwvWVBvczI+PFNlbFN0YXJ0Mj4xNjc4MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjE2NzgwPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXExFRHMuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY0PC9ZUG9zMj48U2VsU3RhcnQyPjQyNDc8L1NlbFN0YXJ0Mj48U2VsRW5kMj40MjQ3PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xib2FyZF9zZXR0aW5nc1xzaW9jaGFyLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj40NjY5PC9TZWxTdGFydDI+PFNlbEVuZDI+NDY2OTwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXFNvdXJjZVxGdWxsLURlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4zNDA8L1lQb3MyPjxTZWxTdGFydDI+MTc1NTQ8L1NlbFN0YXJ0Mj48U2VsRW5kMj4xNzU1NDwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMEQ2NzJBOD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDBENjcyQTg+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzPjxUb29sYmFyLTA3NDcyQTEwPjxrZXk+ZGVidWdnZXJndWkuZW51MTwva2V5PjwvVG9vbGJhci0wNzQ3MkExMD48L1NpemVzPjwvUm93MT48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDE+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+NzE4PC9Cb3R0b20+PFJpZ2h0PjMwMjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjAwPC94c2NyZWVuPjx5c2NyZWVuPjIwMDwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTkwNDg8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPjxzaXplVmVydENYPjE4MDk1Mjwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43MzE3MDc8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMT48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcz48V25kMj48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT43MTg8L0JvdHRvbT48UmlnaHQ+Njk5PC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+NDE3MjYyPC9zaXplVmVydENYPjxzaXplVmVydENZPjczMTcwNzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQyPjwvU2l6ZXM+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDA+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MTk4PC9Cb3R0b20+PFJpZ2h0PjE2ODI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE2ODQ8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIzODE8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MjAzMjUyPC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTA0ODwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4yMDMyNTI8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMD48L1NpemVzPjwvUm93MD48L0JvdHRvbT48RmxvYXQ+PFNpemVzLz48L0Zsb2F0PjwvUG9zaXRpb25zPg0KLSAgPC9EZXNrdG9wPg0KLTwvUHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZG5pIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vLmRuaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY3MDk4ZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8uZG5pCisrKyAvZGV2L251bGwKQEAgLTEsMTE2ICswLDAgQEAKLVtTdGFja10NCi1GaWxsRW5hYmxlZD0wDQotT3ZlcmZsb3dXYXJuaW5nc0VuYWJsZWQ9MQ0KLVdhcm5pbmdUaHJlc2hvbGQ9OTANCi1TcFdhcm5pbmdzRW5hYmxlZD0wDQotV2FybkxvZ09ubHk9MQ0KLVVzZVRyaWdnZXI9MQ0KLVRyaWdnZXJOYW1lPW1haW4NCi1MaW1pdFNpemU9MA0KLUJ5dGVMaW1pdD01MA0KLVtKTGlua0RyaXZlcl0NCi1XYXRjaENvbmQ9XyAwDQotV2F0Y2gwPV8gMCAiIiAwICIiIDAgIiIgMCAiIiAwIDAgMCAwDQotV2F0Y2gxPV8gMCAiIiAwICIiIDAgIiIgMCAiIiAwIDAgMCAwDQotQ1N0ZXBJbnREaXM9XyAwDQotW0RlYnVnQ2hlY2tzdW1dDQotQ2hlY2tzdW09NzIzNjg5NDENCi1bSmV0XQ0KLUpldENvbm5TZXJpYWxObz03Mzg2Ng0KLUpldENvbm5Gb3VuZFByb2Jlcz0NCi1EaXNhYmxlSW50ZXJydXB0cz0wDQotW1BsRHJpdmVyXQ0KLU1lbUNvbmZpZ1ZhbHVlPUM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA2LjVcYXJtXENPTkZJR1xkZWJ1Z2dlclxSZW5lc2FzXFI3UzcyMTAwMC5kZGYNCi1GaXJzdFJ1bj0wDQotW0FybURyaXZlcl0NCi1FbmFibGVDYWNoZT0xDQotW0V4Y2VwdGlvbnNdDQotU3RvcE9uVW5jYXVnaHQ9XyAwDQotU3RvcE9uVGhyb3c9XyAwDQotW0NhbGxTdGFja10NCi1TaG93QXJncz0wDQotW0Rpc2Fzc2VtYmx5XQ0KLU1peGVkTW9kZT0xDQotW1NXT01hbmFnZXJdDQotU2FtcGxpbmdEaXZpZGVyPTgxOTINCi1PdmVycmlkZUNsb2NrPTANCi1DcHVDbG9jaz0wDQotU3dvQ2xvY2s9LTENCi1EYXRhTG9nTW9kZT0wDQotSXRtUG9ydHNFbmFibGVkPTYzDQotSXRtVGVybUlPUG9ydHM9MQ0KLUl0bUxvZ1BvcnRzPTANCi1JdG1Mb2dGaWxlPSRQUk9KX0RJUiRcSVRNLmxvZw0KLVBvd2VyRm9yY2VQQz0xDQotUG93ZXJDb25uZWN0UEM9MQ0KLVtQb3dlckxvZ10NCi1Mb2dFbmFibGVkPTANCi1HcmFwaEVuYWJsZWQ9MA0KLVNob3dUaW1lTG9nPTENCi1TaG93VGltZVN1bT0wDQotVGl0bGUwPUlUcmdQd3INCi1TeW1ib2wwPTAgNCAxDQotTGl2ZUVuYWJsZWQ9MA0KLUxpdmVGaWxlPVBvd2VyTG9nTGl2ZS5sb2cNCi1bU1dPVHJhY2VXaW5kb3ddDQotRm9yY2VkUGNTYW1wbGluZz0wDQotRm9yY2VkSW50ZXJydXB0TG9ncz0wDQotRm9yY2VkSXRtTG9ncz0wDQotRXZlbnRDUEk9MA0KLUV2ZW50RVhDPTANCi1FdmVudEZPTEQ9MA0KLUV2ZW50TFNVPTANCi1FdmVudFNMRUVQPTANCi1bUG93ZXJQcm9iZV0NCi1GcmVxdWVuY3k9MTAwMDANCi1Qcm9iZTA9SVRyZ1B3cg0KLVByb2JlU2V0dXAwPTIgMSAxIDIgMCAwDQotW3dhdGNoX2Zvcm1hdHNdDQotRm10MD17V30wOioodW5zaWduZWQgbG9uZyAqKTB4RTgyMDIwMDQJNAkwDQotRm10MT17V30wOioodW5zaWduZWQgbG9uZyopMHhlODIwMjAwNAk0CTANCi1GbXQyPXtXfTA6SU5UQ19JQ0RJUFIzMwk0CTANCi1bSW50ZXJydXB0TG9nXQ0KLUxvZ0VuYWJsZWQ9MA0KLVN1bUVuYWJsZWQ9MA0KLUdyYXBoRW5hYmxlZD0wDQotU2hvd1RpbWVMb2c9MQ0KLVNob3dUaW1lU3VtPTENCi1TdW1Tb3J0T3JkZXI9MA0KLVtEYXRhTG9nXQ0KLUxvZ0VuYWJsZWQ9MA0KLVN1bUVuYWJsZWQ9MA0KLUdyYXBoRW5hYmxlZD0wDQotU2hvd1RpbWVMb2c9MQ0KLVNob3dUaW1lU3VtPTENCi1bSW50ZXJydXB0c10NCi1FbmFibGVkPTENCi1bTWVtb3J5TWFwXQ0KLUVuYWJsZWQ9MA0KLUJhc2U9MA0KLVVzZUF1dG89MA0KLVR5cGVWaW9sYXRpb249MQ0KLVVuc3BlY1JhbmdlPTENCi1BY3Rpb25TdGF0ZT0xDQotW0xvZyBmaWxlXQ0KLUxvZ2dpbmdFbmFibGVkPV8gMA0KLUxvZ0ZpbGU9XyAiIg0KLUNhdGVnb3J5PV8gMA0KLVtUZXJtSU9Mb2ddDQotTG9nZ2luZ0VuYWJsZWQ9XyAwDQotTG9nRmlsZT1fICIiDQotW0NhbGxTdGFja0xvZ10NCi1FbmFibGVkPTANCi1bRHJpdmVyUHJvZmlsaW5nXQ0KLUVuYWJsZWQ9MA0KLU1vZGU9MA0KLUdyYXBoPTANCi1TeW1iaW9udD0wDQotRXhjbHVzaW9ucz0NCi1bRGlzYXNzZW1ibGUgbW9kZV0NCi1tb2RlPTANCi1bQnJlYWtwb2ludHMyXQ0KLUJwMD1fIDEgIkVNVUxfQ09ERSIgInskUFJPSl9ESVIkXC4uXFNvdXJjZVxtYWluLmN9LjEzNi4yIiAwIDAgMSAiIiAwICIiIDANCi1Db3VudD0xDQotW0FsaWFzZXNdDQotQ291bnQ9MA0KLVN1cHByZXNzRGlhbG9nPTANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzU3NTc5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L0lBUi9zZXR0aW5ncy9SVE9TRGVtby53c2R0CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KLTxXb3Jrc3BhY2U+DQotICA8Q29uZmlnRGljdGlvbmFyeT4NCi0gICAgDQotICAgIA0KLSAgICANCi0gIDxDdXJyZW50Q29uZmlncz48UHJvamVjdD5SVE9TRGVtby9SQU0gRGVidWc8L1Byb2plY3Q+PC9DdXJyZW50Q29uZmlncz48L0NvbmZpZ0RpY3Rpb25hcnk+DQotICA8RGVza3RvcD4NCi0gICAgPFN0YXRpYz4NCi0gICAgICA8V29ya3NwYWNlPg0KLSAgICAgICAgPENvbHVtbldpZHRocz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICA8Q29sdW1uMD4zMDY8L0NvbHVtbjA+PENvbHVtbjE+Mjc8L0NvbHVtbjE+PENvbHVtbjI+Mjc8L0NvbHVtbjI+PENvbHVtbjM+Mjc8L0NvbHVtbjM+PC9Db2x1bW5XaWR0aHM+DQotICAgICAgPC9Xb3Jrc3BhY2U+DQotICAgICAgPERlYnVnLUxvZz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48L0J1aWxkPg0KLSAgICA8VGVybWluYWxJTy8+PFNlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PENvbHVtbldpZHRoMD41ODA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+PENvbHVtbldpZHRoMj45OTQ8L0NvbHVtbldpZHRoMj48L1NlbGVjdC1BbWJpZ3VvdXMtRGVmaW5pdGlvbnM+PEJyZWFrcG9pbnRzPjxQcmVmZXJlZFdpbmRvd3M+PFBvc2l0aW9uPjM8L1Bvc2l0aW9uPjxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+PFNjcmVlblBvc1k+MDwvU2NyZWVuUG9zWT48V2luZG93cy8+PC9QcmVmZXJlZFdpbmRvd3M+PGNvbC1uYW1lcz48aXRlbT5CcmVha3BvaW50PC9pdGVtPjxpdGVtPl9JMDwvaXRlbT48L2NvbC1uYW1lcz48Y29sLXdpZHRocz48aXRlbT41MDA8L2l0ZW0+PGl0ZW0+MzU8L2l0ZW0+PC9jb2wtd2lkdGhzPjwvQnJlYWtwb2ludHM+PEZpbmQtQWxsLURlY2xhcmF0aW9ucz48Q29sdW1uV2lkdGgwPjU4MDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+ODI8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjk5NDwvQ29sdW1uV2lkdGgyPjwvRmluZC1BbGwtRGVjbGFyYXRpb25zPjwvU3RhdGljPg0KLSAgICA8V2luZG93cz4NCi0gICAgICANCi0gICAgICANCi0gICAgPFduZDI+DQotICAgICAgICA8VGFicz4NCi0gICAgICAgICAgPFRhYj4NCi0gICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTY4NzctNzc4NjwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+V29ya3NwYWNlPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PldvcmtzcGFjZTwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbj4NCi0gICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIDxOb2RlRGljdD48RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+PC9Ob2RlRGljdD48L1Nlc3Npb24+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMj48V25kMz4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yNzkxOS03OTg4PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTEzMzQzLTg2NzE8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8VGFiPjxJZGVudGl0eT5UYWJJRC05NTktNDM4PC9JZGVudGl0eT48VGFiTmFtZT5BbWJpZ3VvdXMgRGVmaW5pdGlvbnM8L1RhYk5hbWU+PEZhY3Rvcnk+U2VsZWN0LUFtYmlndW91cy1EZWZpbml0aW9uczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PFRhYj48SWRlbnRpdHk+VGFiSUQtMjE1NzktMTA2MTE8L0lkZW50aXR5PjxUYWJOYW1lPkZpbmQgQWxsIERlY2xhcmF0aW9uczwvVGFiTmFtZT48RmFjdG9yeT5GaW5kLUFsbC1EZWNsYXJhdGlvbnM8L0ZhY3Rvcnk+PFNlc3Npb24vPjwvVGFiPjwvVGFicz4NCi0gICAgICAgIA0KLSAgICAgIDxTZWxlY3RlZFRhYj4zPC9TZWxlY3RlZFRhYj48L1duZDM+PC9XaW5kb3dzPg0KLSAgICA8RWRpdG9yPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8UGFuZT48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXFNvdXJjZVxCbGlua3ktRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjQ8L1lQb3MyPjxTZWxTdGFydDI+MDwvU2VsU3RhcnQyPjxTZWxFbmQyPjA8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFwuLlxTb3VyY2VcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MTIyPC9ZUG9zMj48U2VsU3RhcnQyPjYzNDg8L1NlbFN0YXJ0Mj48U2VsRW5kMj42MzQ4PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcY3N0YXJ0dXAuczwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjEyMDwvWVBvczI+PFNlbFN0YXJ0Mj4zNjcyPC9TZWxTdGFydDI+PFNlbEVuZDI+MzY3MjwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXExvd0xldmVsSW5pdGlhbGlzZS5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MjM8L1lQb3MyPjxTZWxTdGFydDI+MTA2NzwvU2VsU3RhcnQyPjxTZWxFbmQyPjEwODI8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4zPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtb2R1bGVzXGFybXY3YV9jcDE1X2Rydi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+MjgzPC9ZUG9zMj48U2VsU3RhcnQyPjg1MjM8L1NlbFN0YXJ0Mj48U2VsRW5kMj44NTIzPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXExFRHMuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY0PC9ZUG9zMj48U2VsU3RhcnQyPjQyNDc8L1NlbFN0YXJ0Mj48U2VsRW5kMj40MjQ3PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cU291cmNlXFJlbmVzYXNGaWxlc1xib2FyZF9zZXR0aW5nc1xzaW9jaGFyLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42MzwvWVBvczI+PFNlbFN0YXJ0Mj40NjY5PC9TZWxTdGFydDI+PFNlbEVuZDI+NDY2OTwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXFNvdXJjZVxGdWxsLURlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4zNDA8L1lQb3MyPjxTZWxTdGFydDI+MTc1NTQ8L1NlbFN0YXJ0Mj48U2VsRW5kMj4xNzU1NDwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMEQ2NzJBOD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDBENjcyQTg+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzLz48L1JvdzE+PC9Ub3A+PExlZnQ+PFJvdzA+PFNpemVzPjxXbmQyPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjY5MzwvQm90dG9tPjxSaWdodD4zODA8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjIwMDwveHNjcmVlbj48eXNjcmVlbj4yMDA8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTE5MDQ4PC9zaXplSG9yekNYPjxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4yMjczODE8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+NzA2MzAxPC9zaXplVmVydENZPjwvUmVjdD48L1duZDI+PC9TaXplcz48L1JvdzA+PC9MZWZ0PjxSaWdodD48Um93MD48U2l6ZXMvPjwvUm93MD48L1JpZ2h0PjxCb3R0b20+PFJvdzA+PFNpemVzPjxXbmQzPjxSZWN0PjxUb3A+LTI8L1RvcD48TGVmdD4tMjwvTGVmdD48Qm90dG9tPjI0NzwvQm90dG9tPjxSaWdodD4xNjgyPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4xNjg0PC94c2NyZWVuPjx5c2NyZWVuPjI0OTwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMDAyMzgxPC9zaXplSG9yekNYPjxzaXplSG9yekNZPjI1MzA0OTwvc2l6ZUhvcnpDWT48c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+PHNpemVWZXJ0Q1k+MjAzMjUyPC9zaXplVmVydENZPjwvUmVjdD48L1duZDM+PC9TaXplcz48L1JvdzA+PC9Cb3R0b20+PEZsb2F0PjxTaXplcy8+PC9GbG9hdD48L1Bvc2l0aW9ucz4NCi0gIDwvRGVza3RvcD4NCi08L1dvcmtzcGFjZT4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW9fUkFNIERlYnVnLmpsaW5rIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvSUFSL3NldHRpbmdzL1JUT1NEZW1vX1JBTSBEZWJ1Zy5qbGluawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcyMmNhMS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9JQVIvc2V0dGluZ3MvUlRPU0RlbW9fUkFNIERlYnVnLmpsaW5rCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotW0JSRUFLUE9JTlRTXQ0KLVNob3dJbmZvV2luID0gMQ0KLUVuYWJsZUZsYXNoQlAgPSAyDQotQlBEdXJpbmdFeGVjdXRpb24gPSAwDQotW0NGSV0NCi1DRklTaXplID0gMHgwMA0KLUNGSUFkZHIgPSAweDAwDQotW0NQVV0NCi1PdmVycmlkZU1lbU1hcCA9IDANCi1BbGxvd1NpbXVsYXRpb24gPSAxDQotU2NyaXB0RmlsZT0iIg0KLVtGTEFTSF0NCi1DYWNoZUV4Y2x1ZGVTaXplID0gMHgwMA0KLUNhY2hlRXhjbHVkZUFkZHIgPSAweDAwDQotTWluTnVtQnl0ZXNGbGFzaERMID0gMA0KLVNraXBQcm9nT25DUkNNYXRjaCA9IDENCi1WZXJpZnlEb3dubG9hZCA9IDENCi1BbGxvd0NhY2hpbmcgPSAxDQotRW5hYmxlRmxhc2hETCA9IDINCi1PdmVycmlkZSA9IDENCi1EZXZpY2U9IlVuc3BlY2lmaWVkIg0KLVtHRU5FUkFMXQ0KLVdvcmtSQU1TaXplID0gMHgwMA0KLVdvcmtSQU1BZGRyID0gMHgwMA0KLVJBTVVzYWdlTGltaXQgPSAweDAwDQotW1NXT10NCi1TV09Mb2dGaWxlPSIiDQotW01FTV0NCi1SZE92ZXJyaWRlT3JNYXNrID0gMHgwMA0KLVJkT3ZlcnJpZGVBbmRNYXNrID0gMHhGRkZGRkZGRg0KLVJkT3ZlcnJpZGVBZGRyID0gMHhGRkZGRkZGRg0KLVdyT3ZlcnJpZGVPck1hc2sgPSAweDAwDQotV3JPdmVycmlkZUFuZE1hc2sgPSAweEZGRkZGRkZGDQotV3JPdmVycmlkZUFkZHIgPSAweEZGRkZGRkZGDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvUmVhZE1lLnR4dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1JlYWRNZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2MTAwMQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1JlYWRNZS50eHQKQEAgLTAsMCArMSw3IEBACitUaGlzIGRlbW8gd2FzIHJlbW92ZWQgaW4gRnJlZVJUT1MgVjEwLjAuMCBhcyBGcmVlUlRPUytGQVQgU0wgd2FzIG5vdCBkaXN0cmlidXRlZA0KK2luIHRoYXQgcmVsZWFzZS4gIFRoZSBmdWxsIEZyZWVSVE9TK0ZBVCBwcm9kdWN0IChhcyBvcHBvc2VkIHRvIHRoZSAnU0wnIFN1cGVyDQorTGVhbiBwcm9kdWN0KSBpcyBzdGlsbCBhdmFpbGFibGUuICBQcmV2aW91cyB2ZXJzaW9ucyBvZiBGcmVlUlRPUyBjYW4gYmUNCitkb3dubG9hZGVkIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mcmVlcnRvcy9maWxlcy9GcmVlUlRPUy8NCisNCisNCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvQmxpbmt5LURlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9CbGlua3ktRGVtby9tYWluX2JsaW5reS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2M2Q4OTM1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9CbGlua3ktRGVtby9tYWluX2JsaW5reS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQotICogcHJvamVjdCwgYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCi0gKiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaW4gbWFpbi5jIGlzIHVzZWQgdG8gc2VsZWN0DQotICogYmV0d2VlbiB0aGUgdHdvLiAgU2VlIHRoZSBub3RlcyBvbiB1c2luZyBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZDQotICogaW4gbWFpbi5jLiAgVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIHNpbXBseSBibGlua3kgc3R5bGUgdmVyc2lvbi4NCi0gKg0KLSAqIE5PVEUgMjogIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQ0KLSAqIGJhc2ljIGRlbW8uICBHZW5lcmljIGZ1bmN0aW9ucywgc3VjaCBGcmVlUlRPUyBob29rIGZ1bmN0aW9ucywgYW5kIGZ1bmN0aW9ucw0KLSAqIHJlcXVpcmVkIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUgYXJlIGRlZmluZWQgaW4gbWFpbi5jLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIG1haW5fYmxpbmt5KCkgY3JlYXRlcyBvbmUgcXVldWUsIGFuZCB0d28gdGFza3MuICBJdCB0aGVuIHN0YXJ0cyB0aGUNCi0gKiBzY2hlZHVsZXIuDQotICoNCi0gKiBUaGUgUXVldWUgU2VuZCBUYXNrOg0KLSAqIFRoZSBxdWV1ZSBzZW5kIHRhc2sgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIHBydlF1ZXVlU2VuZFRhc2soKSBmdW5jdGlvbiBpbg0KLSAqIHRoaXMgZmlsZS4gIHBydlF1ZXVlU2VuZFRhc2soKSBzaXRzIGluIGEgbG9vcCB0aGF0IGNhdXNlcyBpdCB0byByZXBlYXRlZGx5DQotICogYmxvY2sgZm9yIDIwMCBtaWxsaXNlY29uZHMsIGJlZm9yZSBzZW5kaW5nIHRoZSB2YWx1ZSAxMDAgdG8gdGhlIHF1ZXVlIHRoYXQNCi0gKiB3YXMgY3JlYXRlZCB3aXRoaW4gbWFpbl9ibGlua3koKS4gIE9uY2UgdGhlIHZhbHVlIGlzIHNlbnQsIHRoZSB0YXNrIGxvb3BzDQotICogYmFjayBhcm91bmQgdG8gYmxvY2sgZm9yIGFub3RoZXIgMjAwIG1pbGxpc2Vjb25kcy4uLmFuZCBzbyBvbi4NCi0gKg0KLSAqIFRoZSBRdWV1ZSBSZWNlaXZlIFRhc2s6DQotICogVGhlIHF1ZXVlIHJlY2VpdmUgdGFzayBpcyBpbXBsZW1lbnRlZCBieSB0aGUgcHJ2UXVldWVSZWNlaXZlVGFzaygpIGZ1bmN0aW9uDQotICogaW4gdGhpcyBmaWxlLiAgcHJ2UXVldWVSZWNlaXZlVGFzaygpIHNpdHMgaW4gYSBsb29wIHdoZXJlIGl0IHJlcGVhdGVkbHkNCi0gKiBibG9ja3Mgb24gYXR0ZW1wdHMgdG8gcmVhZCBkYXRhIGZyb20gdGhlIHF1ZXVlIHRoYXQgd2FzIGNyZWF0ZWQgd2l0aGluDQotICogbWFpbl9ibGlua3koKS4gIFdoZW4gZGF0YSBpcyByZWNlaXZlZCwgdGhlIHRhc2sgY2hlY2tzIHRoZSB2YWx1ZSBvZiB0aGUNCi0gKiBkYXRhLCBhbmQgaWYgdGhlIHZhbHVlIGVxdWFscyB0aGUgZXhwZWN0ZWQgMTAwLCB0b2dnbGVzIGFuIExFRC4gIFRoZSAnYmxvY2sNCi0gKiB0aW1lJyBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoZSBxdWV1ZSByZWNlaXZlIGZ1bmN0aW9uIHNwZWNpZmllcyB0aGF0IHRoZQ0KLSAqIHRhc2sgc2hvdWxkIGJlIGhlbGQgaW4gdGhlIEJsb2NrZWQgc3RhdGUgaW5kZWZpbml0ZWx5IHRvIHdhaXQgZm9yIGRhdGEgdG8NCi0gKiBiZSBhdmFpbGFibGUgb24gdGhlIHF1ZXVlLiAgVGhlIHF1ZXVlIHJlY2VpdmUgdGFzayB3aWxsIG9ubHkgbGVhdmUgdGhlDQotICogQmxvY2tlZCBzdGF0ZSB3aGVuIHRoZSBxdWV1ZSBzZW5kIHRhc2sgd3JpdGVzIHRvIHRoZSBxdWV1ZS4gIEFzIHRoZSBxdWV1ZQ0KLSAqIHNlbmQgdGFzayB3cml0ZXMgdG8gdGhlIHF1ZXVlIGV2ZXJ5IDIwMCBtaWxsaXNlY29uZHMsIHRoZSBxdWV1ZSByZWNlaXZlDQotICogdGFzayBsZWF2ZXMgdGhlIEJsb2NrZWQgc3RhdGUgZXZlcnkgMjAwIG1pbGxpc2Vjb25kcywgYW5kIHRoZXJlZm9yZSB0b2dnbGVzDQotICogdGhlIExFRCBldmVyeSAyMDAgbWlsbGlzZWNvbmRzLg0KLSAqLw0KLQ0KLS8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0NCi0vKiBTdGFuZGFyZCBkZW1vIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJwYXJ0ZXN0LmgiDQotDQotLyogUHJpb3JpdGllcyBhdCB3aGljaCB0aGUgdGFza3MgYXJlIGNyZWF0ZWQuICovDQotI2RlZmluZSBtYWluUVVFVUVfUkVDRUlWRV9UQVNLX1BSSU9SSVRZCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyICkNCi0jZGVmaW5lCW1haW5RVUVVRV9TRU5EX1RBU0tfUFJJT1JJVFkJCSggdHNrSURMRV9QUklPUklUWSArIDEgKQ0KLQ0KLS8qIFRoZSByYXRlIGF0IHdoaWNoIGRhdGEgaXMgc2VudCB0byB0aGUgcXVldWUuICBUaGUgMjAwbXMgdmFsdWUgaXMgY29udmVydGVkDQotdG8gdGlja3MgdXNpbmcgdGhlIHBvcnRUSUNLX1BFUklPRF9NUyBjb25zdGFudC4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9TRU5EX0ZSRVFVRU5DWV9NUwkJCSggMjAwIC8gcG9ydFRJQ0tfUEVSSU9EX01TICkNCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoZSBxdWV1ZSBjYW4gaG9sZC4gIFRoaXMgaXMgMSBhcyB0aGUgcmVjZWl2ZSB0YXNrDQotd2lsbCByZW1vdmUgaXRlbXMgYXMgdGhleSBhcmUgYWRkZWQsIG1lYW5pbmcgdGhlIHNlbmQgdGFzayBzaG91bGQgYWx3YXlzIGZpbmQNCi10aGUgcXVldWUgZW1wdHkuICovDQotI2RlZmluZSBtYWluUVVFVUVfTEVOR1RICQkJCQkoIDEgKQ0KLQ0KLS8qIFRoZSBMRUQgdG9nZ2xlZCBieSB0aGUgUnggdGFzay4gKi8NCi0jZGVmaW5lIG1haW5UQVNLX0xFRAkJCQkJCSggMCApDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBUaGUgdGFza3MgYXMgZGVzY3JpYmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZRdWV1ZVJlY2VpdmVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCi1zdGF0aWMgdm9pZCBwcnZRdWV1ZVNlbmRUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCi0NCi0vKg0KLSAqIENhbGxlZCBieSBtYWluKCkgdG8gY3JlYXRlIHRoZSBzaW1wbHkgYmxpbmt5IHN0eWxlIGFwcGxpY2F0aW9uIGlmDQotICogbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBzZXQgdG8gMS4NCi0gKi8NCi12b2lkIG1haW5fYmxpbmt5KCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogVGhlIHF1ZXVlIHVzZWQgYnkgYm90aCB0YXNrcy4gKi8NCi1zdGF0aWMgUXVldWVIYW5kbGVfdCB4UXVldWUgPSBOVUxMOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgbWFpbl9ibGlua3koIHZvaWQgKQ0KLXsNCi0JLyogQ3JlYXRlIHRoZSBxdWV1ZS4gKi8NCi0JeFF1ZXVlID0geFF1ZXVlQ3JlYXRlKCBtYWluUVVFVUVfTEVOR1RILCBzaXplb2YoIHVuc2lnbmVkIGxvbmcgKSApOw0KLQ0KLQlpZiggeFF1ZXVlICE9IE5VTEwgKQ0KLQl7DQotCQkvKiBTdGFydCB0aGUgdHdvIHRhc2tzIGFzIGRlc2NyaWJlZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzDQotCQlmaWxlLiAqLw0KLQkJeFRhc2tDcmVhdGUoIHBydlF1ZXVlUmVjZWl2ZVRhc2ssCQkJCS8qIFRoZSBmdW5jdGlvbiB0aGF0IGltcGxlbWVudHMgdGhlIHRhc2suICovDQotCQkJCQkiUngiLCAJCQkJCQkJCS8qIFRoZSB0ZXh0IG5hbWUgYXNzaWduZWQgdG8gdGhlIHRhc2sgLSBmb3IgZGVidWcgb25seSBhcyBpdCBpcyBub3QgdXNlZCBieSB0aGUga2VybmVsLiAqLw0KLQkJCQkJY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAJCQkvKiBUaGUgc2l6ZSBvZiB0aGUgc3RhY2sgdG8gYWxsb2NhdGUgdG8gdGhlIHRhc2suICovDQotCQkJCQlOVUxMLCAJCQkJCQkJCS8qIFRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoZSB0YXNrIC0gbm90IHVzZWQgaW4gdGhpcyBjYXNlLiAqLw0KLQkJCQkJbWFpblFVRVVFX1JFQ0VJVkVfVEFTS19QUklPUklUWSwgCS8qIFRoZSBwcmlvcml0eSBhc3NpZ25lZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwgKTsJCQkJCQkJCS8qIFRoZSB0YXNrIGhhbmRsZSBpcyBub3QgcmVxdWlyZWQsIHNvIE5VTEwgaXMgcGFzc2VkLiAqLw0KLQ0KLQkJeFRhc2tDcmVhdGUoIHBydlF1ZXVlU2VuZFRhc2ssICJUWCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgbWFpblFVRVVFX1NFTkRfVEFTS19QUklPUklUWSwgTlVMTCApOw0KLQ0KLQkJLyogU3RhcnQgdGhlIHRhc2tzIGFuZCB0aW1lciBydW5uaW5nLiAqLw0KLQkJdlRhc2tTdGFydFNjaGVkdWxlcigpOw0KLQl9DQotDQotCS8qIElmIGFsbCBpcyB3ZWxsLCB0aGUgc2NoZWR1bGVyIHdpbGwgbm93IGJlIHJ1bm5pbmcsIGFuZCB0aGUgZm9sbG93aW5nDQotCWxpbmUgd2lsbCBuZXZlciBiZSByZWFjaGVkLiAgSWYgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgZXhlY3V0ZSwgdGhlbg0KLQl0aGVyZSB3YXMgZWl0aGVyIGluc3VmZmljaWVudCBGcmVlUlRPUyBoZWFwIG1lbW9yeSBhdmFpbGFibGUgZm9yIHRoZSBpZGxlDQotCWFuZC9vciB0aW1lciB0YXNrcyB0byBiZSBjcmVhdGVkLCBvciB2VGFza1N0YXJ0U2NoZWR1bGVyKCkgd2FzIGNhbGxlZCBmcm9tDQotCVVzZXIgbW9kZS4gIFNlZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc2VjdGlvbiBvbiB0aGUgRnJlZVJUT1Mgd2ViIHNpdGUgZm9yDQotCW1vcmUgZGV0YWlscyBvbiB0aGUgRnJlZVJUT1MgaGVhcCBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbC4gIFRoZQ0KLQltb2RlIGZyb20gd2hpY2ggbWFpbigpIGlzIGNhbGxlZCBpcyBzZXQgaW4gdGhlIEMgc3RhcnQgdXAgY29kZSBhbmQgbXVzdCBiZQ0KLQlhIHByaXZpbGVnZWQgbW9kZSAobm90IHVzZXIgbW9kZSkuICovDQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UXVldWVTZW5kVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCi17DQotVGlja1R5cGVfdCB4TmV4dFdha2VUaW1lOw0KLWNvbnN0IHVuc2lnbmVkIGxvbmcgdWxWYWx1ZVRvU2VuZCA9IDEwMFVMOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyLiAqLw0KLQkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQotDQotCS8qIEluaXRpYWxpc2UgeE5leHRXYWtlVGltZSAtIHRoaXMgb25seSBuZWVkcyB0byBiZSBkb25lIG9uY2UuICovDQotCXhOZXh0V2FrZVRpbWUgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KLQ0KLQlmb3IoIDs7ICkNCi0Jew0KLQkJLyogUGxhY2UgdGhpcyB0YXNrIGluIHRoZSBibG9ja2VkIHN0YXRlIHVudGlsIGl0IGlzIHRpbWUgdG8gcnVuIGFnYWluLiAqLw0KLQkJdlRhc2tEZWxheVVudGlsKCAmeE5leHRXYWtlVGltZSwgbWFpblFVRVVFX1NFTkRfRlJFUVVFTkNZX01TICk7DQotDQotCQkvKiBTZW5kIHRvIHRoZSBxdWV1ZSAtIGNhdXNpbmcgdGhlIHF1ZXVlIHJlY2VpdmUgdGFzayB0byB1bmJsb2NrIGFuZA0KLQkJdG9nZ2xlIHRoZSBMRUQuICAwIGlzIHVzZWQgYXMgdGhlIGJsb2NrIHRpbWUgc28gdGhlIHNlbmRpbmcgb3BlcmF0aW9uDQotCQl3aWxsIG5vdCBibG9jayAtIGl0IHNob3VsZG4ndCBuZWVkIHRvIGJsb2NrIGFzIHRoZSBxdWV1ZSBzaG91bGQgYWx3YXlzDQotCQliZSBlbXB0eSBhdCB0aGlzIHBvaW50IGluIHRoZSBjb2RlLiAqLw0KLQkJeFF1ZXVlU2VuZCggeFF1ZXVlLCAmdWxWYWx1ZVRvU2VuZCwgMFUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZRdWV1ZVJlY2VpdmVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi11bnNpZ25lZCBsb25nIHVsUmVjZWl2ZWRWYWx1ZTsNCi1jb25zdCB1bnNpZ25lZCBsb25nIHVsRXhwZWN0ZWRWYWx1ZSA9IDEwMFVMOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyLiAqLw0KLQkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBXYWl0IHVudGlsIHNvbWV0aGluZyBhcnJpdmVzIGluIHRoZSBxdWV1ZSAtIHRoaXMgdGFzayB3aWxsIGJsb2NrDQotCQlpbmRlZmluaXRlbHkgcHJvdmlkZWQgSU5DTFVERV92VGFza1N1c3BlbmQgaXMgc2V0IHRvIDEgaW4NCi0JCUZyZWVSVE9TQ29uZmlnLmguICovDQotCQl4UXVldWVSZWNlaXZlKCB4UXVldWUsICZ1bFJlY2VpdmVkVmFsdWUsIHBvcnRNQVhfREVMQVkgKTsNCi0NCi0JCS8qICBUbyBnZXQgaGVyZSBzb21ldGhpbmcgbXVzdCBoYXZlIGJlZW4gcmVjZWl2ZWQgZnJvbSB0aGUgcXVldWUsIGJ1dA0KLQkJaXMgaXQgdGhlIGV4cGVjdGVkIHZhbHVlPyAgSWYgaXQgaXMsIHRvZ2dsZSB0aGUgTEVELiAqLw0KLQkJaWYoIHVsUmVjZWl2ZWRWYWx1ZSA9PSB1bEV4cGVjdGVkVmFsdWUgKQ0KLQkJew0KLQkJCXZQYXJUZXN0VG9nZ2xlTEVEKCBtYWluVEFTS19MRUQgKTsNCi0JCQl1bFJlY2VpdmVkVmFsdWUgPSAwVTsNCi0JCX0NCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTNmYzM5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjExICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLSNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCi0jZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIEFwcGxpY2F0aW9uIHNwZWNpZmljIGRlZmluaXRpb25zLg0KLSAqDQotICogVGhlc2UgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIGFkanVzdGVkIGZvciB5b3VyIHBhcnRpY3VsYXIgaGFyZHdhcmUgYW5kDQotICogYXBwbGljYXRpb24gcmVxdWlyZW1lbnRzLg0KLSAqDQotICogVEhFU0UgUEFSQU1FVEVSUyBBUkUgREVTQ1JJQkVEIFdJVEhJTiBUSEUgJ0NPTkZJR1VSQVRJT04nIFNFQ1RJT04gT0YgVEhFDQotICogRnJlZVJUT1MgQVBJIERPQ1VNRU5UQVRJT04gQVZBSUxBQkxFIE9OIFRIRSBGcmVlUlRPUy5vcmcgV0VCIFNJVEUuDQotICoNCi0gKiBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTEwLmh0bWwuDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRoZSBGcmVlUlRPUyBDb3J0ZXgtQSBwb3J0IGltcGxlbWVudHMgYSBmdWxsIGludGVycnVwdCBuZXN0aW5nIG1vZGVsLg0KLSAqDQotICogSW50ZXJydXB0cyB0aGF0IGFyZSBhc3NpZ25lZCBhIHByaW9yaXR5IGF0IG9yIGJlbG93DQotICogY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSAod2hpY2ggY291bnRlci1pbnR1aXRpdmVseSBpbiB0aGUgQVJNDQotICogZ2VuZXJpYyBpbnRlcnJ1cHQgY29udHJvbGxlciBbR0lDXSBtZWFucyBhIHByaW9yaXR5IHRoYXQgaGFzIGEgbnVtZXJpY2FsDQotICogdmFsdWUgYWJvdmUgY29uZmlnTUFYX0FQSV9DQUxMX0lOVEVSUlVQVF9QUklPUklUWSkgY2FuIGNhbGwgRnJlZVJUT1Mgc2FmZSBBUEkNCi0gKiBmdW5jdGlvbnMgYW5kIHdpbGwgbmVzdC4NCi0gKg0KLSAqIEludGVycnVwdHMgdGhhdCBhcmUgYXNzaWduZWQgYSBwcmlvcml0eSBhYm92ZQ0KLSAqIGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKHdoaWNoIGluIHRoZSBHSUMgbWVhbnMgYSBudW1lcmljYWwNCi0gKiB2YWx1ZSBiZWxvdyBjb25maWdNQVhfQVBJX0NBTExfSU5URVJSVVBUX1BSSU9SSVRZKSBjYW5ub3QgY2FsbCBhbnkgRnJlZVJUT1MNCi0gKiBBUEkgZnVuY3Rpb25zLCB3aWxsIG5lc3QsIGFuZCB3aWxsIG5vdCBiZSBtYXNrZWQgYnkgRnJlZVJUT1MgY3JpdGljYWwNCi0gKiBzZWN0aW9ucyAoYWx0aG91Z2ggaXQgaXMgbmVjZXNzYXJ5IGZvciBpbnRlcnJ1cHRzIHRvIGJlIGdsb2JhbGx5IGRpc2FibGVkDQotICogZXh0cmVtZWx5IGJyaWVmbHkgYXMgdGhlIGludGVycnVwdCBtYXNrIGlzIHVwZGF0ZWQgaW4gdGhlIEdJQykuDQotICoNCi0gKiBGcmVlUlRPUyBmdW5jdGlvbnMgdGhhdCBjYW4gYmUgY2FsbGVkIGZyb20gYW4gaW50ZXJydXB0IGFyZSB0aG9zZSB0aGF0IGVuZCBpbg0KLSAqICJGcm9tSVNSIi4gIEZyZWVSVE9TIG1haW50YWlucyBhIHNlcGFyYXRlIGludGVycnVwdCBzYWZlIEFQSSB0byBlbmFibGUNCi0gKiBpbnRlcnJ1cHQgZW50cnkgdG8gYmUgc2hvcnRlciwgZmFzdGVyLCBzaW1wbGVyIGFuZCBzbWFsbGVyLg0KLSAqDQotICogVGhlIFJlbmVzYXMgUlogaW1wbGVtZW50cyAzMiB1bmlxdWUgaW50ZXJydXB0IHByaW9yaXRpZXMuICBGb3IgdGhlIHB1cnBvc2Ugb2YNCi0gKiBzZXR0aW5nIGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgMzEgcmVwcmVzZW50cyB0aGUgbG93ZXN0DQotICogcHJpb3JpdHkuDQotICovDQotI2RlZmluZSBjb25maWdNQVhfQVBJX0NBTExfSU5URVJSVVBUX1BSSU9SSVRZCTI1DQotDQotDQotI2RlZmluZSBjb25maWdDUFVfQ0xPQ0tfSFoJCQkJCQkxMDAwMDAwMDBVTA0KLSNkZWZpbmUgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9USUNLTEVTU19JRExFCQkJCQkwDQotI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJCQkoICggVGlja1R5cGVfdCApIDEwMDAgKQ0KLSNkZWZpbmUgY29uZmlnUEVSSVBIRVJBTF9DTE9DS19IWiAgCQkJCSggMzMzMzMwMDBVTCApDQotI2RlZmluZSBjb25maWdVU0VfUFJFRU1QVElPTgkJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX0lETEVfSE9PSwkJCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9USUNLX0hPT0sJCQkJCQkxDQotI2RlZmluZSBjb25maWdNQVhfUFJJT1JJVElFUwkJCQkJKCA1ICkNCi0jZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJCQkoICggdW5zaWduZWQgc2hvcnQgKSAxNjAgKQ0KLSNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJCQkoICggc2l6ZV90ICkgKCAzODkxMiApICkNCi0jZGVmaW5lIGNvbmZpZ01BWF9UQVNLX05BTUVfTEVOCQkJCQkoIDEwICkNCi0jZGVmaW5lIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWQkJCQkxDQotI2RlZmluZSBjb25maWdVU0VfMTZfQklUX1RJQ0tTCQkJCQkwDQotI2RlZmluZSBjb25maWdJRExFX1NIT1VMRF9ZSUVMRAkJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX01VVEVYRVMJCQkJCQkxDQotI2RlZmluZSBjb25maWdRVUVVRV9SRUdJU1RSWV9TSVpFCQkJCTgNCi0jZGVmaW5lIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVwkJCTINCi0jZGVmaW5lIGNvbmZpZ1VTRV9SRUNVUlNJVkVfTVVURVhFUwkJCQkxDQotI2RlZmluZSBjb25maWdVU0VfTUFMTE9DX0ZBSUxFRF9IT09LCQkJMA0KLSNkZWZpbmUgY29uZmlnVVNFX0FQUExJQ0FUSU9OX1RBU0tfVEFHCQkJMA0KLSNkZWZpbmUgY29uZmlnVVNFX0NPVU5USU5HX1NFTUFQSE9SRVMJCQkxDQotDQotLyogQ28tcm91dGluZSBkZWZpbml0aW9ucy4gKi8NCi0jZGVmaW5lIGNvbmZpZ1VTRV9DT19ST1VUSU5FUyAJCQkwDQotI2RlZmluZSBjb25maWdNQVhfQ09fUk9VVElORV9QUklPUklUSUVTICggMiApDQotDQotLyogU29mdHdhcmUgdGltZXIgZGVmaW5pdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfVElNRVJTCQkJCTENCi0jZGVmaW5lIGNvbmZpZ1RJTUVSX1RBU0tfUFJJT1JJVFkJCSggY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAxICkNCi0jZGVmaW5lIGNvbmZpZ1RJTUVSX1FVRVVFX0xFTkdUSAkJNQ0KLSNkZWZpbmUgY29uZmlnVElNRVJfVEFTS19TVEFDS19ERVBUSAkoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSAqIDIgKQ0KLQ0KLS8qIFNldCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIHRvIDEgdG8gaW5jbHVkZSB0aGUgQVBJIGZ1bmN0aW9uLCBvciB6ZXJvDQotdG8gZXhjbHVkZSB0aGUgQVBJIGZ1bmN0aW9uLiAqLw0KLSNkZWZpbmUgSU5DTFVERV92VGFza1ByaW9yaXR5U2V0CQkxDQotI2RlZmluZSBJTkNMVURFX3V4VGFza1ByaW9yaXR5R2V0CQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsZXRlCQkJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tDbGVhblVwUmVzb3VyY2VzCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tTdXNwZW5kCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0RlbGF5VW50aWwJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsYXkJCQkJMQ0KLQ0KLS8qIFRoaXMgZGVtbyBtYWtlcyB1c2Ugb2Ygb25lIG9yIG1vcmUgZXhhbXBsZSBzdGF0cyBmb3JtYXR0aW5nIGZ1bmN0aW9ucy4gIFRoZXNlDQotZm9ybWF0IHRoZSByYXcgZGF0YSBwcm92aWRlZCBieSB0aGUgdXhUYXNrR2V0U3lzdGVtU3RhdGUoKSBmdW5jdGlvbiBpbiB0byBodW1hbg0KLXJlYWRhYmxlIEFTQ0lJIGZvcm0uICBTZWUgdGhlIG5vdGVzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB2VGFza0xpc3QoKSB3aXRoaW4NCi1GcmVlUlRPUy9Tb3VyY2UvdGFza3MuYyBmb3IgbGltaXRhdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfU1RBVFNfRk9STUFUVElOR19GVU5DVElPTlMJMQ0KLQ0KLS8qIFByZXZlbnQgQyBjb2RlIGJlaW5nIGluY2x1ZGVkIGluIGFzc2VtYmx5IGZpbGVzIHdoZW4gdGhlIElBUiBjb21waWxlciBpcw0KLXVzZWQuICovDQotI2lmbmRlZiBfX0lBU01BUk1fXw0KLQkvKiBSdW4gdGltZSBzdGF0cyBnYXRoZXJpbmcgZGVmaW5pdGlvbnMuICovDQotCXVuc2lnbmVkIGxvbmcgdWxHZXRSdW5UaW1lQ291bnRlclZhbHVlKCB2b2lkICk7DQotCXZvaWQgdkluaXRpYWxpc2VSdW5UaW1lU3RhdHMoIHZvaWQgKTsNCi0NCi0JI2RlZmluZSBjb25maWdHRU5FUkFURV9SVU5fVElNRV9TVEFUUwkxDQotCSNkZWZpbmUgcG9ydENPTkZJR1VSRV9USU1FUl9GT1JfUlVOX1RJTUVfU1RBVFMoKSB2SW5pdGlhbGlzZVJ1blRpbWVTdGF0cygpDQotCSNkZWZpbmUgcG9ydEdFVF9SVU5fVElNRV9DT1VOVEVSX1ZBTFVFKCkgdWxHZXRSdW5UaW1lQ291bnRlclZhbHVlKCkNCi0NCi0JLyogVGhlIHNpemUgb2YgdGhlIGdsb2JhbCBvdXRwdXQgYnVmZmVyIHRoYXQgaXMgYXZhaWxhYmxlIGZvciB1c2Ugd2hlbiB0aGVyZQ0KLQlhcmUgbXVsdGlwbGUgY29tbWFuZCBpbnRlcnByZXRlcnMgcnVubmluZyBhdCBvbmNlIChmb3IgZXhhbXBsZSwgb25lIG9uIGEgVUFSVA0KLQlhbmQgb25lIG9uIFRDUC9JUCkuICBUaGlzIGlzIGRvbmUgdG8gcHJldmVudCBhbiBvdXRwdXQgYnVmZmVyIGJlaW5nIGRlZmluZWQgYnkNCi0JZWFjaCBpbXBsZW1lbnRhdGlvbiAtIHdoaWNoIHdvdWxkIHdhc3RlIFJBTS4gIEluIHRoaXMgY2FzZSwgdGhlcmUgaXMgb25seSBvbmUNCi0JY29tbWFuZCBpbnRlcnByZXRlciBydW5uaW5nLiAqLw0KLQkjZGVmaW5lIGNvbmZpZ0NPTU1BTkRfSU5UX01BWF9PVVRQVVRfU0laRSAyMDk2DQotDQotCS8qIE5vcm1hbCBhc3NlcnQoKSBzZW1hbnRpY3Mgd2l0aG91dCByZWx5aW5nIG9uIHRoZSBwcm92aXNpb24gb2YgYW4gYXNzZXJ0LmgNCi0JaGVhZGVyIGZpbGUuICovDQotCXZvaWQgdkFzc2VydENhbGxlZCggY29uc3QgY2hhciAqIHBjRmlsZSwgdW5zaWduZWQgbG9uZyB1bExpbmUgKTsNCi0JI2RlZmluZSBjb25maWdBU1NFUlQoIHggKSBpZiggKCB4ICkgPT0gMCApIHZBc3NlcnRDYWxsZWQoIF9fRklMRV9fLCBfX0xJTkVfXyApOw0KLQ0KLQ0KLQ0KLQkvKioqKioqIEhhcmR3YXJlIHNwZWNpZmljIHNldHRpbmdzLiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQkvKg0KLQkgKiBUaGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGEgZnVuY3Rpb24gdGhhdCBjb25maWd1cmVzIGEgcGVyaXBoZXJhbCB0bw0KLQkgKiBjcmVhdGUgdGhlIEZyZWVSVE9TIHRpY2sgaW50ZXJydXB0LCB0aGVuIGRlZmluZSBjb25maWdTRVRVUF9USUNLX0lOVEVSUlVQVCgpDQotCSAqIGluIEZyZWVSVE9TQ29uZmlnLmggdG8gY2FsbCB0aGUgZnVuY3Rpb24uICBUaGlzIGZpbGUgY29udGFpbnMgYSBmdW5jdGlvbg0KLQkgKiB0aGF0IGlzIHN1aXRhYmxlIGZvciB1c2Ugb24gdGhlIFJlbmVzYXMgUlogTVBVLiAgRnJlZVJUT1NfVGlja19IYW5kbGVyKCkgbXVzdA0KLQkgKiBiZSBpbnN0YWxsZWQgYXMgdGhlIHBlcmlwaGVyYWwncyBpbnRlcnJ1cHQgaGFuZGxlci4NCi0JICovDQotCXZvaWQgdkNvbmZpZ3VyZVRpY2tJbnRlcnJ1cHQoIHZvaWQgKTsNCi0JI2RlZmluZSBjb25maWdTRVRVUF9USUNLX0lOVEVSUlVQVCgpIHZDb25maWd1cmVUaWNrSW50ZXJydXB0KCkNCi0jZW5kaWYgLyogX19JQVNNQVJNX18gKi8NCi0NCi0vKiBUaGUgZm9sbG93aW5nIGNvbnN0YW50cyBkZXNjcmliZSB0aGUgaGFyZHdhcmUsIGFuZCBhcmUgY29ycmVjdCBmb3IgdGhlDQotUmVuZXNhcyBSWiBNUFUuICovDQotI2RlZmluZSBjb25maWdJTlRFUlJVUFRfQ09OVFJPTExFUl9CQVNFX0FERFJFU1MJMHhFODIwMTAwMA0KLSNkZWZpbmUgY29uZmlnSU5URVJSVVBUX0NPTlRST0xMRVJfQ1BVX0lOVEVSRkFDRV9PRkZTRVQgMHgxMDAwDQotI2RlZmluZSBjb25maWdVTklRVUVfSU5URVJSVVBUX1BSSU9SSVRJRVMJCTMyDQotDQotLyogTWFwIHRoZSBGcmVlUlRPUyBJUlEgYW5kIFNWQy9TV0kgaGFuZGxlcnMgdG8gdGhlIG5hbWVzIHVzZWQgaW4gdGhlIEMgc3RhcnR1cA0KLWNvZGUgKHdoaWNoIGlzIHdoZXJlIHRoZSB2ZWN0b3IgdGFibGUgaXMgZGVmaW5lZCkuICovDQotI2RlZmluZSBGcmVlUlRPU19JUlFfSGFuZGxlciBJUlFfSGFuZGxlcg0KLSNkZWZpbmUgRnJlZVJUT1NfU1dJX0hhbmRsZXIgU1dJX0hhbmRsZXINCi0NCi0jZW5kaWYgLyogRlJFRVJUT1NfQ09ORklHX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnJlZVJUT1NfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE1NjRiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTY2ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogUmVuZXNhcyBkcml2ZXIgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInN0ZGludC5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiDQotI2luY2x1ZGUgImRldmRydl9vc3RtLmgiDQotI2luY2x1ZGUgImRldmRydl9pbnRjLmgiDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotI2RlZmluZSBydW50aW1lQ0xPQ0tfU0NBTEVfU0hJRlQJKCA5VUwgKQ0KLSNkZWZpbmUgcnVudGltZU9WRVJGTE9XX0JJVAkJCSggMVVMIDw8ICggMzJVTCAtIHJ1bnRpbWVDTE9DS19TQ0FMRV9TSElGVCApICkNCi0NCi0vKiBUbyBtYWtlIGNhc3RpbmcgdG8gdGhlIElTUiBwcm90b3R5cGUgZXhwZWN0ZWQgYnkgdGhlIFJlbmVzYXMgR0lDIGRyaXZlcnMuICovDQotdHlwZWRlZiB2b2lkICgqSVNSX0ZVTkNUSU9OKSggdWludDMyX3QgKTsNCi0NCi0vKg0KLSAqIFRoZSBhcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYSBmdW5jdGlvbiB0aGF0IGNvbmZpZ3VyZXMgYSBwZXJpcGhlcmFsIHRvDQotICogY3JlYXRlIHRoZSBGcmVlUlRPUyB0aWNrIGludGVycnVwdCwgdGhlbiBkZWZpbmUgY29uZmlnU0VUVVBfVElDS19JTlRFUlJVUFQoKQ0KLSAqIGluIEZyZWVSVE9TQ29uZmlnLmggdG8gY2FsbCB0aGUgZnVuY3Rpb24uICBUaGlzIGZpbGUgY29udGFpbnMgYSBmdW5jdGlvbg0KLSAqIHRoYXQgaXMgc3VpdGFibGUgZm9yIHVzZSBvbiB0aGUgUmVuZXNhcyBSWiBNUFUuDQotICovDQotdm9pZCB2Q29uZmlndXJlVGlja0ludGVycnVwdCggdm9pZCApDQotew0KLQkvKiBTdG9wIHRoZSBjb3VudGVyLiAqLw0KLSAgICBPU1RNMC5PU1RNblRULkJJVC5PU1RNblRUID0gMTsNCi0NCi0gICAgLyogV29yayBpbiBpbnRlcnZhbCBtb2RlLiAqLw0KLSAgICBPU1RNMC5PU1RNbkNUTC5CSVQuT1NUTW5NRDEgPSBPU1RNX01PREVfSU5URVJWQUw7DQotDQotICAgIC8qIFVzZSBpbnRlcnJ1cHRzIGFmdGVyIGNvdW50aW5nIHN0YXJ0cy4gKi8NCi0gICAgT1NUTTAuT1NUTW5DVEwuQklULk9TVE1uTUQwID0gMTsNCi0NCi0gICAgLyogU3RhcnQgdmFsdWUgZm9yIGRvd24gY291bnRlci4gKi8NCi0gICAgT1NUTTAuT1NUTW5DTVAgPSBjb25maWdQRVJJUEhFUkFMX0NMT0NLX0haIC8gY29uZmlnVElDS19SQVRFX0haOw0KLQ0KLSAgICAvKiBDb25maWd1cmUgdGhlIGludGVycnVwdCBjb250cm9sbGVyLiAqLw0KLSAgICBSX0lOVENfUmVnaXN0SW50RnVuYyggSU5UQ19JRF9PU1RNSTAsICggSVNSX0ZVTkNUSU9OICkgRnJlZVJUT1NfVGlja19IYW5kbGVyICk7DQotDQotICAgIC8qIFRpY2sgbXVzdCBiZSBhc3NpZ25lZCB0aGUgbG93ZXN0IGludGVycnVwdCBwcmlvcml0eS4gKi8NCi0gICAgUl9JTlRDX1NldFByaW9yaXR5KCBJTlRDX0lEX09TVE1JMCwgcG9ydExPV0VTVF9VU0FCTEVfSU5URVJSVVBUX1BSSU9SSVRZICk7DQotDQotICAgIElOVEMuSUNDQlBSLkJJVC5CaW5hcnlwb2ludCA9IDA7DQotICAgIFJfSU5UQ19FbmFibGUoIElOVENfSURfT1NUTUkwICk7DQotDQotICAgIFJfT1NUTV9PcGVuKCBERVZEUlZfQ0hfMCApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIENydWRlIGltcGxlbWVudGF0aW9uIG9mIGEgcnVuIHRpbWUgY291bnRlciB1c2VkIHRvIG1lYXN1cmUgaG93IG11Y2ggdGltZQ0KLSAqIGVhY2ggdGFzayBzcGVuZHMgaW4gdGhlIFJ1bm5pbmcgc3RhdGUuDQotICovDQotdW5zaWduZWQgbG9uZyB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoIHZvaWQgKQ0KLXsNCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB1bExhc3RDb3VudGVyVmFsdWUgPSAwVUwsIHVsT3ZlcmZsb3dzID0gMDsNCi11bnNpZ25lZCBsb25nIHVsVmFsdWVOb3c7DQotDQotCXVsVmFsdWVOb3cgPSBPU1RNMS5PU1RNbkNOVDsNCi0NCi0JLyogSGFzIHRoZSB2YWx1ZSBvdmVyZmxvd2VkIHNpbmNlIGl0IHdhcyBsYXN0IHJlYWQuICovDQotCWlmKCB1bFZhbHVlTm93IDwgdWxMYXN0Q291bnRlclZhbHVlICkNCi0Jew0KLQkJdWxPdmVyZmxvd3MrKzsNCi0JfQ0KLQl1bExhc3RDb3VudGVyVmFsdWUgPSB1bFZhbHVlTm93Ow0KLQ0KLQkvKiBUaGVyZSBpcyBubyBwcmVzY2FsZSBvbiB0aGUgY291bnRlciwgc28gc2ltdWxhdGUgaW4gc29mdHdhcmUuICovDQotCXVsVmFsdWVOb3cgPj49IHJ1bnRpbWVDTE9DS19TQ0FMRV9TSElGVDsNCi0JdWxWYWx1ZU5vdyArPSAoIHJ1bnRpbWVPVkVSRkxPV19CSVQgKiB1bE92ZXJmbG93cyApOw0KLQ0KLQlyZXR1cm4gdWxWYWx1ZU5vdzsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2SW5pdGlhbGlzZVJ1blRpbWVTdGF0cyggdm9pZCApDQotew0KLQkvKiBPU1RNMSBpcyB1c2VkIGFzIHRoZSBydW4gdGltZSBzdGF0cyBjb3VudGVyLiAqLw0KLQ0KLQkvKiBTdG9wIHRoZSBjb3VudGVyLiAqLw0KLSAgICBPU1RNMS5PU1RNblRULkJJVC5PU1RNblRUID0gMTsNCi0NCi0gICAgLyogV29yayBpbiBjb21wYXJlIG1vZGUgbW9kZS4gKi8NCi0gICAgT1NUTTEuT1NUTW5DVEwuQklULk9TVE1uTUQxID0gT1NUTV9NT0RFX0NPTVBBUkU7DQotDQotICAgIC8qIERvbid0IHVzZSBpbnRlcnJ1cHRzLiAqLw0KLSAgICBPU1RNMS5PU1RNbkNUTC5CSVQuT1NUTW5NRDAgPSAwOw0KLQ0KLSAgICAvKiBDb21wYXJlIGlzIGp1c3Qgc2V0IHRvIDAuICovDQotICAgIE9TVE0xLk9TVE1uQ01QID0gMDsNCi0NCi0gICAgUl9PU1RNX09wZW4oIERFVkRSVl9DSF8xICk7DQotfQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vRmlsZS1yZWxlYXRlZC1DTEktY29tbWFuZHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vRmlsZS1yZWxlYXRlZC1DTEktY29tbWFuZHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2VmZGJiNi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL0ZpbGUtcmVsZWF0ZWQtQ0xJLWNvbW1hbmRzLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NzYgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0vKiBGcmVlUlRPUytDTEkgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TX0NMSS5oIg0KLQ0KLS8qIEZpbGUgc3lzdGVtIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJmYXRfc2wuaCINCi0jaW5jbHVkZSAiYXBpX21kcml2ZXJfcmFtLmgiDQotDQotI2lmZGVmIF9XSU5ET1dTXw0KLQkjZGVmaW5lIHNucHJpbnRmIF9zbnByaW50Zg0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgY2xpTkVXX0xJTkUJCSJcclxuIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogU2VlIHRoZSBVUkwgaW4gdGhlIGNvbW1lbnRzIHdpdGhpbiBtYWluLmMgZm9yIHRoZSBsb2NhdGlvbiBvZiB0aGUgb25saW5lDQotICogZG9jdW1lbnRhdGlvbi4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qDQotICogUHJpbnQgb3V0IGluZm9ybWF0aW9uIG9uIGEgc2luZ2xlIGZpbGUuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRmlsZUluZm9TdHJpbmcoIGNoYXIgKnBjQnVmZmVyLCBGX0ZJTkQgKnB4RmluZFN0cnVjdCApOw0KLQ0KLS8qDQotICogQ29waWVzIGFuIGV4aXN0aW5nIGZpbGUgaW50byBhIG5ld2x5IGNyZWF0ZWQgZmlsZS4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQZXJmb3JtQ29weSggY2hhciAqcGNTb3VyY2VGaWxlLA0KLQkJCQkJCQkJCWludDMyX3QgbFNvdXJjZUZpbGVMZW5ndGgsDQotCQkJCQkJCQkJY2hhciAqcGNEZXN0aW5hdGlvbkZpbGUsDQotCQkJCQkJCQkJY2hhciAqcHhXcml0ZUJ1ZmZlciwNCi0JCQkJCQkJCQlzaXplX3QgeFdyaXRlQnVmZmVyTGVuICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBESVIgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZESVJDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIENEIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q0RDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIERFTCBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkRFTENvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgVFlQRSBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRZUEVDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIENPUFkgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZDT1BZQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBSZWdpc3RlcnMgdGhlIENMSSBjb21tYW5kcyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgZmlsZXMgc3lzdGVtIHdpdGggdGhlDQotICogRnJlZVJUT1MrQ0xJIGNvbW1hbmQgaW50ZXJwcmV0ZXIuDQotICovDQotdm9pZCB2UmVnaXN0ZXJGaWxlU3lzdGVtQ0xJQ29tbWFuZHMoIHZvaWQgKTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBESVIgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGxpc3RzIGFsbCB0aGUNCi1maWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4RElSID0NCi17DQotCSJkaXIiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5kaXI6XHJcbiBMaXN0cyB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5XHJcbiIsDQotCXBydkRJUkNvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTAgLyogTm8gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBDRCBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggY2hhbmdlcyB0aGUNCi13b3JraW5nIGRpcmVjdG9yeS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhDRCA9DQotew0KLQkiY2QiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5jZCA8ZGlyIG5hbWU+OlxyXG4gQ2hhbmdlcyB0aGUgd29ya2luZyBkaXJlY3RvcnlcclxuIiwNCi0JcHJ2Q0RDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkxIC8qIE9uZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBUWVBFIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBwcmludHMgdGhlDQotY29udGVudHMgb2YgYSBmaWxlIHRvIHRoZSBjb25zb2xlLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRZUEUgPQ0KLXsNCi0JInR5cGUiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG50eXBlIDxmaWxlbmFtZT46XHJcbiBQcmludHMgZmlsZSBjb250ZW50cyB0byB0aGUgdGVybWluYWxcclxuIiwNCi0JcHJ2VFlQRUNvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIERFTCBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggZGVsZXRlcyBhIGZpbGUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4REVMID0NCi17DQotCSJkZWwiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5kZWwgPGZpbGVuYW1lPjpcclxuIGRlbGV0ZXMgYSBmaWxlIG9yIGRpcmVjdG9yeVxyXG4iLA0KLQlwcnZERUxDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkxIC8qIE9uZSBwYXJhbWV0ZXIgaXMgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSBDT1BZIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBkZWxldGVzIGEgZmlsZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhDT1BZID0NCi17DQotCSJjb3B5IiwgLyogVGhlIGNvbW1hbmQgc3RyaW5nIHRvIHR5cGUuICovDQotCSJcclxuY29weSA8c291cmNlIGZpbGU+IDxkZXN0IGZpbGU+OlxyXG4gQ29waWVzIDxzb3VyY2UgZmlsZT4gdG8gPGRlc3QgZmlsZT5cclxuIiwNCi0JcHJ2Q09QWUNvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTIgLyogVHdvIHBhcmFtZXRlcnMgYXJlIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UmVnaXN0ZXJGaWxlU3lzdGVtQ0xJQ29tbWFuZHMoIHZvaWQgKQ0KLXsNCi0JLyogUmVnaXN0ZXIgYWxsIHRoZSBjb21tYW5kIGxpbmUgY29tbWFuZHMgZGVmaW5lZCBpbW1lZGlhdGVseSBhYm92ZS4gKi8NCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeERJUiApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4Q0QgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFRZUEUgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeERFTCApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4Q09QWSApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUWVBFQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoLCB4UmV0dXJuID0gcGRUUlVFOw0KLXN0YXRpYyBGX0ZJTEUgKnB4RmlsZSA9IE5VTEw7DQotaW50IGlDaGFyOw0KLXNpemVfdCB4Qnl0ZTsNCi1zaXplX3QgeENvbHVtbnMgPSA1MFU7DQotDQotCS8qIEVuc3VyZSB0aGVyZSBpcyBhbHdheXMgYSBudWxsIHRlcm1pbmF0b3IgYWZ0ZXIgZWFjaCBjaGFyYWN0ZXIgd3JpdHRlbi4gKi8NCi0JbWVtc2V0KCBwY1dyaXRlQnVmZmVyLCAweDAwLCB4V3JpdGVCdWZmZXJMZW4gKTsNCi0NCi0JLyogRW5zdXJlIHRoZSBidWZmZXIgbGVhdmVzIHNwYWNlIGZvciB0aGUgXHJcbi4gKi8NCi0JY29uZmlnQVNTRVJUKCB4V3JpdGVCdWZmZXJMZW4gPiAoIHN0cmxlbiggY2xpTkVXX0xJTkUgKSAqIDIgKSApOw0KLQl4V3JpdGVCdWZmZXJMZW4gLT0gc3RybGVuKCBjbGlORVdfTElORSApOw0KLQ0KLQlpZiggeFdyaXRlQnVmZmVyTGVuIDwgeENvbHVtbnMgKQ0KLQl7DQotCQkvKiBFbnN1cmUgdGhlIGxvb3AgdGhhdCB1c2VzIHhDb2x1bW5zIGFzIGFuIGVuZCBjb25kaXRpb24gZG9lcyBub3QNCi0JCXdyaXRlIG9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuICovDQotCQl4Q29sdW1ucyA9IHhXcml0ZUJ1ZmZlckxlbjsNCi0JfQ0KLQ0KLQlpZiggcHhGaWxlID09IE5VTEwgKQ0KLQl7DQotCQkvKiBUaGUgZmlsZSBoYXMgbm90IGJlZW4gb3BlbmVkIHlldC4gIEZpbmQgdGhlIGZpbGUgbmFtZS4gKi8NCi0JCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCQkoDQotCQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJCSk7DQotDQotCQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JCS8qIEF0dGVtcHQgdG8gb3BlbiB0aGUgcmVxdWVzdGVkIGZpbGUuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjUGFyYW1ldGVyLCAiciIgKTsNCi0JfQ0KLQ0KLQlpZiggcHhGaWxlICE9IE5VTEwgKQ0KLQl7DQotCQkvKiBSZWFkIHRoZSBuZXh0IGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmlsZS4gKi8NCi0JCWZvciggeEJ5dGUgPSAwOyB4Qnl0ZSA8IHhDb2x1bW5zOyB4Qnl0ZSsrICkNCi0JCXsNCi0JCQlpQ2hhciA9IGZfZ2V0YyggcHhGaWxlICk7DQotDQotCQkJaWYoIGlDaGFyID09IC0xICkNCi0JCQl7DQotCQkJCS8qIE5vIG1vcmUgY2hhcmFjdGVycyB0byByZXR1cm4uICovDQotCQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJCQlweEZpbGUgPSBOVUxMOw0KLQkJCQlicmVhazsNCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJcGNXcml0ZUJ1ZmZlclsgeEJ5dGUgXSA9ICggY2hhciApIGlDaGFyOw0KLQkJCX0NCi0JCX0NCi0JfQ0KLQ0KLQlpZiggcHhGaWxlID09IE5VTEwgKQ0KLQl7DQotCQkvKiBFaXRoZXIgdGhlIGZpbGUgd2FzIG5vdCBvcGVuZWQsIG9yIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBmaWxlIGhhcw0KLQkJYmVlbiByZXR1cm5lZCBhbmQgdGhlIGZpbGUgaXMgbm93IGNsb3NlZC4gKi8NCi0JCXhSZXR1cm4gPSBwZEZBTFNFOw0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkNEQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm5lZDsNCi1zaXplX3QgeFN0cmluZ0xlbmd0aDsNCi0NCi0JLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCSk7DQotDQotCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCS8qIEF0dGVtcHQgdG8gbW92ZSB0byB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm5lZCA9IGZfY2hkaXIoIHBjUGFyYW1ldGVyICk7DQotDQotCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiSW46ICIgKTsNCi0JCXhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIHBjV3JpdGVCdWZmZXIgKTsNCi0JCWZfZ2V0Y3dkKCAmKCBwY1dyaXRlQnVmZmVyWyB4U3RyaW5nTGVuZ3RoIF0gKSwgKCB1bnNpZ25lZCBjaGFyICkgKCB4V3JpdGVCdWZmZXJMZW4gLSB4U3RyaW5nTGVuZ3RoICkgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciIgKTsNCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZESVJDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1zdGF0aWMgRl9GSU5EICpweEZpbmRTdHJ1Y3QgPSBOVUxMOw0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm5lZDsNCi1wb3J0QkFTRV9UWVBFIHhSZXR1cm4gPSBwZEZBTFNFOw0KLQ0KLQkvKiBUaGlzIGFzc3VtZXMgcGNXcml0ZUJ1ZmZlciBpcyBsb25nIGVub3VnaC4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQ0KLQkvKiBFbnN1cmUgdGhlIGJ1ZmZlciBsZWF2ZXMgc3BhY2UgZm9yIHRoZSBcclxuLiAqLw0KLQljb25maWdBU1NFUlQoIHhXcml0ZUJ1ZmZlckxlbiA+ICggc3RybGVuKCBjbGlORVdfTElORSApICogMiApICk7DQotCXhXcml0ZUJ1ZmZlckxlbiAtPSBzdHJsZW4oIGNsaU5FV19MSU5FICk7DQotDQotCWlmKCBweEZpbmRTdHJ1Y3QgPT0gTlVMTCApDQotCXsNCi0JCS8qIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBleGVjdXRlZCBzaW5jZSB0aGUgRGlyDQotCQljb21tYW5kIHdhcyBydW4uICBDcmVhdGUgdGhlIGZpbmQgc3RydWN0dXJlLiAqLw0KLQkJcHhGaW5kU3RydWN0ID0gKCBGX0ZJTkQgKiApIHB2UG9ydE1hbGxvYyggc2l6ZW9mKCBGX0ZJTkQgKSApOw0KLQ0KLQkJaWYoIHB4RmluZFN0cnVjdCAhPSBOVUxMICkNCi0JCXsNCi0JCQl1Y1JldHVybmVkID0gZl9maW5kZmlyc3QoICIqLioiLCBweEZpbmRTdHJ1Y3QgKTsNCi0NCi0JCQlpZiggdWNSZXR1cm5lZCA9PSBGX05PX0VSUk9SICkNCi0JCQl7DQotCQkJCXBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBwY1dyaXRlQnVmZmVyLCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQkJeFJldHVybiA9IHBkUEFTUzsNCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJc25wcmludGYoIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiwgIkVycm9yOiBmX2ZpbmRmaXJzdCgpIGZhaWxlZC4iICk7DQotCQkJfQ0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNucHJpbnRmKCBwY1dyaXRlQnVmZmVyLCB4V3JpdGVCdWZmZXJMZW4sICJGYWlsZWQgdG8gYWxsb2NhdGUgUkFNICh1c2luZyBoZWFwXzQuYyB3aWxsIHByZXZlbnQgZnJhZ21lbnRhdGlvbikuIiApOw0KLQkJfQ0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogVGhlIGZpbmQgc3RydWN0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4gIEZpbmQgdGhlIG5leHQgZmlsZSBpbg0KLQkJdGhlIGRpcmVjdG9yeS4gKi8NCi0JCXVjUmV0dXJuZWQgPSBmX2ZpbmRuZXh0KCBweEZpbmRTdHJ1Y3QgKTsNCi0NCi0JCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQkJew0KLQkJCXBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBwY1dyaXRlQnVmZmVyLCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQl4UmV0dXJuID0gcGRQQVNTOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFRoZXJlIGFyZSBubyBtb3JlIGZpbGVzLiAgRnJlZSB0aGUgZmluZCBzdHJ1Y3R1cmUuICovDQotCQkJdlBvcnRGcmVlKCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQlweEZpbmRTdHJ1Y3QgPSBOVUxMOw0KLQ0KLQkJCS8qIE5vIHN0cmluZyB0byByZXR1cm4uICovDQotCQkJcGNXcml0ZUJ1ZmZlclsgMCBdID0gMHgwMDsNCi0JCX0NCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZERUxDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLQ0KLQkvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgeFdyaXRlQnVmZmVyTGVuIGlzIGxhcmdlIGVub3VnaCEgKi8NCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBkZWxldGUgdGhlIGZpbGUuICovDQotCXVjUmV0dXJuZWQgPSBmX2RlbGV0ZSggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlcyB3YXMgZGVsZXRlZCIsIHBjUGFyYW1ldGVyICk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3IiICk7DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q09QWUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNoYXIgKnBjU291cmNlRmlsZSwgKnBjRGVzdGluYXRpb25GaWxlOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi1sb25nIGxTb3VyY2VMZW5ndGgsIGxEZXN0aW5hdGlvbkxlbmd0aCA9IDA7DQotDQotCS8qIE9idGFpbiB0aGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gZmlsZS4gKi8NCi0JcGNEZXN0aW5hdGlvbkZpbGUgPSAoIGNoYXIgKiApIEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCQkoDQotCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJMiwJCQkJCQkvKiBSZXR1cm4gdGhlIHNlY29uZCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJCSk7DQotDQotCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQljb25maWdBU1NFUlQoIHBjRGVzdGluYXRpb25GaWxlICk7DQotDQotCS8qIE9idGFpbiB0aGUgbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuICovDQotCXBjU291cmNlRmlsZSA9ICggY2hhciAqICkgRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNTb3VyY2VGaWxlICk7DQotDQotCS8qIFRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAqLw0KLQlwY1NvdXJjZUZpbGVbIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGggXSA9IDB4MDA7DQotDQotCS8qIFNlZSBpZiB0aGUgc291cmNlIGZpbGUgZXhpc3RzLCBvYnRhaW4gaXRzIGxlbmd0aCBpZiBpdCBkb2VzLiAqLw0KLQlsU291cmNlTGVuZ3RoID0gZl9maWxlbGVuZ3RoKCBwY1NvdXJjZUZpbGUgKTsNCi0NCi0JaWYoIGxTb3VyY2VMZW5ndGggPT0gMCApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJTb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdCIgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCS8qIFNlZSBpZiB0aGUgZGVzdGluYXRpb24gZmlsZSBleGlzdHMuICovDQotCQlsRGVzdGluYXRpb25MZW5ndGggPSBmX2ZpbGVsZW5ndGgoIHBjRGVzdGluYXRpb25GaWxlICk7DQotDQotCQlpZiggbERlc3RpbmF0aW9uTGVuZ3RoICE9IDAgKQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvcjogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cyIgKTsNCi0JCX0NCi0JfQ0KLQ0KLQkvKiBDb250aW51ZSBvbmx5IGlmIHRoZSBzb3VyY2UgZmlsZSBleGlzdHMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGRvZXMNCi0Jbm90IGV4aXN0LiAqLw0KLQlpZiggKCBsU291cmNlTGVuZ3RoICE9IDAgKSAmJiAoIGxEZXN0aW5hdGlvbkxlbmd0aCA9PSAwICkgKQ0KLQl7DQotCQlpZiggcHJ2UGVyZm9ybUNvcHkoIHBjU291cmNlRmlsZSwgbFNvdXJjZUxlbmd0aCwgcGNEZXN0aW5hdGlvbkZpbGUsIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiApID09IHBkUEFTUyApDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkNvcHkgbWFkZSIgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3IgZHVyaW5nIGNvcHkiICk7DQotCQl9DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UGVyZm9ybUNvcHkoIAljaGFyICpwY1NvdXJjZUZpbGUsDQotCQkJCQkJCQkJCWludDMyX3QgbFNvdXJjZUZpbGVMZW5ndGgsDQotCQkJCQkJCQkJCWNoYXIgKnBjRGVzdGluYXRpb25GaWxlLA0KLQkJCQkJCQkJCQljaGFyICpweFdyaXRlQnVmZmVyLA0KLQkJCQkJCQkJCQlzaXplX3QgeFdyaXRlQnVmZmVyTGVuICkNCi17DQotaW50MzJfdCBsQnl0ZXNSZWFkID0gMCwgbEJ5dGVzVG9SZWFkLCBsQnl0ZXNSZW1haW5pbmc7DQotRl9GSUxFICpweEZpbGU7DQotcG9ydEJBU0VfVFlQRSB4UmV0dXJuID0gcGRQQVNTOw0KLQ0KLQkvKiBOT1RFOiAgRXJyb3IgaGFuZGxpbmcgaGFzIGJlZW4gb21pdHRlZCBmb3IgY2xhcml0eS4gKi8NCi0NCi0Jd2hpbGUoIGxCeXRlc1JlYWQgPCBsU291cmNlRmlsZUxlbmd0aCApDQotCXsNCi0JCS8qIEhvdyBtYW55IGJ5dGVzIGFyZSBsZWZ0PyAqLw0KLQkJbEJ5dGVzUmVtYWluaW5nID0gbFNvdXJjZUZpbGVMZW5ndGggLSBsQnl0ZXNSZWFkOw0KLQ0KLQkJLyogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIGJlIHJlYWQgdGhpcyB0aW1lIGFyb3VuZCB0aGUgbG9vcC4gIENhbid0DQotCQlyZWFkIG1vcmUgYnl0ZXMgdGhhbiB3aWxsIGZpdCBpbnRvIHRoZSBidWZmZXIuICovDQotCQlpZiggbEJ5dGVzUmVtYWluaW5nID4gKCBsb25nICkgeFdyaXRlQnVmZmVyTGVuICkNCi0JCXsNCi0JCQlsQnl0ZXNUb1JlYWQgPSAoIGxvbmcgKSB4V3JpdGVCdWZmZXJMZW47DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJbEJ5dGVzVG9SZWFkID0gbEJ5dGVzUmVtYWluaW5nOw0KLQkJfQ0KLQ0KLQkJLyogT3BlbiB0aGUgc291cmNlIGZpbGUsIHNlZWsgcGFzdCB0aGUgZGF0YSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4NCi0JCXJlYWQgZnJvbSB0aGUgZmlsZSwgcmVhZCB0aGUgbmV4dCBibG9jayBvZiBkYXRhLCB0aGVuIGNsb3NlIHRoZQ0KLQkJZmlsZSBhZ2FpbiBzbyB0aGUgZGVzdGluYXRpb24gZmlsZSBjYW4gYmUgb3BlbmVkLiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBwY1NvdXJjZUZpbGUsICJyIiApOw0KLQkJaWYoIHB4RmlsZSAhPSBOVUxMICkNCi0JCXsNCi0JCQlmX3NlZWsoIHB4RmlsZSwgbEJ5dGVzUmVhZCwgRl9TRUVLX1NFVCApOw0KLQkJCWZfcmVhZCggcHhXcml0ZUJ1ZmZlciwgbEJ5dGVzVG9SZWFkLCAxLCBweEZpbGUgKTsNCi0JCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQl4UmV0dXJuID0gcGRGQUlMOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJLyogT3BlbiB0aGUgZGVzdGluYXRpb24gZmlsZSBhbmQgd3JpdGUgdGhlIGJsb2NrIG9mIGRhdGEgdG8gdGhlIGVuZCBvZg0KLQkJdGhlIGZpbGUuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjRGVzdGluYXRpb25GaWxlLCAiYSIgKTsNCi0JCWlmKCBweEZpbGUgIT0gTlVMTCApDQotCQl7DQotCQkJZl93cml0ZSggcHhXcml0ZUJ1ZmZlciwgbEJ5dGVzVG9SZWFkLCAxLCBweEZpbGUgKTsNCi0JCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQl4UmV0dXJuID0gcGRGQUlMOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQ0KLQkJbEJ5dGVzUmVhZCArPSBsQnl0ZXNUb1JlYWQ7DQotCX0NCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBjaGFyICpwY0J1ZmZlciwgRl9GSU5EICpweEZpbmRTdHJ1Y3QgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1dyaXRhYmxlRmlsZSA9ICJ3cml0YWJsZSBmaWxlIiwgKnBjUmVhZE9ubHlGaWxlID0gInJlYWQgb25seSBmaWxlIiwgKnBjRGlyZWN0b3J5ID0gImRpcmVjdG9yeSI7DQotY29uc3QgY2hhciAqIHBjQXR0cmliOw0KLQ0KLQkvKiBQb2ludCBwY0F0dHJpYiB0byBhIHN0cmluZyB0aGF0IGRlc2NyaWJlcyB0aGUgZmlsZS4gKi8NCi0JaWYoICggcHhGaW5kU3RydWN0LT5hdHRyICYgRl9BVFRSX0RJUiApICE9IDAgKQ0KLQl7DQotCQlwY0F0dHJpYiA9IHBjRGlyZWN0b3J5Ow0KLQl9DQotCWVsc2UgaWYoIHB4RmluZFN0cnVjdC0+YXR0ciAmIEZfQVRUUl9SRUFET05MWSApDQotCXsNCi0JCXBjQXR0cmliID0gcGNSZWFkT25seUZpbGU7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlwY0F0dHJpYiA9IHBjV3JpdGFibGVGaWxlOw0KLQl9DQotDQotCS8qIENyZWF0ZSBhIHN0cmluZyB0aGF0IGluY2x1ZGVzIHRoZSBmaWxlIG5hbWUsIHRoZSBmaWxlIHNpemUgYW5kIHRoZQ0KLQlhdHRyaWJ1dGVzIHN0cmluZy4gKi8NCi0Jc3ByaW50ZiggcGNCdWZmZXIsICIlcyBbJXNdIFtzaXplPSVkXSIsIHB4RmluZFN0cnVjdC0+ZmlsZW5hbWUsIHBjQXR0cmliLCBweEZpbmRTdHJ1Y3QtPmZpbGVzaXplICk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vRmlsZS1zeXN0ZW0tZGVtby5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9GaWxlLXN5c3RlbS1kZW1vLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZTcwN2MuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9GaWxlLXN5c3RlbS1kZW1vLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNzkgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBTZWUgdGhlIFVSTCBpbiB0aGUgY29tbWVudHMgd2l0aGluIG1haW4uYyBmb3IgdGhlIGxvY2F0aW9uIG9mIHRoZSBvbmxpbmUNCi0gKiBkb2N1bWVudGF0aW9uLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0cmluZy5oPg0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogRmlsZSBzeXN0ZW0gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgImZhdF9zbC5oIg0KLSNpbmNsdWRlICJhcGlfbWRyaXZlcl9yYW0uaCINCi0NCi0vKiA4LjMgZm9ybWF0LCBwbHVzIG51bGwgdGVybWluYXRvci4gKi8NCi0jZGVmaW5lIGZzTUFYX0ZJTEVfTkFNRV9MRU4JCQkJMTMNCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQvd3JpdHRlbiB0byB0aGUgZXhhbXBsZSBmaWxlcyBhdCBhIHRpbWUuICovDQotI2RlZmluZSBmc1JBTV9CVUZGRVJfU0laRSAJCQkJMjAwDQotDQotLyogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBmaWxlIHRoYXQgdXNlcyBmX3B1dGMoKSBhbmQgZl9nZXRjKCkuICovDQotI2RlZmluZSBmc1BVVENfRklMRV9TSVpFCQkJCTEwMA0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgZmlsZXMgY3JlYXRlZCBpbiByb290LiAqLw0KLSNkZWZpbmUgZnNST09UX0ZJTEVTCQkJCQk1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBDcmVhdGVzIGFuZCB2ZXJpZmllcyBkaWZmZXJlbnQgZmlsZXMgb24gdGhlIHZvbHVtZSwgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mDQotICogdmFyaW91cyBkaWZmZXJlbnQgQVBJIGZ1bmN0aW9ucy4NCi0gKi8NCi12b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGEgc2V0IG9mIGV4YW1wbGUgZmlsZXMgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSB2b2x1bWUgdXNpbmcNCi0gKiBmX3dyaXRlKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSggdm9pZCApOw0KLQ0KLS8qDQotICogVXNlIGZfcmVhZCgpIHRvIHJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlcyB0aGF0IHdlcmUgY3JlYXRlZCBieQ0KLSAqIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfcmVhZCggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGFuIGV4YW1wbGUgZmlsZSBpbiBhIHN1Yi1kaXJlY3RvcnkgdXNpbmcgZl9wdXRjKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIFVzZSBmX2dldGMoKSB0byByZWFkIGJhY2sgYW5kIHZlcmlmeSB0aGUgZmlsZSB0aGF0IHdhcyBjcmVhdGVkIGJ5DQotICogcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0Yyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIEEgYnVmZmVyIHVzZWQgdG8gYm90aCBjcmVhdGUgY29udGVudCB0byB3cml0ZSB0byBkaXNrLCBhbmQgcmVhZCBjb250ZW50IGJhY2sNCi1mcm9tIGEgZGlzay4gIE5vdGUgdGhlcmUgaXMgbm8gbXV0dWFsIGV4Y2x1c2lvbiBvbiB0aGlzIGJ1ZmZlci4gKi8NCi1zdGF0aWMgY2hhciBjUkFNQnVmZmVyWyBmc1JBTV9CVUZGRVJfU0laRSBdOw0KLQ0KLS8qIE5hbWVzIG9mIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGNyZWF0ZWQuICovDQotc3RhdGljIGNvbnN0IGNoYXIgKnBjUm9vdCA9ICIvIiwgKnBjRGlyZWN0b3J5MSA9ICJTVUIxIiwgKnBjRGlyZWN0b3J5MiA9ICJTVUIyIiwgKnBjRnVsbFBhdGggPSAiL1NVQjEvU1VCMiI7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjU3RhdHVzOw0KLQ0KLQkvKiBGaXJzdCBjcmVhdGUgdGhlIHZvbHVtZS4gKi8NCi0JdWNTdGF0dXMgPSBmX2luaXR2b2x1bWUoIHJhbV9pbml0ZnVuYyApOw0KLQ0KLQkvKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSB2b2x1bWUgaXMgbm90IGZvcm1hdHRlZC4gKi8NCi0JaWYoIHVjU3RhdHVzID09IEZfRVJSX05PVEZPUk1BVFRFRCApDQotCXsNCi0JCS8qIEZvcm1hdCB0aGUgY3JlYXRlZCB2b2x1bWUuICovDQotCQl1Y1N0YXR1cyA9IGZfZm9ybWF0KCBGX0ZBVDEyX01FRElBICk7DQotCX0NCi0NCi0JaWYoIHVjU3RhdHVzID09IEZfTk9fRVJST1IgKQ0KLQl7DQotCQkvKiBDcmVhdGUgYSBzZXQgb2YgZmlsZXMgdXNpbmcgZl93cml0ZSgpLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpOw0KLQ0KLQkJLyogUmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIHVzaW5nIGZfd3JpdGUoKS4gKi8NCi0JCXBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCk7DQotDQotCQkvKiBDcmVhdGUgc3ViIGRpcmVjdG9yaWVzIHR3byBkZWVwIHRoZW4gY3JlYXRlIGEgZmlsZSB1c2luZyBwdXRjLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKTsNCi0NCi0JCS8qIFJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlIGNyZWF0ZWQgYnkNCi0JCXBydkNyZWF0ZURlbW9GaWxlVXNpbmdfZl9wdXRjKCkuICovDQotCQlwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0YygpOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoIHZvaWQgKQ0KLXsNCi1wb3J0QkFTRV9UWVBFIHhGaWxlTnVtYmVyLCB4V3JpdGVOdW1iZXI7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi1sb25nIGxJdGVtc1dyaXR0ZW47DQotRl9GSUxFICpweEZpbGU7DQotDQotCS8qIENyZWF0ZSBmc1JPT1RfRklMRVMgZmlsZXMuICBFYWNoIGNyZWF0ZWQgZmlsZSB3aWxsIGJlDQotCSggeEZpbGVOdW1iZXIgKiBmc1JBTV9CVUZGRVJfU0laRSApIGJ5dGVzIGluIGxlbmd0aCwgYW5kIGZpbGxlZA0KLQl3aXRoIGEgZGlmZmVyZW50IHJlcGVhdGluZyBjaGFyYWN0ZXIuICovDQotCWZvciggeEZpbGVOdW1iZXIgPSAxOyB4RmlsZU51bWJlciA8PSBmc1JPT1RfRklMRVM7IHhGaWxlTnVtYmVyKysgKQ0KLQl7DQotCQkvKiBHZW5lcmF0ZSBhIGZpbGUgbmFtZS4gKi8NCi0JCXNwcmludGYoIGNGaWxlTmFtZSwgInJvb3QlMDNkLnR4dCIsIHhGaWxlTnVtYmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYW5kIHByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZA0KLQkJdGhlCWRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nIHdyaXR0ZW4uICovDQotCQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JCXByaW50ZiggIkNyZWF0aW5nIGZpbGUgJXMgaW4gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCQkvKiBPcGVuIHRoZSBmaWxlLCBjcmVhdGluZyB0aGUgZmlsZSBpZiBpdCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBjRmlsZU5hbWUsICJ3IiApOw0KLQkJY29uZmlnQVNTRVJUKCBweEZpbGUgKTsNCi0NCi0JCS8qIEZpbGwgdGhlIFJBTSBidWZmZXIgd2l0aCBkYXRhIHRoYXQgd2lsbCBiZSB3cml0dGVuIHRvIHRoZSBmaWxlLiAgVGhpcw0KLQkJaXMganVzdCBhIHJlcGVhdGluZyBhc2NpaSBjaGFyYWN0ZXIgdGhhdCBpbmRpY2F0ZXMgdGhlIGZpbGUgbnVtYmVyLiAqLw0KLQkJbWVtc2V0KCBjUkFNQnVmZmVyLCAoIGludCApICggJzAnICsgeEZpbGVOdW1iZXIgKSwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0NCi0JCS8qIFdyaXRlIHRoZSBSQU0gYnVmZmVyIHRvIHRoZSBvcGVuZWQgZmlsZSBhIG51bWJlciBvZiB0aW1lcy4gIFRoZQ0KLQkJbnVtYmVyIG9mIHRpbWVzIHRoZSBSQU0gYnVmZmVyIGlzIHdyaXR0ZW4gdG8gdGhlIGZpbGUgZGVwZW5kcyBvbiB0aGUNCi0JCWZpbGUgbnVtYmVyLCBzbyB0aGUgbGVuZ3RoIG9mIGVhY2ggY3JlYXRlZCBmaWxlIHdpbGwgYmUgZGlmZmVyZW50LiAqLw0KLQkJZm9yKCB4V3JpdGVOdW1iZXIgPSAwOyB4V3JpdGVOdW1iZXIgPCB4RmlsZU51bWJlcjsgeFdyaXRlTnVtYmVyKysgKQ0KLQkJew0KLQkJCWxJdGVtc1dyaXR0ZW4gPSBmX3dyaXRlKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSwgMSwgcHhGaWxlICk7DQotCQkJY29uZmlnQVNTRVJUKCBsSXRlbXNXcml0dGVuID09IDEgKTsNCi0JCX0NCi0NCi0JCS8qIENsb3NlIHRoZSBmaWxlIHNvIGFub3RoZXIgZmlsZSBjYW4gYmUgY3JlYXRlZC4gKi8NCi0JCWZfY2xvc2UoIHB4RmlsZSApOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCB2b2lkICkNCi17DQotcG9ydEJBU0VfVFlQRSB4RmlsZU51bWJlciwgeFJlYWROdW1iZXI7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi1sb25nIGxJdGVtc1JlYWQsIGxDaGFyOw0KLUZfRklMRSAqcHhGaWxlOw0KLQ0KLQkvKiBSZWFkIGJhY2sgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIGJ5DQotCXBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoKS4gKi8NCi0JZm9yKCB4RmlsZU51bWJlciA9IDE7IHhGaWxlTnVtYmVyIDw9IGZzUk9PVF9GSUxFUzsgeEZpbGVOdW1iZXIrKyApDQotCXsNCi0JCS8qIEdlbmVyYXRlIHRoZSBmaWxlIG5hbWUuICovDQotCQlzcHJpbnRmKCBjRmlsZU5hbWUsICJyb290JTAzZC50eHQiLCB4RmlsZU51bWJlciApOw0KLQ0KLQkJLyogT2J0YWluIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGFuZCBwcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQNCi0JCXRoZQlkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgZmlsZSBpcyBiZWluZyByZWFkLiAqLw0KLQkJZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCQlwcmludGYoICJSZWFkaW5nIGZpbGUgJXMgZnJvbSAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JCS8qIE9wZW4gdGhlIGZpbGUgZm9yIHJlYWRpbmcuICovDQotCQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInIiICk7DQotCQljb25maWdBU1NFUlQoIHB4RmlsZSApOw0KLQ0KLQkJLyogUmVhZCB0aGUgZmlsZSBpbnRvIHRoZSBSQU0gYnVmZmVyLCBjaGVja2luZyB0aGUgZmlsZSBjb250ZW50cyBhcmUgYXMNCi0JCWV4cGVjdGVkLiAgVGhlIHNpemUgb2YgdGhlIGZpbGUgZGVwZW5kcyBvbiB0aGUgZmlsZSBudW1iZXIuICovDQotCQlmb3IoIHhSZWFkTnVtYmVyID0gMDsgeFJlYWROdW1iZXIgPCB4RmlsZU51bWJlcjsgeFJlYWROdW1iZXIrKyApDQotCQl7DQotCQkJLyogU3RhcnQgd2l0aCB0aGUgUkFNIGJ1ZmZlciBjbGVhci4gKi8NCi0JCQltZW1zZXQoIGNSQU1CdWZmZXIsIDB4MDAsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotDQotCQkJbEl0ZW1zUmVhZCA9IGZfcmVhZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUsIDEsIHB4RmlsZSApOw0KLQkJCWNvbmZpZ0FTU0VSVCggbEl0ZW1zUmVhZCA9PSAxICk7DQotDQotCQkJLyogQ2hlY2sgdGhlIFJBTSBidWZmZXIgaXMgZmlsbGVkIHdpdGggdGhlIGV4cGVjdGVkIGRhdGEuICBFYWNoDQotCQkJZmlsZSBjb250YWlucyBhIGRpZmZlcmVudCByZXBlYXRpbmcgYXNjaWkgY2hhcmFjdGVyIHRoYXQgaW5kaWNhdGVzDQotCQkJdGhlIG51bWJlciBvZiB0aGUgZmlsZS4gKi8NCi0JCQlmb3IoIGxDaGFyID0gMDsgbENoYXIgPCBmc1JBTV9CVUZGRVJfU0laRTsgbENoYXIrKyApDQotCQkJew0KLQkJCQljb25maWdBU1NFUlQoIGNSQU1CdWZmZXJbIGxDaGFyIF0gPT0gKCAnMCcgKyAoIGNoYXIgKSB4RmlsZU51bWJlciApICk7DQotCQkJfQ0KLQkJfQ0KLQ0KLQkJLyogQ2xvc2UgdGhlIGZpbGUuICovDQotCQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVEZW1vRmlsZVVzaW5nX2ZfcHV0Yyggdm9pZCApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm47DQotaW50IGlCeXRlLCBpUmV0dXJuZWQ7DQotRl9GSUxFICpweEZpbGU7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiSW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgc3ViIGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX21rZGlyKCBwY0RpcmVjdG9yeTEgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE1vdmUgaW50byB0aGUgY3JlYXRlZCBzdWItZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoIHBjRGlyZWN0b3J5MSApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiSW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0NCi0JLyogQ3JlYXRlIGEgc3ViZGlyZWN0b3J5IGluIHRoZSBuZXcgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfbWtkaXIoIHBjRGlyZWN0b3J5MiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogTW92ZSBpbnRvIHRoZSBkaXJlY3RvcnkganVzdCBjcmVhdGVkIC0gbm93IHR3byBkaXJlY3RvcmllcyBkb3duIGZyb20NCi0JdGhlIHJvb3QuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggcGNEaXJlY3RvcnkyICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJJbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQljb25maWdBU1NFUlQoIHN0cmNtcCggY1JBTUJ1ZmZlciwgcGNGdWxsUGF0aCApID09IDAgKTsNCi0NCi0JLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0Jc3ByaW50ZiggY0ZpbGVOYW1lLCAiJXMudHh0IiwgcGNEaXJlY3RvcnkyICk7DQotDQotCS8qIFByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcNCi0Jd3JpdHRlbi4gKi8NCi0JcHJpbnRmKCAiV3JpdGluZyBmaWxlICVzIGluICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInciICk7DQotDQotCS8qIENyZWF0ZSBhIGZpbGUgMSBieXRlIGF0IGEgdGltZS4gIFRoZSBmaWxlIGlzIGZpbGxlZCB3aXRoIGluY3JlbWVudGluZw0KLQlhc2NpaSBjaGFyYWN0ZXJzIHN0YXJ0aW5nIGZyb20gJzAnLiAqLw0KLQlmb3IoIGlCeXRlID0gMDsgaUJ5dGUgPCBmc1BVVENfRklMRV9TSVpFOyBpQnl0ZSsrICkNCi0Jew0KLQkJaVJldHVybmVkID0gZl9wdXRjKCAoICggaW50ICkgJzAnICsgaUJ5dGUgKSwgcHhGaWxlICk7DQotCQljb25maWdBU1NFUlQoIGlSZXR1cm5lZCA9PSAgKCAoIGludCApICcwJyArIGlCeXRlICkgKTsNCi0JfQ0KLQ0KLQkvKiBGaW5pc2hlZCBzbyBjbG9zZSB0aGUgZmlsZS4gKi8NCi0JZl9jbG9zZSggcHhGaWxlICk7DQotDQotCS8qIE1vdmUgYmFjayB0byB0aGUgcm9vdCBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggIi4uLy4uIiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiQmFjayBpbiByb290IGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY1Jvb3QgKSA9PSAwICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9nZXRjKCB2b2lkICkNCi17DQotdW5zaWduZWQgY2hhciB1Y1JldHVybjsNCi1pbnQgaUJ5dGUsIGlSZXR1cm5lZDsNCi1GX0ZJTEUgKnB4RmlsZTsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLQ0KLQkvKiBNb3ZlIGludG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB0aGUgZmlsZSB3YXMgY3JlYXRlZC4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCBwY0Z1bGxQYXRoICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjUkFNQnVmZmVyLCBwY0Z1bGxQYXRoICkgPT0gMCApOw0KLQ0KLQkvKiBHZW5lcmF0ZSB0aGUgZmlsZSBuYW1lLiAqLw0KLQlzcHJpbnRmKCBjRmlsZU5hbWUsICIlcy50eHQiLCBwY0RpcmVjdG9yeTIgKTsNCi0NCi0JLyogUHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kIHRoZSBkaXJlY3RvcnkgZnJvbSB3aGljaCB0aGUgZmlsZSBpcyBiZWluZw0KLQlyZWFkLiAqLw0KLQlwcmludGYoICJSZWFkaW5nIGZpbGUgJXMgaW4gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCS8qIFRoaXMgdGltZSB0aGUgZmlsZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcuICovDQotCXB4RmlsZSA9IGZfb3BlbiggY0ZpbGVOYW1lLCAiciIgKTsNCi0NCi0JLyogUmVhZCB0aGUgZmlsZSAxIGJ5dGUgYXQgYSB0aW1lLiAqLw0KLQlmb3IoIGlCeXRlID0gMDsgaUJ5dGUgPCBmc1BVVENfRklMRV9TSVpFOyBpQnl0ZSsrICkNCi0Jew0KLQkJaVJldHVybmVkID0gZl9nZXRjKCBweEZpbGUgKTsNCi0JCWNvbmZpZ0FTU0VSVCggaVJldHVybmVkID09ICAoICggaW50ICkgJzAnICsgaUJ5dGUgKSApOw0KLQl9DQotDQotCS8qIEZpbmlzaGVkIHNvIGNsb3NlIHRoZSBmaWxlLiAqLw0KLQlmX2Nsb3NlKCBweEZpbGUgKTsNCi0NCi0JLyogTW92ZSBiYWNrIHRvIHRoZSByb290IGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCAiLi4vLi4iICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBPYnRhaW4gYW5kIHByaW50IG91dCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICovDQotCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQlwcmludGYoICJCYWNrIGluIHJvb3QgZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi19DQotDQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1NhbXBsZS1DTEktY29tbWFuZHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZmMzM3OS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1NhbXBsZS1DTEktY29tbWFuZHMuYworKysgL2Rldi9udWxsCkBAIC0xLDQyNyArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogU2VlIHRoZSBmb2xsb3dpbmcgVVJMIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY29tbWFuZHMgZGVmaW5lZCBpbiB0aGlzIGZpbGU6DQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cy9GcmVlUlRPU19QbHVzX1VEUC9FbWJlZGRlZF9FdGhlcm5ldF9FeGFtcGxlcy9FdGhlcm5ldF9SZWxhdGVkX0NMSV9Db21tYW5kcy5zaHRtbA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyogRnJlZVJUT1MrQ0xJIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0NCi0jaWZuZGVmICBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTDQotCSNkZWZpbmUgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyAwDQotI2VuZGlmDQotDQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBydW4tdGltZS1zdGF0cyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRhc2tTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgdGFzay1zdGF0cyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlJ1blRpbWVTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgZWNoby10aHJlZS1wYXJhbWV0ZXJzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBlY2hvLXBhcmFtZXRlcnMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBSZWdpc3RlcnMgdGhlIENMSSBjb21tYW5kcyBkZWZpbmVkIHdpdGhpbiB0aGlzIGZpbGUgd2l0aCB0aGUgRnJlZVJUT1MrQ0xJDQotICogY29tbWFuZCBsaW5lIGludGVyZmFjZS4NCi0gKi8NCi12b2lkIHZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCB2b2lkICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSAidHJhY2Ugc3RhcnQiIGFuZCAidHJhY2Ugc3RvcCIgY29tbWFuZHM7DQotICovDQotI2lmIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgPT0gMQ0KLQlzdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZTdGFydFN0b3BUcmFjZUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLSNlbmRpZg0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJydW4tdGltZS1zdGF0cyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICAgVGhpcw0KLWdlbmVyYXRlcyBhIHRhYmxlIHRoYXQgc2hvd3MgaG93IG11Y2ggcnVuIHRpbWUgZWFjaCB0YXNrIGhhcyAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFJ1blRpbWVTdGF0cyA9DQotew0KLQkicnVuLXRpbWUtc3RhdHMiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5ydW4tdGltZS1zdGF0czpcclxuIERpc3BsYXlzIGEgdGFibGUgc2hvd2luZyBob3cgbXVjaCBwcm9jZXNzaW5nIHRpbWUgZWFjaCBGcmVlUlRPUyB0YXNrIGhhcyB1c2VkXHJcbiIsDQotCXBydlJ1blRpbWVTdGF0c0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTAgLyogTm8gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAidGFzay1zdGF0cyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzIGdlbmVyYXRlcw0KLWEgdGFibGUgdGhhdCBnaXZlcyBpbmZvcm1hdGlvbiBvbiBlYWNoIHRhc2sgaW4gdGhlIHN5c3RlbS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhUYXNrU3RhdHMgPQ0KLXsNCi0JInRhc2stc3RhdHMiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG50YXNrLXN0YXRzOlxyXG4gRGlzcGxheXMgYSB0YWJsZSBzaG93aW5nIHRoZSBzdGF0ZSBvZiBlYWNoIEZyZWVSVE9TIHRhc2tcclxuIiwNCi0JcHJ2VGFza1N0YXRzQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJlY2hvXzNfcGFyYW1ldGVycyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzDQotdGFrZXMgZXhhY3RseSB0aHJlZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIGNvbW1hbmQgc2ltcGx5IGVjaG9zIGJhY2sgb25lIGF0IGENCi10aW1lLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRocmVlUGFyYW1ldGVyRWNobyA9DQotew0KLQkiZWNoby0zLXBhcmFtZXRlcnMiLA0KLQkiXHJcbmVjaG8tMy1wYXJhbWV0ZXJzIDxwYXJhbTE+IDxwYXJhbTI+IDxwYXJhbTM+OlxyXG4gRXhwZWN0cyB0aHJlZSBwYXJhbWV0ZXJzLCBlY2hvcyBlYWNoIGluIHR1cm5cclxuIiwNCi0JcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMyAvKiBUaHJlZSBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZCwgd2hpY2ggY2FuIHRha2UgYW55IHZhbHVlLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgImVjaG9fcGFyYW1ldGVycyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzDQotdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0aGF0IHRoZSBjb21tYW5kIHNpbXBseSBlY2hvcyBiYWNrIG9uZSBhdA0KLWEgdGltZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhQYXJhbWV0ZXJFY2hvID0NCi17DQotCSJlY2hvLXBhcmFtZXRlcnMiLA0KLQkiXHJcbmVjaG8tcGFyYW1ldGVycyA8Li4uPjpcclxuIFRha2UgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIGVjaG9zIGVhY2ggaW4gdHVyblxyXG4iLA0KLQlwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JLTEgLyogVGhlIHVzZXIgY2FuIGVudGVyIGFueSBudW1iZXIgb2YgY29tbWFuZHMuICovDQotfTsNCi0NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotCS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJ0cmFjZSIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzIHRha2VzIGEgc2luZ2xlDQotCXBhcmFtZXRlciwgd2hpY2ggY2FuIGJlIGVpdGhlciAic3RhcnQiIG9yICJzdG9wIi4gKi8NCi0Jc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4U3RhcnRTdG9wVHJhY2UgPQ0KLQl7DQotCQkidHJhY2UiLA0KLQkJIlxyXG50cmFjZSBbc3RhcnQgfCBzdG9wXTpcclxuIFN0YXJ0cyBvciBzdG9wcyBhIHRyYWNlIHJlY29yZGluZyBmb3Igdmlld2luZyBpbiBGcmVlUlRPUytUcmFjZVxyXG4iLA0KLQkJcHJ2U3RhcnRTdG9wVHJhY2VDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkJMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAgVmFsaWQgdmFsdWVzIGFyZSAic3RhcnQiIGFuZCAic3RvcCIuICovDQotCX07DQotI2VuZGlmIC8qIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgKi8NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCB2b2lkICkNCi17DQotCS8qIFJlZ2lzdGVyIGFsbCB0aGUgY29tbWFuZCBsaW5lIGNvbW1hbmRzIGRlZmluZWQgaW1tZWRpYXRlbHkgYWJvdmUuICovDQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhUYXNrU3RhdHMgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFJ1blRpbWVTdGF0cyApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VGhyZWVQYXJhbWV0ZXJFY2hvICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhQYXJhbWV0ZXJFY2hvICk7DQotDQotCSNpZiggY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxICkNCi0Jew0KLQkJRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmIHhTdGFydFN0b3BUcmFjZSApOw0KLQl9DQotCSNlbmRpZg0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUYXNrU3RhdHNDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpjb25zdCBwY0hlYWRlciA9ICJUYXNrICAgICAgICAgIFN0YXRlICBQcmlvcml0eSAgU3RhY2sJI1xyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIjsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQkvKiBHZW5lcmF0ZSBhIHRhYmxlIG9mIHRhc2sgc3RhdHMuICovDQotCXN0cmNweSggcGNXcml0ZUJ1ZmZlciwgcGNIZWFkZXIgKTsNCi0JdlRhc2tMaXN0KCBwY1dyaXRlQnVmZmVyICsgc3RybGVuKCBwY0hlYWRlciApICk7DQotDQotCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JcGRGQUxTRS4gKi8NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlJ1blRpbWVTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKiBjb25zdCBwY0hlYWRlciA9ICJUYXNrICAgICAgICAgICAgQWJzIFRpbWUgICAgICAlIFRpbWVcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4iOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCS8qIEdlbmVyYXRlIGEgdGFibGUgb2YgdGFzayBzdGF0cy4gKi8NCi0Jc3RyY3B5KCBwY1dyaXRlQnVmZmVyLCBwY0hlYWRlciApOw0KLQl2VGFza0dldFJ1blRpbWVTdGF0cyggcGNXcml0ZUJ1ZmZlciArIHN0cmxlbiggcGNIZWFkZXIgKSApOw0KLQ0KLQkvKiBUaGVyZSBpcyBubyBtb3JlIGRhdGEgdG8gcmV0dXJuIGFmdGVyIHRoaXMgc2luZ2xlIHN0cmluZywgc28gcmV0dXJuDQotCXBkRkFMU0UuICovDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUaHJlZVBhcmFtZXRlckVjaG9Db21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgsIHhSZXR1cm47DQotc3RhdGljIHBvcnRCQVNFX1RZUEUgbFBhcmFtZXRlck51bWJlciA9IDA7DQotDQotCS8qIFJlbW92ZSBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMsIGFuZCBjaGVjayB0aGUNCi0Jd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0Jd3JpdGUgYnVmZmVyIGxlbmd0aCBpcyBhZGVxdWF0ZSwgc28gZG9lcyBub3QgY2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvd3MuICovDQotCSggdm9pZCApIHBjQ29tbWFuZFN0cmluZzsNCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQljb25maWdBU1NFUlQoIHBjV3JpdGVCdWZmZXIgKTsNCi0NCi0JaWYoIGxQYXJhbWV0ZXJOdW1iZXIgPT0gMCApDQotCXsNCi0JCS8qIFRoZSBmaXJzdCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgdGhlIGNvbW1hbmQgaGFzIGJlZW4NCi0JCWVudGVyZWQganVzdCBhIGhlYWRlciBzdHJpbmcgaXMgcmV0dXJuZWQuICovDQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiVGhlIHRocmVlIHBhcmFtZXRlcnMgd2VyZTpcclxuIiApOw0KLQ0KLQkJLyogTmV4dCB0aW1lIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQgdGhlIGZpcnN0IHBhcmFtZXRlciB3aWxsIGJlIGVjaG9lZA0KLQkJYmFjay4gKi8NCi0JCWxQYXJhbWV0ZXJOdW1iZXIgPSAxTDsNCi0NCi0JCS8qIFRoZXJlIGlzIG1vcmUgZGF0YSB0byBiZSByZXR1cm5lZCBhcyBubyBwYXJhbWV0ZXJzIGhhdmUgYmVlbiBlY2hvZWQNCi0JCWJhY2sgeWV0LiAqLw0KLQkJeFJldHVybiA9IHBkUEFTUzsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCS8qIE9idGFpbiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCSgNCi0JCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCQlsUGFyYW1ldGVyTnVtYmVyLAkJLyogUmV0dXJuIHRoZSBuZXh0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJKTsNCi0NCi0JCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQkJY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkJLyogUmV0dXJuIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJbWVtc2V0KCBwY1dyaXRlQnVmZmVyLCAweDAwLCB4V3JpdGVCdWZmZXJMZW4gKTsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlZDogIiwgKCBpbnQgKSBsUGFyYW1ldGVyTnVtYmVyICk7DQotCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCBwY1BhcmFtZXRlciwgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCApOw0KLQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgIlxyXG4iLCBzdHJsZW4oICJcclxuIiApICk7DQotDQotCQkvKiBJZiB0aGlzIGlzIHRoZSBsYXN0IG9mIHRoZSB0aHJlZSBwYXJhbWV0ZXJzIHRoZW4gdGhlcmUgYXJlIG5vIG1vcmUNCi0JCXN0cmluZ3MgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJaWYoIGxQYXJhbWV0ZXJOdW1iZXIgPT0gM0wgKQ0KLQkJew0KLQkJCS8qIElmIHRoaXMgaXMgdGhlIGxhc3Qgb2YgdGhlIHRocmVlIHBhcmFtZXRlcnMgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZQ0KLQkJCXN0cmluZ3MgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZEZBTFNFOw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIgPSAwTDsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQkvKiBUaGVyZSBhcmUgbW9yZSBwYXJhbWV0ZXJzIHRvIHJldHVybiBhZnRlciB0aGlzIG9uZS4gKi8NCi0JCQl4UmV0dXJuID0gcGRUUlVFOw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIrKzsNCi0JCX0NCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCwgeFJldHVybjsNCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyTnVtYmVyID0gMDsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAwICkNCi0Jew0KLQkJLyogVGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbg0KLQkJZW50ZXJlZCBqdXN0IGEgaGVhZGVyIHN0cmluZyBpcyByZXR1cm5lZC4gKi8NCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUaGUgcGFyYW1ldGVycyB3ZXJlOlxyXG4iICk7DQotDQotCQkvKiBOZXh0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpbGwgYmUgZWNob2VkDQotCQliYWNrLiAqLw0KLQkJbFBhcmFtZXRlck51bWJlciA9IDFMOw0KLQ0KLQkJLyogVGhlcmUgaXMgbW9yZSBkYXRhIHRvIGJlIHJldHVybmVkIGFzIG5vIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGVjaG9lZA0KLQkJYmFjayB5ZXQuICovDQotCQl4UmV0dXJuID0gcGRQQVNTOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJKA0KLQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCWxQYXJhbWV0ZXJOdW1iZXIsCQkvKiBSZXR1cm4gdGhlIG5leHQgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkpOw0KLQ0KLQkJaWYoIHBjUGFyYW1ldGVyICE9IE5VTEwgKQ0KLQkJew0KLQkJCS8qIFJldHVybiB0aGUgcGFyYW1ldGVyIHN0cmluZy4gKi8NCi0JCQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlZDogIiwgKCBpbnQgKSBsUGFyYW1ldGVyTnVtYmVyICk7DQotCQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgcGNQYXJhbWV0ZXIsIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGggKTsNCi0JCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCAiXHJcbiIsIHN0cmxlbiggIlxyXG4iICkgKTsNCi0NCi0JCQkvKiBUaGVyZSBtaWdodCBiZSBtb3JlIHBhcmFtZXRlcnMgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZFRSVUU7DQotCQkJbFBhcmFtZXRlck51bWJlcisrOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIE5vIG1vcmUgcGFyYW1ldGVycyB3ZXJlIGZvdW5kLiAgTWFrZSBzdXJlIHRoZSB3cml0ZSBidWZmZXIgZG9lcw0KLQkJCW5vdCBjb250YWluIGEgdmFsaWQgc3RyaW5nLiAqLw0KLQkJCXBjV3JpdGVCdWZmZXJbIDAgXSA9IDB4MDA7DQotDQotCQkJLyogTm8gbW9yZSBkYXRhIHRvIHJldHVybi4gKi8NCi0JCQl4UmV0dXJuID0gcGRGQUxTRTsNCi0NCi0JCQkvKiBTdGFydCBvdmVyIHRoZSBuZXh0IHRpbWUgdGhpcyBjb21tYW5kIGlzIGV4ZWN1dGVkLiAqLw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIgPSAwOw0KLQkJfQ0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotDQotCXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlN0YXJ0U3RvcFRyYWNlQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi0Jew0KLQljaGFyICpwY1BhcmFtZXRlcjsNCi0JcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLQ0KLQkJLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQkJd3JpdGUgYnVmZmVyIGlzIG5vdCBOVUxMLiAgTk9URSAtIGZvciBzaW1wbGljaXR5LCB0aGlzIGV4YW1wbGUgYXNzdW1lcyB0aGUNCi0JCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkJKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkJKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQkJY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCQkoDQotCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCSZsUGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJKTsNCi0NCi0JCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQkJY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkJLyogVGhlcmUgYXJlIG9ubHkgdHdvIHZhbGlkIHBhcmFtZXRlciB2YWx1ZXMuICovDQotCQlpZiggc3RybmNtcCggcGNQYXJhbWV0ZXIsICJzdGFydCIsIHN0cmxlbiggInN0YXJ0IiApICkgPT0gMCApDQotCQl7DQotCQkJLyogU3RhcnQgb3IgcmVzdGFydCB0aGUgdHJhY2UuICovDQotCQkJdlRyYWNlU3RvcCgpOw0KLQkJCXZUcmFjZUNsZWFyKCk7DQotCQkJdlRyYWNlU3RhcnQoKTsNCi0NCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiVHJhY2UgcmVjb3JkaW5nIChyZSlzdGFydGVkLlxyXG4iICk7DQotCQl9DQotCQllbHNlIGlmKCBzdHJuY21wKCBwY1BhcmFtZXRlciwgInN0b3AiLCBzdHJsZW4oICJzdG9wIiApICkgPT0gMCApDQotCQl7DQotCQkJLyogRW5kIHRoZSB0cmFjZSwgaWYgb25lIGlzIHJ1bm5pbmcuICovDQotCQkJdlRyYWNlU3RvcCgpOw0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJTdG9wcGluZyB0cmFjZSByZWNvcmRpbmcuXHJcbiIgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiVmFsaWQgcGFyYW1ldGVycyBhcmUgJ3N0YXJ0JyBhbmQgJ3N0b3AnLlxyXG4iICk7DQotCQl9DQotDQotCQkvKiBUaGVyZSBpcyBubyBtb3JlIGRhdGEgdG8gcmV0dXJuIGFmdGVyIHRoaXMgc2luZ2xlIHN0cmluZywgc28gcmV0dXJuDQotCQlwZEZBTFNFLiAqLw0KLQkJcmV0dXJuIHBkRkFMU0U7DQotCX0NCi0NCi0jZW5kaWYgLyogY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjNiNTU4Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInN0cmluZy5oIg0KLSNpbmNsdWRlICJzdGRpby5oIg0KLSNpbmNsdWRlICJzdGRpbnQuaCINCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJzZW1waHIuaCINCi0NCi0vKiBDb21tb24gZGVtbyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAic2VyaWFsLmgiDQotDQotLyogRXhhbXBsZSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1NfQ0xJLmgiDQotI2luY2x1ZGUgIlVBUlRDb21tYW5kQ29uc29sZS5oIg0KLQ0KLS8qIERpbWVuc2lvbnMgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIGlucHV0IGNoYXJhY3RlcnMgYXJlIHBsYWNlZC4gKi8NCi0jZGVmaW5lIGNtZE1BWF9JTlBVVF9TSVpFCQk1MA0KLQ0KLS8qIFRoZSBtYXhpbXVtIHRpbWUgaW4gdGlja3MgdG8gd2FpdCBmb3IgdGhlIFVBUlQgYWNjZXNzIG11dGV4LiAqLw0KLSNkZWZpbmUgY21kTUFYX01VVEVYX1dBSVQJCSggMjAwIC8gcG9ydFRJQ0tfUEVSSU9EX01TICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlIHByb2Nlc3NpbmcuDQotICovDQotc3RhdGljIHZvaWQgcHJ2VUFSVENvbW1hbmRDb25zb2xlVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogQ29uc3QgbWVzc2FnZXMgb3V0cHV0IGJ5IHRoZSBjb21tYW5kIGNvbnNvbGUuICovDQotc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwY1dlbGNvbWVNZXNzYWdlID0gIkZyZWVSVE9TIGNvbW1hbmQgc2VydmVyLlxyXG5UeXBlIEhlbHAgdG8gdmlldyBhIGxpc3Qgb2YgcmVnaXN0ZXJlZCBjb21tYW5kcy5cclxuXHJcbj4iOw0KLXN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgcGNFbmRPZk91dHB1dE1lc3NhZ2UgPSAiXHJcbltQcmVzcyBFTlRFUiB0byBleGVjdXRlIHRoZSBwcmV2aW91cyBjb21tYW5kIGFnYWluXVxyXG4+IjsNCi1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBjTmV3TGluZSA9ICJcclxuIjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZVQVJUQ29tbWFuZENvbnNvbGVTdGFydCggdWludDE2X3QgdXNTdGFja1NpemUsIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgdXhQcmlvcml0eSApDQotew0KLQkvKiBDcmVhdGUgdGhhdCB0YXNrIHRoYXQgaGFuZGxlcyB0aGUgY29uc29sZSBpdHNlbGYuICovDQotCXhUYXNrQ3JlYXRlKCAJcHJ2VUFSVENvbW1hbmRDb25zb2xlVGFzaywJCQkvKiBUaGUgdGFzayB0aGF0IGltcGxlbWVudHMgdGhlIGNvbW1hbmQgY29uc29sZS4gKi8NCi0JCQkJCSJDTEkiLAkJCQkJCQkJLyogVGV4dCBuYW1lIGFzc2lnbmVkIHRvIHRoZSB0YXNrLiAgVGhpcyBpcyBqdXN0IHRvIGFzc2lzdCBkZWJ1Z2dpbmcuICBUaGUga2VybmVsIGRvZXMgbm90IHVzZSB0aGlzIG5hbWUgaXRzZWxmLiAqLw0KLQkJCQkJdXNTdGFja1NpemUsCQkJCQkJLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFsbG9jYXRlZCB0byB0aGUgdGFzay4gKi8NCi0JCQkJCU5VTEwsCQkJCQkJCQkvKiBUaGUgcGFyYW1ldGVyIGlzIG5vdCB1c2VkLCBzbyBOVUxMIGlzIHBhc3NlZC4gKi8NCi0JCQkJCXV4UHJpb3JpdHksCQkJCQkJCS8qIFRoZSBwcmlvcml0eSBhbGxvY2F0ZWQgdG8gdGhlIHRhc2suICovDQotCQkJCQlOVUxMICk7CQkJCQkJCQkvKiBBIGhhbmRsZSBpcyBub3QgcmVxdWlyZWQsIHNvIGp1c3QgcGFzcyBOVUxMLiAqLw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZVQVJUQ29tbWFuZENvbnNvbGVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi1jaGFyIGNSeGVkQ2hhciwgY0lucHV0SW5kZXggPSAwLCAqcGNPdXRwdXRTdHJpbmc7DQotc3RhdGljIGNoYXIgY0lucHV0U3RyaW5nWyBjbWRNQVhfSU5QVVRfU0laRSBdLCBjTGFzdElucHV0U3RyaW5nWyBjbWRNQVhfSU5QVVRfU0laRSBdOw0KLXBvcnRCQVNFX1RZUEUgeFJldHVybmVkOw0KLQ0KLQkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQotDQotCS8qIE9idGFpbiB0aGUgYWRkcmVzcyBvZiB0aGUgb3V0cHV0IGJ1ZmZlci4gIE5vdGUgdGhlcmUgaXMgbm8gbXV0dWFsDQotCWV4Y2x1c2lvbiBvbiB0aGlzIGJ1ZmZlciBhcyBpdCBpcyBhc3N1bWVkIG9ubHkgb25lIGNvbW1hbmQgY29uc29sZQ0KLQlpbnRlcmZhY2Ugd2lsbCBiZSB1c2VkIGF0IGFueSBvbmUgdGltZS4gKi8NCi0JcGNPdXRwdXRTdHJpbmcgPSBGcmVlUlRPU19DTElHZXRPdXRwdXRCdWZmZXIoKTsNCi0NCi0JLyogU2VuZCB0aGUgd2VsY29tZSBtZXNzYWdlLiAqLw0KLQl2U2VyaWFsUHV0U3RyaW5nKCBOVUxMLCAoIGNvbnN0IHNpZ25lZCBjaGFyICogKSBwY1dlbGNvbWVNZXNzYWdlLCBzdHJsZW4oICggY2hhciAqICkgcGNXZWxjb21lTWVzc2FnZSApICk7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBPbmx5IGludGVyZXN0ZWQgaW4gcmVhZGluZyBvbmUgY2hhcmFjdGVyIGF0IGEgdGltZS4gKi8NCi0JCXdoaWxlKCB4U2VyaWFsR2V0Q2hhciggTlVMTCwgKCBzaWduZWQgY2hhciAqICkgJmNSeGVkQ2hhciwgcG9ydE1BWF9ERUxBWSApID09IHBkRkFMU0UgKTsNCi0NCi0JCS8qIEVjaG8gdGhlIGNoYXJhY3RlciBiYWNrLiAqLw0KLQkJeFNlcmlhbFB1dENoYXIoIE5VTEwsIGNSeGVkQ2hhciwgcG9ydE1BWF9ERUxBWSApOw0KLQ0KLQkJLyogV2FzIGl0IHRoZSBlbmQgb2YgdGhlIGxpbmU/ICovDQotCQlpZiggY1J4ZWRDaGFyID09ICdcbicgfHwgY1J4ZWRDaGFyID09ICdccicgKQ0KLQkJew0KLQkJCS8qIEp1c3QgdG8gc3BhY2UgdGhlIG91dHB1dCBmcm9tIHRoZSBpbnB1dC4gKi8NCi0JCQl2U2VyaWFsUHV0U3RyaW5nKCBOVUxMLCAoIGNvbnN0IHNpZ25lZCBjaGFyICogKSBwY05ld0xpbmUsIHN0cmxlbiggKCBjaGFyICogKSBwY05ld0xpbmUgKSApOw0KLQ0KLQkJCS8qIFNlZSBpZiB0aGUgY29tbWFuZCBpcyBlbXB0eSwgaW5kaWNhdGluZyB0aGF0IHRoZSBsYXN0IGNvbW1hbmQgaXMNCi0JCQl0byBiZSBleGVjdXRlZCBhZ2Fpbi4gKi8NCi0JCQlpZiggY0lucHV0SW5kZXggPT0gMCApDQotCQkJew0KLQkJCQkvKiBDb3B5IHRoZSBsYXN0IGNvbW1hbmQgYmFjayBpbnRvIHRoZSBpbnB1dCBzdHJpbmcuICovDQotCQkJCXN0cmNweSggKCBjaGFyICogKSBjSW5wdXRTdHJpbmcsICggY2hhciAqICkgY0xhc3RJbnB1dFN0cmluZyApOw0KLQkJCX0NCi0NCi0JCQkvKiBQYXNzIHRoZSByZWNlaXZlZCBjb21tYW5kIHRvIHRoZSBjb21tYW5kIGludGVycHJldGVyLiAgVGhlDQotCQkJY29tbWFuZCBpbnRlcnByZXRlciBpcyBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBpdCByZXR1cm5zIHBkRkFMU0UNCi0JCQkoaW5kaWNhdGluZyB0aGVyZSBpcyBubyBtb3JlIG91dHB1dCkgYXMgaXQgbWlnaHQgZ2VuZXJhdGUgbW9yZSB0aGFuDQotCQkJb25lIHN0cmluZy4gKi8NCi0JCQlkbw0KLQkJCXsNCi0JCQkJLyogR2V0IHRoZSBuZXh0IG91dHB1dCBzdHJpbmcgZnJvbSB0aGUgY29tbWFuZCBpbnRlcnByZXRlci4gKi8NCi0JCQkJeFJldHVybmVkID0gRnJlZVJUT1NfQ0xJUHJvY2Vzc0NvbW1hbmQoIGNJbnB1dFN0cmluZywgcGNPdXRwdXRTdHJpbmcsIGNvbmZpZ0NPTU1BTkRfSU5UX01BWF9PVVRQVVRfU0laRSApOw0KLQ0KLQkJCQkvKiBXcml0ZSB0aGUgZ2VuZXJhdGVkIHN0cmluZyB0byB0aGUgVUFSVC4gKi8NCi0JCQkJdlNlcmlhbFB1dFN0cmluZyggTlVMTCwgKCBjb25zdCBzaWduZWQgY2hhciAqICkgcGNPdXRwdXRTdHJpbmcsIHN0cmxlbiggKCBjaGFyICogKSBwY091dHB1dFN0cmluZyApICk7DQotDQotCQkJfSB3aGlsZSggeFJldHVybmVkICE9IHBkRkFMU0UgKTsNCi0NCi0JCQkvKiBBbGwgdGhlIHN0cmluZ3MgZ2VuZXJhdGVkIGJ5IHRoZSBpbnB1dCBjb21tYW5kIGhhdmUgYmVlbiBzZW50Lg0KLQkJCUNsZWFyIHRoZSBpbnB1dAlzdHJpbmcgcmVhZHkgdG8gcmVjZWl2ZSB0aGUgbmV4dCBjb21tYW5kLiAgUmVtZW1iZXINCi0JCQl0aGUgY29tbWFuZCB0aGF0IHdhcyBqdXN0IHByb2Nlc3NlZCBmaXJzdCBpbiBjYXNlIGl0IGlzIHRvIGJlDQotCQkJcHJvY2Vzc2VkIGFnYWluLiAqLw0KLQkJCXN0cmNweSggKCBjaGFyICogKSBjTGFzdElucHV0U3RyaW5nLCAoIGNoYXIgKiApIGNJbnB1dFN0cmluZyApOw0KLQkJCWNJbnB1dEluZGV4ID0gMDsNCi0JCQltZW1zZXQoIGNJbnB1dFN0cmluZywgMHgwMCwgY21kTUFYX0lOUFVUX1NJWkUgKTsNCi0JCQl2U2VyaWFsUHV0U3RyaW5nKCBOVUxMLCAoIGNvbnN0IHNpZ25lZCBjaGFyICogKSBwY0VuZE9mT3V0cHV0TWVzc2FnZSwgc3RybGVuKCAoIGNoYXIgKiApIHBjRW5kT2ZPdXRwdXRNZXNzYWdlICkgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlpZiggY1J4ZWRDaGFyID09ICdccicgKQ0KLQkJCXsNCi0JCQkJLyogSWdub3JlIHRoZSBjaGFyYWN0ZXIuICovDQotCQkJfQ0KLQkJCWVsc2UgaWYoIGNSeGVkQ2hhciA9PSAnXGInICkNCi0JCQl7DQotCQkJCS8qIEJhY2tzcGFjZSB3YXMgcHJlc3NlZC4gIEVyYXNlIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUNCi0JCQkJc3RyaW5nIC0gaWYgYW55LiAqLw0KLQkJCQlpZiggY0lucHV0SW5kZXggPiAwICkNCi0JCQkJew0KLQkJCQkJY0lucHV0SW5kZXgtLTsNCi0JCQkJCWNJbnB1dFN0cmluZ1sgY0lucHV0SW5kZXggXSA9ICdcMCc7DQotCQkJCX0NCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJLyogQSBjaGFyYWN0ZXIgd2FzIGVudGVyZWQuICBBZGQgaXQgdG8gdGhlIHN0cmluZw0KLQkJCQllbnRlcmVkIHNvIGZhci4gIFdoZW4gYSBcbiBpcyBlbnRlcmVkIHRoZSBjb21wbGV0ZQ0KLQkJCQlzdHJpbmcgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIuICovDQotCQkJCWlmKCAoIGNSeGVkQ2hhciA+PSAnICcgKSAmJiAoIGNSeGVkQ2hhciA8PSAnficgKSApDQotCQkJCXsNCi0JCQkJCWlmKCBjSW5wdXRJbmRleCA8IGNtZE1BWF9JTlBVVF9TSVpFICkNCi0JCQkJCXsNCi0JCQkJCQljSW5wdXRTdHJpbmdbIGNJbnB1dEluZGV4IF0gPSBjUnhlZENoYXI7DQotCQkJCQkJY0lucHV0SW5kZXgrKzsNCi0JCQkJCX0NCi0JCQkJfQ0KLQkJCX0NCi0JCX0NCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMThmYWIzMi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL1VBUlRDb21tYW5kQ29uc29sZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotI2lmbmRlZiBVQVJUX0NPTU1BTkRfQ09OU09MRV9IDQotI2RlZmluZSBVQVJUX0NPTU1BTkRfQ09OU09MRV9IDQotDQotLyoNCi0gKiBDcmVhdGUgdGhlIHRhc2sgdGhhdCBpbXBsZW1lbnRzIGEgY29tbWFuZCBjb25zb2xlIHVzaW5nIHRoZSBVU0IgdmlydHVhbCBjb20NCi0gKiBwb3J0IGRyaXZlciBmb3IgaW50cHV0IGFuZCBvdXRwdXQuDQotICovDQotdm9pZCB2VUFSVENvbW1hbmRDb25zb2xlU3RhcnQoIHVuc2lnbmVkIHNob3J0IHVzU3RhY2tTaXplLCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFIHV4UHJpb3JpdHkgKTsNCi0NCi0jZW5kaWYgLyogVUFSVF9DT01NQU5EX0NPTlNPTEVfSCAqLw0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vY29uZmlnX2ZhdF9zbC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNjljNjQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYW4gY29tcGxlbWVudGFyeSBjb21wb25lbnQgcHJvdmlkZWQgdG8gUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAqIEx0ZC4gYnkgSENDIEVtYmVkZGVkIGZvciB1c2Ugd2l0aCBGcmVlUlRPUy4gIEl0IGlzIG5vdCwgaW4gaXRzZWxmLCBwYXJ0IG9mDQotICogdGhlIEZyZWVSVE9TIGtlcm5lbC4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IGZyb20gRnJlZVJUT1MsDQotICogYW5kIHVzZXMgYSBkaWZmZXJlbnQgbGljZW5zZSB0byBGcmVlUlRPUy4gIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbA0KLSAqIGxpY2Vuc2UgbW9kZWwsIGluZm9ybWF0aW9uIG9uIHdoaWNoIGlzIHByb3ZpZGVkIGJlbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQNCi0gKiB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSBHTlUgR2VuZXJhbA0KLSAqIFB1YmxpYyBsaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgdGhpcyB0ZXh0Lg0KLSAqIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUgZm9sbG93aW5nDQotICogVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIHdpc2ggdG8gaW5jb3Jwb3JhdGUgRnJlZVJUT1MrRkFUIFNMIGludG8NCi0gKiBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgcmVkaXN0cmlidXRpb24gaW4gYW55IGZvcm0gbXVzdCBmaXJzdCBvYnRhaW4gYQ0KLSAqIGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwgc3VwcG9ydCBhbmQNCi0gKiBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytGQVQgU0wgcHJvZHVjdC4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuDQotICogYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMNCi0gKiB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19GQVRfU0xfSA0KLSNkZWZpbmUgX0NPTkZJR19GQVRfU0xfSA0KLQ0KLSNpbmNsdWRlICIuLi92ZXJzaW9uL3Zlcl9mYXRfc2wuaCINCi0jaWYgVkVSX0ZBVF9TTF9NQUpPUiAhPSA1IHx8IFZFUl9GQVRfU0xfTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIEZBVF9TTCB2ZXJzaW9uIG51bWJlciENCi0jZW5kaWYNCi0NCi0jaW5jbHVkZSAiLi4vYXBpL2FwaV9tZHJpdmVyLmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKioNCi0qKiAgRkFUIFNMIHVzZXIgc2V0dGluZ3MNCi0qKg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgRl9TRUNUT1JfU0laRSAgICAgICAgICAgNTEydSAgLyogRGlzayBzZWN0b3Igc2l6ZS4gKi8NCi0jZGVmaW5lIEZfRlNfVEhSRUFEX0FXQVJFICAgICAgIDAgICAgIC8qIFNldCB0byBvbmUgaWYgdGhlIGZpbGUgc3lzdGVtIHdpbGwgYmUgYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrLiAqLw0KLSNkZWZpbmUgRl9NQVhQQVRIICAgICAgICAgICAgICAgNjQgICAgLyogTWF4aW11bSBsZW5ndGggYSBmaWxlIG5hbWUgKGluY2x1ZGluZyBpdHMgZnVsbCBwYXRoKSBjYW4gYmUuICovDQotI2RlZmluZSBGX01BWF9MT0NLX1dBSVRfVElDS1MgICAyMCAgICAvKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgUlRPUyB0aWNrcyB0byB3YWl0IHdoZW4gYXR0ZW1wdGluZyB0byBvYnRhaW4gYSBsb2NrIG9uIHRoZSBmaWxlIHN5c3RlbSB3aGVuIEZfRlNfVEhSRUFEX0FXQVJFIGlzIHNldCB0byAxLiAqLw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX0NPTkZJR19GQVRfU0xfSCAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vY29uZmlnX21kcml2ZXJfcmFtLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL2NvbmZpZ19tZHJpdmVyX3JhbS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2FkOWM2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vY29uZmlnX21kcml2ZXJfcmFtLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBWMS4wLjEgKEMpIDIwMTQgSENDIEVtYmVkZGVkDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYW4gY29tcGxlbWVudGFyeSBjb21wb25lbnQgcHJvdmlkZWQgdG8gUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAqIEx0ZC4gYnkgSENDIEVtYmVkZGVkIGZvciB1c2Ugd2l0aCBGcmVlUlRPUy4gIEl0IGlzIG5vdCwgaW4gaXRzZWxmLCBwYXJ0IG9mDQotICogdGhlIEZyZWVSVE9TIGtlcm5lbC4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBsaWNlbnNlZCBzZXBhcmF0ZWx5IGZyb20gRnJlZVJUT1MsDQotICogYW5kIHVzZXMgYSBkaWZmZXJlbnQgbGljZW5zZSB0byBGcmVlUlRPUy4gIEZyZWVSVE9TK0ZBVCBTTCB1c2VzIGEgZHVhbA0KLSAqIGxpY2Vuc2UgbW9kZWwsIGluZm9ybWF0aW9uIG9uIHdoaWNoIGlzIHByb3ZpZGVkIGJlbG93Og0KLSAqDQotICogLSBPcGVuIHNvdXJjZSBsaWNlbnNpbmcgLQ0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhIGZyZWUgZG93bmxvYWQgYW5kIG1heSBiZSB1c2VkLCBtb2RpZmllZCBhbmQgZGlzdHJpYnV0ZWQNCi0gKiB3aXRob3V0IGNoYXJnZSBwcm92aWRlZCB0aGUgdXNlciBhZGhlcmVzIHRvIHZlcnNpb24gdHdvIG9mIHRoZSBHTlUgR2VuZXJhbA0KLSAqIFB1YmxpYyBsaWNlbnNlIChHUEwpIGFuZCBkb2VzIG5vdCByZW1vdmUgdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgdGhpcyB0ZXh0Lg0KLSAqIFRoZSBHUEwgVjIgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGdudS5vcmcgd2ViIHNpdGUsIGFuZCBvbiB0aGUgZm9sbG93aW5nDQotICogVVJMOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9ncGwtMi4wLnR4dA0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgd2hvIHdpc2ggdG8gaW5jb3Jwb3JhdGUgRnJlZVJUT1MrRkFUIFNMIGludG8NCi0gKiBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgcmVkaXN0cmlidXRpb24gaW4gYW55IGZvcm0gbXVzdCBmaXJzdCBvYnRhaW4gYQ0KLSAqIGNvbW1lcmNpYWwgbGljZW5zZSAtIGFuZCBpbi1zby1kb2luZyBzdXBwb3J0IHRoZSBtYWludGVuYW5jZSwgc3VwcG9ydCBhbmQNCi0gKiBmdXJ0aGVyIGRldmVsb3BtZW50IG9mIHRoZSBGcmVlUlRPUytGQVQgU0wgcHJvZHVjdC4gIENvbW1lcmNpYWwgbGljZW5zZXMgY2FuDQotICogYmUgb2J0YWluZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcgYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMNCi0gKiB0byBiZSBjaGFuZ2VkLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwuICBZb3UNCi0gKiBjYW5ub3QgdXNlIEZyZWVSVE9TK0ZBVCBTTCB1bmxlc3MgeW91IGFncmVlIHRoYXQgeW91IHVzZSB0aGUgc29mdHdhcmUgJ2FzDQotICogaXMnLiAgRnJlZVJUT1MrRkFUIFNMIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlDQotICogaW1wbGllZCB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBDQotICogUEFSVElDVUxBUiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gYW5kIEhDQyBFbWJlZGRlZCBkaXNjbGFpbXMgYWxsDQotICogY29uZGl0aW9ucyBhbmQgdGVybXMsIGJlIHRoZXkgaW1wbGllZCwgZXhwcmVzc2VkLCBvciBzdGF0dXRvcnkuDQotICoNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZyZWVSVE9TLVBsdXMNCi0gKg0KLSAqLw0KLQ0KLSNpZm5kZWYgX0NPTkZJR19NRFJJVkVSX1JBTV9IXw0KLSNkZWZpbmUgX0NPTkZJR19NRFJJVkVSX1JBTV9IXw0KLQ0KLSNpbmNsdWRlICIuLi92ZXJzaW9uL3Zlcl9tZHJpdmVyX3JhbS5oIg0KLSNpZiBWRVJfTURSSVZFUl9SQU1fTUFKT1IgIT0gMSB8fCBWRVJfTURSSVZFUl9SQU1fTUlOT1IgIT0gMg0KLSAjZXJyb3IgSW5jb21wYXRpYmxlIE1EUklWRVJfUkFNIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTURSSVZFUl9SQU1fU0VDVE9SX1NJWkUgICA1MTIgICAgICAgLyogU2VjdG9yIHNpemUgKi8NCi0NCi0jZGVmaW5lIE1EUklWRVJfUkFNX1ZPTFVNRTBfU0laRSAgKDY0ICogMTAyNCkgLyogZGVmaW50aW9uIGZvciBzaXplIG9mIHJhbWRyaXZlMCAqLw0KLQ0KLSNkZWZpbmUgTURSSVZFUl9NRU1fTE9OR19BQ0NFU1MgICAxICAgICAgICAgLyogc2V0IHRoaXMgdmFsdWUgdG8gMSBpZiAzMmJpdCBhY2Nlc3MgYXZhaWxhYmxlICovDQotDQotI2VuZGlmIC8qIGlmbmRlZiBfQ09ORklHX01EUklWRVJfUkFNX0hfICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vbWFpbl9mdWxsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc2MjE2ZWEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9tYWluX2Z1bGwuYworKysgL2Rldi9udWxsCkBAIC0xLDUyMSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KLSAqIHByb2plY3QsIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQotICogbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIGluIG1haW4uYyBpcyB1c2VkIHRvIHNlbGVjdA0KLSAqIGJldHdlZW4gdGhlIHR3by4gIFNlZSB0aGUgbm90ZXMgb24gdXNpbmcgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQ0KLSAqIGluIG1haW4uYy4gIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gdmVyc2lvbi4NCi0gKg0KLSAqIE5PVEUgMjogIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQ0KLSAqIGZ1bGwgZGVtby4gIEdlbmVyaWMgZnVuY3Rpb25zLCBzdWNoIEZyZWVSVE9TIGhvb2sgZnVuY3Rpb25zLCBhbmQgZnVuY3Rpb25zDQotICogcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgYXJlIGRlZmluZWQgaW4gbWFpbi5jLg0KLSAqDQotICogTk9URSAzOiAgSWYgbWFpbklOQ0xVREVfRkFUX1NMX0RFTU8gaXMgc2V0IHRvIDEgdGhlbiB0aGUgVUFSVCBpcyB1c2VkIHRvDQotICogaW50ZXJmYWNlIHRvIHRoZSBGcmVlUlRPUytDTEkgY29tbWFuZCBsaW5lIGludGVyZmFjZS4gIElmDQotICogbWFpbklOQ0xVREVfRkFUX1NMX0RFTU8gaXMgc2V0IHRvIDAgdGhlbiB0aGUgVUFSVCBpcyB1c2VkIHRvIHJ1biB0aGUgc3RhbmRhcmQNCi0gKiBDT00gdGVzdCB0YXNrcyBhbmQgYSBsb29wYmFjayBjb25uZWN0b3IgbXVzdCBiZSBmaXR0ZWQgdG8gdGhlIFVBUlQgcG9ydA0KLSAqIGJlY2F1c2UgdGhlIHRlc3QgZXhwZWN0cyB0byByZWNlaXZlIGV2ZXJ5IGNoYXJhY3RlciB0aGF0IGlzIHRyYW5zbWl0dGVkLiAgQQ0KLSAqIHNpbXBsZSBsb29wYmFjayBjb25uZWN0b3IgY2FuIGJlIGNyZWF0ZWQgYnkgbGlua2luZyBwaW5zIDIgYW5kIDMgb2YgdGhlIDkgd2F5DQotICogVUFSVCBjb25uZWN0b3IuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogbWFpbl9mdWxsKCkgY3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MgYW5kIHNvZnR3YXJlIHRpbWVycywgdGhlbg0KLSAqIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIHdlYiBkb2N1bWVudGF0aW9uIHByb3ZpZGVzIG1vcmUgZGV0YWlscyBvZiB0aGUNCi0gKiBzdGFuZGFyZCBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB3aGljaCBwcm92aWRlIG5vIHBhcnRpY3VsYXIgZnVuY3Rpb25hbGl0eSwNCi0gKiBidXQgZG8gcHJvdmlkZSBhIGdvb2QgZXhhbXBsZSBvZiBob3cgdG8gdXNlIHRoZSBGcmVlUlRPUyBBUEkuDQotICoNCi0gKiBJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcywgdGhlIGZvbGxvd2luZyB0YXNrcyBhbmQgdGVzdHMgYXJlDQotICogZGVmaW5lZCBhbmQvb3IgY3JlYXRlZCB3aXRoaW4gdGhpcyBmaWxlOg0KLSAqDQotICogRnJlZVJUT1MrQ0xJIGNvbW1hbmQgY29uc29sZS4gIFRoZSBjb21tYW5kIGNvbnNvbGUgaXMgYWNjZXNzIHRocm91Z2ggVUFSVDINCi0gKiB1c2luZyAxMTUyMDAgYmF1ZCBpZiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyBpcyBzZXQgdG8gMS4gIEZvciByZWFzb25zIG9mDQotICogcm9idXN0bmVzcyB0ZXN0aW5nIHRoZSBVQVJUIGRyaXZlciBpcyBkZWxpYmVyYXRlbHkgd3JpdHRlbiB0byBiZSBpbmVmZmljaWVudA0KLSAqIGFuZCBzaG91bGQgbm90IGJlIHVzZWQgYXMgYSB0ZW1wbGF0ZSBmb3IgYSBwcm9kdWN0aW9uIGRyaXZlci4gIFR5cGUgImhlbHAiIHRvDQotICogc2VlIGEgbGlzdCBvZiByZWdpc3RlcmVkIGNvbW1hbmRzLiAgVGhlIEZyZWVSVE9TK0NMSSBsaWNlbnNlIGlzIGRpZmZlcmVudCB0bw0KLSAqIHRoZSBGcmVlUlRPUyBsaWNlbnNlLCBzZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvY2xpIGZvciBsaWNlbnNlIGFuZCB1c2FnZQ0KLSAqIGRldGFpbHMuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wuICBGcmVlUlRPUytGQVQgU0wgaXMgZGVtb25zdHJhdGVkIHVzaW5nIGEgUkFNIGRpc2sgaWYNCi0gKiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyBpcyBzZXQgdG8gMS4gIFtBdCB0aGUgdGltZSBvZiB3cml0aW5nXSBUaGUNCi0gKiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBmaWxlIHN5c3RlbSBkZW1vIGlzIGlkZW50aWNhbCB0byB0aGUgZnVuY3Rpb25hbGl0eSBvZg0KLSAqIHRoZSBGcmVlUlRPUyBXaW4zMiBzaW11bGF0b3IgZmlsZSBzeXN0ZW0gZGVtbywgd2l0aCB0aGUgY29tbWFuZCBjb25zb2xlIGJlaW5nDQotICogYWNjZXNzZWQgdmlhIHRoZSBVQVJUIChhcyBkZXNjcmliZWQgYWJvdmUpIGluc3RlYWQgb2YgYSBuZXR3b3JrIHRlcm1pbmFsLg0KLSAqIFRoZSBGcmVlUlRPUytGQVQgU0wgbGljZW5zZSBpcyBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UsIHNlZQ0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2ZhdF9zbCBmb3IgbGljZW5zZSBhbmQgdXNhZ2UgZGV0YWlscywgYW5kIGENCi0gKiBkZXNjcmlwdGlvbiBvZiB0aGUgZmlsZSBzeXN0ZW0gZGVtbyBmdW5jdGlvbmFsaXR5Lg0KLSAqDQotICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgYm90aCB0aGUgY29yZSBhbmQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIHdpdGgNCi0gKiBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sgdGhhdCBlYWNoIHJlZ2lzdGVyIG1haW50YWlucyBpdHMgZXhwZWN0ZWQgdmFsdWUgZm9yDQotICogdGhlIGxpZmV0aW1lIG9mIHRoZSB0YXNrLiAgRWFjaCB0YXNrIHVzZXMgYSBkaWZmZXJlbnQgc2V0IG9mIHZhbHVlcy4gIFRoZSByZWcNCi0gKiB0ZXN0IHRhc2tzIGV4ZWN1dGUgd2l0aCBhIHZlcnkgbG93IHByaW9yaXR5LCBzbyBnZXQgcHJlZW1wdGVkIHZlcnkNCi0gKiBmcmVxdWVudGx5LiAgQSByZWdpc3RlciBjb250YWluaW5nIGFuIHVuZXhwZWN0ZWQgdmFsdWUgaXMgaW5kaWNhdGl2ZSBvZiBhbg0KLSAqIGVycm9yIGluIHRoZSBjb250ZXh0IHN3aXRjaGluZyBtZWNoYW5pc20uDQotICoNCi0gKiAiQ2hlY2siIHRhc2sgLSBUaGUgY2hlY2sgdGFzayBwZXJpb2QgaXMgaW5pdGlhbGx5IHNldCB0byB0aHJlZSBzZWNvbmRzLiAgVGhlDQotICogdGFzayBjaGVja3MgdGhhdCBhbGwgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MsIGFuZCB0aGUgcmVnaXN0ZXIgY2hlY2sgdGFza3MsDQotICogYXJlIG5vdCBvbmx5IHN0aWxsIGV4ZWN1dGluZywgYnV0IGFyZSBleGVjdXRpbmcgd2l0aG91dCByZXBvcnRpbmcgYW55IGVycm9ycy4NCi0gKiBJZiB0aGUgY2hlY2sgdGFzayBkaXNjb3ZlcnMgdGhhdCBhIHRhc2sgaGFzIGVpdGhlciBzdGFsbGVkLCBvciByZXBvcnRlZCBhbg0KLSAqIGVycm9yLCB0aGVuIGl0IGNoYW5nZXMgaXRzIG93biBleGVjdXRpb24gcGVyaW9kIGZyb20gdGhlIGluaXRpYWwgdGhyZWUNCi0gKiBzZWNvbmRzLCB0byBqdXN0IDIwMG1zLiAgVGhlIGNoZWNrIHRhc2sgYWxzbyB0b2dnbGVzIGFuIExFRCBlYWNoIHRpbWUgaXQgaXMNCi0gKiBjYWxsZWQuICBUaGlzIHByb3ZpZGVzIGEgdmlzdWFsIGluZGljYXRpb24gb2YgdGhlIHN5c3RlbSBzdGF0dXM6ICBJZiB0aGUgTEVEDQotICogdG9nZ2xlcyBldmVyeSB0aHJlZSBzZWNvbmRzLCB0aGVuIG5vIGlzc3VlcyBoYXZlIGJlZW4gZGlzY292ZXJlZC4gIElmIHRoZSBMRUQNCi0gKiB0b2dnbGVzIGV2ZXJ5IDIwMG1zLCB0aGVuIGFuIGlzc3VlIGhhcyBiZWVuIGRpc2NvdmVyZWQgd2l0aCBhdCBsZWFzdCBvbmUNCi0gKiB0YXNrLg0KLSAqLw0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLQ0KLS8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJ0aW1lcnMuaCINCi0jaW5jbHVkZSAic2VtcGhyLmgiDQotDQotLyogU3RhbmRhcmQgZGVtbyBhcHBsaWNhdGlvbiBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmxvcC5oIg0KLSNpbmNsdWRlICJzZW10ZXN0LmgiDQotI2luY2x1ZGUgImR5bmFtaWMuaCINCi0jaW5jbHVkZSAiQmxvY2tRLmgiDQotI2luY2x1ZGUgImJsb2NrdGltLmgiDQotI2luY2x1ZGUgImNvdW50c2VtLmgiDQotI2luY2x1ZGUgIkdlblFUZXN0LmgiDQotI2luY2x1ZGUgInJlY211dGV4LmgiDQotI2luY2x1ZGUgImRlYXRoLmgiDQotI2luY2x1ZGUgInBhcnRlc3QuaCINCi0jaW5jbHVkZSAiY29tdGVzdDIuaCINCi0jaW5jbHVkZSAic2VyaWFsLmgiDQotI2luY2x1ZGUgIlRpbWVyRGVtby5oIg0KLSNpbmNsdWRlICJRdWV1ZU92ZXJ3cml0ZS5oIg0KLQ0KLS8qIEZyZWVSVE9TK0NMSSBhbmQgRnJlZVJUT1MrRkFUIFNMIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJVQVJUQ29tbWFuZENvbnNvbGUuaCINCi0NCi0vKiBFaXRoZXIgdGhlIEZyZWVSVE9TK0ZBVCBTTCBkZW1vIG9yIHRoZSBDT00gdGVzdCBkZW1vIGNhbiBiZSBidWlsZCBpbnRvIHRoZQ0KLXByb2plY3QsIG5vdCBib3RoIChiZWNhdXNlIHRoZXkgdXNlIHRoZSBzYW1lIFVBUlQpLiAgU2V0DQotY29uZmlnSU5DTFVERV9GQVRfU0xfREVNTyB0byAxIHRvIGluY2x1ZGUgdGhlIEZyZWVSVE9TK0ZBVCBTTCAoYW5kIHRoZXJlZm9yZQ0KLWFsc28gRnJlZVJUT1MrQ0xJKSBkZW1vIGluIHRoZSBidWlsZC4gIFNldCBjb25maWdJTkNMVURFX0ZBVF9TTF9ERU1PIHRvIDAgdG8NCi1pbmNsdWRlIHRoZSBDT00gdGVzdCB0YXNrcy4gIFRoZSBDT00gdGVzdCB0YXNrcyByZXF1aXJlIGEgbG9vcCBiYWNrIGNvbm5lY3Rvcg0KLXRvIGJlIGZpdHRlZCB0byB0aGUgVUFSVCBwb3J0LiAqLw0KLSNkZWZpbmUgbWFpbklOQ0xVREVfRkFUX1NMX0RFTU8JCQkJMQ0KLQ0KLS8qIFByaW9yaXRpZXMgZm9yIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLiAqLw0KLSNkZWZpbmUgbWFpblNFTV9URVNUX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDFVTCApDQotI2RlZmluZSBtYWluQkxPQ0tfUV9QUklPUklUWQkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyVUwgKQ0KLSNkZWZpbmUgbWFpbkNSRUFUT1JfVEFTS19QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSArIDNVTCApDQotI2RlZmluZSBtYWluRkxPUF9UQVNLX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSApDQotI2RlZmluZSBtYWluVUFSVF9DT01NQU5EX0NPTlNPTEVfU1RBQ0tfU0laRQkoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSAqIDNVTCApDQotI2RlZmluZSBtYWluQ09NX1RFU1RfVEFTS19QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSArIDIgKQ0KLSNkZWZpbmUgbWFpbkNIRUNLX1RBU0tfUFJJT1JJVFkJCQkJKCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDEgKQ0KLSNkZWZpbmUgbWFpblFVRVVFX09WRVJXUklURV9QUklPUklUWQkJKCB0c2tJRExFX1BSSU9SSVRZICkNCi0NCi0vKiBUaGUgcHJpb3JpdHkgdXNlZCBieSB0aGUgVUFSVCBjb21tYW5kIGNvbnNvbGUgdGFzay4gKi8NCi0jZGVmaW5lIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9UQVNLX1BSSU9SSVRZCSggY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAyICkNCi0NCi0vKiBUaGUgTEVEIHVzZWQgYnkgdGhlIGNoZWNrIHRhc2suICovDQotI2RlZmluZSBtYWluQ0hFQ0tfTEVECQkJCQkJKCAwICkNCi0NCi0vKiBBIGJsb2NrIHRpbWUgb2YgemVybyBzaW1wbHkgbWVhbnMgImRvbid0IGJsb2NrIi4gKi8NCi0jZGVmaW5lIG1haW5ET05UX0JMT0NLCQkJCQkJKCAwVUwgKQ0KLQ0KLS8qIEluIHRoaXMgZXhhbXBsZSB0aGUgYmF1ZCByYXRlIGlzIGhhcmQgY29kZWQgYW5kIHRoZXJlIGlzIG5vIExFRCBmb3IgdXNlIGJ5DQotdGhlIENPTSB0ZXN0IHRhc2tzLCBzbyBqdXN0IHNldCBib3RoIHRvIGludmFsaWQgdmFsdWVzLiAqLw0KLSNkZWZpbmUgbWFpbkNPTV9URVNUX0xFRAkJCQkJKCAxMDAgKQ0KLSNkZWZpbmUgbWFpbkJBVURfUkFURQkJCQkJCSggMCApDQotDQotLyogVGhlIHBlcmlvZCBvZiB0aGUgY2hlY2sgdGFzaywgaW4gbXMsIHByb3ZpZGVkIG5vIGVycm9ycyBoYXZlIGJlZW4gcmVwb3J0ZWQgYnkNCi1hbnkgb2YgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MuICBtcyBhcmUgY29udmVydGVkIHRvIHRoZSBlcXVpdmFsZW50IGluIHRpY2tzDQotdXNpbmcgdGhlIHBkTVNfVE9fVElDS1MoKSBtYWNybyBjb25zdGFudC4gKi8NCi0jZGVmaW5lIG1haW5OT19FUlJPUl9DSEVDS19UQVNLX1BFUklPRAkJcGRNU19UT19USUNLUyggMzAwMFVMICkNCi0NCi0vKiBUaGUgcGVyaW9kIG9mIHRoZSBjaGVjayB0YXNrLCBpbiBtcywgaWYgYW4gZXJyb3IgaGFzIGJlZW4gcmVwb3J0ZWQgaW4gb25lIG9mDQotdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MuICBtcyBhcmUgY29udmVydGVkIHRvIHRoZSBlcXVpdmFsZW50IGluIHRpY2tzIHVzaW5nIHRoZQ0KLXBkTVNfVE9fVElDS1MoKSBtYWNyby4gKi8NCi0jZGVmaW5lIG1haW5FUlJPUl9DSEVDS19UQVNLX1BFUklPRCAJCXBkTVNfVE9fVElDS1MoIDIwMFVMICkNCi0NCi0vKiBQYXJhbWV0ZXJzIHRoYXQgYXJlIHBhc3NlZCBpbnRvIHRoZSByZWdpc3RlciBjaGVjayB0YXNrcyBzb2xlbHkgZm9yIHRoZQ0KLXB1cnBvc2Ugb2YgZW5zdXJpbmcgcGFyYW1ldGVycyBhcmUgcGFzc2VkIGludG8gdGFza3MgY29ycmVjdGx5LiAqLw0KLSNkZWZpbmUgbWFpblJFR19URVNUX1RBU0tfMV9QQVJBTUVURVIJCSggKCB2b2lkICogKSAweDEyMzQ1Njc4ICkNCi0jZGVmaW5lIG1haW5SRUdfVEVTVF9UQVNLXzJfUEFSQU1FVEVSCQkoICggdm9pZCAqICkgMHg4NzY1NDMyMSApDQotDQotLyogVGhlIGJhc2UgcGVyaW9kIHVzZWQgYnkgdGhlIHRpbWVyIHRlc3QgdGFza3MuICovDQotI2RlZmluZSBtYWluVElNRVJfVEVTVF9QRVJJT0QJCQkJKCA1MCApDQotDQotLyogVGhlIGxlbmd0aCBvZiBxdWV1ZXMgdXNlZCB0byBwYXNzIGNoYXJhY3RlcnMgaW50byBhbmQgb3V0IG9mIHRoZSBVQVJUDQotaW50ZXJydXB0LiAgTm90ZSB0aGUgY29tbWVudHMgYWJvdmUgYWJvdXQgdGhlIFVBUlQgZHJpdmVyIGJlaW5nIGltcGxlbWVudGVkIGluDQotdGhpcyB3YXkgdG8gdGVzdCB0aGUga2VybmVsIHJvYnVzdG5lc3MgcmF0aGVyIHRoYW4gdG8gcHJvdmlkZSBhIHRlbXBsYXRlIGZvciBhbg0KLWVmZmljaWVudCBwcm9kdWN0aW9uIGRyaXZlci4gKi8NCi0jZGVmaW5lIG1haW5VQVJUX1FVRVVFX0xFTkdUSFMJMTANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIENhbGxlZCBieSBtYWluKCkgdG8gcnVuIHRoZSBmdWxsIGRlbW8gKGFzIG9wcG9zZWQgdG8gdGhlIGJsaW5reSBkZW1vKSB3aGVuDQotICogbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBzZXQgdG8gMC4NCi0gKi8NCi12b2lkIG1haW5fZnVsbCggdm9pZCApOw0KLQ0KLS8qDQotICogVGhlIGNoZWNrIHRhc2ssIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZDaGVja1Rhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLQ0KLS8qDQotICogUmVnaXN0ZXIgY2hlY2sgdGFza3MsIGFuZCB0aGUgdGFza3MgdXNlZCB0byB3cml0ZSBvdmVyIGFuZCBjaGVjayB0aGUgY29udGVudHMNCi0gKiBvZiB0aGUgRlBVIHJlZ2lzdGVycywgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLiAgVGhlIG5hdHVyZSBvZg0KLSAqIHRoZXNlIGZpbGVzIG5lY2Vzc2l0YXRlcyB0aGF0IHRoZXkgYXJlIHdyaXR0ZW4gaW4gYW4gYXNzZW1ibHkgZmlsZSwgYnV0IHRoZQ0KLSAqIGVudHJ5IHBvaW50cyBhcmUga2VwdCBpbiB0aGUgQyBmaWxlIGZvciB0aGUgY29udmVuaWVuY2Ugb2YgY2hlY2tpbmcgdGhlIHRhc2sNCi0gKiBwYXJhbWV0ZXIuDQotICovDQotc3RhdGljIHZvaWQgcHJ2UmVnVGVzdFRhc2tFbnRyeTEoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLWV4dGVybiB2b2lkIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uKCB2b2lkICk7DQotc3RhdGljIHZvaWQgcHJ2UmVnVGVzdFRhc2tFbnRyeTIoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLWV4dGVybiB2b2lkIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uKCB2b2lkICk7DQotDQotLyoNCi0gKiBSZWdpc3RlciBjb21tYW5kcyB0aGF0IGNhbiBiZSB1c2VkIHdpdGggRnJlZVJUT1MrQ0xJLiAgVGhlIGNvbW1hbmRzIGFyZQ0KLSAqIGRlZmluZWQgaW4gQ0xJLUNvbW1hbmRzLmMgYW5kIEZpbGUtUmVsYXRlZC1DTEktQ29tbWFuZC5jIHJlc3BlY3RpdmVseS4NCi0gKi8NCi1leHRlcm4gdm9pZCB2UmVnaXN0ZXJTYW1wbGVDTElDb21tYW5kcyggdm9pZCApOw0KLWV4dGVybiB2b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlcyBhbmQgdmVyaWZpZXMgZGlmZmVyZW50IGZpbGVzIG9uIHRoZSB2b2x1bWUsIGRlbW9uc3RyYXRpbmcgdGhlIHVzZSBvZg0KLSAqIHZhcmlvdXMgZGlmZmVyZW50IEFQSSBmdW5jdGlvbnMuDQotICovDQotZXh0ZXJuIHZvaWQgdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogVGhlIGZvbGxvd2luZyB0d28gdmFyaWFibGVzIGFyZSB1c2VkIHRvIGNvbW11bmljYXRlIHRoZSBzdGF0dXMgb2YgdGhlDQotcmVnaXN0ZXIgY2hlY2sgdGFza3MgdG8gdGhlIGNoZWNrIHNvZnR3YXJlIHRpbWVyLiAgSWYgdGhlIHZhcmlhYmxlcyBrZWVwDQotaW5jcmVtZW50aW5nLCB0aGVuIHRoZSByZWdpc3RlciBjaGVjayB0YXNrcyBoYXZlIG5vdCBkaXNjb3ZlcmVkIGFueSBlcnJvcnMuICBJZg0KLWEgdmFyaWFibGUgc3RvcHMgaW5jcmVtZW50aW5nLCB0aGVuIGFuIGVycm9yIGhhcyBiZWVuIGZvdW5kLiAqLw0KLXZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgdWxSZWdUZXN0MUxvb3BDb3VudGVyID0gMFVMLCB1bFJlZ1Rlc3QyTG9vcENvdW50ZXIgPSAwVUw7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCBtYWluX2Z1bGwoIHZvaWQgKQ0KLXsNCi0JLyogVGhlIGJhdWQgcmF0ZSBzZXR0aW5nIGhlcmUgaGFzIG5vIGVmZmVjdCwgaGVuY2UgaXQgaXMgc2V0IHRvIDAgdG8NCi0JbWFrZSB0aGF0IG9idmlvdXMuICovDQotCXhTZXJpYWxQb3J0SW5pdE1pbmltYWwoIDAsIG1haW5VQVJUX1FVRVVFX0xFTkdUSFMgKTsNCi0NCi0JLyogSWYgdGhlIGZpbGUgc3lzdGVtIGlzIG9ubHkgZ29pbmcgdG8gYmUgYWNjZXNzZWQgZnJvbSBvbmUgdGFzayB0aGVuDQotCUZfRlNfVEhSRUFEX0FXQVJFIGNhbiBiZSBzZXQgdG8gMCBhbmQgdGhlIHNldCBvZiBleGFtcGxlIGZpbGVzIGFyZSBjcmVhdGVkDQotCWJlZm9yZSB0aGUgUlRPUyBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBnb2luZyB0byBiZQ0KLQlhY2Nlc3MgZnJvbSBtb3JlIHRoYW4gb25lIHRhc2sgdGhlbiBGX0ZTX1RIUkVBRF9BV0FSRSBtdXN0IGJlIHNldCB0byAxIGFuZA0KLQl0aGUJc2V0IG9mIHNhbXBsZSBmaWxlcyBhcmUgY3JlYXRlZCBmcm9tIHRoZSBpZGxlIHRhc2sgaG9vayBmdW5jdGlvbg0KLQl2QXBwbGljYXRpb25JZGxlSG9vaygpIC0gd2hpY2ggaXMgZGVmaW5lZCBpbiB0aGlzIGZpbGUuICovDQotCSNpZiAoIG1haW5JTkNMVURFX0ZBVF9TTF9ERU1PID09IDEgKSYmICggRl9GU19USFJFQURfQVdBUkUgPT0gMCApDQotCXsNCi0JCS8qIEluaXRpYWxpc2UgdGhlIGRyaXZlIGFuZCBmaWxlIHN5c3RlbSwgdGhlbiBjcmVhdGUgYSBmZXcgZXhhbXBsZQ0KLQkJZmlsZXMuICBUaGUgb3V0cHV0IGZyb20gdGhpcyBmdW5jdGlvbiBqdXN0IGdvZXMgdG8gdGhlIHN0ZG91dCB3aW5kb3csDQotCQlhbGxvd2luZyB0aGUgb3V0cHV0IHRvIGJlIHZpZXdlZCB3aGVuIHRoZSBVRFAgY29tbWFuZCBjb25zb2xlIGlzIG5vdA0KLQkJY29ubmVjdGVkLiAqLw0KLQkJdkNyZWF0ZUFuZFZlcmlmeVNhbXBsZUZpbGVzKCk7DQotCX0NCi0JI2VuZGlmDQotDQotCS8qIFN0YXJ0IGFsbCB0aGUgb3RoZXIgc3RhbmRhcmQgZGVtby90ZXN0IHRhc2tzLiAgVGhlIGhhdmUgbm90IHBhcnRpY3VsYXINCi0JZnVuY3Rpb25hbGl0eSwgYnV0IGRvIGRlbW9uc3RyYXRlIGhvdyB0byB1c2UgdGhlIEZyZWVSVE9TIEFQSSBhbmQgdGVzdCB0aGUNCi0Ja2VybmVsIHBvcnQuICovDQotCXZTdGFydER5bmFtaWNQcmlvcml0eVRhc2tzKCk7DQotCXZTdGFydEJsb2NraW5nUXVldWVUYXNrcyggbWFpbkJMT0NLX1FfUFJJT1JJVFkgKTsNCi0JdkNyZWF0ZUJsb2NrVGltZVRhc2tzKCk7DQotCXZTdGFydENvdW50aW5nU2VtYXBob3JlVGFza3MoKTsNCi0JdlN0YXJ0R2VuZXJpY1F1ZXVlVGFza3MoIHRza0lETEVfUFJJT1JJVFkgKTsNCi0JdlN0YXJ0UmVjdXJzaXZlTXV0ZXhUYXNrcygpOw0KLQl2U3RhcnRTZW1hcGhvcmVUYXNrcyggbWFpblNFTV9URVNUX1BSSU9SSVRZICk7DQotCXZTdGFydE1hdGhUYXNrcyggbWFpbkZMT1BfVEFTS19QUklPUklUWSApOw0KLQl2U3RhcnRUaW1lckRlbW9UYXNrKCBtYWluVElNRVJfVEVTVF9QRVJJT0QgKTsNCi0JdlN0YXJ0UXVldWVPdmVyd3JpdGVUYXNrKCBtYWluUVVFVUVfT1ZFUldSSVRFX1BSSU9SSVRZICk7DQotDQotCSNpZiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyA9PSAxDQotCXsNCi0JCS8qIFN0YXJ0IHRoZSB0YXNrcyB0aGF0IGltcGxlbWVudHMgdGhlIGNvbW1hbmQgY29uc29sZSBvbiB0aGUgVUFSVCwgYXMNCi0JCWRlc2NyaWJlZCBhYm92ZS4gKi8NCi0JCXZVQVJUQ29tbWFuZENvbnNvbGVTdGFydCggbWFpblVBUlRfQ09NTUFORF9DT05TT0xFX1NUQUNLX1NJWkUsIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9UQVNLX1BSSU9SSVRZICk7DQotDQotCQkvKiBSZWdpc3RlciBib3RoIHRoZSBzdGFuZGFyZCBhbmQgZmlsZSBzeXN0ZW0gcmVsYXRlZCBDTEkgY29tbWFuZHMuICovDQotCQl2UmVnaXN0ZXJTYW1wbGVDTElDb21tYW5kcygpOw0KLQkJdlJlZ2lzdGVyRmlsZVN5c3RlbUNMSUNvbW1hbmRzKCk7DQotCX0NCi0JI2Vsc2UNCi0Jew0KLQkJLyogVGhlIENPTSB0ZXN0IHRhc2tzIGNhbiB1c2UgdGhlIFVBUlQgaWYgdGhlIENMSSBpcyBub3QgdXNlZCBieSB0aGUNCi0JCUZBVCBTTCBkZW1vLiAgVGhlIENPTSB0ZXN0IHRhc2tzIHJlcXVpcmUgYSBVQVJUIGNvbm5lY3RvciB0byBiZSBmaXR0ZWQNCi0JCXRvIHRoZSBVQVJUIHBvcnQuICovDQotCQl2QWx0U3RhcnRDb21UZXN0VGFza3MoIG1haW5DT01fVEVTVF9UQVNLX1BSSU9SSVRZLCBtYWluQkFVRF9SQVRFLCBtYWluQ09NX1RFU1RfTEVEICk7DQotCX0NCi0JI2VuZGlmDQotDQotDQotCS8qIENyZWF0ZSB0aGUgcmVnaXN0ZXIgY2hlY2sgdGFza3MsIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mIHRoaXMNCi0JZmlsZSAqLw0KLQl4VGFza0NyZWF0ZSggcHJ2UmVnVGVzdFRhc2tFbnRyeTEsICJSZWcxIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBtYWluUkVHX1RFU1RfVEFTS18xX1BBUkFNRVRFUiwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KLQl4VGFza0NyZWF0ZSggcHJ2UmVnVGVzdFRhc2tFbnRyeTIsICJSZWcyIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBtYWluUkVHX1RFU1RfVEFTS18yX1BBUkFNRVRFUiwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KLQ0KLQkvKiBDcmVhdGUgdGhlIHRhc2sgdGhhdCBwZXJmb3JtcyB0aGUgJ2NoZWNrJyBmdW5jdGlvbmFsaXR5LAlhcyBkZXNjcmliZWQgYXQNCi0JdGhlIHRvcCBvZiB0aGlzIGZpbGUuICovDQotCXhUYXNrQ3JlYXRlKCBwcnZDaGVja1Rhc2ssICJDaGVjayIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgbWFpbkNIRUNLX1RBU0tfUFJJT1JJVFksIE5VTEwgKTsNCi0NCi0JLyogVGhlIHNldCBvZiB0YXNrcyBjcmVhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gY2FsbCBoYXZlIHRvIGJlDQotCWNyZWF0ZWQgbGFzdCBhcyB0aGV5IGtlZXAgYWNjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRhc2tzIHRoZXkgZXhwZWN0IHRvIHNlZQ0KLQlydW5uaW5nLiAqLw0KLQl2Q3JlYXRlU3VpY2lkYWxUYXNrcyggbWFpbkNSRUFUT1JfVEFTS19QUklPUklUWSApOw0KLQ0KLQkvKiBTdGFydCB0aGUgc2NoZWR1bGVyLiAqLw0KLQl2VGFza1N0YXJ0U2NoZWR1bGVyKCk7DQotDQotCS8qIElmIGFsbCBpcyB3ZWxsLCB0aGUgc2NoZWR1bGVyIHdpbGwgbm93IGJlIHJ1bm5pbmcsIGFuZCB0aGUgZm9sbG93aW5nDQotCWxpbmUgd2lsbCBuZXZlciBiZSByZWFjaGVkLiAgSWYgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgZXhlY3V0ZSwgdGhlbg0KLQl0aGVyZSB3YXMgZWl0aGVyIGluc3VmZmljaWVudCBGcmVlUlRPUyBoZWFwIG1lbW9yeSBhdmFpbGFibGUgZm9yIHRoZSBpZGxlDQotCWFuZC9vciB0aW1lciB0YXNrcyB0byBiZSBjcmVhdGVkLCBvciB2VGFza1N0YXJ0U2NoZWR1bGVyKCkgd2FzIGNhbGxlZCBmcm9tDQotCVVzZXIgbW9kZS4gIFNlZSB0aGUgbWVtb3J5IG1hbmFnZW1lbnQgc2VjdGlvbiBvbiB0aGUgRnJlZVJUT1Mgd2ViIHNpdGUgZm9yDQotCW1vcmUgZGV0YWlscyBvbiB0aGUgRnJlZVJUT1MgaGVhcCBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbC4gIFRoZQ0KLQltb2RlIGZyb20gd2hpY2ggbWFpbigpIGlzIGNhbGxlZCBpcyBzZXQgaW4gdGhlIEMgc3RhcnQgdXAgY29kZSBhbmQgbXVzdCBiZQ0KLQlhIHByaXZpbGVnZWQgbW9kZSAobm90IHVzZXIgbW9kZSkuICovDQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q2hlY2tUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi1UaWNrVHlwZV90IHhEZWxheVBlcmlvZCA9IG1haW5OT19FUlJPUl9DSEVDS19UQVNLX1BFUklPRDsNCi1UaWNrVHlwZV90IHhMYXN0RXhlY3V0aW9uVGltZTsNCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB1bExhc3RSZWdUZXN0MVZhbHVlID0gMCwgdWxMYXN0UmVnVGVzdDJWYWx1ZSA9IDA7DQotdW5zaWduZWQgbG9uZyB1bEVycm9yRm91bmQgPSBwZEZBTFNFOw0KLQ0KLQkvKiBKdXN0IHRvIHN0b3AgY29tcGlsZXIgd2FybmluZ3MuICovDQotCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCi0NCi0JLyogSW5pdGlhbGlzZSB4TGFzdEV4ZWN1dGlvblRpbWUgc28gdGhlIGZpcnN0IGNhbGwgdG8gdlRhc2tEZWxheVVudGlsKCkNCi0Jd29ya3MgY29ycmVjdGx5LiAqLw0KLQl4TGFzdEV4ZWN1dGlvblRpbWUgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KLQ0KLQkvKiBDeWNsZSBmb3IgZXZlciwgZGVsYXlpbmcgdGhlbiBjaGVja2luZyBhbGwgdGhlIG90aGVyIHRhc2tzIGFyZSBzdGlsbA0KLQlvcGVyYXRpbmcgd2l0aG91dCBlcnJvci4gIFRoZSBvbmJvYXJkIExFRCBpcyB0b2dnbGVkIG9uIGVhY2ggaXRlcmF0aW9uLg0KLQlJZiBhbiBlcnJvciBpcyBkZXRlY3RlZCB0aGVuIHRoZSBkZWxheSBwZXJpb2QgaXMgZGVjcmVhc2VkIGZyb20NCi0JbWFpbk5PX0VSUk9SX0NIRUNLX1RBU0tfUEVSSU9EIHRvIG1haW5FUlJPUl9DSEVDS19UQVNLX1BFUklPRC4gIFRoaXMgaGFzIHRoZQ0KLQllZmZlY3Qgb2YgaW5jcmVhc2luZyB0aGUgcmF0ZSBhdCB3aGljaCB0aGUgb25ib2FyZCBMRUQgdG9nZ2xlcywgYW5kIGluIHNvDQotCWRvaW5nIGdpdmVzIHZpc3VhbCBmZWVkYmFjayBvZiB0aGUgc3lzdGVtIHN0YXR1cy4gKi8NCi0JZm9yKCA7OyApDQotCXsNCi0JCS8qIERlbGF5IHVudGlsIGl0IGlzIHRpbWUgdG8gZXhlY3V0ZSBhZ2Fpbi4gKi8NCi0JCXZUYXNrRGVsYXlVbnRpbCggJnhMYXN0RXhlY3V0aW9uVGltZSwgeERlbGF5UGVyaW9kICk7DQotDQotCQkvKiBDaGVjayBhbGwgdGhlIGRlbW8gdGFza3MgKG90aGVyIHRoYW4gdGhlIGZsYXNoIHRhc2tzKSB0byBlbnN1cmUNCi0JCXRoYXQgdGhleSBhcmUgYWxsIHN0aWxsIHJ1bm5pbmcsIGFuZCB0aGF0IG5vbmUgaGF2ZSBkZXRlY3RlZCBhbiBlcnJvci4gKi8NCi0JCWlmKCB4QXJlTWF0aHNUYXNrU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeEFyZUR5bmFtaWNQcmlvcml0eVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeEFyZUJsb2NraW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiAoIHhBcmVCbG9ja1RpbWVUZXN0VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmICggeEFyZUdlbmVyaWNRdWV1ZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiAoIHhBcmVSZWN1cnNpdmVNdXRleFRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeElzQ3JlYXRlVGFza1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQ0KLQkJaWYoIHhBcmVTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQ0KLQkJaWYoIHhBcmVUaW1lckRlbW9UYXNrc1N0aWxsUnVubmluZyggKCBUaWNrVHlwZV90ICkgbWFpbk5PX0VSUk9SX0NIRUNLX1RBU0tfUEVSSU9EICkgIT0gcGRQQVNTICkNCi0JCXsNCi0JCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCQl9DQotDQotCQlpZiggeEFyZUNvdW50aW5nU2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCWlmKCB4SXNRdWV1ZU92ZXJ3cml0ZVRhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFBBU1MgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0NCi0JCSNpZiBtYWluSU5DTFVERV9GQVRfU0xfREVNTyA9PSAwDQotCQl7DQotCQkJaWYoIHhBcmVDb21UZXN0VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkJCXsNCi0JCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJCX0NCi0JCX0NCi0JCSNlbmRpZg0KLQ0KLQkJLyogQ2hlY2sgdGhhdCB0aGUgcmVnaXN0ZXIgdGVzdCAxIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCi0JCWlmKCB1bExhc3RSZWdUZXN0MVZhbHVlID09IHVsUmVnVGVzdDFMb29wQ291bnRlciApDQotCQl7DQotCQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQkJfQ0KLQkJdWxMYXN0UmVnVGVzdDFWYWx1ZSA9IHVsUmVnVGVzdDFMb29wQ291bnRlcjsNCi0NCi0JCS8qIENoZWNrIHRoYXQgdGhlIHJlZ2lzdGVyIHRlc3QgMiB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQotCQlpZiggdWxMYXN0UmVnVGVzdDJWYWx1ZSA9PSB1bFJlZ1Rlc3QyTG9vcENvdW50ZXIgKQ0KLQkJew0KLQkJCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JCX0NCi0JCXVsTGFzdFJlZ1Rlc3QyVmFsdWUgPSB1bFJlZ1Rlc3QyTG9vcENvdW50ZXI7DQotDQotCQkvKiBUb2dnbGUgdGhlIGNoZWNrIExFRCB0byBnaXZlIGFuIGluZGljYXRpb24gb2YgdGhlIHN5c3RlbSBzdGF0dXMuICBJZg0KLQkJdGhlIExFRCB0b2dnbGVzIGV2ZXJ5IG1haW5OT19FUlJPUl9DSEVDS19UQVNLX1BFUklPRCBtaWxsaXNlY29uZHMgdGhlbg0KLQkJZXZlcnl0aGluZyBpcyBvay4gIEEgZmFzdGVyIHRvZ2dsZSBpbmRpY2F0ZXMgYW4gZXJyb3IuICovDQotCQl2UGFyVGVzdFRvZ2dsZUxFRCggbWFpbkNIRUNLX0xFRCApOw0KLQ0KLQkJaWYoIHVsRXJyb3JGb3VuZCAhPSBwZEZBTFNFICkNCi0JCXsNCi0JCQkvKiBBbiBlcnJvciBoYXMgYmVlbiBkZXRlY3RlZCBpbiBvbmUgb2YgdGhlIHRhc2tzIC0gZmxhc2ggdGhlIExFRA0KLQkJCWF0IGEgaGlnaGVyIGZyZXF1ZW5jeSB0byBnaXZlIHZpc2libGUgZmVlZGJhY2sgdGhhdCBzb21ldGhpbmcgaGFzDQotCQkJZ29uZSB3cm9uZyAoaXQgbWlnaHQganVzdCBiZSB0aGF0IHRoZSBsb29wIGJhY2sgY29ubmVjdG9yIHJlcXVpcmVkDQotCQkJYnkgdGhlIGNvbXRlc3QgdGFza3MgaGFzIG5vdCBiZWVuIGZpdHRlZCkuICovDQotCQkJeERlbGF5UGVyaW9kID0gbWFpbkVSUk9SX0NIRUNLX1RBU0tfUEVSSU9EOw0KLQkJfQ0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlJlZ1Rlc3RUYXNrRW50cnkxKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi0JLyogQWx0aG91Z2ggdGhlIHJlZ3Rlc3QgdGFzayBpcyB3cml0dGVuIGluIGFzc2VtYmxlciwgaXRzIGVudHJ5IHBvaW50IGlzDQotCXdyaXR0ZW4gaW4gQyBmb3IgY29udmVuaWVuY2Ugb2YgY2hlY2tpbmcgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGJlaW5nIHBhc3NlZA0KLQlpbiBjb3JyZWN0bHkuICovDQotCWlmKCBwdlBhcmFtZXRlcnMgPT0gbWFpblJFR19URVNUX1RBU0tfMV9QQVJBTUVURVIgKQ0KLQl7DQotCQkvKiBUaGUgcmVnIHRlc3QgdGFzayBhbHNvIHRlc3RzIHRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuICBUYXNrcw0KLQkJdGhhdCB1c2UgdGhlIGZsb2F0aW5nIHBvaW50IHVuaXQgbXVzdCBjYWxsIHZQb3J0VGFza1VzZXNGUFUoKSBiZWZvcmUNCi0JCWFueSBmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMgYXJlIGV4ZWN1dGVkLiAqLw0KLQkJdlBvcnRUYXNrVXNlc0ZQVSgpOw0KLQ0KLQkJLyogU3RhcnQgdGhlIHBhcnQgb2YgdGhlIHRlc3QgdGhhdCBpcyB3cml0dGVuIGluIGFzc2VtYmxlci4gKi8NCi0JCXZSZWdUZXN0MUltcGxlbWVudGF0aW9uKCk7DQotCX0NCi0NCi0JLyogVGhlIGZvbGxvd2luZyBsaW5lIHdpbGwgb25seSBleGVjdXRlIGlmIHRoZSB0YXNrIHBhcmFtZXRlciBpcyBmb3VuZCB0bw0KLQliZSBpbmNvcnJlY3QuICBUaGUgY2hlY2sgdGFzayB3aWxsIGRldGVjdCB0aGF0IHRoZSByZWd0ZXN0IGxvb3AgY291bnRlciBpcw0KLQlub3QgYmVpbmcgaW5jcmVtZW50ZWQgYW5kIGZsYWcgYW4gZXJyb3IuICovDQotCXZUYXNrRGVsZXRlKCBOVUxMICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlJlZ1Rlc3RUYXNrRW50cnkyKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi0JLyogQWx0aG91Z2ggdGhlIHJlZ3Rlc3QgdGFzayBpcyB3cml0dGVuIGluIGFzc2VtYmxlciwgaXRzIGVudHJ5IHBvaW50IGlzDQotCXdyaXR0ZW4gaW4gQyBmb3IgY29udmVuaWVuY2Ugb2YgY2hlY2tpbmcgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGJlaW5nIHBhc3NlZA0KLQlpbiBjb3JyZWN0bHkuICovDQotCWlmKCBwdlBhcmFtZXRlcnMgPT0gbWFpblJFR19URVNUX1RBU0tfMl9QQVJBTUVURVIgKQ0KLQl7DQotCQkvKiBUaGUgcmVnIHRlc3QgdGFzayBhbHNvIHRlc3RzIHRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuICBUYXNrcw0KLQkJdGhhdCB1c2UgdGhlIGZsb2F0aW5nIHBvaW50IHVuaXQgbXVzdCBjYWxsIHZQb3J0VGFza1VzZXNGUFUoKSBiZWZvcmUNCi0JCWFueSBmbG9hdGluZyBwb2ludCBpbnN0cnVjdGlvbnMgYXJlIGV4ZWN1dGVkLiAqLw0KLQkJdlBvcnRUYXNrVXNlc0ZQVSgpOw0KLQ0KLQkJLyogU3RhcnQgdGhlIHBhcnQgb2YgdGhlIHRlc3QgdGhhdCBpcyB3cml0dGVuIGluIGFzc2VtYmxlci4gKi8NCi0JCXZSZWdUZXN0MkltcGxlbWVudGF0aW9uKCk7DQotCX0NCi0NCi0JLyogVGhlIGZvbGxvd2luZyBsaW5lIHdpbGwgb25seSBleGVjdXRlIGlmIHRoZSB0YXNrIHBhcmFtZXRlciBpcyBmb3VuZCB0bw0KLQliZSBpbmNvcnJlY3QuICBUaGUgY2hlY2sgdGFzayB3aWxsIGRldGVjdCB0aGF0IHRoZSByZWd0ZXN0IGxvb3AgY291bnRlciBpcw0KLQlub3QgYmVpbmcgaW5jcmVtZW50ZWQgYW5kIGZsYWcgYW4gZXJyb3IuICovDQotCXZUYXNrRGVsZXRlKCBOVUxMICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vcmVnX3Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vcmVnX3Rlc3QucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZmNDg1My4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvRnVsbC1EZW1vL3JlZ190ZXN0LnMKKysrIC9kZXYvbnVsbApAQCAtMSw2NzAgKzAsMCBAQAotOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOw0KLTsgICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLTsgICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi07ICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotOyAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi07ICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLTsgICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLTsgICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotOyAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07Ki8NCi0NCi0JRVhQT1JUIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQotCUVYUE9SVCB2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KLQ0KLQk7IFRoaXMgZmlsZSBpcyBidWlsdCB3aXRoIElBUiBhbmQgQVJNIGNvbXBpbGVycy4gIFdoZW4gdGhlIEFSTSBjb21waWxlcg0KLQk7IGlzIHVzZWQgdGhlIGNvbXBpbGVyIG9wdGlvbnMgbXVzdCBkZWZpbmUgX19JQVNNQVJNX18gYXMgMCB1c2luZyB0aGUNCi0JOyAtLXByZWRlZmluZSAiX19JQVNNQVJNX18gU0VUQSAwIiBjb21tYW5kIGxpbmUgb3B0aW9uLiAgV2hlbiBjb21waWxpbmcNCi0JOyB3aXRoIElBUiBfX0lBU01BUk1fXyBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byAxIHNvIG5vIGFkZGl0aW9uYWwgYXNzZW1ibGVyDQotCTsgb3B0aW9ucyBhcmUgcmVxdWlyZWQuDQotCWlmIF9fSUFTTUFSTV9fID09IDENCi0JCTsgU3ludGF4IGZvciBJQVIgY29tcGlsZXIuDQotCQlTRUNUSU9OIC50ZXh0OkNPREU6Uk9PVCgyKQ0KLQllbHNlDQotCQk7IFN5bnRheCBmb3IgQVJNIGNvbXBpbGVyLg0KLQkJQVJFQSBSZWdUZXN0LCBDT0RFLCBSRUFET05MWQ0KLQllbmRpZg0KLQlBUk0NCi0NCi0JOyBUaGlzIGZ1bmN0aW9uIGlzIGV4cGxhaW5lZCBpbiB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiBtYWluLWZ1bGwuYy4NCi12UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KLQ0KLQlQUkVTRVJWRTgNCi0JSU1QT1JUIHVsUmVnVGVzdDFMb29wQ291bnRlcg0KLQ0KLQk7IEZpbGwgZWFjaCBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIgd2l0aCBhIGtub3duIHZhbHVlLg0KLQltb3YJCXIwLCAgIzB4RkYNCi0JbW92CQlyMSwgICMweDExDQotCW1vdgkJcjIsICAjMHgyMg0KLQltb3YJCXIzLCAgIzB4MzMNCi0JbW92ICAgICByNCwgICMweDQ0DQotCW1vdiAgICAgcjUsICAjMHg1NQ0KLQltb3YgICAgIHI2LCAgIzB4NjYNCi0JbW92ICAgICByNywgICMweDc3DQotCW1vdiAgICAgcjgsICAjMHg4OA0KLQltb3YgICAgIHI5LCAgIzB4OTkNCi0JbW92ICAgICByMTAsICMweEFBDQotCW1vdiAgICAgcjExLCAjMHhCQg0KLQltb3YgICAgIHIxMiwgIzB4Q0MNCi0JbW92CQlyMTQsICMweEVFDQotDQotCTsgRmlsbCBlYWNoIEZQVSByZWdpc3RlciB3aXRoIGEga25vd24gdmFsdWUuDQotCXZtb3YgCWQwLCByMCwgcjENCi0Jdm1vdiAJZDEsIHIyLCByMw0KLQl2bW92IAlkMiwgcjQsIHI1DQotCXZtb3YgCWQzLCByNiwgcjcNCi0Jdm1vdiAJZDQsIHI4LCByOQ0KLQl2bW92IAlkNSwgcjEwLCByMTENCi0Jdm1vdiAJZDYsIHIwLCByMQ0KLQl2bW92IAlkNywgcjIsIHIzDQotCXZtb3YgCWQ4LCByNCwgcjUNCi0Jdm1vdiAJZDksIHI2LCByNw0KLQl2bW92IAlkMTAsIHI4LCByOQ0KLQl2bW92IAlkMTEsIHIxMCwgcjExDQotCXZtb3YgCWQxMiwgcjAsIHIxDQotCXZtb3YgCWQxMywgcjIsIHIzDQotCXZtb3YgCWQxNCwgcjQsIHI1DQotCXZtb3YgCWQxNSwgcjYsIHI3DQotDQotCXZtb3YgCWQxNiwgcjAsIHIxDQotCXZtb3YgCWQxNywgcjIsIHIzDQotCXZtb3YgCWQxOCwgcjQsIHI1DQotCXZtb3YgCWQxOSwgcjYsIHI3DQotCXZtb3YgCWQyMCwgcjgsIHI5DQotCXZtb3YgCWQyMSwgcjEwLCByMTENCi0Jdm1vdiAJZDIyLCByMCwgcjENCi0Jdm1vdiAJZDIzLCByMiwgcjMNCi0Jdm1vdiAJZDI0LCByNCwgcjUNCi0Jdm1vdiAJZDI1LCByNiwgcjcNCi0Jdm1vdiAJZDI2LCByOCwgcjkNCi0Jdm1vdiAJZDI3LCByMTAsIHIxMQ0KLQl2bW92IAlkMjgsIHIwLCByMQ0KLQl2bW92IAlkMjksIHIyLCByMw0KLQl2bW92IAlkMzAsIHI0LCByNQ0KLQl2bW92IAlkMzEsIHI2LCByNw0KLQ0KLQk7IExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCi0JOyBleHBlY3RlZCB2YWx1ZS4NCi1yZWcxX2xvb3ANCi0JOyBZaWVsZCB0byBpbmNyZWFzZSB0ZXN0IGNvdmVyYWdlDQotCXN2YyAwDQotDQotCTsgQ2hlY2sgYWxsIHRoZSBWRlAgcmVnaXN0ZXJzIHN0aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBzZXQgYWJvdmUuDQotCTsgRmlyc3Qgc2F2ZSByZWdpc3RlcnMgdGhhdCBhcmUgY2xvYmJlcmVkIGJ5IHRoZSB0ZXN0Lg0KLQlwdXNoIHsgcjAtcjEgfQ0KLQ0KLQl2bW92IAlyMCwgcjEsIGQwDQotCWNtcCAJcjAsICMweEZGDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMQ0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDINCi0JY21wIAlyMCwgIzB4NDQNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQzDQotCWNtcCAJcjAsICMweDY2DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3Nw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkNA0KLQljbXAgCXIwLCAjMHg4OA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDUNCi0JY21wIAlyMCwgIzB4QUENCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweEJCDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ2DQotCWNtcCAJcjAsICMweEZGDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkNw0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDgNCi0JY21wIAlyMCwgIzB4NDQNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ5DQotCWNtcCAJcjAsICMweDY2DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3Nw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTANCi0JY21wIAlyMCwgIzB4ODgNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDk5DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxMQ0KLQljbXAgCXIwLCAjMHhBQQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4QkINCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDEyDQotCWNtcCAJcjAsICMweEZGDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTMNCi0JY21wIAlyMCwgIzB4MjINCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxNA0KLQljbXAgCXIwLCAjMHg0NA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE1DQotCWNtcCAJcjAsICMweDY2DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3Nw0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0NCi0Jdm1vdiAJcjAsIHIxLCBkMTYNCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxNw0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE4DQotCWNtcCAJcjAsICMweDQ0DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTkNCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMA0KLQljbXAgCXIwLCAjMHg4OA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDIxDQotCWNtcCAJcjAsICMweEFBDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjINCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMw0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI0DQotCWNtcCAJcjAsICMweDQ0DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjUNCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyNg0KLQljbXAgCXIwLCAjMHg4OA0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI3DQotCWNtcCAJcjAsICMweEFBDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjgNCi0JY21wIAlyMCwgIzB4RkYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExDQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyOQ0KLQljbXAgCXIwLCAjMHgyMg0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDMwDQotCWNtcCAJcjAsICMweDQ0DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NQ0KLQlibmUgCXJlZzFfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMzENCi0JY21wIAlyMCwgIzB4NjYNCi0JYm5lIAlyZWcxX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3DQotCWJuZSAJcmVnMV9lcnJvcl9sb29wZg0KLQ0KLQk7IFJlc3RvcmUgdGhlIHJlZ2lzdGVycyB0aGF0IHdlcmUgY2xvYmJlcmVkIGJ5IHRoZSB0ZXN0Lg0KLQlwb3AgCXtyMC1yMX0NCi0NCi0JOyBWRlAgcmVnaXN0ZXIgdGVzdCBwYXNzZWQuICBKdW1wIHRvIHRoZSBjb3JlIHJlZ2lzdGVyIHRlc3QuDQotCWIgCQlyZWcxX2xvb3BmX3Bhc3MNCi0NCi1yZWcxX2Vycm9yX2xvb3BmDQotCTsgSWYgdGhpcyBsaW5lIGlzIGhpdCB0aGVuIGEgVkZQIHJlZ2lzdGVyIHZhbHVlIHdhcyBmb3VuZCB0byBiZQ0KLQk7IGluY29ycmVjdC4NCi0JYiByZWcxX2Vycm9yX2xvb3BmDQotDQotcmVnMV9sb29wZl9wYXNzDQotDQotCTsgVGVzdCBlYWNoIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlciB0byBjaGVjayB0aGF0IGl0IHN0aWxsIGNvbnRhaW5zIHRoZQ0KLQk7IGV4cGVjdGVkIGtub3duIHZhbHVlLCBqdW1waW5nIHRvIHJlZzFfZXJyb3JfbG9vcCBpZiBhbnkgcmVnaXN0ZXIgY29udGFpbnMNCi0JOyBhbiB1bmV4cGVjdGVkIHZhbHVlLg0KLQljbXAJCXIwLCAjMHhGRg0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIxLCAjMHgxMQ0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIyLCAjMHgyMg0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIzLCAjMHgzMw0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI0LCAjMHg0NA0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI1LCAjMHg1NQ0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI2LCAjMHg2Ng0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI3LCAjMHg3Nw0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI4LCAjMHg4OA0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXI5LCAjMHg5OQ0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIxMCwgIzB4QUENCi0JYm5lCQlyZWcxX2Vycm9yX2xvb3ANCi0JY21wCQlyMTEsICMweEJCDQotCWJuZQkJcmVnMV9lcnJvcl9sb29wDQotCWNtcAkJcjEyLCAjMHhDQw0KLQlibmUJCXJlZzFfZXJyb3JfbG9vcA0KLQljbXAJCXIxNCwgIzB4RUUNCi0JYm5lCQlyZWcxX2Vycm9yX2xvb3ANCi0NCi0JOyBFdmVyeXRoaW5nIHBhc3NlZCwgaW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIuDQotCXB1c2ggeyByMC1yMSB9DQotCWxkcglyMCwgPXVsUmVnVGVzdDFMb29wQ291bnRlcg0KLQlsZHIgcjEsIFtyMF0NCi0JYWRkcyByMSwgcjEsICMxDQotCXN0ciByMSwgW3IwXQ0KLQlwb3AgeyByMC1yMSB9DQotDQotCTsgU3RhcnQgYWdhaW4uDQotCWIgcmVnMV9sb29wDQotDQotcmVnMV9lcnJvcl9sb29wDQotCTsgSWYgdGhpcyBsaW5lIGlzIGhpdCB0aGVuIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBhIGNvcmUgcmVnaXN0ZXIgdmFsdWUuDQotCTsgVGhlIGxvb3AgZW5zdXJlcyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZy4NCi0JYiByZWcxX2Vycm9yX2xvb3ANCi0Jbm9wDQotDQotOy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQotDQotCVBSRVNFUlZFOA0KLQlJTVBPUlQgdWxSZWdUZXN0Mkxvb3BDb3VudGVyDQotDQotCTsgUHV0IGEga25vd24gdmFsdWUgaW4gZWFjaCByZWdpc3Rlci4NCi0JbW92CQlyMCwgICMweEZGMDAwMDAwDQotCW1vdgkJcjEsICAjMHgxMTAwMDAwMA0KLQltb3YJCXIyLCAgIzB4MjIwMDAwMDANCi0JbW92CQlyMywgICMweDMzMDAwMDAwDQotCW1vdiAgICAgcjQsICAjMHg0NDAwMDAwMA0KLQltb3YgICAgIHI1LCAgIzB4NTUwMDAwMDANCi0JbW92ICAgICByNiwgICMweDY2MDAwMDAwDQotCW1vdiAgICAgcjcsICAjMHg3NzAwMDAwMA0KLQltb3YgICAgIHI4LCAgIzB4ODgwMDAwMDANCi0JbW92ICAgICByOSwgICMweDk5MDAwMDAwDQotCW1vdiAgICAgcjEwLCAjMHhBQTAwMDAwMA0KLQltb3YgICAgIHIxMSwgIzB4QkIwMDAwMDANCi0JbW92ICAgICByMTIsICMweENDMDAwMDAwDQotCW1vdiAgICAgcjE0LCAjMHhFRTAwMDAwMA0KLQ0KLQk7IExpa2V3aXNlIHRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMNCi0Jdm1vdiAJZDAsIHIwLCByMQ0KLQl2bW92IAlkMSwgcjIsIHIzDQotCXZtb3YgCWQyLCByNCwgcjUNCi0Jdm1vdiAJZDMsIHI2LCByNw0KLQl2bW92IAlkNCwgcjgsIHI5DQotCXZtb3YgCWQ1LCByMTAsIHIxMQ0KLQl2bW92IAlkNiwgcjAsIHIxDQotCXZtb3YgCWQ3LCByMiwgcjMNCi0Jdm1vdiAJZDgsIHI0LCByNQ0KLQl2bW92IAlkOSwgcjYsIHI3DQotCXZtb3YgCWQxMCwgcjgsIHI5DQotCXZtb3YgCWQxMSwgcjEwLCByMTENCi0Jdm1vdiAJZDEyLCByMCwgcjENCi0Jdm1vdiAJZDEzLCByMiwgcjMNCi0Jdm1vdiAJZDE0LCByNCwgcjUNCi0Jdm1vdiAJZDE1LCByNiwgcjcNCi0NCi0Jdm1vdiAJZDE2LCByMCwgcjENCi0Jdm1vdiAJZDE3LCByMiwgcjMNCi0Jdm1vdiAJZDE4LCByNCwgcjUNCi0Jdm1vdiAJZDE5LCByNiwgcjcNCi0Jdm1vdiAJZDIwLCByOCwgcjkNCi0Jdm1vdiAJZDIxLCByMTAsIHIxMQ0KLQl2bW92IAlkMjIsIHIwLCByMQ0KLQl2bW92IAlkMjMsIHIyLCByMw0KLQl2bW92IAlkMjQsIHI0LCByNQ0KLQl2bW92IAlkMjUsIHI2LCByNw0KLQl2bW92IAlkMjYsIHI4LCByOQ0KLQl2bW92IAlkMjcsIHIxMCwgcjExDQotCXZtb3YgCWQyOCwgcjAsIHIxDQotCXZtb3YgCWQyOSwgcjIsIHIzDQotCXZtb3YgCWQzMCwgcjQsIHI1DQotCXZtb3YgCWQzMSwgcjYsIHI3DQotDQotCTsgTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KLQk7IGV4cGVjdGVkIHZhbHVlLg0KLXJlZzJfbG9vcA0KLQk7IENoZWNrIGFsbCB0aGUgVkZQIHJlZ2lzdGVycyBzdGlsbCBjb250YWluIHRoZSB2YWx1ZXMgc2V0IGFib3ZlLg0KLQk7IEZpcnN0IHNhdmUgcmVnaXN0ZXJzIHRoYXQgYXJlIGNsb2JiZXJlZCBieSB0aGUgdGVzdC4NCi0JcHVzaCAJeyByMC1yMSB9DQotDQotCXZtb3YgCXIwLCByMSwgZDANCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxDQotCWNtcCAJcjAsICMweDIyMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMg0KLQljbXAgCXIwLCAjMHg0NDAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDMNCi0JY21wIAlyMCwgIzB4NjYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ0DQotCWNtcCAJcjAsICMweDg4MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg5OTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkNQ0KLQljbXAgCXIwLCAjMHhBQTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4QkIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDYNCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQ3DQotCWNtcCAJcjAsICMweDIyMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkOA0KLQljbXAgCXIwLCAjMHg0NDAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDkNCi0JY21wIAlyMCwgIzB4NjYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxMA0KLQljbXAgCXIwLCAjMHg4ODAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4OTkwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDExDQotCWNtcCAJcjAsICMweEFBMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHhCQjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTINCi0JY21wIAlyMCwgIzB4RkYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDExMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92CXIwLCByMSwgZDEzDQotCWNtcCAJcjAsICMweDIyMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgzMzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTQNCi0JY21wIAlyMCwgIzB4NDQwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDU1MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxNQ0KLQljbXAgCXIwLCAjMHg2NjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NzcwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotDQotCXZtb3YgCXIwLCByMSwgZDE2DQotCWNtcCAJcjAsICMweEZGMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMTcNCi0JY21wIAlyMCwgIzB4MjIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQxOA0KLQljbXAgCXIwLCAjMHg0NDAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDE5DQotCWNtcCAJcjAsICMweDY2MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3NzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjANCi0JY21wIAlyMCwgIzB4ODgwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDk5MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyMQ0KLQljbXAgCXIwLCAjMHhBQTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4QkIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDIyDQotCWNtcCAJcjAsICMweEZGMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjMNCi0JY21wIAlyMCwgIzB4MjIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDMzMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyNA0KLQljbXAgCXIwLCAjMHg0NDAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4NTUwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI1DQotCWNtcCAJcjAsICMweDY2MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg3NzAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMjYNCi0JY21wIAlyMCwgIzB4ODgwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDk5MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQl2bW92IAlyMCwgcjEsIGQyNw0KLQljbXAgCXIwLCAjMHhBQTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4QkIwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDI4DQotCWNtcCAJcjAsICMweEZGMDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHgxMTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdglyMCwgcjEsIGQyOQ0KLQljbXAgCXIwLCAjMHgyMjAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0JY21wIAlyMSwgIzB4MzMwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCXZtb3YgCXIwLCByMSwgZDMwDQotCWNtcCAJcjAsICMweDQ0MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQljbXAgCXIxLCAjMHg1NTAwMDAwMA0KLQlibmUgCXJlZzJfZXJyb3JfbG9vcGYNCi0Jdm1vdiAJcjAsIHIxLCBkMzENCi0JY21wIAlyMCwgIzB4NjYwMDAwMDANCi0JYm5lIAlyZWcyX2Vycm9yX2xvb3BmDQotCWNtcCAJcjEsICMweDc3MDAwMDAwDQotCWJuZSAJcmVnMl9lcnJvcl9sb29wZg0KLQ0KLQk7IFJlc3RvcmUgdGhlIHJlZ2lzdGVycyB0aGF0IHdlcmUgY2xvYmJlcmVkIGJ5IHRoZSB0ZXN0Lg0KLQlwb3AgCXtyMC1yMX0NCi0NCi0JOyBWRlAgcmVnaXN0ZXIgdGVzdCBwYXNzZWQuICBKdW1wIHRvIHRoZSBjb3JlIHJlZ2lzdGVyIHRlc3QuDQotCWIgCQlyZWcyX2xvb3BmX3Bhc3MNCi0NCi1yZWcyX2Vycm9yX2xvb3BmDQotCTsgSWYgdGhpcyBsaW5lIGlzIGhpdCB0aGVuIGEgVkZQIHJlZ2lzdGVyIHZhbHVlIHdhcyBmb3VuZCB0byBiZQ0KLQk7IGluY29ycmVjdC4NCi0JYiAJCXJlZzJfZXJyb3JfbG9vcGYNCi0NCi1yZWcyX2xvb3BmX3Bhc3MNCi0NCi0JY21wCQlyMCwgIzB4RkYwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyMSwgIzB4MTEwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyMiwgIzB4MjIwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyMywgIzB4MzMwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyNCwgIzB4NDQwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyNSwgIzB4NTUwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyNiwgIzB4NjYwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyNywgIzB4NzcwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyOCwgIzB4ODgwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyOSwgIzB4OTkwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wCQlyMTAsICMweEFBMDAwMDAwDQotCWJuZQkJcmVnMl9lcnJvcl9sb29wDQotCWNtcAkJcjExLCAjMHhCQjAwMDAwMA0KLQlibmUJCXJlZzJfZXJyb3JfbG9vcA0KLQljbXAJCXIxMiwgIzB4Q0MwMDAwMDANCi0JYm5lCQlyZWcyX2Vycm9yX2xvb3ANCi0JY21wICAgICByMTQsICMweEVFMDAwMDAwDQotCWJuZQkJcmVnMl9lcnJvcl9sb29wDQotDQotCTsgRXZlcnl0aGluZyBwYXNzZWQsIGluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyLg0KLQlwdXNoIAl7IHIwLXIxIH0NCi0JbGRyCQlyMCwgPXVsUmVnVGVzdDJMb29wQ291bnRlcg0KLQlsZHIgCXIxLCBbcjBdDQotCWFkZHMgCXIxLCByMSwgIzENCi0Jc3RyIAlyMSwgW3IwXQ0KLQlwb3AgCXsgcjAtcjEgfQ0KLQ0KLQk7IFN0YXJ0IGFnYWluLg0KLQliIAkJcmVnMl9sb29wDQotDQotcmVnMl9lcnJvcl9sb29wDQotCTsgSWYgdGhpcyBsaW5lIGlzIGhpdCB0aGVuIHRoZXJlIHdhcyBhbiBlcnJvciBpbiBhIGNvcmUgcmVnaXN0ZXIgdmFsdWUuDQotCTsgVGhlIGxvb3AgZW5zdXJlcyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZy4NCi0JYiAJCXJlZzJfZXJyb3JfbG9vcA0KLQlub3ANCi0NCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9GdWxsLURlbW8vc2VyaWFsLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyZDgwNmQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0Z1bGwtRGVtby9zZXJpYWwuYworKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKg0KLQlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDIuDQotDQotCSoqKk5vdGUqKiogVGhpcyBleGFtcGxlIHVzZXMgcXVldWVzIHRvIHNlbmQgZWFjaCBjaGFyYWN0ZXIgaW50byBhbiBpbnRlcnJ1cHQNCi0Jc2VydmljZSByb3V0aW5lIGFuZCBvdXQgb2YgYW4gaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBpbmRpdmlkdWFsbHkuICBUaGlzDQotCWlzIGRvbmUgdG8gZGVtb25zdHJhdGUgcXVldWVzIGJlaW5nIHVzZWQgaW4gYW4gaW50ZXJydXB0LCBhbmQgdG8gZGVsaWJlcmF0ZWx5DQotCWxvYWQgdGhlIHN5c3RlbSB0byB0ZXN0IHRoZSBGcmVlUlRPUyBwb3J0LiAgSXQgaXMgKk5PVCogbWVhbnQgdG8gYmUgYW4NCi0JZXhhbXBsZSBvZiBhbiBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24uICBBbiBlZmZpY2llbnQgaW1wbGVtZW50YXRpb24gc2hvdWxkDQotCXVzZSB0aGUgRE1BLCBhbmQgb25seSB1c2UgRnJlZVJUT1MgQVBJIGZ1bmN0aW9ucyB3aGVuIGVub3VnaCBoYXMgYmVlbg0KLQlyZWNlaXZlZCB0byB3YXJyYW50IGEgdGFzayBiZWluZyB1bmJsb2NrZWQgdG8gcHJvY2VzcyB0aGUgZGF0YS4NCi0qLw0KLQ0KLS8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAicXVldWUuaCINCi0jaW5jbHVkZSAic2VtcGhyLmgiDQotI2luY2x1ZGUgImNvbXRlc3QyLmgiDQotDQotLyogRHJpdmVyIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X3NjaWZfdWFydC5oIg0KLSNpbmNsdWRlICJzaW9fY2hhci5oIg0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIg0KLQ0KLS8qIERlbW8gYXBwbGljYXRpb24gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInNlcmlhbC5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIE1pc2MgZGVmaW5lcy4gKi8NCi0jZGVmaW5lIHNlcklOVkFMSURfUVVFVUUJCQkJKCAoIFF1ZXVlSGFuZGxlX3QgKSAwICkNCi0jZGVmaW5lIHNlck5PX0JMT0NLCQkJCQkJKCAoIFRpY2tUeXBlX3QgKSAwICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBIYW5kbGVycyBmb3IgdGhlIFJ4IGFuZCBUeCBpbnRlcnJ1cHRzIHJlc3BlY3RpdmVseS4gKi8NCi1zdGF0aWMgdm9pZCBwcnZSWElfSGFuZGxlciggdWludDMyX3QgdWxVbnVzZWRQYXJhbWV0ZXIgKTsNCi1zdGF0aWMgdm9pZCBwcnZUWElfSGFuZGxlciggdWludDMyX3QgdWxVbnVzZWRQYXJhbWV0ZXIgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBUaGUgcXVldWUgdXNlZCB0byBob2xkIHJlY2VpdmVkIGNoYXJhY3RlcnMuICovDQotc3RhdGljIFF1ZXVlSGFuZGxlX3QgeFJ4ZWRDaGFyczsNCi1zdGF0aWMgUXVldWVIYW5kbGVfdCB4Q2hhcnNGb3JUeDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFNlZSB0aGUgc2VyaWFsMi5oIGhlYWRlciBmaWxlLg0KLSAqLw0KLXhDb21Qb3J0SGFuZGxlIHhTZXJpYWxQb3J0SW5pdE1pbmltYWwoIHVuc2lnbmVkIGxvbmcgdWxXYW50ZWRCYXVkLCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFIHV4UXVldWVMZW5ndGggKQ0KLXsNCi0JLyogQmF1ZCBpcyBzZXQgaW4gSW9Jbml0U2NpZjIoKSwgY2FsbGVkIGluIHBydlNldHVwSGFyZHdhcmUoKSBpbiBtYWluLmMuICovDQotCSggdm9pZCApIHVsV2FudGVkQmF1ZDsNCi0NCi0JLyogQ3JlYXRlIHRoZSBxdWV1ZXMgdXNlZCB0byBob2xkIFJ4L1R4IGNoYXJhY3RlcnMuICBOb3RlIHRoZSBjb21tZW50cyBhdA0KLQl0aGUgdG9wIG9mIHRoaXMgZmlsZSByZWdhcmRpbmcgdGhlIHVzZSBvZiBxdWV1ZXMgaW4gdGhpcyBtYW5uZXIuICovDQotCXhSeGVkQ2hhcnMgPSB4UXVldWVDcmVhdGUoIHV4UXVldWVMZW5ndGgsICggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSApIHNpemVvZiggY2hhciApICk7DQotCXhDaGFyc0ZvclR4ID0geFF1ZXVlQ3JlYXRlKCB1eFF1ZXVlTGVuZ3RoICsgMSwgKCB1bnNpZ25lZCBwb3J0QkFTRV9UWVBFICkgc2l6ZW9mKCBjaGFyICkgKTsNCi0NCi0JLyogSWYgdGhlIHF1ZXVlcyB3ZXJlIGNyZWF0ZWQgY29ycmVjdGx5IHRoZW4gc2V0dXAgdGhlIHNlcmlhbCBwb3J0DQotCWhhcmR3YXJlLiAqLw0KLQlpZiggKCB4UnhlZENoYXJzICE9IHNlcklOVkFMSURfUVVFVUUgKSAmJiAoIHhDaGFyc0ZvclR4ICE9IHNlcklOVkFMSURfUVVFVUUgKSApDQotCXsNCi0JICAgIC8qIFJlZ2lzdGVyIFJYSSBhbmQgVFhJIGhhbmRsZXJzLiAqLw0KLQkgICAgUl9JTlRDX1JlZ2lzdEludEZ1bmMoIElOVENfSURfUlhJMiwgcHJ2UlhJX0hhbmRsZXIgKTsNCi0JICAgIFJfSU5UQ19SZWdpc3RJbnRGdW5jKCBJTlRDX0lEX1RYSTIsIHBydlRYSV9IYW5kbGVyICk7DQotDQotCSAgICAvKiBTZXQgYm90aCBpbnRlcnJ1cHRzIHN1Y2ggdGhhdCB0aGV5IGNhbiBpbnRlcnJ1cHQgdGhlIHRpY2suICBBbHNvDQotCSAgICBzZXQgdGhlIFJ4IGludGVycnVwdCBhYm92ZSB0aGUgVHggaW50ZXJydXB0IGluIHRoZSBob3BlIHRoYXQgKGZvciB0ZXN0DQotCSAgICBwdXJwb3NlcykgdGhlIFR4IGludGVycnVwdCB3aWxsIGludGVycnVwdCB0aGUgUnggaW50ZXJydXB0LiAqLw0KLQkgICAgUl9JTlRDX1NldFByaW9yaXR5KCBJTlRDX0lEX1JYSTIsIGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKTsNCi0JICAgIFJfSU5UQ19TZXRQcmlvcml0eSggSU5UQ19JRF9UWEkyLCAoIGNvbmZpZ01BWF9BUElfQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKyAxICkgKTsNCi0NCi0JICAgIC8qIFRoaXMgZHJpdmVyIGlzIGludGVuZGVkIHRvIHRlc3QgaW50ZXJydXB0IGludGVyYWN0aW9ucywgYW5kIG5vdA0KLQkgICAgaW50ZW5kZWQgdG8gYmUgZWZmaWNpZW50LiAgVGhlcmVmb3JlIHNldCB0aGUgUlggdHJpZ2dlciBsZXZlbCB0byAxLiAqLw0KLQkgICAgU0NJRjIuU0NGQ1IuQklULlJUUkcgPSAwOw0KLQkgICAgU0NJRjIuU0NGQ1IuQklULlRUUkcgPSAzOw0KLQ0KLQkJLyogRW5hYmxlIFJ4IGludGVycnVwdC4gIFR4IGludGVycnVwdCB3aWxsIGJlIGVuYWJsZWQgd2hlbiBhIFR4IGlzDQotCQlwZXJmb3JtZWQuICovDQotCQlTQ0lGMi5TQ1NDUi5CSVQuUklFID0gMTsNCi0JCVJfSU5UQ19FbmFibGUoIElOVENfSURfUlhJMiApOw0KLQkJUl9JTlRDX0VuYWJsZSggSU5UQ19JRF9UWEkyICk7DQotCX0NCi0NCi0JLyogVGhpcyBkZW1vIGZpbGUgb25seSBzdXBwb3J0cyBhIHNpbmdsZSBwb3J0IGJ1dCB3ZSBoYXZlIHRvIHJldHVybg0KLQlzb21ldGhpbmcgdG8gY29tcGx5IHdpdGggdGhlIHN0YW5kYXJkIGRlbW8gaGVhZGVyIGZpbGUuICovDQotCXJldHVybiAoIHhDb21Qb3J0SGFuZGxlICkgMDsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFNlcmlhbEdldENoYXIoIHhDb21Qb3J0SGFuZGxlIHB4UG9ydCwgc2lnbmVkIGNoYXIgKnBjUnhlZENoYXIsIFRpY2tUeXBlX3QgeEJsb2NrVGltZSApDQotew0KLQkvKiBUaGUgcG9ydCBoYW5kbGUgaXMgbm90IHJlcXVpcmVkIGFzIHRoaXMgZHJpdmVyIG9ubHkgc3VwcG9ydHMgb25lIHBvcnQuICovDQotCSggdm9pZCApIHB4UG9ydDsNCi0NCi0JLyogR2V0IHRoZSBuZXh0IGNoYXJhY3RlciBmcm9tIHRoZSBidWZmZXIuICBSZXR1cm4gZmFsc2UgaWYgbm8gY2hhcmFjdGVycw0KLQlhcmUgYXZhaWxhYmxlLCBvciBhcnJpdmUgYmVmb3JlIHhCbG9ja1RpbWUgZXhwaXJlcy4gKi8NCi0JaWYoIHhRdWV1ZVJlY2VpdmUoIHhSeGVkQ2hhcnMsIHBjUnhlZENoYXIsIHhCbG9ja1RpbWUgKSApDQotCXsNCi0JCXJldHVybiBwZFRSVUU7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlyZXR1cm4gcGRGQUxTRTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZTZXJpYWxQdXRTdHJpbmcoIHhDb21Qb3J0SGFuZGxlIHB4UG9ydCwgY29uc3Qgc2lnbmVkIGNoYXIgKiBjb25zdCBwY1N0cmluZywgdW5zaWduZWQgc2hvcnQgdXNTdHJpbmdMZW5ndGggKQ0KLXsNCi1jaGFyICpweE5leHQ7DQotDQotCS8qIEEgY291cGxlIG9mIHBhcmFtZXRlcnMgdGhhdCB0aGlzIHBvcnQgZG9lcyBub3QgdXNlLiAqLw0KLQkoIHZvaWQgKSB1c1N0cmluZ0xlbmd0aDsNCi0JKCB2b2lkICkgcHhQb3J0Ow0KLQ0KLQkvKiBTZW5kIGVhY2ggY2hhcmFjdGVyIGluIHRoZSBzdHJpbmcsIG9uZSBhdCBhIHRpbWUuICovDQotCXB4TmV4dCA9ICggY2hhciAqICkgcGNTdHJpbmc7DQotCXdoaWxlKCAqcHhOZXh0ICkNCi0Jew0KLQkJeFNlcmlhbFB1dENoYXIoIHB4UG9ydCwgKnB4TmV4dCwgcG9ydE1BWF9ERUxBWSApOw0KLQkJcHhOZXh0Kys7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFNlcmlhbFB1dENoYXIoIHhDb21Qb3J0SGFuZGxlIHB4UG9ydCwgc2lnbmVkIGNoYXIgY091dENoYXIsIFRpY2tUeXBlX3QgeEJsb2NrVGltZSApDQotew0KLXNpZ25lZCBwb3J0QkFTRV9UWVBFIHhSZXR1cm47DQotDQotCS8qIE5vdGUgdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlIHJlZ2FyZGluZyB0aGUgdXNlIG9mIHF1ZXVlcyBpbg0KLQl0aGlzIG1hbm5lci4gKi8NCi0JaWYoIHhRdWV1ZVNlbmQoIHhDaGFyc0ZvclR4LCAmY091dENoYXIsIHhCbG9ja1RpbWUgKSA9PSBwZFBBU1MgKQ0KLQl7DQotCQl4UmV0dXJuID0gcGRQQVNTOw0KLQ0KLQkJLyogRW5hYmxlIHRoZSBpbnRlcnJ1cHQgd2hpY2ggd2lsbCByZW1vdmUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZQ0KLQkJcXVldWUuICovDQotCQlTQ0lGMi5TQ1NDUi5CSVQuVElFID0gMTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXhSZXR1cm4gPSBwZEZBSUw7DQotCX0NCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlNlcmlhbENsb3NlKCB4Q29tUG9ydEhhbmRsZSB4UG9ydCApDQotew0KLQkvKiBOb3Qgc3VwcG9ydGVkIGFzIG5vdCByZXF1aXJlZCBieSB0aGUgZGVtbyBhcHBsaWNhdGlvbi4gKi8NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UlhJX0hhbmRsZXIoIHVpbnQzMl90IHVsVW51c2VkUGFyYW1ldGVyICkNCi17DQotdW5zaWduZWQgY2hhciB1Y1J4ZWRCeXRlOw0KLWxvbmcgbEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsNCi0NCi0JLyogVGhlIHBhcmFtZXRlciBpcyBub3QgdXNlZC4gIEl0IGlzIG9ubHkgcHJlc2VudCBiZWNhdXNlIFJlbmVzYXMgZHJpdmVycw0KLQlhcmUgdXNlZCB0byBpbnN0YWxsIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMsIGFuZCB0aGUgZHJpdmVycyBleHBlY3QgdGhlDQotCXBhcmFtZXRlciB0byBiZSBwcmVzZW50LiAqLw0KLQkoIHZvaWQgKSB1bFVudXNlZFBhcmFtZXRlcjsNCi0NCi0JLyogTm90ZSB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUgcmVnYXJkaW5nIHRoZSB1c2Ugb2YgcXVldWVzIGluDQotCXRoaXMgbWFubmVyLiAqLw0KLQl3aGlsZSggKCBTQ0lGMi5TQ0ZEUi5XT1JEICYgMHgxRiApICE9IDAgKQ0KLQl7DQotCQl1Y1J4ZWRCeXRlID0gU0NJRjIuU0NGUkRSLkJZVEU7DQotCQl4UXVldWVTZW5kRnJvbUlTUiggeFJ4ZWRDaGFycywgJnVjUnhlZEJ5dGUsICZsSGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCi0JfQ0KLQ0KLQlTQ0lGMi5TQ0ZTUi5CSVQuUkRGID0gMDsNCi0NCi0JLyogSWYgc2VuZGluZyB0byB0aGUgcXVldWUgaGFzIGNhdXNlZCBhIHRhc2sgdG8gdW5ibG9jaywgYW5kIHRoZSB1bmJsb2NrZWQNCi0JdGFzayBoYXMgYSBwcmlvcml0eSBlcXVhbCB0byBvciBoaWdoZXIgdGhhbiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzayAodGhlDQotCXRhc2sgdGhpcyBJU1IgaW50ZXJydXB0ZWQpLCB0aGVuIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3aWxsIGhhdmUNCi0JYXV0b21hdGljYWxseSBiZWVuIHNldCB0byBwZFRSVUUgd2l0aGluIHRoZSBxdWV1ZSBzZW5kIGZ1bmN0aW9uLg0KLQlwb3J0WUlFTERfRlJPTV9JU1IoKSB3aWxsIHRoZW4gZW5zdXJlIHRoYXQgdGhpcyBJU1IgcmV0dXJucwlkaXJlY3RseSB0byB0aGUNCi0JaGlnaGVyIHByaW9yaXR5IHVuYmxvY2tlZCB0YXNrLiAqLw0KLQlwb3J0WUlFTERfRlJPTV9JU1IoIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZUWElfSGFuZGxlciggdWludDMyX3QgdWxVbnVzZWRQYXJhbWV0ZXIgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjQnl0ZTsNCi1sb25nIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQotDQotCS8qIFRoZSBwYXJhbWV0ZXIgaXMgbm90IHVzZWQuICBJdCBpcyBvbmx5IHByZXNlbnQgYmVjYXVzZSBSZW5lc2FzIGRyaXZlcnMNCi0JYXJlIHVzZWQgdG8gaW5zdGFsbCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzLCBhbmQgdGhlIGRyaXZlcnMgZXhwZWN0IHRoZQ0KLQlwYXJhbWV0ZXIgdG8gYmUgcHJlc2VudC4gKi8NCi0JKCB2b2lkICkgdWxVbnVzZWRQYXJhbWV0ZXI7DQotDQotCS8qIE5vdGUgdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlIHJlZ2FyZGluZyB0aGUgdXNlIG9mIHF1ZXVlcyBpbg0KLQl0aGlzIG1hbm5lci4gKi8NCi0JaWYoIHhRdWV1ZVJlY2VpdmVGcm9tSVNSKCB4Q2hhcnNGb3JUeCwgJnVjQnl0ZSwgJmxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApID09IHBkUEFTUyApDQotCXsNCi0JCVNDSUYyLlNDRlREUi5CWVRFID0gdWNCeXRlOw0KLQ0KLQkJLyogQ2xlYXIgVERSRSBhbmQgVEVORCBmbGFnICovDQotCSAgICBTQ0lGMi5TQ0ZTUi5XT1JEICY9IH4weDAwNjA7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQkvKiBObyBtb3JlIGNoYXJhY3RlcnMuICBEaXNhYmxlIHRoZSBpbnRlcnJ1cHQuICovDQotCQlTQ0lGMi5TQ1NDUi5CSVQuVElFID0gMDsNCi0JfQ0KLQ0KLQkvKiBJZiByZWNlaXZpbmcgZnJvbSB0aGUgcXVldWUgaGFzIGNhdXNlZCBhIHRhc2sgdG8gdW5ibG9jaywgYW5kIHRoZQ0KLQl1bmJsb2NrZWQgdGFzayBoYXMgYSBwcmlvcml0eSBlcXVhbCB0byBvciBoaWdoZXIgdGhhbiB0aGUgY3VycmVudGx5IHJ1bm5pbmcNCi0JdGFzayAodGhlIHRhc2sgdGhpcyBJU1IgaW50ZXJydXB0ZWQpLCB0aGVuIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3aWxsDQotCWhhdmUgYXV0b21hdGljYWxseSBiZWVuIHNldCB0byBwZFRSVUUgd2l0aGluIHRoZSBxdWV1ZSByZWNlaXZlIGZ1bmN0aW9uLg0KLQlwb3J0WUlFTERfRlJPTV9JU1IoKSB3aWxsIHRoZW4gZW5zdXJlIHRoYXQgdGhpcyBJU1IgcmV0dXJucwlkaXJlY3RseSB0byB0aGUNCi0JaGlnaGVyIHByaW9yaXR5IHVuYmxvY2tlZCB0YXNrLiAqLw0KLQlwb3J0WUlFTERfRlJPTV9JU1IoIGxIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvTEVEcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL0xFRHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI4NzVlMi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvTEVEcy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCBhbiBMRUQuDQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogRGVtbyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLQ0KLS8qIEhhcmR3YXJlIHNwZWNpZmljcy4gKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZQYXJUZXN0SW5pdGlhbGlzZSggdm9pZCApDQotew0KLQkvKiBJbml0aWFsaXNlIFA3XzAxIGZvciBMRUQwLiAqLw0KLQlQT1JUNy5QTUNuLkJJVC5QTUNuMSA9IDA7DQotCVBPUlQ3LlBuLkJJVC5QbjEgPSAxOw0KLQlQT1JUNy5QTW4uQklULlBNbjEgPSAwOw0KLQlQT1JUNy5QSVBDbi5CSVQuUElQQ24xID0gMDsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UGFyVGVzdFRvZ2dsZUxFRCggdW5zaWduZWQgbG9uZyB1bExFRCApDQotew0KLQlpZiggdWxMRUQgPT0gMCApDQotCXsNCi0JCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KLQkJew0KLQkJCVBPUlQ3LlBuLkJJVC5QbjEgPSAhUE9SVDcuUG4uQklULlBuMTsNCi0JCX0NCi0JCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UGFyVGVzdFNldExFRCggdW5zaWduZWQgbG9uZyB1bExFRCwgc2lnbmVkIGxvbmcgeFZhbHVlICkNCi17DQotCS8qIEEgaGlnaCB2YWx1ZSB0dXJucyB0aGUgTEVEIG9mZi4gKi8NCi0JeFZhbHVlID0gIXhWYWx1ZTsNCi0NCi0JaWYoIHVsTEVEID09IDAgKQ0KLQl7DQotCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCi0JCXsNCi0JCQlQT1JUNy5Qbi5CSVQuUG4xID0geFZhbHVlOw0KLQkJfQ0KLQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BlcmlwaGVyYWxfaW5pdF9iYXNpYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy9wZXJpcGhlcmFsX2luaXRfYmFzaWMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY3ZGNkYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BlcmlwaGVyYWxfaW5pdF9iYXNpYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHBlcmlwaGVyYWxfaW5pdF9iYXNpYy5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDoNCi0qIEgvVyBQbGF0Zm9ybSA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIEluaXRpYWxpemUgcGVyaXBoZXJhbCBmdW5jdGlvbiBzYW1wbGUNCi0qIE9wZXJhdGlvbiAgICA6DQotKiBMaW1pdGF0aW9ucyAgOg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X2NvbW1vbi5oIiAgICAgIC8qIENvbW1vbiBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyogRG8gbm90IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBwcmFnbWFzIHdoZW4gY29tcGlsaW5nIHdpdGggSUFSLiAqLw0KLSNpZm5kZWYgX19JQ0NBUk1fXw0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIGNvZGUgICA9ICJDT0RFX0JBU0lDX1NFVFVQIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJvZGF0YSA9ICJDT05TVF9CQVNJQ19TRVRVUCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByd2RhdGEgPSAiREFUQV9CQVNJQ19TRVRVUCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiB6aWRhdGEgPSAiQlNTX0JBU0lDX1NFVFVQIg0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBQZXJpcGhlcmFsX0Jhc2ljSW5pdCh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHZvaWQgQ1BHX0luaXQodm9pZCk7DQotc3RhdGljIHZvaWQgQ1MwX1BPUlRJbml0KHZvaWQpOw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFBlcmlwaGVyYWxCYXNpY0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiAgICAgICAgICAgICAgOg0KLSogICAgICAgICAgICAgIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBQZXJpcGhlcmFsX0Jhc2ljSW5pdCh2b2lkKQ0KLXsNCi0gICAgLyogPT09PSBDbG9jayBQdWxzZSBHZW5lcmF0b3IgKENQRykgc2V0dGluZyA9PT09Ki8NCi0gICAgQ1BHX0luaXQoKTsNCi0NCi0gICAgLyogPT09PSBQb3J0IHNldHRpbmcgPT09PSAqLw0KLSAgICBDUzBfUE9SVEluaXQoKTsNCi0NCi0gICAgLyogPT09PSBCdXMgU3RhdGUgQ29udHJvbGxlciAoQlNDKSBzZXR0aW5nID09PT0gKi8NCi0gICAgUl9CU0NfSW5pdCgodWludDhfdCkoQlNDX0FSRUFfQ1MwIHwgQlNDX0FSRUFfQ1MxKSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IENQR19Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9pZCBDUEdfSW5pdCh2b2lkKQ0KLXsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgZHVtbXlfYnVmXzMyYjsNCi0gICAgdm9sYXRpbGUgdWludDhfdCAgZHVtbXlfYnVmXzhiOw0KLQ0KLSAgICAqKHZvbGF0aWxlIHVpbnQzMl90ICopKDB4M2ZmZmZmODApID0gMHgwMDAwMDAwMTsNCi0gICAgZHVtbXlfYnVmXzMyYiA9ICoodm9sYXRpbGUgdWludDMyX3QgKikoMHgzZmZmZmY4MCk7DQotDQotICAgIC8qID09PT0gQ1BHIFNldHRpbmdzID09PT0gKi8NCi0gICAgQ1BHLkZSUUNSLldPUkQgID0gMHgxMDM1dTsgICAgICAvKiBQTEwoeDMwKSwgSTpHOkI6UDE6UDAgPSAzMDoyMDoxMDo1OjUvMiAqLw0KLSAgICBDUEcuRlJRQ1IyLldPUkQgPSAweDAwMDF1OyAgICAgIC8qIENLSU86T3V0cHV0IGF0IHRpbWUgdXN1YWxseSwgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT3V0cHV0IHdoZW4gYnVzIHJpZ2h0IGlzIG9wZW5lZCwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgYXQgc3RhbmRieSJMIiAgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsb2NraW4gPSAxMy4zM01IeiwgQ0tJTyA9IDY2LjY3TUh6LCAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSSAgQ2xvY2sgPSA0MDAuMDBNSHosICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHICBDbG9jayA9IDI2Ni42N01IeiwgICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEIgIENsb2NrID0gMTMzLjMzTUh6LCAgICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUDEgQ2xvY2sgPSAgNjYuNjdNSHosICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQMCBDbG9jayA9ICAzMy4zM01IeiAgICAgICAgICAgICAgICAgICAqLw0KLQ0KLSAgICAvKiAtLS0tICBXcml0aW5nIHRvIE9uLUNoaXAgRGF0YS1SZXRlbnRpb24gUkFNIGlzIGVuYWJsZWQuIC0tLS0gKi8NCi0gICAgQ1BHLlNZU0NSMy5CWVRFID0gMHgwRnU7DQotICAgIGR1bW15X2J1Zl84YiA9IENQRy5TWVNDUjMuQllURTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogQ1MwX1BPUlRJbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9pZCBDUzBfUE9SVEluaXQodm9pZCkNCi17DQotICAgIC8qID09PT0gQlNDIHNldHRpbmdzID09PT0gKi8NCi0NCi0gICAgLyogLS0tLSBQOV8xIDogQTI1IC0tLS0gKi8NCi0gICAgUE9SVDkuUE1Dbi5CSVQuUE1DbjEgICAgID0gMTsNCi0gICAgUE9SVDkuUEZDQUVuLkJJVC5QRkNBRW4xID0gMDsNCi0gICAgUE9SVDkuUEZDRW4uQklULlBGQ0VuMSAgID0gMDsNCi0gICAgUE9SVDkuUEZDbi5CSVQuUEZDbjEgICAgID0gMDsNCi0gICAgUE9SVDkuUElQQ24uQklULlBJUENuMSAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQOV8wIDogQTI0IC0tLS0gKi8NCi0gICAgUE9SVDkuUE1Dbi5CSVQuUE1DbjAgICAgID0gMTsNCi0gICAgUE9SVDkuUEZDQUVuLkJJVC5QRkNBRW4wID0gMDsNCi0gICAgUE9SVDkuUEZDRW4uQklULlBGQ0VuMCAgID0gMDsNCi0gICAgUE9SVDkuUEZDbi5CSVQuUEZDbjAgICAgID0gMDsNCi0gICAgUE9SVDkuUElQQ24uQklULlBJUENuMCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQOF8xNSA6IEEyMyAtLS0tICovDQotICAgIFBPUlQ4LlBNQ24uQklULlBNQ24xNSAgICAgPSAxOw0KLSAgICBQT1JUOC5QRkNBRW4uQklULlBGQ0FFbjE1ID0gMDsNCi0gICAgUE9SVDguUEZDRW4uQklULlBGQ0VuMTUgICA9IDA7DQotICAgIFBPUlQ4LlBGQ24uQklULlBGQ24xNSAgICAgPSAwOw0KLSAgICBQT1JUOC5QSVBDbi5CSVQuUElQQ24xNSAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQOF8xNCA6IEEyMiAtLS0tICovDQotICAgIFBPUlQ4LlBNQ24uQklULlBNQ24xNCAgICAgPSAxOw0KLSAgICBQT1JUOC5QRkNBRW4uQklULlBGQ0FFbjE0ID0gMDsNCi0gICAgUE9SVDguUEZDRW4uQklULlBGQ0VuMTQgICA9IDA7DQotICAgIFBPUlQ4LlBGQ24uQklULlBGQ24xNCAgICAgPSAwOw0KLSAgICBQT1JUOC5QSVBDbi5CSVQuUElQQ24xNCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQOF8xMyA6IEEyMSAtLS0tICovDQotICAgIFBPUlQ4LlBNQ24uQklULlBNQ24xMyAgICAgPSAxOw0KLSAgICBQT1JUOC5QRkNBRW4uQklULlBGQ0FFbjEzID0gMDsNCi0gICAgUE9SVDguUEZDRW4uQklULlBGQ0VuMTMgICA9IDA7DQotICAgIFBPUlQ4LlBGQ24uQklULlBGQ24xMyAgICAgPSAwOw0KLSAgICBQT1JUOC5QSVBDbi5CSVQuUElQQ24xMyAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN182IDogV0UwIyAvIERRTUxMIyAtLS0tICovDQotICAgIFBPUlQ3LlBNQ24uQklULlBNQ242ICAgICA9IDE7DQotICAgIFBPUlQ3LlBGQ0FFbi5CSVQuUEZDQUVuNiA9IDA7DQotICAgIFBPUlQ3LlBGQ0VuLkJJVC5QRkNFbjYgICA9IDA7DQotICAgIFBPUlQ3LlBGQ24uQklULlBGQ242ICAgICA9IDA7DQotICAgIFBPUlQ3LlBJUENuLkJJVC5QSVBDbjYgICA9IDE7DQotDQotICAgIC8qIC0tLS0gUDdfOCA6IFJEIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjggICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW44ID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuOCAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjggICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuOCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN18wIDogQ1MwIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjAgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW4wID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuMCAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjAgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuMCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQM183IDogQ1MxIC0tLS0gKi8NCi0gICAgUE9SVDMuUE1Dbi5CSVQuUE1DbjcgICAgID0gMTsNCi0gICAgUE9SVDMuUEZDQUVuLkJJVC5QRkNBRW43ID0gMTsNCi0gICAgUE9SVDMuUEZDRW4uQklULlBGQ0VuNyAgID0gMTsNCi0gICAgUE9SVDMuUEZDbi5CSVQuUEZDbjcgICAgID0gMDsNCi0gICAgUE9SVDMuUElQQ24uQklULlBJUENuNyAgID0gMTsNCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BvcnRfaW5pdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy9wb3J0X2luaXQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA1NGVmYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3BvcnRfaW5pdC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHBvcnRfaW5pdC5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDoNCi0qIEgvVyBQbGF0Zm9ybSA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIEluaXRpYWxpemUgcGVyaXBoZXJhbCBmdW5jdGlvbiBzYW1wbGUNCi0qIE9wZXJhdGlvbiAgICA6DQotKiBMaW1pdGF0aW9ucyAgOg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X2NvbW1vbi5oIiAgICAgICAvKiBDb21tb24gRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJwb3J0X2luaXQuaCINCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfUkVTRVQiDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUE9SVF9Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogICAgICAgICAgICAgIDoNCi0qICAgICAgICAgICAgICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgUE9SVF9Jbml0KHZvaWQpDQotew0KLSAgICAvKiA9PT09IEJTQyBzZXR0aW5ncyA9PT09ICovDQotDQotICAgIC8qIC0tLS0gUDdfMiA6IFJBUyMgLS0tLSAqLw0KLSAgICBQT1JUNy5QTUNuLkJJVC5QTUNuMiAgICAgPSAxOw0KLSAgICBQT1JUNy5QRkNBRW4uQklULlBGQ0FFbjIgPSAwOw0KLSAgICBQT1JUNy5QRkNFbi5CSVQuUEZDRW4yICAgPSAwOw0KLSAgICBQT1JUNy5QRkNuLkJJVC5QRkNuMiAgICAgPSAwOw0KLSAgICBQT1JUNy5QSVBDbi5CSVQuUElQQ24yICAgPSAxOw0KLQ0KLSAgICAvKiAtLS0tIFA3XzMgOiBDQVMjIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjMgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW4zID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuMyAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjMgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuMyAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN180IDogQ0tFIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjQgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW40ID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuNCAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjQgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuNCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN181IDogUkQvV1IjIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjUgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW41ID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuNSAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjUgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuNSAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN183IDogRFFNTFUjIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjcgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW43ID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuNyAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjcgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuNyAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQNV84IDogQ1MyIC0tLS0gKi8NCi0gICAgUE9SVDUuUE1Dbi5CSVQuUE1DbjggICAgID0gMTsNCi0gICAgUE9SVDUuUEZDQUVuLkJJVC5QRkNBRW44ID0gMTsNCi0gICAgUE9SVDUuUEZDRW4uQklULlBGQ0VuOCAgID0gMDsNCi0gICAgUE9SVDUuUEZDbi5CSVQuUEZDbjggICAgID0gMTsNCi0gICAgUE9SVDUuUElQQ24uQklULlBJUENuOCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQN18xIDogQ1MzIC0tLS0gKi8NCi0gICAgUE9SVDcuUE1Dbi5CSVQuUE1DbjEgICAgID0gMTsNCi0gICAgUE9SVDcuUEZDQUVuLkJJVC5QRkNBRW4xID0gMDsNCi0gICAgUE9SVDcuUEZDRW4uQklULlBGQ0VuMSAgID0gMDsNCi0gICAgUE9SVDcuUEZDbi5CSVQuUEZDbjEgICAgID0gMDsNCi0gICAgUE9SVDcuUElQQ24uQklULlBJUENuMSAgID0gMTsNCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3Npb2NoYXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3Mvc2lvY2hhci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTZmZmU1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3Mvc2lvY2hhci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHNpb2NoYXIuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gU2VyaWFsIEkvTyBjaGFyYWN0ZXIgUi9XIChTQ0lGIDItY2ggcHJvY2VzcykNCi0qIE9wZXJhdGlvbiAgICA6IA0KLSogTGltaXRhdGlvbnMgIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgICAgIC8qIERldmljZSBEcml2ZXIgY29tbW9uIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfc2NpZl91YXJ0LmgiICAgICAgIC8qIFVBUlQgRHJpdmVyIGhlYWRlciAqLw0KLSNpbmNsdWRlICJzaW9fY2hhci5oIg0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IElvSW5pdFNjaWYyDQotKiBEZXNjcmlwdGlvbiAgOiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIFNDSUYgY2hhbm5lbCAyIGFzIFVBUlQgbW9kZS4NCi0qICAgICAgICAgICAgICA6IFRoZSB0cmFuc21pdCBhbmQgdGhlIHJlY2VpdmUgb2YgU0NJRiBjaGFubmVsIDIgYXJlIGVuYWJsZWQuDQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgSW9Jbml0U2NpZjIodm9pZCkNCi17DQotICAgIC8qIFAxPTY2LjY3TUh6IENLUz0wIFNDQlJSPTE3IEJpdCByYXRlIGVycm9yPTAuNDYlID0+IEJhdWQgcmF0ZT0xMTUyMDBicHMgKi8NCi0gICAgUl9TQ0lGX1VBUlRfSW5pdChERVZEUlZfQ0hfMiwgU0NJRl9VQVJUX01PREVfUlcsIDAsIDE3KTsNCi0NCi0gICAgLyogPT09IFBPUlQgPT09PSAqLw0KLSAgICAvKiAtLS0tIFAzXzAgOiBUeEQyIC0tLS0gKi8NCi0gICAgUE9SVDMuUE1Dbi5CSVQuUE1DbjAgICAgID0gMTsNCi0gICAgUE9SVDMuUEZDQUVuLkJJVC5QRkNBRW4wID0gMTsNCi0gICAgUE9SVDMuUEZDRW4uQklULlBGQ0VuMCAgID0gMDsNCi0gICAgUE9SVDMuUEZDbi5CSVQuUEZDbjAgICAgID0gMTsNCi0gICAgUE9SVDMuUElQQ24uQklULlBJUENuMCAgID0gMTsNCi0NCi0gICAgLyogLS0tLSBQM18yIDogUnhEMiAtLS0tICovDQotICAgIFBPUlQzLlBNQ24uQklULlBNQ24yICAgICA9IDE7DQotICAgIFBPUlQzLlBGQ0FFbi5CSVQuUEZDQUVuMiA9IDA7DQotICAgIFBPUlQzLlBGQ0VuLkJJVC5QRkNFbjIgICA9IDE7DQotICAgIFBPUlQzLlBGQ24uQklULlBGQ24yICAgICA9IDE7DQotICAgIFBPUlQzLlBJUENuLkJJVC5QSVBDbjIgICA9IDE7DQotDQotICAgIC8qIC0tLS0gU2VyaWFsIGNvbnRyb2wgcmVnaXN0ZXIgKFNDU0NSaSkgc2V0dGluZyAtLS0tICovDQotICAgIFNDSUYyLlNDU0NSLldPUkQgPSAweDAwMzA7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDSUYyIHRyYW5zbWl0dGluZyBhbmQgcmVjZWl2aW5nIG9wZXJhdGlvbnMgYXJlIGVuYWJsZWQgKi8NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogSW9HZXRjaGFyDQotKiBEZXNjcmlwdGlvbiAgOiBPbmUgY2hhcmFjdGVyIGlzIHJlY2VpdmVkIGZyb20gU0NJRjIsIGFuZCBpdCdzIGRhdGEgaXMgcmV0dXJuZWQuDQotKiAgICAgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIGtlZXBzIHdhaXRpbmcgdW50aWwgaXQgY2FuIG9idGFpbiB0aGUgcmVjZWl2aW5nIGRhdGEuDQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBDaGFyYWN0ZXIgdG8gcmVjZWl2ZSAoQnl0ZSkuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWNoYXJfdCBJb0dldGNoYXIodm9pZCkNCi17DQotICAgIGNoYXJfdCBkYXRhOw0KLQ0KLSAgICAvKiBDb25maXJtaW5nIHJlY2VpdmUgZXJyb3IoRVIsRFIsQlJLKSAqLw0KLSAgICBpZiAoU0NJRjIuU0NGU1IuV09SRCAmIDB4MDlDKQ0KLSAgICB7DQotICAgICAgICAvKiBEZXRlY3QgcmVjZWl2ZSBlcnJvciAqLw0KLSAgICAgICAgU0NJRjIuU0NTQ1IuQklULlJFICAgID0gMDsgICAgICAvKiBEaXNhYmxlIHJlY2VwdGlvbiAgICAgICAgICAgICAqLw0KLSAgICAgICAgU0NJRjIuU0NGQ1IuQklULlJGUlNUID0gMTsgICAgICAvKiBSZXNldCByZWNlaXZpbmcgRklGTyAgICAgICAgICAqLw0KLSAgICAgICAgU0NJRjIuU0NGQ1IuQklULlJGUlNUID0gMDsgICAgICAvKiBDbGVhcmluZyBGSUZPIHJlY2VwdGlvbiByZXNldCAqLw0KLSAgICAgICAgU0NJRjIuU0NGU1IuV09SRCAgICAgJj0gfjB4OUM7ICAvKiBFcnJvciBiaXQgY2xlYXIgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgU0NJRjIuU0NTQ1IuQklULlJFICAgID0gMTsgICAgICAvKiBFbmFibGUgcmVjZXB0aW9uICAgICAgICAgICAgICAqLw0KLSAgICAgICAgcmV0dXJuIDA7DQotICAgIH0NCi0NCi0gICAgLyogSXMgdGhlcmUgcmVjZWl2ZSBGSUZPIGRhdGE/ICovDQotICAgIHdoaWxlICgwID09IFNDSUYyLlNDRlNSLkJJVC5SREYpDQotICAgIHsNCi0gICAgICAgIC8qIFdBSVQgKi8NCi0gICAgfQ0KLQ0KLSAgICAvKiBSZWFkIHJlY2VpdmUgZGF0YSAqLw0KLSAgICBkYXRhID0gU0NJRjIuU0NGUkRSLkJZVEU7DQotICAgIC8qIENsZWFyIFJERiAqLw0KLSAgICBTQ0lGMi5TQ0ZTUi5CSVQuUkRGID0gMDsNCi0NCi0gICAgLyogSXMgaXQgb3ZlcmZsb3dlZD8gKi8NCi0gICAgaWYgKDEgPT0gU0NJRjIuU0NMU1IuQklULk9SRVIpDQotICAgIHsNCi0gICAgICAgIFNDSUYyLlNDTFNSLkJJVC5PUkVSID0gMDsgICAgICAgLyogT1JFUiBjbGVhciAqLw0KLSAgICB9DQotDQotICAgIHJldHVybiBkYXRhOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBJb1B1dGNoYXINCi0qIERlc2NyaXB0aW9uICA6IENoYXJhY3RlciAiYnVmZmVyIiBpcyBvdXRwdXQgdG8gU0NJRjIuDQotKiAgICAgICAgICAgICAgOiBUaGlzIGZ1bmN0aW9uIGtlZXBzIHdhaXRpbmcgdW50aWwgaXQgYmVjb21lcyB0aGUgdHJhbnNtaXNzaW9uDQotKiAgICAgICAgICAgICAgOiBlbmFibGVkIHN0YXRlLg0KLSogQXJndW1lbnRzICAgIDogY2hhcl90IGJ1ZmZlciA6IGNoYXJhY3RlciB0byBvdXRwdXQNCi0qIFJldHVybiBWYWx1ZSA6IE5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBJb1B1dGNoYXIoY2hhcl90IGJ1ZmZlcikNCi17DQotICAgIC8qIENoZWNrIGlmIGl0IGlzIHBvc3NpYmxlIHRvIHRyYW5zbWl0IChUREZFIGZsYWcpICovDQotICAgIHdoaWxlICgwID09IFNDSUYyLlNDRlNSLkJJVC5UREZFKQ0KLSAgICB7DQotICAgICAgICAvKiBXYWl0ICovDQotICAgIH0NCi0NCi0gICAgLyogV3JpdGUgdGhlIHJlY2VpdmluZyBkYXRhIGluIFREUiAqLw0KLSAgICBTQ0lGMi5TQ0ZURFIuQllURSA9IGJ1ZmZlcjsNCi0NCi0gICAgLyogQ2xlYXIgVERSRSBhbmQgVEVORCBmbGFnICovDQotICAgIFNDSUYyLlNDRlNSLldPUkQgJj0gfjB4MDA2MDsNCi19DQotDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3N0Yl9pbml0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2JvYXJkX3NldHRpbmdzL3N0Yl9pbml0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkM2I2ZmEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy9zdGJfaW5pdC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTE5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHN0Yl9pbml0LmMNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOg0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSW5pdGlhbGl6ZSBwZXJpcGhlcmFsIGZ1bmN0aW9uIHNhbXBsZQ0KLSogT3BlcmF0aW9uICAgIDoNCi0qIExpbWl0YXRpb25zICA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfY29tbW9uLmgiICAgICAgIC8qIENvbW1vbiBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgInN0Yl9pbml0LmgiDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyogRG8gbm90IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBwcmFnbWFzIHdoZW4gY29tcGlsaW5nIHdpdGggSUFSLiAqLw0KLSNpZm5kZWYgX19JQ0NBUk1fXw0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIGNvZGUgICA9ICJDT0RFX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJvZGF0YSA9ICJDT05TVF9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByd2RhdGEgPSAiREFUQV9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiB6aWRhdGEgPSAiQlNTX1JFU0VUIg0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFN0YkluaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiAgICAgICAgICAgICAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFNUQl9Jbml0KHZvaWQpDQotew0KLSAgICB2b2xhdGlsZSB1aW50OF90IGR1bW15X2J1ZjsNCi0NCi0gICAgLyogLS0tLSBUaGUgY2xvY2sgb2YgYWxsIG1vZHVsZXMgaXMgcGVybWl0dGVkLiAtLS0tICovDQotICAgIENQRy5TVEJDUjIuQllURSAgPSAweDZBdTsgICAgICAgLyogUG9ydCBsZXZlbCBpcyBrZWVwIGluIHN0YW5kYnkgbW9kZSwgWzFdLCBbMV0sIFswXSwgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWzFdLCBbMF0sIFsxXSwgQ29yZVNpZ2h0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjIuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjMuQllURSAgPSAweDAwdTsgICAgICAgLyogSUVCdXMsIElyREEsIExJTjAsIExJTjEsIE1UVTIsIFJTQ0FOMiwgWzBdLCBQV00gICAgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjMuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjQuQllURSAgPSAweDAwdTsgICAgICAgLyogU0NJRjAsIFNDSUYxLCBTQ0lGMiwgU0NJRjMsIFNDSUY0LCBTQ0lGNSwgU0NJRjYsIFNDSUY3ICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjQuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjUuQllURSAgPSAweDAwdTsgICAgICAgLyogU0NJTTAsIFNDSU0xLCBTREcwLCBTREcxLCBTREcyLCBTREczLCBPU1RNMCwgT1NUTTEgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjUuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjYuQllURSAgPSAweDAwdTsgICAgICAgLyogQS9ELCBDRVUsIERJU0NPTTAsIERJU0NPTTEsIERSQzAsIERSQzEsIEpDVSwgUlRDbG9jayAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjYuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjcuQllURSAgPSAweDI0dTsgICAgICAgLyogRFZERUMwLCBEVkRFQzEsIFsxXSwgRVRIRVIsIEZMQ1RMLCBbMV0sIFVTQjAsIFVTQjEgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjcuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjguQllURSAgPSAweDA1dTsgICAgICAgLyogSU1SLUxTMjAsIElNUi1MUzIxLCBJTVItTFNELCBNTUNJRiwgTU9TVDUwLCBbMV0sIFNDVVgsIFsxXSAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjguQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjkuQllURSAgPSAweDAwdTsgICAgICAgLyogSTJDMCwgSTJDMSwgSTJDMiwgSTJDMywgU1BJQlNDMCwgU1BJQlNDMSwgVkRDNTAsIFZEQzUxICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjkuQllURTsgICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjEwLkJZVEUgPSAweDAwdTsgICAgICAgLyogUlNQSTAsIFJTUEkxLCBSU1BJMiwgUlNQSTMsIFJTUEk0LCBDRC1ST01ERUMsIFJTUERJRiwgUkdQVkcgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjEwLkJZVEU7ICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjExLkJZVEUgPSAweEMwdTsgICAgICAgLyogWzFdLCBbMV0sIFNTSUYwLCBTU0lGMSwgU1NJRjIsIFNTSUYzLCBTU0lGNCwgU1NJRjUgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjExLkJZVEU7ICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgIENQRy5TVEJDUjEyLkJZVEUgPSAweEYwdTsgICAgICAgLyogWzFdLCBbMV0sIFsxXSwgWzFdLCBTREhJMDAsIFNESEkwMSwgU0RISTEwLCBTREhJMTEgICAgICAgICAgICovDQotICAgIGR1bW15X2J1ZiA9IENQRy5TVEJDUjEyLkJZVEU7ICAgLyogKER1bW15IHJlYWQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotfQ0KLQ0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy90dGJfaW5pdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9ib2FyZF9zZXR0aW5ncy90dGJfaW5pdC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmI4ODU0Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvYm9hcmRfc2V0dGluZ3MvdHRiX2luaXQucworKysgL2Rldi9udWxsCkBAIC0xLDIyMCArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IHR0Yl9pbml0LnMNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24NCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotOyogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi07KiAgICAgICAgICAgICAgIDogDQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gVFRCIGluaXRpYWxpemUNCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotOyogICAgICAgICA6IDIzLjA1LjIwMTIgMC4wMQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLTsgLS0tLSBQYXJhbWV0ZXIgc2V0dGluZyB0byBsZXZlbDEgZGVzY3JpcHRvciAoYml0cyAxOTowKSAtLS0tDQotOyBzZXR0aW5nIGZvciBTdHJvbmdseS1vcmRlcmVkIG1lbW9yeQ0KLVRUQl9QQVJBX1NUUkdMWQkJCQlFUVUJCTJfMDAwMDAwMDAwMDAwMDAwMDAwMDAxMTAxMTExMDAwMTANCi07IHNldHRpbmcgZm9yIE91dGVyIGFuZCBpbm5lciBub3QgY2FjaGUgbm9ybWFsIG1lbW9yeQ0KLVRUQl9QQVJBX05PUk1BTF9OT1RfQ0FDSEUJRVFVCQkyXzAwMDAwMDAwMDAwMDAwMDAwMDAxMTEwMTExMTAwMDEwDQotOyBzZXR0aW5nIGZvciBPdXRlciBhbmQgaW5uZXIgd3JpdGUgYmFjaywgd3JpdGUgYWxsb2NhdGUgbm9ybWFsIG1lbW9yeSAoQ2FjaGVhYmxlKQ0KLVRUQl9QQVJBX05PUk1BTF9DQUNIRQkJRVFVCQkyXzAwMDAwMDAwMDAwMDAwMDAwMDAxMTEwMTExMTAxMTEwDQotOyBzZXR0aW5nIGZvciBPdXRlciBhbmQgaW5uZXIgd3JpdGUgYmFjaywgd3JpdGUgYWxsb2NhdGUgbm9ybWFsIG1lbW9yeSAoQ2FjaGVhYmxlKQ0KLTtUVEJfUEFSQV9OT1JNQUxfQ0FDSEUJCUVRVQkJMl8wMDAwMDAwMDAwMDAwMDAwMDEwMTExMDExMTEwMDExMA0KLQ0KLTsgLS0tLSBNZW1vcnkgYXJlYSBzaXplIChNQikgLS0tLQ0KLU1fU0laRV9OT1IJCUVRVQkJMTI4CQkJCTsgW0FyZWEwMF0gQ1MwLCBDUzEgYXJlYSAoZm9yIE5PUiBmbGFzaCkNCi1NX1NJWkVfU0RSQU0JRVFVCQkxMjgJCQkJOyBbQXJlYTAxXSBDUzIsIENTMyBhcmVhIChmb3IgU0RSQU0pDQotTV9TSVpFX0NTNDUJCUVRVQkJMTI4CQkJCTsgW0FyZWEwMl0gQ1M0LCBDUzUgYXJlYQ0KLU1fU0laRV9TUEkJCUVRVQkJMTI4CQkJCTsgW0FyZWEwM10gU1BJLCBTUDIgYXJlYSAoZm9yIFNlcmlhbCBmbGFzaCkNCi1NX1NJWkVfUkFNCQlFUVUJCTEwCQkJCTsgW0FyZWEwNF0gSW50ZXJuYWwgUkFNDQotTV9TSVpFX0lPXzEJCUVRVQkJNTAyCQkJCTsgW0FyZWEwNV0gSS9PIGFyZWEgMQ0KLU1fU0laRV9OT1JfTQlFUVUJCTEyOAkJCQk7IFtBcmVhMDZdIENTMCwgQ1MxIGFyZWEgKGZvciBOT1IgZmxhc2gpIChtaXJyb3IpDQotTV9TSVpFX1NEUkFNX00JRVFVCQkxMjgJCQkJOyBbQXJlYTA3XSBDUzIsIENTMyBhcmVhIChmb3IgU0RSQU0pIChtaXJyb3IpDQotTV9TSVpFX0NTNDVfTQlFUVUJCTEyOAkJCQk7IFtBcmVhMDhdIENTNCwgQ1M1IGFyZWEgKG1pcnJvcikNCi1NX1NJWkVfU1BJX00JRVFVCQkxMjgJCQkJOyBbQXJlYTA5XSBTUEksIFNQMiBhcmVhIChmb3IgU2VyaWFsIGZsYXNoKSAobWlycm9yKQ0KLU1fU0laRV9SQU1fTQlFUVUJCTEwCQkJCTsgW0FyZWExMF0gSW50ZXJuYWwgUkFNIChtaXJyb3IpDQotTV9TSVpFX0lPXzIJCUVRVQkJMjU1MAkJCTsgW0FyZWExMV0gSS9PIGFyZWEgMg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFRoaXMgY29kZSBwcm92aWRlcyBiYXNpYyBnbG9iYWwgZW5hYmxlIGZvciBDb3J0ZXgtQTkgY2FjaGUuDQotOyBJdCBhbHNvIGVuYWJsZXMgYnJhbmNoIHByZWRpY3Rpb24NCi07IFRoaXMgY29kZSBtdXN0IGJlIHJ1biBmcm9tIGEgcHJpdmlsZWdlZCBtb2RlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlBUkVBICAgSU5JVF9UVEIsIENPREUsIFJFQURPTkxZDQotDQotCUlNUE9SVCB8fEltYWdlJCRUVEIkJFpJJCRCYXNlfHwJCTs7OyBGcm9tIHNjYXR0ZXIgZmlsZQ0KLQkNCi0JRVhQT1JUCWluaXRfVFRCDQotDQotaW5pdF9UVEIJRlVOQ1RJT04NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgQ29ydGV4LUE5IE1NVSBDb25maWd1cmF0aW9uDQotOyBTZXQgdHJhbnNsYXRpb24gdGFibGUgYmFzZQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCTs7OyBDb3J0ZXgtQTkgc3VwcG9ydHMgdHdvIHRyYW5zbGF0aW9uIHRhYmxlcw0KLQk7OzsgQ29uZmlndXJlIHRyYW5zbGF0aW9uIHRhYmxlIGJhc2UgKFRUQikgY29udHJvbCByZWdpc3RlciBjcDE1LGMyDQotCTs7OyB0byBhIHZhbHVlIG9mIGFsbCB6ZXJvcywgaW5kaWNhdGVzIHdlIGFyZSB1c2luZyBUVEIgcmVnaXN0ZXIgMC4NCi0JTU9WICByMCwjMHgwDQotCU1DUiAgcDE1LCAwLCByMCwgYzIsIGMwLCAyCQk7OzsgVFRCQ1INCi0NCi0JOzs7IHdyaXRlIHRoZSBhZGRyZXNzIG9mIG91ciBwYWdlIHRhYmxlIGJhc2UgdG8gVFRCIHJlZ2lzdGVyIDANCi0JTERSICByMCw9fHxJbWFnZSQkVFRCJCRaSSQkQmFzZXx8DQotCU1PViAgcjEsICMweDA4CQkJCQk7OzsgUkdOPWIwMSAgKG91dGVyIGNhY2hlYWJsZSB3cml0ZS1iYWNrIGNhY2hlZCwgd3JpdGUgYWxsb2NhdGUpDQotCQkJCQkJCQkJOzs7IFM9MCAgICAgICh0cmFuc2xhdGlvbiB0YWJsZSB3YWxrIHRvIG5vbi1zaGFyZWQgbWVtb3J5KQ0KLQlPUlIgIHIxLHIxLCMweDQwCQkJCTs7OyBJUkdOPWIwMSAoaW5uZXIgY2FjaGVhYmlsaXR5IGZvciB0aGUgdHJhbnNsYXRpb24gdGFibGUgd2FsayBpcyBXcml0ZS1iYWNrIFdyaXRlLWFsbG9jYXRlKQ0KLQlPUlIgIHIwLHIwLHIxDQotCU1DUiAgcDE1LCAwLCByMCwgYzIsIGMwLCAwCQk7OzsgVFRCUjANCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgUEFHRSBUQUJMRSBnZW5lcmF0aW9uIA0KLTsgR2VuZXJhdGUgdGhlIHBhZ2UgdGFibGVzDQotOyBCdWlsZCBhIGZsYXQgdHJhbnNsYXRpb24gdGFibGUgZm9yIHRoZSB3aG9sZSBhZGRyZXNzIHNwYWNlLg0KLTsgaWU6IENyZWF0ZSA0MDk2IDFNQiBzZWN0aW9ucyBmcm9tIDB4MDAweHh4eHggdG8gMHhGRkZ4eHh4eA0KLTsgMzEgICAgICAgICAgICAgICAgIDIwIDE5ICAxOCAgMTcgIDE2IDE1ICAxNCAgIDEyIDExIDEwICA5ICA4ICAgICA1ICAgNCAgICAzIDIgICAxIDANCi07IHxzZWN0aW9uIGJhc2UgYWRkcmVzc3wgMCAgMCAgfG5HfCBTIHxBUDJ8ICBURVggIHwgIEFQIHwgUCB8IERvbWFpbiB8IFhOIHwgQyBCIHwgMSAwfA0KLTsNCi07IEJpdHNbMzE6MjBdICAgLSBUb3AgMTIgYml0cyBvZiBWQSBpcyBwb2ludGVyIGludG8gdGFibGUNCi07IG5HWzE3XT0wICAgICAgLSBOb24gZ2xvYmFsLCBlbmFibGVzIG1hdGNoaW5nIGFnYWluc3QgQVNJRCBpbiB0aGUgVExCIHdoZW4gc2V0Lg0KLTsgU1sxNl09MCAgICAgICAtIEluZGljYXRlcyBub3JtYWwgbWVtb3J5IGlzIHNoYXJlZCB3aGVuIHNldC4NCi07IEFQMlsxNV09MCAgDQotOyBBUFsxMToxMF09MTEgIC0gQ29uZmlndXJlIGZvciBmdWxsIHJlYWQvd3JpdGUgYWNjZXNzIGluIGFsbCBtb2Rlcw0KLTsgVEVYWzE0OjEyXT0wMDANCi07IENCWzM6Ml09IDAwICAgLSBTZXQgYXR0cmlidXRlcyB0byBTdHJvbmdseS1vcmRlcmVkIG1lbW9yeS4NCi07ICAgICAgICAgICAgICAgICAoZXhjZXB0IGZvciB0aGUgZGVzY3JpcHRvciB3aGVyZSBjb2RlIHNlZ21lbnQgaXMgYmFzZWQsIHNlZSBiZWxvdykNCi07IElNUFBbOV09MCAgICAgLSBJZ25vcmVkDQotOyBEb21haW5bNTo4XT0xMTExICAgLSBTZXQgYWxsIHBhZ2VzIHRvIHVzZSBkb21haW4gMTUNCi07IFhOWzRdPTAgICAgICAgLSBFeGVjdXRlIG5ldmVyIGRpc2FibGVkDQotOyBCaXRzWzE6MF09MTAgIC0gSW5kaWNhdGUgZW50cnkgaXMgYSAxTUIgc2VjdGlvbg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCUxEUiAgcjAsPXx8SW1hZ2UkJFRUQiQkWkkkJEJhc2V8fA0KLQlMRFIgIHIxLD0weEZGRg0KLQlMRFIgIHIyLD0xMQ0KLQlMRFIgIHIzLD0wDQotCUxEUgkgcjQsPTANCi0JTERSICByNSw9MA0KLQ0KLQk7OzsgcjAgY29udGFpbnMgdGhlIGFkZHJlc3Mgb2YgdGhlIHRyYW5zbGF0aW9uIHRhYmxlIGJhc2UNCi0JOzs7IHIxIGlzIGxvb3AgY291bnRlcg0KLQk7OzsgcjIgaXMgdGFyZ2V0IGFyZWEgY291bnRlciAoSW5pdGlhbGl6ZSB2YWx1ZSA9IExhc3QgYXJlYSBOby4pDQotCTs7OyByMyBpcyBsb29wIGNvdW50ZXIgYnkgYXJlYQ0KLQ0KLQk7OzsgdXNlIGxvb3AgY291bnRlciB0byBjcmVhdGUgNDA5NiBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMuDQotCTs7OyB0aGlzIHdyaXRlcyBmcm9tIGFkZHJlc3MgJ0ltYWdlJCRUVEIkJFpJJCRCYXNlJyArIA0KLQk7Ozsgb2Zmc2V0IDB4M0ZGQyBkb3duIHRvIG9mZnNldCAweDAgaW4gd29yZCBzdGVwcyAoNCBieXRlcykNCi0NCi1zZXRfbWVtX2FjY3Nlc3MNCi0JQ01QICByMiwgIzExDQotCUJFUSAgc2V0dGluZ19hcmVhMTENCi0JQ01QICByMiwgIzEwDQotCUJFUSAgc2V0dGluZ19hcmVhMTANCi0JQ01QICByMiwgIzkNCi0JQkVRICBzZXR0aW5nX2FyZWE5DQotCUNNUCAgcjIsICM4DQotCUJFUSAgc2V0dGluZ19hcmVhOA0KLQlDTVAgIHIyLCAjNw0KLQlCRVEgIHNldHRpbmdfYXJlYTcNCi0JQ01QICByMiwgIzYNCi0JQkVRICBzZXR0aW5nX2FyZWE2DQotCUNNUCAgcjIsICM1DQotCUJFUSAgc2V0dGluZ19hcmVhNQ0KLQlDTVAgIHIyLCAjNA0KLQlCRVEgIHNldHRpbmdfYXJlYTQNCi0JQ01QICByMiwgIzMNCi0JQkVRICBzZXR0aW5nX2FyZWEzDQotCUNNUCAgcjIsICMyDQotCUJFUSAgc2V0dGluZ19hcmVhMg0KLQlDTVAgIHIyLCAjMQ0KLQlCRVEgIHNldHRpbmdfYXJlYTENCi0JQ01QICByMiwgIzANCi0JQkVRICBzZXR0aW5nX2FyZWEwDQotc2V0dGluZ19hcmVhMTEJCQkJCQk7OzsgW2FyZWExMV0gSS9PIGFyZWEgMg0KLQlMRFIgIHIzLCA9TV9TSVpFX0lPXzINCi0JTERSICByNCwgPVRUQl9QQVJBX1NUUkdMWQkJOzs7IAlTdHJvbmdseS1vcmRlcmVkDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhMTAJCQkJCQk7OzsgW2FyZWExMF0gSW50ZXJuYWwgUkFNIChtaXJyb3IpDQotCUxEUiAgcjMsID1NX1NJWkVfUkFNX00NCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9OT1RfQ0FDSEUJOzs7IE5vcm1hbCAobm90IGNhY2hlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLXNldHRpbmdfYXJlYTkJCQkJCQk7OzsgW2FyZWEwOV0gU1BJLCBTUDIgYXJlYSAoZm9yIFNlcmlhbCBmbGFzaCkgKG1pcnJvcikNCi0JTERSICByMywgPU1fU0laRV9TUElfTQ0KLQlMRFIgIHI0LCA9VFRCX1BBUkFfTk9STUFMX05PVF9DQUNIRQk7OzsgTm9ybWFsIChub3QgY2FjaGUpDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhOAkJCQkJCTs7OyBbYXJlYTA4XSBDUzQsIENTNSBhcmVhIChtaXJyb3IpDQotCUxEUiAgcjMsID1NX1NJWkVfQ1M0NV9NDQotCUxEUiAgcjQsID1UVEJfUEFSQV9TVFJHTFkJCTs7OyAJU3Ryb25nbHktb3JkZXJlZA0KLQlCQUwgIGluaXRfY291bnRlcgkNCi1zZXR0aW5nX2FyZWE3CQkJCQkJOzs7IFthcmVhMDddIENTMiwgQ1MzIGFyZWEgKGZvciBTRFJBTSkgKG1pcnJvcikNCi0JTERSICByMywgPU1fU0laRV9TRFJBTV9NDQotCUxEUiAgcjQsID1UVEJfUEFSQV9OT1JNQUxfTk9UX0NBQ0hFCTs7OyBOb3JtYWwgKG5vdCBjYWNoZSkNCi0JQkFMICBpbml0X2NvdW50ZXINCi1zZXR0aW5nX2FyZWE2CQkJCQkJOzs7IFthcmVhMDZdIENTMCwgQ1MxIGFyZWEgKGZvciBOT1IgZmxhc2gpIChtaXJyb3IpDQotCUxEUiAgcjMsID1NX1NJWkVfTk9SX00NCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9OT1RfQ0FDSEUJOzs7IE5vcm1hbCAobm90IGNhY2hlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLXNldHRpbmdfYXJlYTUJCQkJCQk7OzsgW2FyZWEwNV0gSS9PIGFyZWEgMQ0KLQlMRFIgIHIzLCA9TV9TSVpFX0lPXzENCi0JTERSICByNCwgPVRUQl9QQVJBX1NUUkdMWQkJOzs7IAlTdHJvbmdseS1vcmRlcmVkDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhNAkJCQkJCTs7OyBbYXJlYTA0XSBJbnRlcm5hbCBSQU0NCi0JTERSICByMywgPU1fU0laRV9SQU0NCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9DQUNIRQk7OzsgCU5vcm1hbCAoQ2FjaGVhYmxlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLXNldHRpbmdfYXJlYTMJCQkJCQk7OzsgW2FyZWEwM10gU1BJLCBTUDIgYXJlYSAoZm9yIFNlcmlhbCBmbGFzaCkNCi0JTERSICByMywgPU1fU0laRV9TUEkNCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9DQUNIRQk7OzsgCU5vcm1hbCAoQ2FjaGVhYmxlKQ0KLQlCQUwgIGluaXRfY291bnRlcg0KLXNldHRpbmdfYXJlYTIJCQkJCQk7OzsgW2FyZWEwMl0gQ1M0LCBDUzUgYXJlYQ0KLQlMRFIgIHIzLCA9TV9TSVpFX0NTNDUNCi0JTERSICByNCwgPVRUQl9QQVJBX1NUUkdMWQkJOzs7IAlTdHJvbmdseS1vcmRlcmVkDQotCUJBTCAgaW5pdF9jb3VudGVyDQotc2V0dGluZ19hcmVhMQkJCQkJCTs7OyBbYXJlYTAxXSBDUzIsIENTMyBhcmVhIChmb3IgU0RSQU0pDQotCUxEUiAgcjMsID1NX1NJWkVfU0RSQU0NCi0JTERSICByNCwgPVRUQl9QQVJBX05PUk1BTF9DQUNIRQk7OzsgCU5vcm1hbCAoQ2FjaGVhYmxlKQ0KLQlCQUwgIGluaXRfY291bnRlcgkNCi1zZXR0aW5nX2FyZWEwCQkJCQkJOzs7IFthcmVhMDBdIENTMCwgQ1MxIGFyZWEgKGZvciBOT1IgZmxhc2gpDQotCUxEUiAgcjMsID1NX1NJWkVfTk9SDQotCUxEUiAgcjQsID1UVEJfUEFSQV9OT1JNQUxfQ0FDSEUJOzs7IAlOb3JtYWwgKENhY2hlYWJsZSkNCi0JQkFMICBpbml0X2NvdW50ZXINCi1pbml0X2NvdW50ZXINCi0JU1VCUyByMywgcjMsICMxCQkJCQk7OzsgbWVtb3J5IHNpemUgLT4gbG9vcCBjb3VudGVyIHZhbHVlDQotd3JpdGVfdHRiDQotCU9SUiAgcjUsIHI0LCByMSwgTFNMIzIwCQkJOzs7IFI1IG5vdyBjb250YWlucyBmdWxsIGxldmVsMSBkZXNjcmlwdG9yIHRvIHdyaXRlDQotCVNUUiAgcjUsIFtyMCwgcjEsIExTTCMyXQkJOzs7IFN0ciB0YWJsZSBlbnRyeSBhdCBUVEIgYmFzZSArIGxvb3Bjb3VudCo0DQotCVNVQiAgcjEsIHIxLCAjMQkJCQkJOzs7IERlY3JlbWVudCBsb29wIGNvdW50ZXINCi0JU1VCUyByMywgcjMsICMxCQkJCQk7OzsgRGVjcmVtZW50IGxvb3AgY291bnRlciBieSBhcmVhDQotCUJQTCAgd3JpdGVfdHRiDQotCVNVQlMgcjIsIHIyLCAjMQkJCQkJOzs7IHRhcmdldCBhcmVhIGNvdW50ZXINCi0JQlBMICBzZXRfbWVtX2FjY3Nlc3MJCQk7OzsgVG8gdGhlIG5leHQgYXJlYQ0KLQ0KLQlCWCAgIGxyDQotDQotCUVOREZVTkMNCi0NCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vbDFfY2FjaGVfaW5pdC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9jb21tb24vbDFfY2FjaGVfaW5pdC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTc5ZmRjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL2wxX2NhY2hlX2luaXQucworKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIERJU0NMQUlNRVINCi07KiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi07KiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLTsqIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLTsqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi07KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi07KiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLTsqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotOyogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLTsqIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi07KiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi07KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLTsqIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLTsqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLTsqIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi07KiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLTsqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotOyogZm9sbG93aW5nIGxpbms6DQotOyogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotOyoNCi07KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBGaWxlIE5hbWUgICAgIDogbDFfY2FjaGVfaW5pdC5zDQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLTsqICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotOyogICAgICAgICAgICAgICA6IA0KLTsqIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotOyogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSB2ZWNvdHIucw0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgVGhpcyBjb2RlIHByb3ZpZGVzIGJhc2ljIGdsb2JhbCBlbmFibGUgZm9yIENvcnRleC1BOSBjYWNoZS4NCi07IEl0IGFsc28gZW5hYmxlcyBicmFuY2ggcHJlZGljdGlvbg0KLTsgVGhpcyBjb2RlIG11c3QgYmUgcnVuIGZyb20gYSBwcml2aWxlZ2VkIG1vZGUNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCUFSRUEgICBJTklUQ0E5Q0FDSEUsIENPREUsIFJFQURPTkxZDQotCUVYUE9SVCBMMUNhY2hlSW5pdA0KLQ0KLUwxQ2FjaGVJbml0CUZVTkNUSU9ODQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW5hYmxlIGNhY2hlcw0KLTsgQ2FjaGVzIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBTeXN0ZW0gQ29udHJvbCBSZWdpc3RlcjoNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCTs7OyBJLWNhY2hlIGlzIGNvbnRyb2xsZWQgYnkgYml0IDEyDQotCTs7OyBELWNhY2hlIGlzIGNvbnRyb2xsZWQgYnkgYml0IDINCi0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCQk7OzsgUmVhZCBDUDE1IHJlZ2lzdGVyIDENCi0JT1JSICByMCwgcjAsICMoMHgxIDw8IDEyKQkJCTs7OyBFbmFibGUgSSBDYWNoZQ0KLQlPUlIgIHIwLCByMCwgIygweDEgPDwgMikJCQk7OzsgRW5hYmxlIEQgQ2FjaGUNCi0JTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCQk7OzsgV3JpdGUgQ1AxNSByZWdpc3RlciAxDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW5hYmxlIFByb2dyYW0gRmxvdyBQcmVkaWN0aW9uDQotOw0KLTsgQnJhbmNoIHByZWRpY3Rpb24gaXMgY29udHJvbGxlZCBieSB0aGUgU3lzdGVtIENvbnRyb2wgUmVnaXN0ZXI6DQotOyBTZXQgQml0IDExIHRvIGVuYWJsZSBicmFuY2ggcHJlZGljdGlvbiBhbmQgcmV0dXJuICANCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCTs7OyBUdXJuaW5nIG9uIGJyYW5jaCBwcmVkaWN0aW9uIHJlcXVpcmVzIGEgZ2VuZXJhbCBlbmFibGUNCi0JOzs7IENQMTUsIGMxLiBDb250cm9sIFJlZ2lzdGVyDQotDQotCTs7OyBCaXQgMTEgW1pdIGJpdCBQcm9ncmFtIGZsb3cgcHJlZGljdGlvbjoNCi0JOzs7IDAgPSBQcm9ncmFtIGZsb3cgcHJlZGljdGlvbiBkaXNhYmxlZA0KLQk7OzsgMSA9IFByb2dyYW0gZmxvdyBwcmVkaWN0aW9uIGVuYWJsZWQuDQotDQotCU1SQyAgcDE1LCAwLCByMCwgYzEsIGMwLCAwCQkJOzs7IFJlYWQgU3lzdGVtIENvbnRyb2wgUmVnaXN0ZXINCi0JT1JSICByMCwgcjAsICMoMHgxIDw8IDExKQ0KLQlNQ1IgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMAkJCTs7OyBXcml0ZSBTeXN0ZW0gQ29udHJvbCBSZWdpc3Rlcg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEVuYWJsZSBELXNpZGUgcHJlZmV0Y2gNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCTs7OyBCaXQgMiBbRFBdIERzaWRlIHByZWZldGNoOg0KLQk7OzsgMCA9IERzaWRlIHByZWZldGNoIGRpc2FibGVkDQotCTs7OyAxID0gRHNpZGUgcHJlZmV0Y2ggZW5hYmxlZC4NCi0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMSwgYzAsIDEJCQk7OzsgUmVhZCBBdXhpbGlhcnkgQ29udHJvbCBSZWdpc3Rlcg0KLQlPUlIgIHIwLCByMCwgIygweDEgPDwgMikJCQk7OzsgRW5hYmxlIERzaWRlIHByZWZldGNoDQotCU1DUiAgcDE1LCAwLCByMCwgYzEsIGMwLCAxCQkJOzs7IFdyaXRlIEF1eGlsaWFyeSBDb250cm9sIFJlZ2lzdGVyDQotDQotCUJYICAgICAgICBscg0KLQ0KLQlFTkRGVU5DDQotDQotDQotDQotDQotCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3Jlc2V0cHJnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2NvbW1vbi9yZXNldHByZy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjZkZDc1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3Jlc2V0cHJnLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogcmVzZXRwcmcuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gU3ViIE1haW4NCi0qIE9wZXJhdGlvbiAgICA6IA0KLSogTGltaXRhdGlvbnMgIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfY29tbW9uLmgiICAgICAgLyogQ29tbW9uIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCIgICAgICAgIC8qIElOVEMgRHJpdmVyIEhlYWRlciAgICovDQotI2luY2x1ZGUgInJlc2V0cHJnLmgiDQotI2luY2x1ZGUgInNpb19jaGFyLmgiDQotI2luY2x1ZGUgInN0Yl9pbml0LmgiDQotI2luY2x1ZGUgInBvcnRfaW5pdC5oIg0KLQ0KLSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfUkVTRVQiDQotI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfUkVTRVQiDQotI3ByYWdtYSBhcm0gc2VjdGlvbiByd2RhdGEgPSAiREFUQV9SRVNFVCINCi0jcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfUkVTRVQiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWV4dGVybiB2b2lkICAgIFZiYXJJbml0KHZvaWQpOw0KLWV4dGVybiB2b2lkICAgIEwxQ2FjaGVJbml0KHZvaWQpOw0KLWV4dGVybiBpbnQzMl90ICRTdXBlciQkbWFpbih2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiAkU3ViJCRtYWluDQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgJFN1YiQkbWFpbih2b2lkKQ0KLXsNCi0gICAgU1RCX0luaXQoKTsNCi0NCi0gICAgLyogPT09PSBQT1JUIHNldHRpbmcgPT09PSAqLw0KLSAgICBQT1JUX0luaXQoKTsNCi0NCi0gICAgLyogPT09PSBCU0Mgc2V0dGluZyA9PT09ICovDQotICAgIFJfQlNDX0luaXQoKHVpbnQ4X3QpKEJTQ19BUkVBX0NTMiB8IEJTQ19BUkVBX0NTMykpOw0KLQ0KLSAgICAvKiA9PT09IElOVEMgc2V0dGluZyA9PT09ICovDQotICAgIFJfSU5UQ19Jbml0KCk7DQotDQotICAgIEwxQ2FjaGVJbml0KCk7DQotDQotICAgIC8qID09PT0gVmVjdG9yIGJhc2UgYWRkcmVzcyBzZXR0aW5nID09PT0gKi8NCi0gICAgVmJhckluaXQoKTsNCi0NCi0gICAgX19lbmFibGVfaXJxKCk7DQotICAgIF9fZW5hYmxlX2ZpcSgpOw0KLQ0KLSAgICAvKiA9PT09IEZ1bmN0aW9uIGNhbGwgb2YgbWFpbiBmdW5jdGlvbiA9PT09ICovDQotICAgICRTdXBlciQkbWFpbigpOw0KLX0NCi0NCi0NCi0vKiBFTkQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3JldGFyZ2V0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2NvbW1vbi9yZXRhcmdldC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGQxYTMzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3JldGFyZ2V0LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogcmV0YXJnZXQuYw0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS4xMw0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFJldGFyZ2V0IHN0YW5kYXJkIEkvTw0KLSogT3BlcmF0aW9uICAgIDogDQotKiBMaW1pdGF0aW9ucyAgOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLSAgICAgICAgI2lmZGVmICAgICAgICBfX1NUQU5EQUxPTkVfXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgInNpb19jaGFyLmgiDQotDQotI3ByYWdtYSBpbXBvcnQoX191c2Vfbm9fc2VtaWhvc3RpbmcpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RydWN0IF9fRklMRQ0KLXsNCi0gIGludF90IGhhbmRsZTsNCi0NCi0gIC8qIFdoYXRldmVyIHlvdSByZXF1aXJlIGhlcmUuIElmIHRoZSBvbmx5IGZpbGUgeW91IGFyZSB1c2luZyBpcyAgICovDQotICAvKiBzdGFuZGFyZCBvdXRwdXQgdXNpbmcgcHJpbnRmKCkgZm9yIGRlYnVnZ2luZywgbm8gZmlsZSBoYW5kbGluZyAqLw0KLSAgLyogaXMgcmVxdWlyZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi19Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBGaWxlIGRlc2NyaXB0b3IgKi8NCi0jZGVmaW5lIFNURElOICAgICAgICgwKQ0KLSNkZWZpbmUgU1RET1VUICAgICAgKDEpDQotI2RlZmluZSBTVERFUlIgICAgICAoMikNCi0NCi0jZGVmaW5lIElPU1RSRUFNICAgICgxKQ0KLSNkZWZpbmUgQlVGRl9TSVpFICAgKDI1NikNCi0NCi0jaWYgMA0KLSNkZWZpbmUgREVGQVVMVF9IQU5ETEUgICgweDEwMCkNCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotRklMRSBfX3N0ZG91dDsNCi1GSUxFIF9fc3RkaW47DQotI2lmIDANCi1GSUxFIF9fc3RkZXJyOw0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBmZ2V0Yw0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6DQotKiBSZXR1cm4gVmFsdWUgOg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnRfdCBmZ2V0YyhGSUxFICogZmlsZV9wKQ0KLXsNCi0gICAgLyogbm8gY2hhcmFjdGVyIHRvIHJlYWQgKi8NCi0gICAgcmV0dXJuIEVPRjsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogZnB1dGMNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOg0KLSogUmV0dXJuIFZhbHVlIDoNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50X3QgZnB1dGMoaW50X3QgY2hhbm5lbCwgRklMRSAqIGZpbGVfcCkNCi17DQotICAgICByZXR1cm4gY2hhbm5lbDsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogZmVycm9yDQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IA0KLSogUmV0dXJuIFZhbHVlIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludF90IGZlcnJvcihGSUxFICogZmlsZV9wKQ0KLXsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLWludF90IF9fYmFja3NwYWNlKEZJTEUgKiBmaWxlX3ApDQotew0KLSAgICByZXR1cm4gMDsNCi19DQotDQotDQotdm9pZCBfc3lzX2V4aXQoaW50X3QgcmV0dXJuY29kZSkNCi17DQotICAgIHdoaWxlICgxKQ0KLSAgICB7DQotICAgICAgICAvKiBEbyBOb3RoaW5nICovDQotICAgIH0NCi19DQotDQotY2hhcl90ICogX3N5c19jb21tYW5kX3N0cmluZyhjaGFyX3QgKiBjbWQsIGludF90IGxlbikNCi17DQotICAgIHJldHVybiBjbWQ7DQotfQ0KLQ0KLSAgICAjZW5kaWYgICAgICAgIC8qIF9fU1RBTkRBTE9ORV9fICAgIINag36DeoNYg2WDQoOTg0+Ws4z4ICAgICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2NvbW1vbi92YmFyX2luaXQucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3ZiYXJfaW5pdC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTYxMGI5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvY29tbW9uL3ZiYXJfaW5pdC5zCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiB2YmFyX2luaXQucw0KLTsqIFZlcnNpb24gICAgICAgOiAwLjAxDQotOyogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLTsqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLTsqICAgICAgICAgICAgICAgOiANCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0NCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotOyogICAgICAgICA6IDIzLjA1LjIwMTIgMC4wMQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFRoaXMgY29kZSBwcm92aWRlcyBiYXNpYyBnbG9iYWwgZW5hYmxlIGZvciBDb3J0ZXgtQTkgY2FjaGUuDQotOyBJdCBhbHNvIGVuYWJsZXMgYnJhbmNoIHByZWRpY3Rpb24NCi07IFRoaXMgY29kZSBtdXN0IGJlIHJ1biBmcm9tIGEgcHJpdmlsZWdlZCBtb2RlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlBUkVBICAgSU5JVF9WQkFSLCBDT0RFLCBSRUFET05MWQ0KLQkNCi0JSU1QT1JUICB8fEltYWdlJCRWRUNUT1JfTUlSUk9SX1RBQkxFJCRCYXNlfHwNCi07CUlNUE9SVCAgfHxJbWFnZSQkVkVDVE9SX1RBQkxFJCRCYXNlfHwNCi0JDQotCUVYUE9SVAlWYmFySW5pdA0KLQ0KLVZiYXJJbml0CUZVTkNUSU9ODQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFNldCBWZWN0b3IgQmFzZSBBZGRyZXNzIFJlZ2lzdGVyIChWQkFSKSB0byBwb2ludCB0byB0aGlzIGFwcGxpY2F0aW9uJ3MgdmVjdG9yIHRhYmxlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTERSIHIwLCA9fHxJbWFnZSQkVkVDVE9SX01JUlJPUl9UQUJMRSQkQmFzZXx8DQotOwlMRFIgcjAsID18fEltYWdlJCRWRUNUT1JfVEFCTEUkJEJhc2V8fA0KLQlNQ1IgcDE1LCAwLCByMCwgYzEyLCBjMCwgMA0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBTZXQgbG93IHZlY3RvcnMNCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQ0KLSAgICBNUkMgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMCAgIDsvKiBSZWFkIENQMTUgU3lzdGVtIENvbnRyb2wgcmVnaXN0ZXIgKFNDVExSKSAqLw0KLSAgICBCSUMgIHIwLCByMCwgIygweDEgPDwgMTMpICAgIDsvKiBDbGVhciBWIGJpdCAxMyB0byBzZXQgTG93IFZlY3RvcnMgICovDQotICAgIE1DUiAgcDE1LCAwLCByMCwgYzEsIGMwLCAwICAgOy8qIFdyaXRlIENQMTUgU3lzdGVtIENvbnRyb2wgcmVnaXN0ZXIgKi8NCi0gICAgSVNCDQotCUJYCQlscg0KLQ0KLQlFTkRGVU5DDQotDQotDQotDQotDQotCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9jb21tb24vY29tbW9uX2RyaXZlci9ic2MuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9jb21tb24vY29tbW9uX2RyaXZlci9ic2MuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTUzMDZkNS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvY29tbW9uL2NvbW1vbl9kcml2ZXIvYnNjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgOiBic2MuYw0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gQlNDIGluaXRpYWxpemUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9jb21tb24uaCIgICAgICAgLyogQ29tbW9uIERyaXZlciBIZWFkZXIgKi8NCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX1JFU0VUIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfUkVTRVQiDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9CU0NfSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQ4IGFyZWENCi0qICAgICAgICAgICAgICA6ICAgQid4eHh4eHh4eA0KLSogICAgICAgICAgICAgIDogICAgIHx8fHx8fHwrLS0tIFswXSAgIENTMA0KLSogICAgICAgICAgICAgIDogICAgIHx8fHx8fCstLS0tIFsxXSAgIENTMQ0KLSogICAgICAgICAgICAgIDogICAgIHx8fHx8Ky0tLS0tIFsyXSAgIENTMg0KLSogICAgICAgICAgICAgIDogICAgIHx8fHwrLS0tLS0tIFszXSAgIENTMw0KLSogICAgICAgICAgICAgIDogICAgIHx8fCstLS0tLS0tIFs0XSAgIENTNA0KLSogICAgICAgICAgICAgIDogICAgIHx8Ky0tLS0tLS0tIFs1XSAgIENTNQ0KLSogICAgICAgICAgICAgIDogICAgICsrLS0tLS0tLS0tIFs2LTddIG4vYQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFJfQlNDX0luaXQodWludDhfdCBhcmVhKQ0KLXsNCi0gICAgLyogPT09PSBCU0MgaW5pdGlhbGl6ZSA9PT09ICovDQotICAgIGlmICgoYXJlYSAmIEJTQ19BUkVBX0NTMCkgIT0gMCkgICAgIC8qIENTMCAqLw0KLSAgICB7DQotICAgICAgICBVc2VyZGVmX0JTQ19DUzBJbml0KCk7DQotICAgIH0NCi0gICAgaWYgKChhcmVhICYgQlNDX0FSRUFfQ1MxKSAhPSAwKSAgICAgLyogQ1MxICovDQotICAgIHsNCi0gICAgICAgIFVzZXJkZWZfQlNDX0NTMUluaXQoKTsNCi0gICAgfQ0KLSAgICBpZiAoKGFyZWEgJiBCU0NfQVJFQV9DUzIpICE9IDApICAgICAvKiBDUzIgKi8NCi0gICAgew0KLSAgICAgICAgVXNlcmRlZl9CU0NfQ1MySW5pdCgpOw0KLSAgICB9DQotICAgIGlmICgoYXJlYSAmIEJTQ19BUkVBX0NTMykgIT0gMCkgICAgIC8qIENTMyAqLw0KLSAgICB7DQotICAgICAgICBVc2VyZGVmX0JTQ19DUzNJbml0KCk7DQotICAgIH0NCi0gICAgaWYgKChhcmVhICYgQlNDX0FSRUFfQ1M0KSAhPSAwKSAgICAgLyogQ1M0ICovDQotICAgIHsNCi0gICAgICAgIFVzZXJkZWZfQlNDX0NTNEluaXQoKTsNCi0gICAgfQ0KLSAgICBpZiAoKGFyZWEgJiBCU0NfQVJFQV9DUzUpICE9IDApICAgICAvKiBDUzUgKi8NCi0gICAgew0KLSAgICAgICAgVXNlcmRlZl9CU0NfQ1M1SW5pdCgpOw0KLSAgICB9DQotfQ0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2NvbW1vbi91c2VyZGVmL2JzY191c2VyZGVmLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvY29tbW9uL3VzZXJkZWYvYnNjX3VzZXJkZWYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI5ZDcyNS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvY29tbW9uL3VzZXJkZWYvYnNjX3VzZXJkZWYuYworKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBic2NfdXNlcmRlZi5jDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICA6IEFSTSBDb21wbGllcg0KLSogT1MgICAgICAgICAgIDoNCi0qIEgvVyBQbGF0Zm9ybSA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIENvbW1vbiBkcml2ZXIgKFVzZXIgZGVmaW5lIGZ1bmN0aW9uKQ0KLSogT3BlcmF0aW9uICAgIDoNCi0qIExpbWl0YXRpb25zICA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9jb21tb24uaCIgICAgICAvKiBDb21tb24gRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qIERvIG5vdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgcHJhZ21hcyB3aGVuIGNvbXBpbGluZyB3aXRoIElBUi4gKi8NCi0jaWZuZGVmIF9fSUNDQVJNX18NCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiBjb2RlICAgPSAiQ09ERV9SRVNFVCINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiByb2RhdGEgPSAiQ09OU1RfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcndkYXRhID0gIkRBVEFfUkVTRVQiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gemlkYXRhID0gIkJTU19SRVNFVCINCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogVGhlIGFkZHJlc3Mgd2hlbiB3cml0aW5nIGluIGEgU0RSQU0gbW9kZSByZWdpc3RlciAqLw0KLSNkZWZpbmUgU0RSQU1fTU9ERV9DUzIgICAgKCoodm9sYXRpbGUgdWludDE2X3QgKikoMHgzRkZGRDA0MCkpDQotI2RlZmluZSBTRFJBTV9NT0RFX0NTMyAgICAoKih2b2xhdGlsZSB1aW50MTZfdCAqKSgweDNGRkZFMDQwKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfQlNDX0NTMEluaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1MwSW5pdCh2b2lkKQ0KLXsNCi0gICAgLyogLS0tLSBDUzBCQ1Igc2V0dGluZ3MgLS0tLSAqLw0KLSAgICBCU0MuQ1MwQkNSLkxPTkcgPSAweDEwMDAwQzAwdWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRsZSBDeWNsZXMgYmV0d2VlbiBXcml0ZS1yZWFkIEN5Y2xlcyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBhbmQgV3JpdGUtd3JpdGUgQ3ljbGVzIDogMSBpZGxlIGN5Y2xlICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEYXRhIEJ1cyBTaXplOiAxNi1iaXQgICAgICAgICAgICAgICAgICAgICovDQotDQotICAgIC8qIC0tLS0gQ1MwV0NSIHNldHRpbmdzIC0tLS0gICovDQotICAgIEJTQy5DUzBXQ1IuTk9STUFMLkxPTkcgPSAweDAwMDAwQjQwdWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIERlbGF5IEN5Y2xlcyBmcm9tIEFkZHJlc3MsICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBDUzAjIEFzc2VydGlvbiB0byBSRCMsV0VuIEFzc2VydGlvbiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgOiAxLjUgY3ljbGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIEFjY2VzcyBXYWl0IEN5Y2xlczogNiBjeWNsZXMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IEN5Y2xlcyBmcm9tIFJELFdFbiMgbmVnYXRpb24gdG8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQWRkcmVzcyxDU24jIG5lZ2F0aW9uOiAwLjUgY3ljbGVzICAgICAgICovDQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfQlNDX0NTMUluaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1MxSW5pdCh2b2lkKQ0KLXsNCi0gICAgLyogLS0tLSBDUzFCQ1Igc2V0dGluZ3MgLS0tLSAqLw0KLSAgICBCU0MuQ1MxQkNSLkxPTkcgPSAweDEwMDAwQzAwdWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSWRsZSBDeWNsZXMgYmV0d2VlbiBXcml0ZS1yZWFkIEN5Y2xlcyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBhbmQgV3JpdGUtd3JpdGUgQ3ljbGVzIDogMSBpZGxlIGN5Y2xlICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEYXRhIEJ1cyBTaXplOiAxNi1iaXQgICAgICAgICAgICAgICAgICAgICovDQotDQotICAgIC8qIC0tLS0gQ1MxV0NSIHNldHRpbmdzIC0tLS0gICovDQotICAgIEJTQy5DUzFXQ1IuTE9ORyA9IDB4MDAwMDBCNDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgRGVsYXkgQ3ljbGVzIGZyb20gQWRkcmVzcywgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIENTMCMgQXNzZXJ0aW9uIHRvIFJEIyxXRW4gQXNzZXJ0aW9uICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICA6IDEuNSBjeWNsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgQWNjZXNzIFdhaXQgQ3ljbGVzOiA2IGN5Y2xlcyAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRGVsYXkgQ3ljbGVzIGZyb20gUkQsV0VuIyBuZWdhdGlvbiB0byAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBBZGRyZXNzLENTbiMgbmVnYXRpb246IDAuNSBjeWNsZXMgICAgICAgKi8NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9CU0NfQ1MySW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0JTQ19DUzJJbml0KHZvaWQpDQotew0KLSAgICAvKiA9PT09IENTMkJDUiBzZXR0aW5ncyA9PT09ICovDQotICAgIEJTQy5DUzJCQ1IuTE9ORyA9IDB4MDAwMDRDMDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElkbGUgQ3ljbGVzIGJldHdlZW4gV3JpdGUtcmVhZCBDeWNsZXMgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbmQgV3JpdGUtd3JpdGUgQ3ljbGVzIDogMCBpZGxlIGN5Y2xlcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTWVtb3J5IHR5cGUgOlNEUkFNICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERhdGEgQnVzIFNpemUgOiAxNi1iaXQgICAgICAgICAgICAgICAgICovDQotDQotICAgIC8qID09PT0gQ1MyV0NSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLkNTMldDUi5TRFJBTS5MT05HID0gMHgwMDAwMDQ4MHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0FTIGxhdGVuY3kgZm9yIEFyZWEgMiA6IDIgY3ljbGVzICovDQotDQotDQotICAgIC8qID09PT0gV3JpdHRlbiBpbiBTRFJBTSBNb2RlIFJlZ2lzdGVyID09PT0gKi8NCi0gICAgU0RSQU1fTU9ERV9DUzIgPSAwOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHdyaXRpbmcgZGF0YSBpcyBhcmJpdHJhcnkgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0RSQU0gbW9kZSByZWdpc3RlciBzZXR0aW5nIENTMiBzcGFjZSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQnVyc3QgcmVhZCAoYnVyc3QgbGVuZ3RoIDEpLi9CdXJzdCB3cml0ZSAqLw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0JTQ19DUzNJbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfQlNDX0NTM0luaXQodm9pZCkNCi17DQotICAgIHZvbGF0aWxlIGludDMyX3QgY250Ow0KLQ0KLSAgICBjbnQgPSAxNTA7DQotICAgIHdoaWxlIChjbnQtLSA+IDApDQotICAgIHsNCi0gICAgICAgIC8qIHdhaXQgKi8NCi0gICAgfQ0KLQ0KLSAgICAvKiA9PT09IENTM0JDUiBzZXR0aW5ncyA9PT09ICovDQotICAgIEJTQy5DUzNCQ1IuTE9ORyA9IDB4MDAwMDRDMDB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElkbGUgQ3ljbGVzIGJldHdlZW4gV3JpdGUtcmVhZCBDeWNsZXMgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbmQgV3JpdGUtd3JpdGUgQ3ljbGVzIDogMCBpZGxlIGN5Y2xlcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTWVtb3J5IHR5cGUgOlNEUkFNICAgICAgICAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERhdGEgQnVzIFNpemUgOiAxNi1iaXQgICAgICAgICAgICAgICAgICovDQotDQotICAgIC8qID09PT0gQ1MzV0NSIHNldHRpbmdzID09PT0gKi8NCi0gICAgQlNDLkNTM1dDUi5TRFJBTS5MT05HID0gMHgwMDAwMjQ5MnVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUHJlY2hhcmdlIGNvbXBsZXRpb24gd2FpdCBjeWNsZXM6IDEgY3ljbGUgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXYWl0IGN5Y2xlcyBiZXR3ZWVuIEFDVFYgY29tbWFuZCAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFuZCBSRUFEKEEpL1dSSVRFKEEpIGNvbW1hbmQgOiAxIGN5Y2xlcyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0FTIGxhdGVuY3kgZm9yIEFyZWEgMyA6IDIgY3ljbGVzICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBdXRvLXByZWNoYXJnZSBzdGFydHVwIHdhaXQgY3ljbGVzIDogMiBjeWNsZXMgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElkbGUgY3ljbGVzIGZyb20gUkVGIGNvbW1hbmQvc2VsZi1yZWZyZXNoICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmVsZWFzZSB0byBBQ1RWL1JFRi9NUlMgY29tbWFuZCA6IDUgY3ljbGVzICAgICovDQotDQotICAgIC8qID09PT0gU0RDUiBzZXR0aW5ncyA9PT09ICovDQotICAgIEJTQy5TRENSLkxPTkcgPSAweDAwMTIwODEydWw7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSb3cgYWRkcmVzcyBmb3IgQXJlYSAyIDogMTMtYml0ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb2x1bW4gQWRkcmVzcyBmb3IgQXJlYSAyIDogMTAtYml0ICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWZyZXNoIENvbnRyb2wgOlJlZnJlc2ggICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSTU9ERSA6QXV0by1yZWZyZXNoIGlzIHBlcmZvcm1lZCAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCQUNUViA6QXV0by1wcmVjaGFyZ2UgbW9kZSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSb3cgYWRkcmVzcyBmb3IgQXJlYSAzIDogMTMtYml0ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDb2x1bW4gQWRkcmVzcyBmb3IgQXJlYSAzIDogMTAtYml0ICovDQotDQotICAgIC8qID09PT0gUlRDT1Igc2V0dGluZ3MgPT09PSAqLw0KLSAgICBCU0MuUlRDT1IuTE9ORyA9IDB4QTU1QTAwMjB1bDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDcuODEzdXNlYyAvMjQwbnNlYyAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgID0gMzIoMHgyMCljeWNsZXMgcGVyIHJlZnJlc2ggKi8NCi0NCi0gICAgLyogPT09PSBSVENTUiBzZXR0aW5ncyA9PT09ICovDQotICAgIEJTQy5SVENTUi5MT05HID0gMHhBNTVBMDAxMHVsOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSW5pdGlhbGl6YXRpb24gc2VxdWVuY2Ugc3RhcnQgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENsb2NrIHNlbGVjdCBCLXBoeS8xNiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZWZyZXNoIGNvdW50IDpPbmNlICAgICAgICAgICAqLw0KLQ0KLSAgICAvKiA9PT09IFdyaXR0ZW4gaW4gU0RSQU0gTW9kZSBSZWdpc3RlciA9PT09ICovDQotICAgIFNEUkFNX01PREVfQ1MzID0gMDsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSB3cml0aW5nIGRhdGEgaXMgYXJiaXRyYXJ5ICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNEUkFNIG1vZGUgcmVnaXN0ZXIgc2V0dGluZyBDUzMgc3BhY2UgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJ1cnN0IHJlYWQgKGJ1cnN0IGxlbmd0aCAxKS4vQnVyc3Qgd3JpdGUgKi8NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9CU0NfQ1M0SW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IG5vbmUNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0JTQ19DUzRJbml0KHZvaWQpDQotew0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0JTQ19DUzVJbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfQlNDX0NTNUluaXQodm9pZCkNCi17DQotfQ0KLQ0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvaW50Y19kcml2ZXIvaW50Yy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL2ludGMvaW50Y19kcml2ZXIvaW50Yy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTAxYTYyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL2ludGNfZHJpdmVyL2ludGMuYworKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICA6IGludGMuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSW50ZXJydXB0IHByb2Nlc3MNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgImRldl9kcnYuaCIgICAgICAgICAgICAgICAgLyogRGV2aWNlIERyaXZlciBjb21tb24gaGVhZGVyICovDQotI2luY2x1ZGUgImRldmRydl9pbnRjLmgiICAgICAgICAgICAgLyogSU5UQyBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgSU5UQ19JQ0RJU1JfUkVHX1RPVEFMICAgKCgodWludDE2X3QpSU5UQ19JRF9UT1RBTCAvIDMyKSArIDEpIC8qIElDRElTUiAgKi8NCi0jZGVmaW5lIElOVENfSUNESUNGUl9SRUdfVE9UQUwgICgoKHVpbnQxNl90KUlOVENfSURfVE9UQUwgLyAxNikgKyAxKSAvKiBJQ0RJQ0ZSICovDQotI2RlZmluZSBJTlRDX0lDRElQUl9SRUdfVE9UQUwgICAoKCh1aW50MTZfdClJTlRDX0lEX1RPVEFMIC8gIDQpICsgMSkgLyogSUNESVBSICAqLw0KLSNkZWZpbmUgSU5UQ19JQ0RJUFRSX1JFR19UT1RBTCAgKCgodWludDE2X3QpSU5UQ19JRF9UT1RBTCAvICA0KSArIDEpIC8qIElDRElQVFIgKi8NCi0jZGVmaW5lIElOVENfSUNESVNFUl9SRUdfVE9UQUwgICgoKHVpbnQxNl90KUlOVENfSURfVE9UQUwgLyAzMikgKyAxKSAvKiBJQ0RJU0VSICovDQotI2RlZmluZSBJTlRDX0lDRElDRVJfUkVHX1RPVEFMICAoKCh1aW50MTZfdClJTlRDX0lEX1RPVEFMIC8gMzIpICsgMSkgLyogSUNESUNFUiAqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogPT09PSBHbG9iYWwgdmFyaWFibGUgPT09PSAqLw0KLXN0YXRpYyB1aW50MzJfdCBpbnRjX2ljZGljZnJuX3RhYmxlW10gPQ0KLXsNCi0gICAgMHhBQUFBQUFBQSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMCAgOiAgMTUgLSAgIDAgKi8NCi0gICAgMHgwMDAwMDA1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMSAgOiAgMTkgLSAgMTYgKi8NCi0gICAgMHhGRkZENTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMiAgOiAgNDcgLSAgMzIgKi8NCi0gICAgMHg1NTVGRkZGRiwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMyAgOiAgNjMgLSAgNDggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSNCAgOiAgNzkgLSAgNjQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSNSAgOiAgOTUgLSAgODAgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSNiAgOiAxMTEgLSAgOTYgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSNyAgOiAxMjcgLSAxMTIgKi8NCi0gICAgMHg1NTU1RjU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSOCAgOiAxNDMgLSAxMjggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSOSAgOiAxNTkgLSAxNDQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTAgOiAxNzUgLSAxNjAgKi8NCi0gICAgMHhGNTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTEgOiAxOTEgLSAxNzYgKi8NCi0gICAgMHhGNTU1RjU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTIgOiAyMDcgLSAxOTIgKi8NCi0gICAgMHg1NTU1RjU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTMgOiAyMjMgLSAyMDggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTQgOiAyMzkgLSAyMjQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTUgOiAyNTUgLSAyNDAgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTYgOiAyNzEgLSAyNTYgKi8NCi0gICAgMHhGRDU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTcgOiAyODcgLSAyNzIgKi8NCi0gICAgMHg1NTU1NTU1NywgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTggOiAzMDMgLSAyODggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTkgOiAzMTkgLSAzMDQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjAgOiAzMzUgLSAzMjAgKi8NCi0gICAgMHg1RjU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjEgOiAzNTEgLSAzMzYgKi8NCi0gICAgMHhGRDU1NTU1RiwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjIgOiAzNjcgLSAzNTIgKi8NCi0gICAgMHg1NTU1NTU1NywgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjMgOiAzODMgLSAzNjggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjQgOiAzOTkgLSAzODQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjUgOiA0MTUgLSA0MDAgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjYgOiA0MzEgLSA0MTYgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjcgOiA0NDcgLSA0MzIgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjggOiA0NjMgLSA0NDggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjkgOiA0NzkgLSA0NjQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzAgOiA0OTUgLSA0ODAgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzEgOiA1MTEgLSA0OTYgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzIgOiA1MjcgLSA1MTIgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzMgOiA1NDMgLSA1MjggKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzQgOiA1NTkgLSA1NDQgKi8NCi0gICAgMHg1NTU1NTU1NSwgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzUgOiA1NzUgLSA1NjAgKi8NCi0gICAgMHgwMDE1NTU1NSAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzYgOiA1ODYgLSA1NzYgKi8NCi19Ow0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfSU5UQ19SZWdpc3RJbnRGdW5jDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDE2X3QgaW50X2lkDQotKiAgICAgICAgICAgICAgOiB2b2lkICgqIGZ1bmMpKHVpbnQzMl90KQ0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfSU5UQ19SZWdpc3RJbnRGdW5jKHVpbnQxNl90IGludF9pZCwgdm9pZCAoKiBmdW5jKSh1aW50MzJfdCBpbnRfc2Vuc2UpKQ0KLXsNCi0gICAgaWYgKGludF9pZCA+PSBJTlRDX0lEX1RPVEFMKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIFVzZXJkZWZfSU5UQ19SZWdpc3RJbnRGdW5jKGludF9pZCwgZnVuYyk7DQotDQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9JTlRDX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgUl9JTlRDX0luaXQodm9pZCkNCi17DQotICAgIHVpbnQxNl90IG9mZnNldDsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgKiBhZGRyOw0KLQ0KLSAgICBmb3IgKG9mZnNldCA9IDA7IG9mZnNldCA8IElOVENfSUNESUNGUl9SRUdfVE9UQUw7IG9mZnNldCsrKQ0KLSAgICB7DQotICAgICAgICBJTlRDLklDRElDRlIuTE9OR1tvZmZzZXRdID0gaW50Y19pY2RpY2Zybl90YWJsZVtvZmZzZXRdOw0KLSAgICB9DQotDQotICAgIGFkZHIgPSAodm9sYXRpbGUgdWludDMyX3QgKikmSU5UQy5JQ0RJUFIwLkxPTkc7DQotICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgSU5UQ19JQ0RJUFJfUkVHX1RPVEFMOyBvZmZzZXQrKykNCi0gICAgew0KLSAgICAgICAgKihhZGRyICsgb2Zmc2V0KSA9IDB4RjhGOEY4Rjg7DQotICAgIH0NCi0NCi0gICAgYWRkciA9ICh2b2xhdGlsZSB1aW50MzJfdCAqKSZJTlRDLklDRElQVFIwLkxPTkc7DQotICAgIGZvciAob2Zmc2V0ID0gODsgb2Zmc2V0IDwgSU5UQ19JQ0RJUFRSX1JFR19UT1RBTDsgb2Zmc2V0KyspDQotICAgIHsNCi0gICAgICAgICooYWRkciArIG9mZnNldCkgPSAweDAxMDEwMTAxOw0KLSAgICB9DQotDQotICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgSU5UQ19JQ0RJQ0VSX1JFR19UT1RBTDsgb2Zmc2V0KyspDQotICAgIHsNCi0gICAgICAgIElOVEMuSUNESUNFUi5MT05HW29mZnNldF0gPSAweEZGRkZGRkZGOw0KLSAgICB9DQotDQotICAgIFJfSU5UQ19TZXRNYXNrTGV2ZWwoMzEpOw0KLQ0KLSAgICBJTlRDLklDQ0JQUi5CSVQuQmluYXJ5cG9pbnQgPSAwOw0KLQ0KLSAgICBJTlRDLklDQ0lDUi5MT05HID0gMzsNCi0NCi0gICAgLyogRGlzdHJpYnV0b3IgQ29udHJvbCBSZWdpc3RlciAqLw0KLSAgICBJTlRDLklDRERDUi5CSVQuRW5hYmxlID0gMTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9JTlRDX0VuYWJsZQ0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQxNl90IGludF9pZA0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfSU5UQ19FbmFibGUodWludDE2X3QgaW50X2lkKQ0KLXsNCi0gICAgdWludDMyX3QgcmVnX3ZhbHVlOw0KLSAgICB1aW50MzJfdCBtYXNrOw0KLQ0KLSAgICBpZiAoaW50X2lkID49IElOVENfSURfVE9UQUwpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgbWFzayA9IDE7DQotICAgIG1hc2sgPSBtYXNrIDw8IChpbnRfaWQgJSAzMik7DQotDQotICAgIHJlZ192YWx1ZSA9IElOVEMuSUNESVNFUi5MT05HW2ludF9pZCAvIDMyXTsNCi0gICAgcmVnX3ZhbHVlIHw9IG1hc2s7DQotICAgIElOVEMuSUNESVNFUi5MT05HW2ludF9pZCAvIDMyXSA9IHJlZ192YWx1ZTsNCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfRGlzYWJsZQ0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQxNl90IGludF9pZA0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfSU5UQ19EaXNhYmxlKHVpbnQxNl90IGludF9pZCkNCi17DQotICAgIHVpbnQzMl90IHJlZ192YWx1ZTsNCi0gICAgdWludDMyX3QgbWFzazsNCi0NCi0gICAgaWYgKGludF9pZCA+PSBJTlRDX0lEX1RPVEFMKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIG1hc2sgPSAxOw0KLSAgICBtYXNrID0gbWFzayA8PCAoaW50X2lkICUgMzIpOw0KLQ0KLSAgICByZWdfdmFsdWUgPSBJTlRDLklDRElDRVIuTE9OR1tpbnRfaWQgLyAzMl07DQotICAgIHJlZ192YWx1ZSB8PSBtYXNrOw0KLSAgICBJTlRDLklDRElDRVIuTE9OR1tpbnRfaWQgLyAzMl0gPSByZWdfdmFsdWU7DQotDQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9JTlRDX1NldFByaW9yaXR5DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDE2X3QgaW50X2lkDQotKiAgICAgICAgICAgICAgOiB1aW50OF90IHByaW9yaXR5DQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX1NldFByaW9yaXR5KHVpbnQxNl90IGludF9pZCwgdWludDhfdCBwcmlvcml0eSkNCi17DQotICAgIHVpbnQzMl90IGljZGlwcjsNCi0gICAgdWludDMyX3QgbWFzazsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgKiBhZGRyOw0KLQ0KLSAgICBpZiAoKGludF9pZCA+PSBJTlRDX0lEX1RPVEFMKSB8fCBwcmlvcml0eSA+PSAzMikNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBwcmlvcml0eSA9IHByaW9yaXR5IDw8IDM7DQotDQotICAgIGFkZHIgPSAodm9sYXRpbGUgdWludDMyX3QgKikmSU5UQy5JQ0RJUFIwLkxPTkc7DQotDQotICAgIGljZGlwciA9ICooYWRkciArIChpbnRfaWQgLyA0KSk7DQotDQotICAgIG1hc2sgPSAodWludDMyX3QpMHgwMDAwMDBGRjsNCi0gICAgbWFzayA9IG1hc2sgPDwgKChpbnRfaWQgJSA0KSAqIDgpOw0KLSAgICBpY2RpcHIgJj0gfm1hc2s7DQotICAgIG1hc2sgPSAodWludDMyX3QpcHJpb3JpdHk7DQotICAgIG1hc2sgPSBtYXNrIDw8ICgoaW50X2lkICUgNCkgKiA4KTsNCi0gICAgaWNkaXByIHw9IG1hc2s7DQotDQotICAgICooYWRkciArIChpbnRfaWQgLyA0KSkgPSBpY2RpcHI7DQotDQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9JTlRDX1NldE1hc2tMZXZlbA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQ4X3QgbWFza19sZXZlbA0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfSU5UQ19TZXRNYXNrTGV2ZWwodWludDhfdCBtYXNrX2xldmVsKQ0KLXsNCi0gICAgaWYgKG1hc2tfbGV2ZWwgPj0gMzIpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgbWFza19sZXZlbCA9IG1hc2tfbGV2ZWwgPDwgMzsNCi0gICAgSU5UQy5JQ0NQTVIuQklULlByaW9yaXR5ID0gbWFza19sZXZlbDsNCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX0lOVENfR2V0TWFza0xldmVsDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDhfdCAqIG1hc2tfbGV2ZWwNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBSX0lOVENfR2V0TWFza0xldmVsKHVpbnQ4X3QgKiBtYXNrX2xldmVsKQ0KLXsNCi0gICAgKm1hc2tfbGV2ZWwgPSBJTlRDLklDQ1BNUi5CSVQuUHJpb3JpdHk7DQotICAgICptYXNrX2xldmVsID0gKm1hc2tfbGV2ZWwgPj4gMzsNCi19DQotDQotLyogRU5EIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvaW50Yy9pbnRjX2RyaXZlci9pbnRjX2hhbmRsZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL2ludGNfZHJpdmVyL2ludGNfaGFuZGxlci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzdkNTc2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL2ludGNfZHJpdmVyL2ludGNfaGFuZGxlci5jCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgOiBpbnRjX2hhbmRsZXIuYw0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSGFuZGxlciBwcm9jZXNzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIiAgICAgICAgLyogSU5UQyBEcml2ZXIgSGVhZGVyICovDQotI2luY2x1ZGUgImlvZGVmaW5lLmgiDQotDQotLyogRG8gbm90IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBwcmFnbWFzIHdoZW4gY29tcGlsaW5nIHdpdGggSUFSLiAqLw0KLSNpZm5kZWYgX19JQ0NBUk1fXw0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIGNvZGUgICA9ICJDT0RFX0hBTkRMRVIiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX0hBTkRMRVIiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcndkYXRhID0gIkRBVEFfSEFORExFUiINCi0JI3ByYWdtYSBhcm0gc2VjdGlvbiB6aWRhdGEgPSAiQlNTX0hBTkRMRVIiDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbXBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKGZyb20gb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1FeHBvcnRlZCBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMgKHRvIGJlIGFjY2Vzc2VkIGJ5IG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiA9PT09IFByb3RvdHlwZSBkZWNsYXJhdGlvbiA9PT09ICovDQotX19pcnEgdm9pZCBGaXFIYW5kbGVyX0ludGVycnVwdCh2b2lkKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotUHJpdmF0ZSBnbG9iYWwgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IEZpcUhhbmRsZXJfSW50ZXJydXB0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotX19pcnEgdm9pZCBGaXFIYW5kbGVyX0ludGVycnVwdCh2b2lkKQ0KLXsNCi0gICAgVXNlcmRlZl9GSVFfSGFuZGxlckV4ZSgpOw0KLX0NCi0NCi0NCi0vKiBFTkQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL3VzZXJkZWYvaW50Y191c2VyZGVmLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvaW50Yy91c2VyZGVmL2ludGNfdXNlcmRlZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTgzODc5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9pbnRjL3VzZXJkZWYvaW50Y191c2VyZGVmLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3NDIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogaW50Y191c2VyZGVmLmMNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXZpY2UocykgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOg0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSW50ZXJydXB0IGZ1bmMgdGFibGUNCi0qIE9wZXJhdGlvbiAgICA6DQotKiBMaW1pdGF0aW9ucyAgOg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCIgICAgICAgICAgICAvKiBJTlRDIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKiBEbyBub3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIHByYWdtYXMgd2hlbiBjb21waWxpbmcgd2l0aCBJQVIuICovDQotI2lmbmRlZiBfX0lDQ0FSTV9fDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gY29kZSAgID0gIkNPREVfSEFORExFUl9KTVBUQkwiDQotCSNwcmFnbWEgYXJtIHNlY3Rpb24gcm9kYXRhID0gIkNPTlNUX0hBTkRMRVJfSk1QVEJMIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHJ3ZGF0YSA9ICJEQVRBX0hBTkRMRVJfSk1QVEJMIg0KLQkjcHJhZ21hIGFybSBzZWN0aW9uIHppZGF0YSA9ICJCU1NfSEFORExFUl9KTVBUQkwiDQotI2Vsc2UNCi0JLyogSUFSIHJlcXVpcmVzIGludHJpbnNpY3MuaCBmb3IgdGhlIF9fZW5hYmxlX2lycSgpIGZ1bmN0aW9uLiAqLw0KLQkjaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qID09PT0gIFByb3RvdHlwZSBmdW5jdGlvbiA9PT09ICovDQotc3RhdGljIHZvaWQgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCh1aW50MzJfdCBpbnRfc2Vuc2UpOw0KLQ0KLS8qID09PT0gR2xvYmFsIHZhcmlhYmxlID09PT0gKi8NCi1zdGF0aWMgdm9pZCAoKiBpbnRjX2Z1bmNfdGFibGVbSU5UQ19JRF9UT1RBTF0pKHVpbnQzMl90IGludF9zZW5zZSkgPQ0KLXsNCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDAgICA6IFNXMCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEgICA6IFNXMSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIgICA6IFNXMiAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMgICA6IFNXMyAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQgICA6IFNXNCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUgICA6IFNXNSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDYgICA6IFNXNiAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDcgICA6IFNXNyAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDggICA6IFNXOCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDkgICA6IFNXOSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwICA6IFNXMTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExICA6IFNXMTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyICA6IFNXMTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzICA6IFNXMTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0ICA6IFNXMTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1ICA6IFNXMTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2ICA6IFBNVUlSUTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3ICA6IENPTU1SWDAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4ICA6IENPTU1UWDAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5ICA6IENUSUlSUTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyICA6IElSUTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzICA6IElSUTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0ICA6IElSUTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1ICA6IElSUTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2ICA6IElSUTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3ICA6IElSUTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4ICA6IElSUTYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM5ICA6IElSUTcgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQwICA6IFBMMzEwRVJSICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQxICA6IERNQUlOVDAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQyICA6IERNQUlOVDEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQzICA6IERNQUlOVDIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ0ICA6IERNQUlOVDMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ1ICA6IERNQUlOVDQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ2ICA6IERNQUlOVDUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ3ICA6IERNQUlOVDYgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ4ICA6IERNQUlOVDcgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDQ5ICA6IERNQUlOVDggICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUwICA6IERNQUlOVDkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUxICA6IERNQUlOVDEwICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUyICA6IERNQUlOVDExICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDUzICA6IERNQUlOVDEyICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU0ICA6IERNQUlOVDEzICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU1ICA6IERNQUlOVDE0ICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU2ICA6IERNQUlOVDE1ICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU3ICA6IERNQUVSUiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU4ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDU5ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDYwICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDYxICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDYyICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDYzICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY0ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY1ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY2ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY3ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY4ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDY5ICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDcwICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDcxICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDcyICA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDczICA6IFVTQkkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc0ICA6IFVTQkkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc1ICA6IFMwX1ZJX1ZTWU5DMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc2ICA6IFMwX0xPX1ZTWU5DMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc3ICA6IFMwX1ZTWU5DRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc4ICA6IEdSM19WTElORTAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDc5ICA6IFMwX1ZGSUVMRDAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDgwICA6IElWMV9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDgxICA6IElWM19WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDgyICA6IElWNV9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDgzICA6IElWNl9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg0ICA6IFMwX1dMSU5FMCAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg1ICA6IFMxX1ZJX1ZTWU5DMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg2ICA6IFMxX0xPX1ZTWU5DMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg3ICA6IFMxX1ZTWU5DRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg4ICA6IFMxX1ZGSUVMRDAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDg5ICA6IElWMl9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDkwICA6IElWNF9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDkxICA6IFMxX1dMSU5FMCAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDkyICA6IE9JUl9WSV9WU1lOQzAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDkzICA6IE9JUl9MT19WU1lOQzAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk0ICA6IE9JUl9WU1lOQ0VSUjAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk1ICA6IE9JUl9WRklFTEQwICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk2ICA6IElWN19WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk3ICA6IElWOF9WQlVGRVJSMCAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk4ICA6IE9JUl9XTElORTAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDk5ICA6IFMwX1ZJX1ZTWU5DMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwMCA6IFMwX0xPX1ZTWU5DMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwMSA6IFMwX1ZTWU5DRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwMiA6IEdSM19WTElORTEgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwMyA6IFMwX1ZGSUVMRDEgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwNCA6IElWMV9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwNSA6IElWM19WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwNiA6IElWNV9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwNyA6IElWNl9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwOCA6IFMwX1dMSU5FMSAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEwOSA6IFMxX1ZJX1ZTWU5DMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExMCA6IFMxX0xPX1ZTWU5DMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExMSA6IFMxX1ZTWU5DRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExMiA6IFMxX1ZGSUVMRDEgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExMyA6IElWMl9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExNCA6IElWNF9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExNSA6IFMxX1dMSU5FMSAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExNiA6IE9JUl9WSV9WU1lOQzEgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExNyA6IE9JUl9MT19WU1lOQzEgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExOCA6IE9JUl9WTElORTEgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDExOSA6IE9JUl9WRklFTEQxICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyMCA6IElWN19WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyMSA6IElWOF9WQlVGRVJSMSAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyMiA6IE9JUl9XTElORTEgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyMyA6IElNUkRJICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyNCA6IElNUjJJMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyNSA6IElNUjJJMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyNiA6IEpFREkgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyNyA6IEpEVEkgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyOCA6IENNUDAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEyOSA6IENNUDEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzMCA6IElOVDAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzMSA6IElOVDEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzMiA6IElOVDIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzMyA6IElOVDMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzNCA6IE9TVE1JMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzNSA6IE9TVE1JMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzNiA6IENNSSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzNyA6IFdUT1VUICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzOCA6IElUSSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDEzOSA6IFRHSTBBICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0MCA6IFRHSTBCICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0MSA6IFRHSTBDICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0MiA6IFRHSTBEICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0MyA6IFRHSTBWICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0NCA6IFRHSTBFICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0NSA6IFRHSTBGICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0NiA6IFRHSTFBICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0NyA6IFRHSTFCICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0OCA6IFRHSTFWICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE0OSA6IFRHSTFVICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1MCA6IFRHSTJBICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1MSA6IFRHSTJCICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1MiA6IFRHSTJWICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1MyA6IFRHSTJVICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1NCA6IFRHSTNBICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1NSA6IFRHSTNCICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1NiA6IFRHSTNDICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1NyA6IFRHSTNEICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1OCA6IFRHSTNWICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE1OSA6IFRHSTRBICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2MCA6IFRHSTRCICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2MSA6IFRHSTRDICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2MiA6IFRHSTREICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2MyA6IFRHSTRWICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2NCA6IENNSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2NSA6IENNSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2NiA6IFNHREVJMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2NyA6IFNHREVJMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2OCA6IFNHREVJMiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE2OSA6IFNHREVJMyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3MCA6IEFESSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3MSA6IEFEV0FSICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3MiA6IFNTSUkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3MyA6IFNTSVJYSTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3NCA6IFNTSVRYSTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3NSA6IFNTSUkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3NiA6IFNTSVJYSTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3NyA6IFNTSVRYSTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3OCA6IFNTSUkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE3OSA6IFNTSVJUSTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4MCA6IFNTSUkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4MSA6IFNTSVJYSTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4MiA6IFNTSVRYSTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4MyA6IFNTSUk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4NCA6IFNTSVJUSTQgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4NSA6IFNTSUk1ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4NiA6IFNTSVJYSTUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4NyA6IFNTSVRYSTUgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4OCA6IFNQRElGSSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE4OSA6IFRFSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5MCA6IFJJMCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5MSA6IFRJMCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5MiA6IFNQSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5MyA6IFNUSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5NCA6IE5BS0kwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5NSA6IEFMSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5NiA6IFRNT0kwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5NyA6IFRFSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5OCA6IFJJMSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDE5OSA6IFRJMSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwMCA6IFNQSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwMSA6IFNUSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwMiA6IE5BS0kxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwMyA6IEFMSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwNCA6IFRNT0kxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwNSA6IFRFSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwNiA6IFJJMiAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwNyA6IFRJMiAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwOCA6IFNQSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIwOSA6IFNUSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxMCA6IE5BS0kyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxMSA6IEFMSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxMiA6IFRNT0kyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxMyA6IFRFSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxNCA6IFJJMyAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxNSA6IFRJMyAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxNiA6IFNQSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxNyA6IFNUSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxOCA6IE5BS0kzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIxOSA6IEFMSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyMCA6IFRNT0kzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyMSA6IEJSSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyMiA6IEVSSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyMyA6IFJYSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyNCA6IFRYSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyNSA6IEJSSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyNiA6IEVSSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyNyA6IFJYSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyOCA6IFRYSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIyOSA6IEJSSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzMCA6IEVSSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzMSA6IFJYSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzMiA6IFRYSTIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzMyA6IEJSSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzNCA6IEVSSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzNSA6IFJYSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzNiA6IFRYSTMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzNyA6IEJSSTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzOCA6IEVSSTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDIzOSA6IFJYSTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0MCA6IFRYSTQgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0MSA6IEJSSTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0MiA6IEVSSTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0MyA6IFJYSTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0NCA6IFRYSTUgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0NSA6IEJSSTYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0NiA6IEVSSTYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0NyA6IFJYSTYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0OCA6IFRYSTYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI0OSA6IEJSSTcgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1MCA6IEVSSTcgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1MSA6IFJYSTcgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1MiA6IFRYSTcgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1MyA6IEdFUkkgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1NCA6IFJGSSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1NSA6IENGUlhJMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1NiA6IENFUkkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1NyA6IENUWEkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1OCA6IENGUlhJMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI1OSA6IENFUkkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2MCA6IENUWEkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2MSA6IENGUlhJMiAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2MiA6IENFUkkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2MyA6IENUWEkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2NCA6IENGUlhJMyAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2NSA6IENFUkkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2NiA6IENUWEkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2NyA6IENGUlhJNCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2OCA6IENFUkk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI2OSA6IENUWEk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3MCA6IFNQRUkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3MSA6IFNQUkkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3MiA6IFNQVEkwICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3MyA6IFNQRUkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3NCA6IFNQUkkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3NSA6IFNQVEkxICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3NiA6IFNQRUkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3NyA6IFNQUkkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3OCA6IFNQVEkyICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI3OSA6IFNQRUkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4MCA6IFNQUkkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4MSA6IFNQVEkzICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4MiA6IFNQRUk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4MyA6IFNQUkk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4NCA6IFNQVEk0ICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4NSA6IElFQkJURCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4NiA6IElFQkJURVJSICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4NyA6IElFQkJUU1RBICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4OCA6IElFQkJUViAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI4OSA6IElTWSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5MCA6IElFUlIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5MSA6IElUQVJHICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5MiA6IElTRUMgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5MyA6IElCVUYgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5NCA6IElSRUFEWSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5NSA6IEZMU1RFICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5NiA6IEZMVEVOREkgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5NyA6IEZMVFJFUTBJICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5OCA6IEZMVFJFUTFJICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDI5OSA6IE1NQzAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwMCA6IE1NQzEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwMSA6IE1NQzIgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwMiA6IFNESEkwXzMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwMyA6IFNESEkwXzAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwNCA6IFNESEkwXzEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwNSA6IFNESEkxXzMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwNiA6IFNESEkxXzAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwNyA6IFNESEkxXzEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwOCA6IEFSTSAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMwOSA6IFBSRCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxMCA6IENVUCAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxMSA6IFNDVUFJMCAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxMiA6IFNDVUFJMSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxMyA6IFNDVUZESTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxNCA6IFNDVUZESTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxNSA6IFNDVUZESTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxNiA6IFNDVUZESTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxNyA6IFNDVUZVSTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxOCA6IFNDVUZVSTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMxOSA6IFNDVUZVSTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyMCA6IFNDVUZVSTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyMSA6IFNDVURWSTAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyMiA6IFNDVURWSTEgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyMyA6IFNDVURWSTIgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyNCA6IFNDVURWSTMgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyNSA6IE1MQkNJICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyNiA6IE1MQlNJICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyNyA6IERSQzAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyOCA6IERSQzEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMyOSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzMCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzMSA6IExJTkkwX0lOVF9UICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzMiA6IExJTkkwX0lOVF9SICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzMyA6IExJTkkwX0lOVF9TICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzNCA6IExJTkkwX0lOVF9NICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzNSA6IExJTkkxX0lOVF9UICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzNiA6IExJTkkxX0lOVF9SICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzNyA6IExJTkkxX0lOVF9TICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzOCA6IExJTkkxX0lOVF9NICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDMzOSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0MCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0MSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0MiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0MyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0NCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0NSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0NiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0NyA6IEVSSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0OCA6IFJYSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM0OSA6IFRYSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1MCA6IFRFSTAgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1MSA6IEVSSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1MiA6IFJYSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1MyA6IFRYSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1NCA6IFRFSTEgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1NSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1NiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1NyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1OCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM1OSA6IEVUSEVSSSAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2MCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2MSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2MiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2MyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2NCA6IENFVUkgICAgICAgICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2NSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2NiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2NyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2OCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM2OSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3MCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3MSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3MiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3MyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3NCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3NSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3NiA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3NyA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3OCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM3OSA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4MCA6IDxyZXNlcnZlZD4gICAgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4MSA6IEgyWE1MQl9FUlJJTlQgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4MiA6IEgyWElDMV9FUlJJTlQgKi8NCi0gICAgVXNlcmRlZl9JTlRDX0R1bW15X0ludGVycnVwdCwgICAgICAgIC8qIDM4MyA6IFgySFBFUkkxX0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODQgOiBYMkhQRVJJMl9FUlJJTlQqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzg1IDogWDJIUEVSSTM0X0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODYgOiBYMkhQRVJJNV9FUlJJTlQqLw0KLSAgICBVc2VyZGVmX0lOVENfRHVtbXlfSW50ZXJydXB0LCAgICAgICAgLyogMzg3IDogWDJIUEVSSTY3X0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODggOiBYMkhEQkdSX0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzODkgOiBYMkhCU0NfRVJSSU5UICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTAgOiBYMkhTUEkxX0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTEgOiBYMkhTUEkyX0VSUklOVCovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTIgOiBQUlJJICAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTMgOiBJRkVJMCAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTQgOiBPRkZJMCAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTUgOiBQRlZFSTAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTYgOiBJRkVJMSAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTcgOiBPRkZJMSAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTggOiBQRlZFSTEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiAzOTkgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDAgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDEgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDIgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDMgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDQgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDUgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDYgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDcgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDggOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MDkgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTAgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTEgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTIgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTMgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTQgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTUgOiA8cmVzZXJ2ZWQ+ICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTYgOiBUSU5UMCAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTcgOiBUSU5UMSAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTggOiBUSU5UMiAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MTkgOiBUSU5UMyAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjAgOiBUSU5UNCAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjEgOiBUSU5UNSAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjIgOiBUSU5UNiAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjMgOiBUSU5UNyAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjQgOiBUSU5UOCAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjUgOiBUSU5UOSAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjYgOiBUSU5UMTAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjcgOiBUSU5UMTEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjggOiBUSU5UMTIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MjkgOiBUSU5UMTMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzAgOiBUSU5UMTQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzEgOiBUSU5UMTUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzIgOiBUSU5UMTYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzMgOiBUSU5UMTcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzQgOiBUSU5UMTggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzUgOiBUSU5UMTkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzYgOiBUSU5UMjAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzcgOiBUSU5UMjEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzggOiBUSU5UMjIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0MzkgOiBUSU5UMjMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDAgOiBUSU5UMjQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDEgOiBUSU5UMjUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDIgOiBUSU5UMjYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDMgOiBUSU5UMjcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDQgOiBUSU5UMjggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDUgOiBUSU5UMjkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDYgOiBUSU5UMzAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDcgOiBUSU5UMzEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDggOiBUSU5UMzIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NDkgOiBUSU5UMzMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTAgOiBUSU5UMzQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTEgOiBUSU5UMzUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTIgOiBUSU5UMzYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTMgOiBUSU5UMzcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTQgOiBUSU5UMzggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTUgOiBUSU5UMzkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTYgOiBUSU5UNDAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTcgOiBUSU5UNDEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTggOiBUSU5UNDIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NTkgOiBUSU5UNDMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjAgOiBUSU5UNDQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjEgOiBUSU5UNDUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjIgOiBUSU5UNDYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjMgOiBUSU5UNDcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjQgOiBUSU5UNDggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjUgOiBUSU5UNDkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjYgOiBUSU5UNTAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjcgOiBUSU5UNTEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjggOiBUSU5UNTIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NjkgOiBUSU5UNTMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzAgOiBUSU5UNTQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzEgOiBUSU5UNTUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzIgOiBUSU5UNTYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzMgOiBUSU5UNTcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzQgOiBUSU5UNTggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzUgOiBUSU5UNTkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzYgOiBUSU5UNjAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzcgOiBUSU5UNjEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzggOiBUSU5UNjIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0NzkgOiBUSU5UNjMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODAgOiBUSU5UNjQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODEgOiBUSU5UNjUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODIgOiBUSU5UNjYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODMgOiBUSU5UNjcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODQgOiBUSU5UNjggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODUgOiBUSU5UNjkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODYgOiBUSU5UNzAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODcgOiBUSU5UNzEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODggOiBUSU5UNzIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0ODkgOiBUSU5UNzMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTAgOiBUSU5UNzQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTEgOiBUSU5UNzUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTIgOiBUSU5UNzYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTMgOiBUSU5UNzcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTQgOiBUSU5UNzggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTUgOiBUSU5UNzkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTYgOiBUSU5UODAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTcgOiBUSU5UODEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTggOiBUSU5UODIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA0OTkgOiBUSU5UODMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDAgOiBUSU5UODQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDEgOiBUSU5UODUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDIgOiBUSU5UODYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDMgOiBUSU5UODcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDQgOiBUSU5UODggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDUgOiBUSU5UODkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDYgOiBUSU5UOTAgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDcgOiBUSU5UOTEgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDggOiBUSU5UOTIgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MDkgOiBUSU5UOTMgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTAgOiBUSU5UOTQgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTEgOiBUSU5UOTUgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTIgOiBUSU5UOTYgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTMgOiBUSU5UOTcgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTQgOiBUSU5UOTggICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTUgOiBUSU5UOTkgICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTYgOiBUSU5UMTAwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTcgOiBUSU5UMTAxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTggOiBUSU5UMTAyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MTkgOiBUSU5UMTAzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjAgOiBUSU5UMTA0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjEgOiBUSU5UMTA1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjIgOiBUSU5UMTA2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjMgOiBUSU5UMTA3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjQgOiBUSU5UMTA4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjUgOiBUSU5UMTA5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjYgOiBUSU5UMTEwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjcgOiBUSU5UMTExICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjggOiBUSU5UMTEyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MjkgOiBUSU5UMTEzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzAgOiBUSU5UMTE0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzEgOiBUSU5UMTE1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzIgOiBUSU5UMTE2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzMgOiBUSU5UMTE3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzQgOiBUSU5UMTE4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzUgOiBUSU5UMTE5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzYgOiBUSU5UMTIwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzcgOiBUSU5UMTIxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzggOiBUSU5UMTIyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1MzkgOiBUSU5UMTIzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDAgOiBUSU5UMTI0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDEgOiBUSU5UMTI1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDIgOiBUSU5UMTI2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDMgOiBUSU5UMTI3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDQgOiBUSU5UMTI4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDUgOiBUSU5UMTI5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDYgOiBUSU5UMTMwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDcgOiBUSU5UMTMxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDggOiBUSU5UMTMyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NDkgOiBUSU5UMTMzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTAgOiBUSU5UMTM0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTEgOiBUSU5UMTM1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTIgOiBUSU5UMTM2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTMgOiBUSU5UMTM3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTQgOiBUSU5UMTM4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTUgOiBUSU5UMTM5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTYgOiBUSU5UMTQwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTcgOiBUSU5UMTQxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTggOiBUSU5UMTQyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NTkgOiBUSU5UMTQzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjAgOiBUSU5UMTQ0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjEgOiBUSU5UMTQ1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjIgOiBUSU5UMTQ2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjMgOiBUSU5UMTQ3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjQgOiBUSU5UMTQ4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjUgOiBUSU5UMTQ5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjYgOiBUSU5UMTUwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjcgOiBUSU5UMTUxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjggOiBUSU5UMTUyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NjkgOiBUSU5UMTUzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzAgOiBUSU5UMTU0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzEgOiBUSU5UMTU1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzIgOiBUSU5UMTU2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzMgOiBUSU5UMTU3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzQgOiBUSU5UMTU4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzUgOiBUSU5UMTU5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzYgOiBUSU5UMTYwICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzcgOiBUSU5UMTYxICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzggOiBUSU5UMTYyICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1NzkgOiBUSU5UMTYzICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODAgOiBUSU5UMTY0ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODEgOiBUSU5UMTY1ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODIgOiBUSU5UMTY2ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODMgOiBUSU5UMTY3ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODQgOiBUSU5UMTY4ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODUgOiBUSU5UMTY5ICAgICAgICovDQotICAgIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQsICAgICAgICAvKiA1ODYgOiBUSU5UMTcwICAgICAgICovDQotfTsNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0lOVENfUmVnaXN0SW50RnVuYw0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQxNl90IGludF9pZA0KLSogICAgICAgICAgICAgIDogdm9pZCAoKiBmdW5jKSh1aW50MzJfdCkNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0lOVENfUmVnaXN0SW50RnVuYyh1aW50MTZfdCBpbnRfaWQsIHZvaWQgKCogZnVuYykodWludDMyX3QgaW50X3NlbnNlKSkNCi17DQotICAgIGludGNfZnVuY190YWJsZVtpbnRfaWRdID0gZnVuYzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9JTlRDX1VuZGVmSWQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MTZfdCBpbnRfaWQNCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX0lOVENfVW5kZWZJZCh1aW50MTZfdCBpbnRfaWQpDQotew0KLSAgICB3aGlsZSAoMSkNCi0gICAgew0KLSAgICAgICAgLyogRG8gTm90aGluZyAqLw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiBub25lDQotKiBSZXR1cm4gVmFsdWUgOiBub25lDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIFVzZXJkZWZfSU5UQ19EdW1teV9JbnRlcnJ1cHQodWludDMyX3QgaW50X3NlbnNlKQ0KLXsNCi0gICAgLyogRG8gTm90aGluZyAqLw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX0ZJUV9IYW5kbGVyRXhlDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfRklRX0hhbmRsZXJFeGUodm9pZCkNCi17DQotfQ0KLQ0KLS8qIFRoZSBmdW5jdGlvbiBjYWxsZWQgYnkgdGhlIFJUT1MgcG9ydCBsYXllciBhZnRlciBpdCBoYXMgbWFuYWdlZCBpbnRlcnJ1cHQNCi1lbnRyeS4gKi8NCi12b2lkIHZBcHBsaWNhdGlvbklSUUhhbmRsZXIoIHVpbnQzMl90IHVsSUNDSUFSICkNCi17DQotdWludDMyX3QgdWxJbnRlcnJ1cHRJRDsNCi0NCi0JLyogUmUtZW5hYmxlIGludGVycnVwdHMuICovDQotICAgIF9fZW5hYmxlX2lycSgpOw0KLQ0KLQkvKiBUaGUgSUQgb2YgdGhlIGludGVycnVwdCBjYW4gYmUgb2J0YWluZWQgYnkgYml0d2lzZSBhbmRpbmcgdGhlIElDQ0lBUiB2YWx1ZQ0KLQl3aXRoIDB4M0ZGLiAqLw0KLQl1bEludGVycnVwdElEID0gdWxJQ0NJQVIgJiAweDNGRlVMOw0KLQ0KLQkvKiBDYWxsIHRoZSBmdW5jdGlvbiBpbnN0YWxsZWQgaW4gdGhlIGFycmF5IG9mIGluc3RhbGxlZCBoYW5kbGVyIGZ1bmN0aW9ucy4gKi8NCi0JaW50Y19mdW5jX3RhYmxlWyB1bEludGVycnVwdElEIF0oIDAgKTsNCi19DQotDQotDQotLyogRU5EIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS9vc3RtX2RyaXZlci9vc3RtLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS9vc3RtX2RyaXZlci9vc3RtLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMWMwZmMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL29zdG0vb3N0bV9kcml2ZXIvb3N0bS5jCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgIDogb3N0bS5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBPUyB0aW1lciBkZXZpY2UgZHJpdmVyIChJbml0aWFsaXplIHByb2Nlc3MpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgICAgIC8qIERldmljZSBEcml2ZXIgY29tbW9uIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfb3N0bS5oIiAgICAgICAgICAgIC8qIE9TVE0gRHJpdmVyIGhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiA9PT09IE9TVE0gSC9XID09PT0gKi8NCi0jZGVmaW5lIE9TVE1fQ0hfVE9UQUwgICAgICAgKDIpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUltcG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAoZnJvbSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9pZCBPU1RNX09wZW4odm9sYXRpbGUgc3RydWN0IHN0X29zdG1fbiAqIG9zdG0pOw0KLXN0YXRpYyB2b2lkIE9TVE1fQ2xvc2Uodm9sYXRpbGUgc3RydWN0IHN0X29zdG1fbiAqIG9zdG0sIHVpbnQzMl90ICogY291bnQpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfT1NUTV9Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDMyX3QgY2hhbm5lbA0KLSogICAgICAgICAgICAgIDogdWludDMyX3QgbW9kZQ0KLSogICAgICAgICAgICAgIDogdWludDMyX3QgY3ljbGUNCi0qIFJldHVybiBWYWx1ZSA6IERFVkRSVl9TVUNDRVNTDQotKiAgICAgICAgICAgICAgOiBERVZEUlZfRVJST1INCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBSX09TVE1fSW5pdCh1aW50MzJfdCBjaGFubmVsLCB1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBjeWNsZSkNCi17DQotICAgIGludDMyX3QgcmV0Ow0KLQ0KLSAgICBpZiAoKGNoYW5uZWwgPj0gT1NUTV9DSF9UT1RBTCkgfHwgKG1vZGUgPiBPU1RNX01PREVfQ09NUEFSRSkpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgc3dpdGNoIChjaGFubmVsKQ0KLSAgICB7DQotICAgICAgICBjYXNlIERFVkRSVl9DSF8wOg0KLSAgICAgICAgICAgIHJldCA9IFVzZXJkZWZfT1NUTTBfSW5pdChtb2RlLCBjeWNsZSk7DQotICAgICAgICBicmVhazsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzE6DQotICAgICAgICAgICAgcmV0ID0gVXNlcmRlZl9PU1RNMV9Jbml0KG1vZGUsIGN5Y2xlKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICByZXQgPSBERVZEUlZfRVJST1I7DQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLQ0KLSAgICByZXR1cm4gcmV0Ow0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBSX09TVE1fT3Blbg0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IGludDMyX3QgY2hhbm5lbA0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfT1NUTV9PcGVuKHVpbnQzMl90IGNoYW5uZWwpDQotew0KLSAgICBpZiAoY2hhbm5lbCA+PSBPU1RNX0NIX1RPVEFMKQ0KLSAgICB7DQotICAgICAgICByZXR1cm4gREVWRFJWX0VSUk9SOw0KLSAgICB9DQotDQotICAgIHN3aXRjaCAoY2hhbm5lbCkNCi0gICAgew0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMDoNCi0gICAgICAgICAgICBPU1RNX09wZW4oJk9TVE0wKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMToNCi0gICAgICAgICAgICBPU1RNX09wZW4oJk9TVE0xKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgIGJyZWFrOw0KLSAgICB9DQotDQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogUl9PU1RNX0Nsb3NlDQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDMyX3QgY2hhbm5lbA0KLSogUmV0dXJuIFZhbHVlIDogREVWRFJWX1NVQ0NFU1MNCi0qICAgICAgICAgICAgICA6IERFVkRSVl9FUlJPUg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfT1NUTV9DbG9zZSh1aW50MzJfdCBjaGFubmVsLCB1aW50MzJfdCAqIGNvdW50KQ0KLXsNCi0gICAgaWYgKGNoYW5uZWwgPj0gT1NUTV9DSF9UT1RBTCkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBzd2l0Y2ggKGNoYW5uZWwpDQotICAgIHsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzA6DQotICAgICAgICAgICAgT1NUTV9DbG9zZSgmT1NUTTAsIGNvdW50KTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgY2FzZSBERVZEUlZfQ0hfMToNCi0gICAgICAgICAgICBPU1RNX0Nsb3NlKCZPU1RNMSwgY291bnQpOw0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBpbnRfb3N0bTBfaW50ZXJydXB0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogbm9uZQ0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfT1NUTV9JbnRlcnJ1cHQodWludDMyX3QgY2hhbm5lbCkNCi17DQotICAgIGlmIChjaGFubmVsID49IE9TVE1fQ0hfVE9UQUwpDQotICAgIHsNCi0gICAgICAgIHJldHVybiBERVZEUlZfRVJST1I7DQotICAgIH0NCi0NCi0gICAgc3dpdGNoIChjaGFubmVsKQ0KLSAgICB7DQotICAgICAgICBjYXNlIERFVkRSVl9DSF8wOg0KLSAgICAgICAgICAgIFVzZXJkZWZfT1NUTTBfSW50KCk7DQotICAgICAgICBicmVhazsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzE6DQotICAgICAgICAgICAgVXNlcmRlZl9PU1RNMV9JbnQoKTsNCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgIGJyZWFrOw0KLSAgICB9DQotDQotICAgIHJldHVybiBERVZEUlZfU1VDQ0VTUzsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IE9TVE1fT3Blbg0KLSogRGVzY3JpcHRpb24gIDogVGhpcyBmdW5jdGlvbiBvcGVucyBPU1RNLg0KLSogQXJndW1lbnRzICAgIDogdm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqIG9zdG0NCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyB2b2lkIE9TVE1fT3Blbih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICogb3N0bSkNCi17DQotICAgIG9zdG0tPk9TVE1uVFMuQklULk9TVE1uVFMgPSAxOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBPU1RNX0Nsb3NlDQotKiBEZXNjcmlwdGlvbiAgOiBUaGlzIGZ1bmN0aW9uIGNsb3NlcyBPU1RNLg0KLSogQXJndW1lbnRzICAgIDogdm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqIG9zdG0NCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotc3RhdGljIHZvaWQgT1NUTV9DbG9zZSh2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICogb3N0bSwgdWludDMyX3QgKiBjb3VudCkNCi17DQotICAgIG9zdG0tPk9TVE1uVFQuQklULk9TVE1uVFQgPSAxOw0KLSAgICAqY291bnQgPSBvc3RtLT5PU1RNbkNOVDsNCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS91c2VyZGVmL29zdG1fdXNlcmRlZi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL29zdG0vdXNlcmRlZi9vc3RtX3VzZXJkZWYuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk1ZGRmMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvb3N0bS91c2VyZGVmL29zdG1fdXNlcmRlZi5jCisrKyAvZGV2L251bGwKQEAgLTEsMTM0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IG9zdG1fdXNlcmRlZi5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGV2aWNlKHMpICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgOiBEUy01IFZlciA1LjEzDQotKiAgICAgICAgICAgICAgOiBBUk0gQ29tcGxpZXINCi0qIE9TICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gT1MgdGltZXIgZGV2aWNlIGRyaXZlciAoVXNlciBkZWZpbmUgZnVuY3Rpb24pDQotKiBPcGVyYXRpb24gICAgOiANCi0qIExpbWl0YXRpb25zICA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2X2Rydi5oIiAgICAgICAgICAgICAgICAvKiBEZXZpY2UgRHJpdmVyIGNvbW1vbiBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X29zdG0uaCIgICAgICAgICAgICAvKiBPU1RNIERyaXZlciBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X2ludGMuaCIgICAgICAgICAgICAvKiBJTlRDIERyaXZlciBIZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0jaW5jbHVkZSAibWFpbi5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIFAwX0NMT0NLX0ZSRVFVRU5DWV9rSHogICgzMy4zMzMgKiAxMDAwKSAgICAgLyogMzMuMzMzTUh6ICovDQotI2RlZmluZSBNQVhfQ1lDTEVfbXNlYyAgICAgICAgICAoMHhGRkZGRkZGRiAvIFAwX0NMT0NLX0ZSRVFVRU5DWV9rSHopDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUV4cG9ydGVkIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyAodG8gYmUgYWNjZXNzZWQgYnkgb3RoZXIgZmlsZXMpDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1Qcml2YXRlIGdsb2JhbCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdGF0aWMgdm9sYXRpbGUgdWludDhfdCBvc3RtX2ludF9mbGc7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9PU1RNMF9Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDMyX3QgbW9kZQ0KLSogICAgICAgICAgICAgIDogdWludDMyX3QgY3ljbGUNCi0qIFJldHVybiBWYWx1ZSA6IERFVkRSVl9TVUNDRVNTDQotKiAgICAgICAgICAgICAgOiBERVZEUlZfRVJST1INCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBVc2VyZGVmX09TVE0wX0luaXQodWludDMyX3QgbW9kZSwgdWludDMyX3QgY3ljbGUpDQotew0KLSAgICByZXR1cm4gREVWRFJWX1NVQ0NFU1M7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfT1NUTTFfSW5pdA0KLSogRGVzY3JpcHRpb24gIDoNCi0qIEFyZ3VtZW50cyAgICA6IHVpbnQzMl90IG1vZGUNCi0qICAgICAgICAgICAgICA6IHVpbnQzMl90IGN5Y2xlDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgVXNlcmRlZl9PU1RNMV9Jbml0KHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IGN5Y2xlKQ0KLXsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfT1NUTTBfSW50DQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfT1NUTTBfSW50KHZvaWQpDQotew0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGdW5jdGlvbiBOYW1lOiBVc2VyZGVmX09TVE0xX0ludA0KLSogRGVzY3JpcHRpb24gIDogDQotKiBBcmd1bWVudHMgICAgOiANCi0qIFJldHVybiBWYWx1ZSA6IG5vbmUNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBVc2VyZGVmX09TVE0xX0ludCh2b2lkKQ0KLXsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9PU1RNMF9XYWl0SW50DQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfT1NUTTBfV2FpdEludCh2b2lkKQ0KLXsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRnVuY3Rpb24gTmFtZTogVXNlcmRlZl9PU1RNMV9XYWl0SW50DQotKiBEZXNjcmlwdGlvbiAgOiANCi0qIEFyZ3VtZW50cyAgICA6IA0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfT1NUTTFfV2FpdEludCh2b2lkKQ0KLXsNCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvc2NpZl91YXJ0L3NjaWZfdWFydF9kcml2ZXIvc2NpZl91YXJ0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2RyaXZlcnMvc2NpZl91YXJ0L3NjaWZfdWFydF9kcml2ZXIvc2NpZl91YXJ0LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1N2YwYTIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL3NjaWZfdWFydC9zY2lmX3VhcnRfZHJpdmVyL3NjaWZfdWFydC5jCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgOiBzY2lmX3VhcnRfaW5pdGlhbGl6ZS5jDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBTQ0lGIFVBUlQgZGV2aWNlIGRyaXZlciAoSW5pdGlhbGl6ZSBwcm9jZXNzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2luY2x1ZGUgInJfdHlwZWRlZnMuaCINCi0jaW5jbHVkZSAiZGV2X2Rydi5oIiAgICAgICAgICAgICAgICAvKiBEZXZpY2UgRHJpdmVyIGNvbW1vbiBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiZGV2ZHJ2X3NjaWZfdWFydC5oIiAgICAgICAvKiBVQVJUIERyaXZlciBoZWFkZXIgKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBTQ0lGX1VBUlRfQ0hfVE9UQUwgICAgICAoOCkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFJfU0NJRl9VQVJUX0luaXQNCi0qIERlc2NyaXB0aW9uICA6DQotKiBBcmd1bWVudHMgICAgOiB1aW50MzJfdCBjaGFubmVsDQotKiAgICAgICAgICAgICAgOiB1aW50MzJfdCBtb2RlDQotKiAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgIDogICBTQ0lGX1VBUlRfTU9ERV9XDQotKiAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgIDogICBTQ0lGX1VBUlRfTU9ERV9SDQotKiAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgIDogICBTQ0lGX1VBUlRfTU9ERV9SVw0KLSogICAgICAgICAgICAgIDogdWludDE2X3QgY2tzDQotKiAgICAgICAgICAgICAgOiB1aW50OF90IHNjYnJyDQotKiBSZXR1cm4gVmFsdWUgOiBERVZEUlZfU1VDQ0VTUyAgIDogU3VjY2Vzcw0KLSogICAgICAgICAgICAgIDogREVWRFJWX0VSUk9SICAgICA6IEVycm9yDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9TQ0lGX1VBUlRfSW5pdCh1aW50MzJfdCBjaGFubmVsLCB1aW50MzJfdCBtb2RlLCB1aW50MTZfdCBja3MsIHVpbnQ4X3Qgc2NicnIpDQotew0KLSAgICBpZiAoKGNoYW5uZWwgPj0gU0NJRl9VQVJUX0NIX1RPVEFMKSB8fCAobW9kZSA8IFNDSUZfVUFSVF9NT0RFX1cpIHx8IChtb2RlID4gU0NJRl9VQVJUX01PREVfUlcpIHx8IChja3MgPiAzKSkNCi0gICAgew0KLSAgICAgICAgcmV0dXJuIERFVkRSVl9FUlJPUjsNCi0gICAgfQ0KLQ0KLSAgICBzd2l0Y2ggKGNoYW5uZWwpDQotICAgIHsNCi0gICAgICAgIGNhc2UgREVWRFJWX0NIXzI6DQotICAgICAgICAgICAgVXNlcmRlZl9TQ0lGMl9VQVJUX0luaXQobW9kZSwgY2tzLCBzY2Jycik7DQotICAgICAgICBicmVhazsNCi0gICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgLyogRG8gTm90aGluZyAqLw0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIERFVkRSVl9TVUNDRVNTOw0KLX0NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvZHJpdmVycy9zY2lmX3VhcnQvdXNlcmRlZi9zY2lmX3VhcnRfdXNlcmRlZi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL3NjaWZfdWFydC91c2VyZGVmL3NjaWZfdWFydF91c2VyZGVmLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhOTViYzEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9kcml2ZXJzL3NjaWZfdWFydC91c2VyZGVmL3NjaWZfdWFydF91c2VyZGVmLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc2NpZl91YXJ0X3VzZXJkZWYuYw0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERldmljZShzKSAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgIDogRFMtNSBWZXIgNS4xMw0KLSogICAgICAgICAgICAgIDogQVJNIENvbXBsaWVyDQotKiBPUyAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFNDSUYgVUFSVCBkZXZpY2UgZHJpdmVyIChVc2VyIGRlZmluZSBmdW5jdGlvbikNCi0qIE9wZXJhdGlvbiAgICA6IA0KLSogTGltaXRhdGlvbnMgIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSAicl90eXBlZGVmcy5oIg0KLSNpbmNsdWRlICJkZXZfZHJ2LmgiICAgICAgICAgICAgICAgIC8qIERldmljZSBEcml2ZXIgY29tbW9uIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfc2NpZl91YXJ0LmgiICAgICAgIC8qIFVBUlQgRHJpdmVyIGhlYWRlciAqLw0KLSNpbmNsdWRlICJkZXZkcnZfaW50Yy5oIiAgICAgICAgICAgIC8qIElOVEMgRHJpdmVyIEhlYWRlciAqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW1wb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIChmcm9tIG90aGVyIGZpbGVzKQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRXhwb3J0ZWQgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zICh0byBiZSBhY2Nlc3NlZCBieSBvdGhlciBmaWxlcykNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVByaXZhdGUgZ2xvYmFsIHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZ1bmN0aW9uIE5hbWU6IFVzZXJkZWZfU0NJRjJfVUFSVF9Jbml0DQotKiBEZXNjcmlwdGlvbiAgOg0KLSogQXJndW1lbnRzICAgIDogdWludDhfdCAgbW9kZQ0KLSogICAgICAgICAgICAgIDogdWludDE2X3QgY2tzDQotKiAgICAgICAgICAgICAgOiB1aW50OF90ICBzY2Jycg0KLSogUmV0dXJuIFZhbHVlIDogbm9uZQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFVzZXJkZWZfU0NJRjJfVUFSVF9Jbml0KHVpbnQ4X3QgbW9kZSwgdWludDE2X3QgY2tzLCB1aW50OF90IHNjYnJyKQ0KLXsNCi0gICAgLyogPT09PSBTQ0lGIGluaXRpYWwgc2V0dGluZyA9PT09ICovDQotICAgIC8qIC0tLS0gU2VyaWFsIGNvbnRyb2wgcmVnaXN0ZXIgKFNDU0NSMikgc2V0dGluZyAtLS0tICovDQotICAgIC8qIFNDSUYgdHJhbnNtaXR0aW5nIGFuZCByZWNlaXZpbmcgb3BlcmF0aW9ucyBzdG9wICovDQotICAgIFNDSUYyLlNDU0NSLldPUkQgPSAweDAwMDA7DQotDQotICAgIGlmIChTQ0lGX1VBUlRfTU9ERV9XID09IChtb2RlICYgU0NJRl9VQVJUX01PREVfVykpDQotICAgIHsNCi0gICAgICAgIC8qIC0tLS0gRklGTyBjb250cm9sIHJlZ2lzdGVyIChTQ0ZDUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAgICAgU0NJRjIuU0NGQ1IuQklULlRGUlNUID0gMTsgIC8qIFRyYW5zbWl0IEZJRk8gcmVzZXQgKi8NCi0gICAgfQ0KLQ0KLSAgICBpZiAoU0NJRl9VQVJUX01PREVfUiA9PSAobW9kZSAmIFNDSUZfVUFSVF9NT0RFX1IpKQ0KLSAgICB7DQotICAgICAgICAvKiAtLS0tIEZJRk8gY29udHJvbCByZWdpc3RlciAoU0NGQ1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgICAgIC8qIFNDSUYgdHJhbnNtaXR0aW5nIGFuZCByZWNlaXZpbmcgb3BlcmF0aW9ucyBzdG9wICovDQotICAgIAlTQ0lGMi5TQ0ZDUi5CSVQuUkZSU1QgPSAxOw0KLQ0KLSAgICAJLyogUmVjZWl2ZSBGSUZPIGRhdGEgcmVnaXN0ZXIgcmVzZXQgKi8NCi0gICAgfQ0KLQ0KLSAgICAvKiAtLS0tIFNlcmlhbCBzdGF0dXMgcmVnaXN0ZXIoU0NGU1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogRVIsQlJLLERSIGJpdCBjbGVhciAqLw0KLSAgICBTQ0lGMi5TQ0ZTUi5XT1JEICY9IDB4RkY2RTsNCi0NCi0gICAgLyogLS0tLSBMaW5lIHN0YXR1cyByZWdpc3RlciAoU0NMU1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogT1JFUiBiaXQgY2xlYXIgKi8NCi0gICAgU0NJRjIuU0NMU1IuQklULk9SRVIgID0gMDsNCi0NCi0gICAgLyogLS0tLSBTZXJpYWwgY29udHJvbCByZWdpc3RlciAoU0NTQ1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogQicwMCA6IEludGVybmFsIENMSyAqLw0KLSAgICBTQ0lGMi5TQ1NDUi5CSVQuQ0tFICAgPSAweDA7DQotDQotICAgIC8qIC0tLS0gU2VyaWFsIG1vZGUgcmVnaXN0ZXIgKFNDU01SMikgc2V0dGluZyAtLS0tICovDQotICAgIC8qICBDb21tdW5pY2F0aW9uIG1vZGUgMDogQXN5bmNocm9ub3VzIG1vZGUgCQkJKi8NCi0gICAgLyogIENoYXJhY3RlciBsZW5ndGggICAwOiA4LWJpdCBkYXRhCQkJCQkqLw0KLSAgICAvKiAgUGFyaXR5IGVuYWJsZSAgICAgIDA6IEFkZCBhbmQgY2hlY2sgYXJlIGRpc2FibGVkCSovDQotICAgIC8qICBTdG9wIGJpdCBsZW5ndGggICAgMDogMSBzdG9wIGJpdAkJCQkJKi8NCi0gICAgLyogIENsb2NrIHNlbGVjdCAgICAgICBja3MoYXJndW1lbnQpIAkJCQkJKi8NCi0gICAgU0NJRjIuU0NTTVIuV09SRCA9IGNrcyAmIDB4MDAwMzsNCi0NCi0gICAgLyogLS0tLSBTZXRzIHRoZSBTZXJpYWwgZXh0ZW5zaW9uIG1vZGUgcmVnaXN0ZXIgKFNDRU1SMikgLS0tLSAqLw0KLSAgICAvKiBCYXVkIHJhdGUgZ2VuZXJhdG9yIGRvdWJsZS1zcGVlZCBtb2RlLCAwOiBOb3JtYWwgbW9kZSAJKi8NCi0gICAgLyogQmFzZSBjbG9jayBzZWxlY3QgaW4gYXN5bmNocm9ub3VzIG1vZGUsIAkJCQkJKi8NCi0gICAgLyogICAwOiBCYXNlIGNsb2NrIGlzIDE2IHRpbWVzIHRoZSBiaXQgcmF0ZSAJCQkJKi8NCi0gICAgU0NJRjIuU0NFTVIuV09SRCA9IDB4MDAwMDsNCi0NCi0gICAgLyogLS0tLSBCaXQgcmF0ZSByZWdpc3RlciAoU0NCUlIyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgU0NJRjIuU0NCUlIuQllURSA9IHNjYnJyOw0KLQ0KLSAgICAvKiAtLS0tIEZJRk8gY29udHJvbCByZWdpc3RlciAoU0NGQ1IyKSBzZXR0aW5nIC0tLS0gKi8NCi0gICAgLyogIFJUUyBvdXRwdXQgYWN0aXZlIHRyaWdnZXIgICAgICAgIDpJbml0aWFsIHZhbHVlCSovDQotICAgIC8qICBSZWNlaXZlIEZJRk8gZGF0YSB0cmlnZ2VyICAgICAgICA6MS1kYXRhCQkqLw0KLSAgICAvKiAgVHJhbnNtaXQgRklGTyBkYXRhIHRyaWdnZXIgICAgICAgOjAtZGF0YQkJKi8NCi0gICAgLyogIE1vZGVtIGNvbnRyb2wgZW5hYmxlICAgICAgICAgICAgIDpEaXNhYmxlZAkJKi8NCi0gICAgLyogIFJlY2VpdmUgRklGTyBkYXRhIHJlZ2lzdGVyIHJlc2V0IDpEaXNhYmxlZAkJKi8NCi0gICAgLyogIExvb3AtYmFjayB0ZXN0ICAgICAgICAgICAgICAgICAgIDpEaXNhYmxlZCAJCSovDQotICAgIFNDSUYyLlNDRkNSLldPUkQgPSAweDAwMzA7DQotDQotICAgIC8qIC0tLS0gU2VyaWFsIHBvcnQgcmVnaXN0ZXIgKFNDU1BUUjIpIHNldHRpbmcgLS0tLSAqLw0KLSAgICAvKiBTZXJpYWwgcG9ydCAgYnJlYWsgb3V0cHV0KFNQQjJJTykgIDE6IEVuYWJsZWQgKi8NCi0gICAgLyogU2VyaWFsIHBvcnQgYnJlYWsgZGF0YShTUEIyRFQpICAxOiBIaWdoLWxldmVsICovDQotICAgIFNDSUYyLlNDU1BUUi5XT1JEIHw9IDB4MDAwMzsNCi19DQotDQotLyogRW5kIG9mIEZpbGUgKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2hhbmRsZXIvaXJxZmlxX2hhbmRsZXIucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9pcnFmaXFfaGFuZGxlci5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMDM0N2ZiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9pcnFmaXFfaGFuZGxlci5zCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiBpcnFmaXFfaGFuZGxlci5zDQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuMTMNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyDQotOyogICAgICAgICAgICAgICA6DQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gSVJRLCBGSVEgaGFuZGxlcg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOyBTdGFuZGFyZCBkZWZpbml0aW9ucyBvZiBtb2RlIGJpdHMgYW5kIGludGVycnVwdCAoSSAmIEYpIGZsYWdzIGluIFBTUnMNCi1JTlRDX0lDQ0lBUl9BRERSICAgIEVRVSAJMHhFODIwMjAwQw0KLUlOVENfSUNDRU9JUl9BRERSICAgRVFVIAkweEU4MjAyMDEwDQotDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW50cnkgcG9pbnQgZm9yIHRoZSBGSVEgaGFuZGxlcg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JUFJFU0VSVkU4DQotCUFSRUEgSVJRX0ZJUV9IQU5ETEVSLCBDT0RFLCBSRUFET05MWQ0KLQ0KLQlJTVBPUlQJRmlxSGFuZGxlcl9JbnRlcnJ1cHQNCi0NCi0JRVhQT1JUICBmaXFfaGFuZGxlcg0KLQ0KLWZpcV9oYW5kbGVyDQotCUJMCUZpcUhhbmRsZXJfSW50ZXJydXB0DQotDQotZmlxX2hhbmRsZXJfZW5kDQotCUIJZmlxX2hhbmRsZXJfZW5kDQotDQotDQotTGl0ZXJhbHMzDQotCUxUT1JHDQotDQotCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9yZXNldF9oYW5kbGVyLnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2hhbmRsZXIvcmVzZXRfaGFuZGxlci5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWFlNjQyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaGFuZGxlci9yZXNldF9oYW5kbGVyLnMKKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiByZXNldF9oYW5kbGVyLnMNCi07KiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLTsqIERldmljZShzKSAgICAgOiBBcmFnb24NCi07KiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotOyogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi07KiAgICAgICAgICAgICAgIDogDQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gUmVzZXQgaGFuZGxlcg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi07KiAgICAgICAgIDogMjMuMDUuMjAxMiAwLjAxDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotOyBTdGFuZGFyZCBkZWZpbml0aW9ucyBvZiBtb2RlIGJpdHMgYW5kIGludGVycnVwdCAoSSAmIEYpIGZsYWdzIGluIFBTUnMNCi1VU1JfTU9ERQkJRVFVCQkweDEwDQotRklRX01PREUJCUVRVQkJMHgxMQ0KLUlSUV9NT0RFCQlFUVUJCTB4MTINCi1TVkNfTU9ERQkJRVFVCQkweDEzDQotQUJUX01PREUJCUVRVQkJMHgxNw0KLVVORF9NT0RFCQlFUVUJCTB4MWINCi1TWVNfTU9ERQkJRVFVCQkweDFmDQotVGh1bV9iaXQJCUVRVQkJMHgyMAkJCTsgQ1BTUi9TUFNSIFRodW1iIGJpdA0KLQ0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEVudHJ5IHBvaW50IGZvciB0aGUgUmVzZXQgaGFuZGxlcg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JUFJFU0VSVkU4DQotCUFSRUEgUkVTRVRfSEFORExFUiwgQ09ERSwgUkVBRE9OTFkNCi0NCi0JSU1QT1JUICB8fEltYWdlJCRBUk1fTElCX1NUQUNLJCRaSSQkTGltaXR8fCAgIDsgTGlua2VyIHN5bWJvbCBmcm9tIHNjYXR0ZXIgZmlsZQ0KLQlJTVBPUlQgIHx8SW1hZ2UkJElSUV9TVEFDSyQkWkkkJExpbWl0fHwgICAgICAgOyBMaW5rZXIgc3ltYm9sIGZyb20gc2NhdHRlciBmaWxlDQotCUlNUE9SVCAgfHxJbWFnZSQkRklRX1NUQUNLJCRaSSQkTGltaXR8fCAgICAgICA7IExpbmtlciBzeW1ib2wgZnJvbSBzY2F0dGVyIGZpbGUNCi0JSU1QT1JUICB8fEltYWdlJCRTVkNfU1RBQ0skJFpJJCRMaW1pdHx8ICAgICAgIDsgTGlua2VyIHN5bWJvbCBmcm9tIHNjYXR0ZXIgZmlsZQ0KLQlJTVBPUlQgIHx8SW1hZ2UkJEFCVF9TVEFDSyQkWkkkJExpbWl0fHwgICAgICAgOyBMaW5rZXIgc3ltYm9sIGZyb20gc2NhdHRlciBmaWxlDQotDQotCUlNUE9SVAlQZXJpcGhlcmFsX0Jhc2ljSW5pdA0KLQlJTVBPUlQJaW5pdF9UVEINCi0JSU1QT1JUICBfX21haW4NCi0NCi0JRVhQT1JUCXJlc2V0X2hhbmRsZXINCi0JRVhQT1JUCXVuZGVmaW5lZF9oYW5kbGVyDQotCUVYUE9SVCAgc3ZjX2hhbmRsZXINCi0JRVhQT1JUICBwcmVmZXRjaF9oYW5kbGVyDQotCUVYUE9SVCAgYWJvcnRfaGFuZGxlcg0KLQlFWFBPUlQgIHJlc2VydmVkX2hhbmRsZXINCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBSZXNldCBIYW5kbGVyDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLXJlc2V0X2hhbmRsZXIJRlVOQ1RJT04ge30NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBEaXNhYmxlIGNhY2hlIGFuZCBNTVUgaW4gY2FzZSBpdCB3YXMgbGVmdCBlbmFibGVkIGZyb20gYW4gZWFybGllciBydW4NCi07IFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBkb25lIGZyb20gYSBjb2xkIHJlc2V0IA0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTVJDICBwMTUsIDAsIHIwLCBjMSwgYzAsIDAJCTs7OyBSZWFkIENQMTUgU3lzdGVtIENvbnRyb2wgcmVnaXN0ZXIgKFNDVExSKQ0KLQlCSUMgIHIwLCByMCwgIygweDEgPDwgMTIpCQk7OzsgQ2xlYXIgSSBiaXQgMTIgdG8gZGlzYWJsZSBJIENhY2hlDQotCUJJQyAgcjAsIHIwLCAjKDB4MSA8PCAgMikJCTs7OyBDbGVhciBDIGJpdCAgMiB0byBkaXNhYmxlIEQgQ2FjaGUNCi0JQklDICByMCwgcjAsICMweDEJCQkJOzs7IENsZWFyIE0gYml0ICAwIHRvIGRpc2FibGUgTU1VDQotCU1DUiAgcDE1LCAwLCByMCwgYzEsIGMwLCAwCQk7OzsgV3JpdGUgdmFsdWUgYmFjayB0byBDUDE1IFN5c3RlbSBDb250cm9sIHJlZ2lzdGVyDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgU2V0dGluZyB1cCBTdGFjayBBcmVhDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQkJCQkJCQkJCTs7OyBTVkMgTW9kZShEZWZhdWx0KQ0KLQlMRFIgIHNwLCA9fHxJbWFnZSQkU1ZDX1NUQUNLJCRaSSQkTGltaXR8fA0KLQ0KLQlDUFMgICNJUlFfTU9ERQkJCQkJOzs7IElSUSBNb2RlDQotCUxEUiAgc3AsID18fEltYWdlJCRJUlFfU1RBQ0skJFpJJCRMaW1pdHx8DQotDQotCUNQUyAgI0ZJUV9NT0RFCQkJCQk7OzsgRklRIE1vZGUNCi0JTERSICBzcCwgPXx8SW1hZ2UkJEZJUV9TVEFDSyQkWkkkJExpbWl0fHwNCi0NCi0JQ1BTICAjQUJUX01PREUJCQkJCTs7OyBBQlQgTW9kZQ0KLQlMRFIgIHNwLCA9fHxJbWFnZSQkQUJUX1NUQUNLJCRaSSQkTGltaXR8fA0KLQ0KLTs7IEZyZWVSVE9TIE5vdGU6DQotOzsgRnJlZVJUT1MgZG9lcyBub3QgbmVlZCBhIFN5c3RlbS9Vc2VyIG1vZGUgc3RhY2sgYXMgb25seSB0YXNrcyBydW4gaW4NCi07OyBTeXN0ZW0vVXNlciBtb2RlLCBhbmQgdGhlaXIgc3RhY2sgaXMgYWxsb2NhdGVkIHdoZW4gdGhlIHRhc2sgaXMgY3JlYXRlZC4NCi07OyBUaGVyZWZvcmUgdGhlIENTVEFDSyBhbGxvY2F0ZWQgaW4gdGhlIGxpbmtlciBzY3JpcHQgaXMgaW5zdGVhZCBnaXZlbiB0bw0KLTs7IFN1cGVydmlzb3IgbW9kZSwgYW5kIG1haW4oKSBpcyBjYWxsZWQgZnJvbSBTdXBlcnZpc29yIG1vZGUuDQotDQotCUNQUyAgI1NWQ19NT0RFCQkJCQk7OzsgU1ZDIE1vZGUNCi0NCi07OyBTVkMgbW9kZSBTdGFjayBwb2ludGVyIGlzIHNldCB1cCBBUk1fTElCX1NUQUNLIGluIHRoZSBfX21haW4oKS0+X19lbnRyeSgpDQotCUxEUiAgc3AsID18fEltYWdlJCRBUk1fTElCX1NUQUNLJCRaSSQkTGltaXR8fA0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFRMQiBtYWludGVuYW5jZSwgSW52YWxpZGF0ZSBEYXRhIGFuZCBJbnN0cnVjdGlvbiBUTEJzDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlNT1YgIHIwLCMwDQotCU1DUiAgcDE1LCAwLCByMCwgYzgsIGM3LCAwCQk7OzsgQ29ydGV4LUE5IEktVExCIGFuZCBELVRMQiBpbnZhbGlkYXRpb24gKFRMQklBTEwpDQotDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEludmFsaWRhdGUgaW5zdHJ1Y3Rpb24gY2FjaGUsIGFsc28gZmx1c2hlcyBCVEFDDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTU9WICByMCwgIzAJCQkJCQk7OzsgU0JaDQotCU1DUiAgcDE1LCAwLCByMCwgYzcsIGM1LCAwCQk7OzsgSUNJQUxMVSAtIEludmFsaWRhdGUgZW50aXJlIEkgQ2FjaGUsIGFuZCBmbHVzaGVzIGJyYW5jaCB0YXJnZXQgY2FjaGUNCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBDYWNoZSBJbnZhbGlkYXRpb24gY29kZSBmb3IgQ29ydGV4LUE5DQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQk7OzsgSW52YWxpZGF0ZSBMMSBJbnN0cnVjdGlvbiBDYWNoZQ0KLQlNUkMgIHAxNSwgMSwgcjAsIGMwLCBjMCwgMQkJOzs7IFJlYWQgQ2FjaGUgTGV2ZWwgSUQgUmVnaXN0ZXIgKENMSURSKQ0KLQlUU1QgIHIwLCAjMHgzCQkJCQk7OzsgSGFydmFyZCBDYWNoZT8NCi0JTU9WICByMCwgIzANCi0JTUNSTkUgICBwMTUsIDAsIHIwLCBjNywgYzUsIDAJOzs7IEludmFsaWRhdGUgSW5zdHJ1Y3Rpb24gQ2FjaGUNCi0NCi0JOzs7IEludmFsaWRhdGUgRGF0YS9VbmlmaWVkIENhY2hlcw0KLQlNUkMgIHAxNSwgMSwgcjAsIGMwLCBjMCwgMQkJOzs7IFJlYWQgQ0xJRFINCi0JQU5EUyByMywgcjAsICMweDA3MDAwMDAwCQk7OzsgRXh0cmFjdCBjb2hlcmVuY3kgbGV2ZWwNCi0JTU9WICByMywgcjMsIExTUiAjMjMJCQk7OzsgVG90YWwgY2FjaGUgbGV2ZWxzIDw8IDENCi0JQkVRICBGaW5pc2hlZAkJCQkJOzs7IElmIDAsIG5vIG5lZWQgdG8gY2xlYW4NCi0NCi0JTU9WICByMTAsICMwCQkJCQk7OzsgUjEwIGhvbGRzIGN1cnJlbnQgY2FjaGUgbGV2ZWwgPDwgMQ0KLUxvb3AxDQotCUFERCAgcjIsIHIxMCwgcjEwLCBMU1IgIzEJCTs7OyBSMiBob2xkcyBjYWNoZSAiU2V0IiBwb3NpdGlvbiANCi0JTU9WICByMSwgcjAsIExTUiByMgkJCQk7OzsgQm90dG9tIDMgYml0cyBhcmUgdGhlIENhY2hlLXR5cGUgZm9yIHRoaXMgbGV2ZWwNCi0JQU5EICByMSwgcjEsICM3CQkJCQk7OzsgSXNvbGF0ZSB0aG9zZSBsb3dlciAzIGJpdHMNCi0JQ01QICByMSwgIzINCi0JQkxUICBTa2lwCQkJCQkJOzs7IE5vIGNhY2hlIG9yIG9ubHkgaW5zdHJ1Y3Rpb24gY2FjaGUgYXQgdGhpcyBsZXZlbA0KLQ0KLQlNQ1IgIHAxNSwgMiwgcjEwLCBjMCwgYzAsIDAJCTs7OyBXcml0ZSB0aGUgQ2FjaGUgU2l6ZSBzZWxlY3Rpb24gcmVnaXN0ZXIgKENTU0VMUikNCi0JSVNCCQkJCQkJCQk7OzsgSVNCIHRvIHN5bmMgdGhlIGNoYW5nZSB0byB0aGUgQ2FjaGVTaXplSUQgcmVnDQotCU1SQyAgcDE1LCAxLCByMSwgYzAsIGMwLCAwCQk7OzsgUmVhZHMgY3VycmVudCBDYWNoZSBTaXplIElEIHJlZ2lzdGVyIChDQ1NJRFIpDQotCUFORCAgcjIsIHIxLCAjNwkJCQkJOzs7IEV4dHJhY3QgdGhlIGxpbmUgbGVuZ3RoIGZpZWxkDQotCUFERCAgcjIsIHIyLCAjNAkJCQkJOzs7IEFkZCA0IGZvciB0aGUgbGluZSBsZW5ndGggb2Zmc2V0IChsb2cyIDE2IGJ5dGVzKQ0KLQlMRFIgIHI0LCA9MHgzRkYNCi0JQU5EUyByNCwgcjQsIHIxLCBMU1IgIzMJCQk7OzsgUjQgaXMgdGhlIG1heCBudW1iZXIgb24gdGhlIHdheSBzaXplIChyaWdodCBhbGlnbmVkKQ0KLQlDTFogIHI1LCByNCAgICAgICAgICAgICAgICAgICAgIDs7OyBSNSBpcyB0aGUgYml0IHBvc2l0aW9uIG9mIHRoZSB3YXkgc2l6ZSBpbmNyZW1lbnQNCi0JTERSICByNywgPTB4N0ZGRg0KLQlBTkRTIHI3LCByNywgcjEsIExTUiAjMTMJCTs7OyBSNyBpcyB0aGUgbWF4IG51bWJlciBvZiB0aGUgaW5kZXggc2l6ZSAocmlnaHQgYWxpZ25lZCkNCi1Mb29wMg0KLQlNT1YgIHI5LCByNAkJCQkJCTs7OyBSOSB3b3JraW5nIGNvcHkgb2YgdGhlIG1heCB3YXkgc2l6ZSAocmlnaHQgYWxpZ25lZCkNCi0NCi1Mb29wMw0KLQlPUlIgIHIxMSwgcjEwLCByOSwgTFNMIHI1CQk7OzsgRmFjdG9yIGluIHRoZSBXYXkgbnVtYmVyIGFuZCBjYWNoZSBudW1iZXIgaW50byBSMTENCi0JT1JSICByMTEsIHIxMSwgcjcsIExTTCByMgkJOzs7IEZhY3RvciBpbiB0aGUgU2V0IG51bWJlcg0KLQlNQ1IgIHAxNSwgMCwgcjExLCBjNywgYzYsIDIJCTs7OyBJbnZhbGlkYXRlIGJ5IFNldC9XYXkgKERDSVNXKQ0KLQlTVUJTIHI5LCByOSwgIzEJCQkJCTs7OyBEZWNyZW1lbnQgdGhlIFdheSBudW1iZXINCi0JQkdFICBMb29wMw0KLQlTVUJTIHI3LCByNywgIzEJCQkJCTs7OyBEZWNyZW1lbnQgdGhlIFNldCBudW1iZXINCi0JQkdFICBMb29wMg0KLVNraXANCi0JQUREICByMTAsIHIxMCwgIzIJCQkJOzs7IGluY3JlbWVudCB0aGUgY2FjaGUgbnVtYmVyDQotCUNNUCAgcjMsIHIxMA0KLQlCR1QgIExvb3AxDQotDQotRmluaXNoZWQNCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBUVEIgaW5pdGlhbGl6ZQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JQkwJaW5pdF9UVEIJCQkJCTs7OyBJbml0aWFsaXplIFRUQg0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBTZXR1cCBkb21haW4gY29udHJvbCByZWdpc3RlciAtIEVuYWJsZSBhbGwgZG9tYWlucyB0byBjbGllbnQgbW9kZQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCU1SQyAgcDE1LCAwLCByMCwgYzMsIGMwLCAwCQkJOzs7IFJlYWQgRG9tYWluIEFjY2VzcyBDb250cm9sIFJlZ2lzdGVyIChEQUNSKQ0KLQlMRFIgIHIwLCA9MHg1NTU1NTU1NQkJCQk7OzsgSW5pdGlhbGl6ZSBldmVyeSBkb21haW4gZW50cnkgdG8gYjAxIChjbGllbnQpDQotCU1DUiAgcDE1LCAwLCByMCwgYzMsIGMwLCAwCQkJOzs7IFdyaXRlIERvbWFpbiBBY2Nlc3MgQ29udHJvbCBSZWdpc3Rlcg0KLQ0KLQkJCUlGIHtUQVJHRVRfRkVBVFVSRV9ORU9OfSB8fCB7VEFSR0VUX0ZQVV9WRlB9DQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW5hYmxlIGFjY2VzcyB0byBORU9OL1ZGUCBieSBlbmFibGluZyBhY2Nlc3MgdG8gQ29wcm9jZXNzb3JzIDEwIGFuZCAxMS4NCi07IEVuYWJsZXMgRnVsbCBBY2Nlc3MgaS5lLiBpbiBib3RoIHByaXZpbGVnZWQgYW5kIG5vbiBwcml2aWxlZ2VkIG1vZGVzDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLQlNUkMgIHAxNSwgMCwgcjAsIGMxLCBjMCwgMgkJCTs7OyBSZWFkIENvcHJvY2Vzc29yIEFjY2VzcyBDb250cm9sIFJlZ2lzdGVyIChDUEFDUikNCi0JT1JSICByMCwgcjAsICMoMHhGIDw8IDIwKQkJCTs7OyBFbmFibGUgYWNjZXNzIHRvIENQIDEwICYgMTENCi0JTUNSICBwMTUsIDAsIHIwLCBjMSwgYzAsIDIJCQk7OzsgV3JpdGUgQ29wcm9jZXNzb3IgQWNjZXNzIENvbnRyb2wgUmVnaXN0ZXIgKENQQUNSKQ0KLQlJU0INCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IFN3aXRjaCBvbiB0aGUgVkZQIGFuZCBORU9OIGhhcmR3YXJlDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCU1PViAgcjAsICMweDQwMDAwMDAwDQotCVZNU1IgRlBFWEMsIHIwCQkJCQkJOzs7IFdyaXRlIEZQRVhDIHJlZ2lzdGVyLCBFTiBiaXQgc2V0DQotDQotCQkJRU5ESUYNCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgRW5hYmxlIE1NVQ0KLTsgTGVhdmluZyB0aGUgY2FjaGVzIGRpc2FibGVkIHVudGlsIGFmdGVyIHNjYXR0ZXIgbG9hZGluZyhfX21haW4pLg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCU1SQyAgcDE1LCAwLCByMCwgYzEsIGMwLCAwCQkJOzs7IFJlYWQgQ1AxNSBTeXN0ZW0gQ29udHJvbCByZWdpc3RlciAoU0NUTFIpDQotCUJJQyAgcjAsIHIwLCAjKDB4MSA8PCAxMikJCQk7OzsgQ2xlYXIgSSBiaXQgMTIgdG8gZGlzYWJsZSBJIENhY2hlDQotCUJJQyAgcjAsIHIwLCAjKDB4MSA8PCAgMikJCQk7OzsgQ2xlYXIgQyBiaXQgIDIgdG8gZGlzYWJsZSBEIENhY2hlDQotCUJJQyAgcjAsIHIwLCAjMHgyCQkJCQk7OzsgQ2xlYXIgQSBiaXQgIDEgdG8gZGlzYWJsZSBzdHJpY3QgYWxpZ25tZW50IGZhdWx0IGNoZWNraW5nDQotCU9SUiAgcjAsIHIwLCAjMHgxCQkJCQk7OzsgU2V0IE0gYml0IDAgdG8gZW5hYmxlIE1NVSBiZWZvcmUgc2NhdHRlciBsb2FkaW5nDQotCU1DUiAgcDE1LCAwLCByMCwgYzEsIGMwLCAwCQkJOzs7IFdyaXRlIENQMTUgU3lzdGVtIENvbnRyb2wgcmVnaXN0ZXINCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBIYXJkd2FyZSBpbml0aWFsaXplDQotOyBJbml0aWFsaXplIENQRywgQlNDIGZvciBDUzAgYW5kIENTMSwgYW5kIGVuYWJsZSBPbi1DaGlwIERhdGEtUmV0ZW50aW9uIFJBTQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JTERSICByMTIsPVBlcmlwaGVyYWxfQmFzaWNJbml0CQk7OzsgU2F2ZSB0aGlzIGluIHJlZ2lzdGVyIGZvciBwb3NzaWJsZSBsb25nIGp1bXANCi0JQkxYICByMTIJCQkJCQkJOzs7IEhhcmR3YXJlIEluaXRpYWxpemUNCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLTsgQnJhbmNoIHRvIF9fbWFpbg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCUxEUiAgcjEyLD1fX21haW4JCQkJCTs7OyBTYXZlIHRoaXMgaW4gcmVnaXN0ZXIgZm9yIHBvc3NpYmxlIGxvbmcganVtcA0KLQlCWCAgIHIxMgkJCQkJCQk7OzsgQnJhbmNoIHRvIF9fbWFpbiAgQyBsaWJyYXJ5IGVudHJ5IHBvaW50DQotDQotDQotCUVOREZVTkMNCi0NCi1MaXRlcmFsczINCi0JTFRPUkcNCi0NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBPdGhlciBIYW5kbGVyDQotOz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLXVuZGVmaW5lZF9oYW5kbGVyDQotCUIJdW5kZWZpbmVkX2hhbmRsZXIJCQkJOzs7IMW9wqnigJ3DlOKAmW7GkuKAue+/vVvGknYNCi0NCi1zdmNfaGFuZGxlcg0KLQlCCXN2Y19oYW5kbGVyCQkJCQkJOzs7IMW9wqnigJ3DlOKAmW7GkuKAue+/vVvGknYNCi0NCi1wcmVmZXRjaF9oYW5kbGVyDQotCUIJcHJlZmV0Y2hfaGFuZGxlcgkJCQk7Ozsgxb3CqeKAncOU4oCZbsaS4oC577+9W8aSdg0KLQ0KLWFib3J0X2hhbmRsZXINCi0JQglhYm9ydF9oYW5kbGVyCQkJCQk7Ozsgxb3CqeKAncOU4oCZbsaS4oC577+9W8aSdg0KLQ0KLXJlc2VydmVkX2hhbmRsZXINCi0JQglyZXNlcnZlZF9oYW5kbGVyCQkJCTs7OyDFvcKp4oCdw5TigJluxpLigLnvv71bxpJ2DQotDQotDQotCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9jb21tYW5kLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvY29tbWFuZC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNGE0NzllLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9jb21tYW5kLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGNvbW1hbmQuaA0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIENvbW1hbmQgaGVhZGVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX0NPTU1BTkRfSF8NCi0jZGVmaW5lIF9DT01NQU5EX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdHlwZWRlZiBzdHJ1Y3QgY29tbWFuZF9saXN0DQotew0KLSAgICBjaGFyX3QgICpjbWRfc3RyOw0KLSAgICBpbnQzMl90ICgqY21kZXhlKShpbnQzMl90LCBjaGFyX3QgKiopOw0KLSAgICBpbnQzMl90ICgqaGVscGV4ZSkodm9pZCk7DQotfSBjb21tYW5kX2xpc3RfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBmb3IgYXJndW1lbnRzICovDQotI2RlZmluZSBDT01NQU5EX01BWF9BUkdMRU5HVEggICAoMjU2KQ0KLQ0KLSNkZWZpbmUgQ09NTUFORF9FWElUICAgICAgICAgICAgKC0xMDApDQotI2RlZmluZSBDT01NQU5EX1NVQ0NFU1MgICAgICAgICAoMCkNCi0jZGVmaW5lIENPTU1BTkRfRVJST1IgICAgICAgICAgICgtMSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBDb21tYW5kRXhlKGNoYXJfdCAqIGJ1ZmYpOw0KLXZvaWQgICAgQ29tbWFuZFNldENtZExpc3QoY29uc3QgY29tbWFuZF9saXN0X3QgKiBjbWQpOw0KLQ0KLSNlbmRpZiAgLyogX0NPTU1BTkRfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZfZHJ2LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2X2Rydi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmM5ZDg2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZfZHJ2LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGRldl9kcnYuaA0KLSogJFJldjogJA0KLSogJERhdGU6OiAgICAgICAgICAgICAgICAgICAgICAgICAgICQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIERldmljZSBkcml2ZXIgaGVhZGVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX0RFVl9EUlZfSF8NCi0jZGVmaW5lIF9ERVZfRFJWX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgREVWRFJWX1NVQ0NFU1MgICAgICAoMCkgICAgIC8qIFN1Y2Nlc3MgKi8NCi0jZGVmaW5lIERFVkRSVl9FUlJPUiAgICAgICAgKC0xKSAgICAvKiBGYWlsdXJlICovDQotDQotI2RlZmluZSBERVZEUlZfRkxBR19PRkYgICAgICgwKSAgICAgLyogRmxhZyBPRkYgKi8NCi0jZGVmaW5lIERFVkRSVl9GTEFHX09OICAgICAgKDEpICAgICAvKiBGbGFnIE9OICAqLw0KLQ0KLXR5cGVkZWYgZW51bSBkZXZkcnZfY2gNCi17DQotICAgIERFVkRSVl9DSF8wLCAgICAgICAgICAgIC8qIENoYW5uZWwgMCAgKi8NCi0gICAgREVWRFJWX0NIXzEsICAgICAgICAgICAgLyogQ2hhbm5lbCAxICAqLw0KLSAgICBERVZEUlZfQ0hfMiwgICAgICAgICAgICAvKiBDaGFubmVsIDIgICovDQotICAgIERFVkRSVl9DSF8zLCAgICAgICAgICAgIC8qIENoYW5uZWwgMyAgKi8NCi0gICAgREVWRFJWX0NIXzQsICAgICAgICAgICAgLyogQ2hhbm5lbCA0ICAqLw0KLSAgICBERVZEUlZfQ0hfNSwgICAgICAgICAgICAvKiBDaGFubmVsIDUgICovDQotICAgIERFVkRSVl9DSF82LCAgICAgICAgICAgIC8qIENoYW5uZWwgNiAgKi8NCi0gICAgREVWRFJWX0NIXzcsICAgICAgICAgICAgLyogQ2hhbm5lbCA3ICAqLw0KLSAgICBERVZEUlZfQ0hfOCwgICAgICAgICAgICAvKiBDaGFubmVsIDggICovDQotICAgIERFVkRSVl9DSF85LCAgICAgICAgICAgIC8qIENoYW5uZWwgOSAgKi8NCi0gICAgREVWRFJWX0NIXzEwLCAgICAgICAgICAgLyogQ2hhbm5lbCAxMCAqLw0KLSAgICBERVZEUlZfQ0hfMTEsICAgICAgICAgICAvKiBDaGFubmVsIDExICovDQotICAgIERFVkRSVl9DSF8xMiwgICAgICAgICAgIC8qIENoYW5uZWwgMTIgKi8NCi0gICAgREVWRFJWX0NIXzEzLCAgICAgICAgICAgLyogQ2hhbm5lbCAxMyAqLw0KLSAgICBERVZEUlZfQ0hfMTQsICAgICAgICAgICAvKiBDaGFubmVsIDE0ICovDQotICAgIERFVkRSVl9DSF8xNSAgICAgICAgICAgIC8qIENoYW5uZWwgMTUgKi8NCi19IGRldmRydl9jaF90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0jZW5kaWYgIC8qIF9ERVZfRFJWX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2NvbW1vbi5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9jb21tb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlYTEzMC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2NvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBkZXZkcnZfY29tbW9uLmgNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBDb21tb24gZHJpdmVyIGhlYWRlcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9ERVZEUlZfQ09NTU9OX0hfDQotI2RlZmluZSBfREVWRFJWX0NPTU1PTl9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEJTQ19BUkVBX0NTMCAgICAoMHgwMSkgICAgICAgICAgLyogQ1MwICovDQotI2RlZmluZSBCU0NfQVJFQV9DUzEgICAgKDB4MDIpICAgICAgICAgIC8qIENTMSAqLw0KLSNkZWZpbmUgQlNDX0FSRUFfQ1MyICAgICgweDA0KSAgICAgICAgICAvKiBDUzIgKi8NCi0jZGVmaW5lIEJTQ19BUkVBX0NTMyAgICAoMHgwOCkgICAgICAgICAgLyogQ1MzICovDQotI2RlZmluZSBCU0NfQVJFQV9DUzQgICAgKDB4MTApICAgICAgICAgIC8qIENTNCAqLw0KLSNkZWZpbmUgQlNDX0FSRUFfQ1M1ICAgICgweDIwKSAgICAgICAgICAvKiBDUzUgKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotdm9pZCBSX0JTQ19Jbml0KHVpbnQ4X3QgYXJlYSk7DQotdm9pZCBVc2VyZGVmX0JTQ19DUzBJbml0KHZvaWQpOw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1MxSW5pdCh2b2lkKTsNCi12b2lkIFVzZXJkZWZfQlNDX0NTMkluaXQodm9pZCk7DQotdm9pZCBVc2VyZGVmX0JTQ19DUzNJbml0KHZvaWQpOw0KLXZvaWQgVXNlcmRlZl9CU0NfQ1M0SW5pdCh2b2lkKTsNCi12b2lkIFVzZXJkZWZfQlNDX0NTNUluaXQodm9pZCk7DQotDQotI2VuZGlmICAvKiBfREVWRFJWX0NPTU1PTl9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9pbnRjLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2ludGMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTM3OWFiZi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X2ludGMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IGRldmRydl9pbnRjLmgNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBJTlRDIGRldmljZSBkcml2ZXIgaGVhZGVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX0RFVkRSVl9JTlRDX0hfDQotI2RlZmluZSBfREVWRFJWX0lOVENfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBJTlRDX0lEX1RPVEFMICAgICAgICAgICAoNTg3KQ0KLQ0KLSNkZWZpbmUgSU5UQ19JRF9TVzAgICAgICAgICAgICAgKDApDQotI2RlZmluZSBJTlRDX0lEX1NXMSAgICAgICAgICAgICAoMSkgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1cyICAgICAgICAgICAgICgyKSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzMgICAgICAgICAgICAgKDMpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXNCAgICAgICAgICAgICAoNCkgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1c1ICAgICAgICAgICAgICg1KSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzYgICAgICAgICAgICAgKDYpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXNyAgICAgICAgICAgICAoNykgICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1c4ICAgICAgICAgICAgICg4KSAgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzkgICAgICAgICAgICAgKDkpICAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXMTAgICAgICAgICAgICAoMTApICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1cxMSAgICAgICAgICAgICgxMSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzEyICAgICAgICAgICAgKDEyKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NXMTMgICAgICAgICAgICAoMTMpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1cxNCAgICAgICAgICAgICgxNCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVzE1ICAgICAgICAgICAgKDE1KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1BNVUlSUTAgICAgICAgICAoMTYpICAgIC8qIENQVSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ09NTVJYMCAgICAgICAgICgxNykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DT01NVFgwICAgICAgICAgKDE4KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NUSUlSUTAgICAgICAgICAoMTkpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVJRMCAgICAgICAgICAgICgzMikgICAgLyogSVJRICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlExICAgICAgICAgICAgKDMzKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSUTIgICAgICAgICAgICAoMzQpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVJRMyAgICAgICAgICAgICgzNSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlE0ICAgICAgICAgICAgKDM2KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lSUTUgICAgICAgICAgICAoMzcpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVJRNiAgICAgICAgICAgICgzOCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUlE3ICAgICAgICAgICAgKDM5KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1BMMzEwRVJSICAgICAgICAoNDApDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDAgICAgICAgICAoNDEpDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDEgICAgICAgICAoNDIpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMiAgICAgICAgICg0MykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQzICAgICAgICAgKDQ0KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDQgICAgICAgICAoNDUpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UNSAgICAgICAgICg0NikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQ2ICAgICAgICAgKDQ3KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDcgICAgICAgICAoNDgpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UOCAgICAgICAgICg0OSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQ5ICAgICAgICAgKDUwKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDEwICAgICAgICAoNTEpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMTEgICAgICAgICg1MikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQxMiAgICAgICAgKDUzKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUlOVDEzICAgICAgICAoNTQpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRE1BSU5UMTQgICAgICAgICg1NSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9ETUFJTlQxNSAgICAgICAgKDU2KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0RNQUVSUiAgICAgICAgICAoNTcpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVVNCSTAgICAgICAgICAgICg3MykNCi0jZGVmaW5lIElOVENfSURfVVNCSTEgICAgICAgICAgICg3NCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9WSV9WU1lOQzAgICAgKDc1KQ0KLSNkZWZpbmUgSU5UQ19JRF9TMF9MT19WU1lOQzAgICAgKDc2KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX1ZTWU5DRVJSMCAgICAoNzcpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfR1IzX1ZMSU5FMCAgICAgICg3OCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9WRklFTEQwICAgICAgKDc5KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWMV9WQlVGRVJSMCAgICAoODApICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYzX1ZCVUZFUlIwICAgICg4MSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjVfVkJVRkVSUjAgICAgKDgyKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWNl9WQlVGRVJSMCAgICAoODMpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzBfV0xJTkUwICAgICAgICg4NCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WSV9WU1lOQzAgICAgKDg1KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX0xPX1ZTWU5DMCAgICAoODYpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzFfVlNZTkNFUlIwICAgICg4NykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WRklFTEQwICAgICAgKDg4KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWMl9WQlVGRVJSMCAgICAoODkpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY0X1ZCVUZFUlIwICAgICg5MCkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9XTElORTAgICAgICAgKDkxKSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WSV9WU1lOQzAgICAoOTIpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX0xPX1ZTWU5DMCAgICg5MykgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PSVJfVlNZTkNFUlIwICAgKDk0KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WRklFTEQwICAgICAoOTUpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY3X1ZCVUZFUlIwICAgICg5NikgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjhfVkJVRkVSUjAgICAgKDk3KSAgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9XTElORTAgICAgICAoOTgpICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzBfVklfVlNZTkMxICAgICg5OSkgICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9MT19WU1lOQzEgICAgKDEwMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MwX1ZTWU5DRVJSMSAgICAoMTAxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfR1IzX1ZMSU5FMSAgICAgICgxMDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMF9WRklFTEQxICAgICAgKDEwMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWMV9WQlVGRVJSMSAgICAoMTA0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVYzX1ZCVUZFUlIxICAgICgxMDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjVfVkJVRkVSUjEgICAgKDEwNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWNl9WQlVGRVJSMSAgICAoMTA3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzBfV0xJTkUxICAgICAgICgxMDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WSV9WU1lOQzEgICAgKDEwOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1MxX0xPX1ZTWU5DMSAgICAoMTEwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUzFfVlNZTkNFUlIxICAgICgxMTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9WRklFTEQxICAgICAgKDExMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lWMl9WQlVGRVJSMSAgICAoMTEzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY0X1ZCVUZFUlIxICAgICgxMTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TMV9XTElORTEgICAgICAgKDExNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WSV9WU1lOQzEgICAoMTE2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0lSX0xPX1ZTWU5DMSAgICgxMTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9PSVJfVkxJTkUxICAgICAgKDExOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9WRklFTEQxICAgICAoMTE5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVY3X1ZCVUZFUlIxICAgICgxMjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVjhfVkJVRkVSUjEgICAgKDEyMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX09JUl9XTElORTEgICAgICAoMTIyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSU1SREkgICAgICAgICAgICgxMjMpDQotI2RlZmluZSBJTlRDX0lEX0lNUjJJMCAgICAgICAgICAoMTI0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSU1SMkkxICAgICAgICAgICgxMjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9KRURJICAgICAgICAgICAgKDEyNikNCi0jZGVmaW5lIElOVENfSURfSkRUSSAgICAgICAgICAgICgxMjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DTVAwICAgICAgICAgICAgKDEyOCkNCi0jZGVmaW5lIElOVENfSURfQ01QMSAgICAgICAgICAgICgxMjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JTlQwICAgICAgICAgICAgKDEzMCkNCi0jZGVmaW5lIElOVENfSURfSU5UMSAgICAgICAgICAgICgxMzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JTlQyICAgICAgICAgICAgKDEzMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lOVDMgICAgICAgICAgICAoMTMzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT1NUTUkwICAgICAgICAgICgxMzQpDQotI2RlZmluZSBJTlRDX0lEX09TVE1JMSAgICAgICAgICAoMTM1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ01JICAgICAgICAgICAgICgxMzYpDQotI2RlZmluZSBJTlRDX0lEX1dUT1VUICAgICAgICAgICAoMTM3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSVRJICAgICAgICAgICAgICgxMzgpDQotI2RlZmluZSBJTlRDX0lEX1RHSTBBICAgICAgICAgICAoMTM5KQ0KLSNkZWZpbmUgSU5UQ19JRF9UR0kwQiAgICAgICAgICAgKDE0MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTBDICAgICAgICAgICAoMTQxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMEQgICAgICAgICAgICgxNDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kwViAgICAgICAgICAgKDE0MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTBFICAgICAgICAgICAoMTQ0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMEYgICAgICAgICAgICgxNDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kxQSAgICAgICAgICAgKDE0NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTFCICAgICAgICAgICAoMTQ3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMVYgICAgICAgICAgICgxNDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kxVSAgICAgICAgICAgKDE0OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTJBICAgICAgICAgICAoMTUwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJMkIgICAgICAgICAgICgxNTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kyViAgICAgICAgICAgKDE1MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTJVICAgICAgICAgICAoMTUzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJM0EgICAgICAgICAgICgxNTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kzQiAgICAgICAgICAgKDE1NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTNDICAgICAgICAgICAoMTU2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJM0QgICAgICAgICAgICgxNTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0kzViAgICAgICAgICAgKDE1OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTRBICAgICAgICAgICAoMTU5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJNEIgICAgICAgICAgICgxNjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UR0k0QyAgICAgICAgICAgKDE2MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RHSTREICAgICAgICAgICAoMTYyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEdJNFYgICAgICAgICAgICgxNjMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DTUkxICAgICAgICAgICAgKDE2NCkNCi0jZGVmaW5lIElOVENfSURfQ01JMiAgICAgICAgICAgICgxNjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TR0RFSTAgICAgICAgICAgKDE2NikNCi0jZGVmaW5lIElOVENfSURfU0dERUkxICAgICAgICAgICgxNjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TR0RFSTIgICAgICAgICAgKDE2OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NHREVJMyAgICAgICAgICAoMTY5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQURJICAgICAgICAgICAgICgxNzApDQotI2RlZmluZSBJTlRDX0lEX0FEV0FSICAgICAgICAgICAoMTcxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJSTAgICAgICAgICAgICgxNzIpDQotI2RlZmluZSBJTlRDX0lEX1NTSVJYSTAgICAgICAgICAoMTczKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJVFhJMCAgICAgICAgICgxNzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lJMSAgICAgICAgICAgKDE3NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVJYSTEgICAgICAgICAoMTc2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJVFhJMSAgICAgICAgICgxNzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lJMiAgICAgICAgICAgKDE3OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVJUSTIgICAgICAgICAoMTc5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJSTMgICAgICAgICAgICgxODApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lSWEkzICAgICAgICAgKDE4MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSVRYSTMgICAgICAgICAoMTgyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJSTQgICAgICAgICAgICgxODMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lSVEk0ICAgICAgICAgKDE4NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NTSUk1ICAgICAgICAgICAoMTg1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1NJUlhJNSAgICAgICAgICgxODYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TU0lUWEk1ICAgICAgICAgKDE4NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRElGSSAgICAgICAgICAoMTg4KQ0KLSNkZWZpbmUgSU5UQ19JRF9URUkwICAgICAgICAgICAgKDE4OSkNCi0jZGVmaW5lIElOVENfSURfUkkwICAgICAgICAgICAgICgxOTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USTAgICAgICAgICAgICAgKDE5MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQSTAgICAgICAgICAgICAoMTkyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1RJMCAgICAgICAgICAgICgxOTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9OQUtJMCAgICAgICAgICAgKDE5NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0FMSTAgICAgICAgICAgICAoMTk1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVE1PSTAgICAgICAgICAgICgxOTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9URUkxICAgICAgICAgICAgKDE5NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JJMSAgICAgICAgICAgICAoMTk4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEkxICAgICAgICAgICAgICgxOTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUEkxICAgICAgICAgICAgKDIwMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NUSTEgICAgICAgICAgICAoMjAxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTkFLSTEgICAgICAgICAgICgyMDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9BTEkxICAgICAgICAgICAgKDIwMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RNT0kxICAgICAgICAgICAoMjA0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVEVJMiAgICAgICAgICAgICgyMDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SSTIgICAgICAgICAgICAgKDIwNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJMiAgICAgICAgICAgICAoMjA3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BJMiAgICAgICAgICAgICgyMDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TVEkyICAgICAgICAgICAgKDIwOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX05BS0kyICAgICAgICAgICAoMjEwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQUxJMiAgICAgICAgICAgICgyMTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UTU9JMiAgICAgICAgICAgKDIxMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RFSTMgICAgICAgICAgICAoMjEzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUkkzICAgICAgICAgICAgICgyMTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USTMgICAgICAgICAgICAgKDIxNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQSTMgICAgICAgICAgICAoMjE2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1RJMyAgICAgICAgICAgICgyMTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9OQUtJMyAgICAgICAgICAgKDIxOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0FMSTMgICAgICAgICAgICAoMjE5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVE1PSTMgICAgICAgICAgICgyMjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkkwICAgICAgICAgICAgKDIyMSkNCi0jZGVmaW5lIElOVENfSURfRVJJMCAgICAgICAgICAgICgyMjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SWEkwICAgICAgICAgICAgKDIyMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RYSTAgICAgICAgICAgICAoMjI0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQlJJMSAgICAgICAgICAgICgyMjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9FUkkxICAgICAgICAgICAgKDIyNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTEgICAgICAgICAgICAoMjI3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJMSAgICAgICAgICAgICgyMjgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkkyICAgICAgICAgICAgKDIyOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VSSTIgICAgICAgICAgICAoMjMwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUlhJMiAgICAgICAgICAgICgyMzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UWEkyICAgICAgICAgICAgKDIzMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0JSSTMgICAgICAgICAgICAoMjMzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRVJJMyAgICAgICAgICAgICgyMzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SWEkzICAgICAgICAgICAgKDIzNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RYSTMgICAgICAgICAgICAoMjM2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQlJJNCAgICAgICAgICAgICgyMzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9FUkk0ICAgICAgICAgICAgKDIzOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTQgICAgICAgICAgICAoMjM5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJNCAgICAgICAgICAgICgyNDApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9CUkk1ICAgICAgICAgICAgKDI0MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VSSTUgICAgICAgICAgICAoMjQyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUlhJNSAgICAgICAgICAgICgyNDMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9UWEk1ICAgICAgICAgICAgKDI0NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0JSSTYgICAgICAgICAgICAoMjQ1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRVJJNiAgICAgICAgICAgICgyNDYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9SWEk2ICAgICAgICAgICAgKDI0NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RYSTYgICAgICAgICAgICAoMjQ4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQlJJNyAgICAgICAgICAgICgyNDkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9FUkk3ICAgICAgICAgICAgKDI1MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1JYSTcgICAgICAgICAgICAoMjUxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVFhJNyAgICAgICAgICAgICgyNTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9HRVJJICAgICAgICAgICAgKDI1MykNCi0jZGVmaW5lIElOVENfSURfUkZJICAgICAgICAgICAgICgyNTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DRlJYSTAgICAgICAgICAgKDI1NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NFUkkwICAgICAgICAgICAoMjU2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RYSTAgICAgICAgICAgICgyNTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DRlJYSTEgICAgICAgICAgKDI1OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NFUkkxICAgICAgICAgICAoMjU5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RYSTEgICAgICAgICAgICgyNjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DRlJYSTIgICAgICAgICAgKDI2MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NFUkkyICAgICAgICAgICAoMjYyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RYSTIgICAgICAgICAgICgyNjMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DRlJYSTMgICAgICAgICAgKDI2NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NFUkkzICAgICAgICAgICAoMjY1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RYSTMgICAgICAgICAgICgyNjYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9DRlJYSTQgICAgICAgICAgKDI2NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0NFUkk0ICAgICAgICAgICAoMjY4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1RYSTQgICAgICAgICAgICgyNjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUEVJMCAgICAgICAgICAgKDI3MCkNCi0jZGVmaW5lIElOVENfSURfU1BSSTAgICAgICAgICAgICgyNzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFRJMCAgICAgICAgICAgKDI3MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRUkxICAgICAgICAgICAoMjczKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BSSTEgICAgICAgICAgICgyNzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFRJMSAgICAgICAgICAgKDI3NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRUkyICAgICAgICAgICAoMjc2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BSSTIgICAgICAgICAgICgyNzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFRJMiAgICAgICAgICAgKDI3OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRUkzICAgICAgICAgICAoMjc5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BSSTMgICAgICAgICAgICgyODApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFRJMyAgICAgICAgICAgKDI4MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NQRUk0ICAgICAgICAgICAoMjgyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU1BSSTQgICAgICAgICAgICgyODMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TUFRJNCAgICAgICAgICAgKDI4NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lFQkJURCAgICAgICAgICAoMjg1KQ0KLSNkZWZpbmUgSU5UQ19JRF9JRUJCVEVSUiAgICAgICAgKDI4NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lFQkJUU1RBICAgICAgICAoMjg3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSUVCQlRWICAgICAgICAgICgyODgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JU1kgICAgICAgICAgICAgKDI4OSkNCi0jZGVmaW5lIElOVENfSURfSUVSUiAgICAgICAgICAgICgyOTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JVEFSRyAgICAgICAgICAgKDI5MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lTRUMgICAgICAgICAgICAoMjkyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfSUJVRiAgICAgICAgICAgICgyOTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JUkVBRFkgICAgICAgICAgKDI5NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0ZMU1RFICAgICAgICAgICAoMjk1KQ0KLSNkZWZpbmUgSU5UQ19JRF9GTFRFTkRJICAgICAgICAgKDI5NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0ZMVFJFUTBJICAgICAgICAoMjk3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRkxUUkVRMUkgICAgICAgICgyOTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9NTUMwICAgICAgICAgICAgKDI5OSkNCi0jZGVmaW5lIElOVENfSURfTU1DMSAgICAgICAgICAgICgzMDApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9NTUMyICAgICAgICAgICAgKDMwMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NESEkwXzMgICAgICAgICAoMzAyKQ0KLSNkZWZpbmUgSU5UQ19JRF9TREhJMF8wICAgICAgICAgKDMwMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NESEkwXzEgICAgICAgICAoMzA0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0RISTFfMyAgICAgICAgICgzMDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TREhJMV8wICAgICAgICAgKDMwNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NESEkxXzEgICAgICAgICAoMzA3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQVJNICAgICAgICAgICAgICgzMDgpDQotI2RlZmluZSBJTlRDX0lEX1BSRCAgICAgICAgICAgICAoMzA5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfQ1VQICAgICAgICAgICAgICgzMTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VBSTAgICAgICAgICAgKDMxMSkgICAvKiBTQ1VYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUFJMSAgICAgICAgICAoMzEyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRkRJMCAgICAgICAgICgzMTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGREkxICAgICAgICAgKDMxNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUZESTIgICAgICAgICAoMzE1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRkRJMyAgICAgICAgICgzMTYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGVUkwICAgICAgICAgKDMxNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVUZVSTEgICAgICAgICAoMzE4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRlVJMiAgICAgICAgICgzMTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VGVUkzICAgICAgICAgKDMyMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVURWSTAgICAgICAgICAoMzIxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NVRFZJMSAgICAgICAgICgzMjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ1VEVkkyICAgICAgICAgKDMyMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDVURWSTMgICAgICAgICAoMzI0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTUxCQ0kgICAgICAgICAgICgzMjUpDQotI2RlZmluZSBJTlRDX0lEX01MQlNJICAgICAgICAgICAoMzI2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfRFJDMCAgICAgICAgICAgICgzMjcpDQotI2RlZmluZSBJTlRDX0lEX0RSQzEgICAgICAgICAgICAoMzI4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTElOSTBfSU5UX1QgICAgICgzMzEpICAgLyogUmVuZXNhcyBMSU4zICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMF9JTlRfUiAgICAgKDMzMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0xJTkkwX0lOVF9TICAgICAoMzMzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTElOSTBfSU5UX00gICAgICgzMzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMV9JTlRfVCAgICAgKDMzNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0xJTkkxX0lOVF9SICAgICAoMzM2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfTElOSTFfSU5UX1MgICAgICgzMzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9MSU5JMV9JTlRfTSAgICAgKDMzOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDSV9FUkkwICAgICAgICAoMzQ3KQ0KLSNkZWZpbmUgSU5UQ19JRF9TQ0lfUlhJMCAgICAgICAgKDM0OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDSV9UWEkwICAgICAgICAoMzQ5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NJX1RFSTAgICAgICAgICgzNTApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ0lfRVJJMSAgICAgICAgKDM1MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1NDSV9SWEkxICAgICAgICAoMzUyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfU0NJX1RYSTEgICAgICAgICgzNTMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9TQ0lfVEVJMSAgICAgICAgKDM1NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0VUSEVSSSAgICAgICAgICAoMzU5KQ0KLSNkZWZpbmUgSU5UQ19JRF9DRVVJICAgICAgICAgICAgKDM2NCkNCi0jZGVmaW5lIElOVENfSURfSDJYTUxCX0VSUklOVCAgICgzODEpDQotI2RlZmluZSBJTlRDX0lEX0gyWElDMV9FUlJJTlQgICAoMzgyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIUEVSSTFfRVJSSU5UICgzODMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhQRVJJMl9FUlJJTlQgKDM4NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySFBFUkkzNF9FUlJJTlQgKDM4NSkgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIUEVSSTVfRVJSSU5UICgzODYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhQRVJJNjdfRVJSSU5UICgzODcpICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySERCR1JfRVJSSU5UICAoMzg4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfWDJIQlNDX0VSUklOVCAgICgzODkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9YMkhTUEkxX0VSUklOVCAgKDM5MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1gySFNQSTJfRVJSSU5UICAoMzkxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfUFJSSSAgICAgICAgICAgICgzOTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9JRkVJMCAgICAgICAgICAgKDM5MykNCi0jZGVmaW5lIElOVENfSURfT0ZGSTAgICAgICAgICAgICgzOTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9QRlZFSTAgICAgICAgICAgKDM5NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX0lGRUkxICAgICAgICAgICAoMzk2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfT0ZGSTEgICAgICAgICAgICgzOTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9QRlZFSTEgICAgICAgICAgKDM5OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQwICAgICAgICAgICAoNDE2KQ0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMSAgICAgICAgICAgKDQxNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyICAgICAgICAgICAoNDE4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDMgICAgICAgICAgICg0MTkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNCAgICAgICAgICAgKDQyMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1ICAgICAgICAgICAoNDIxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDYgICAgICAgICAgICg0MjIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNyAgICAgICAgICAgKDQyMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4ICAgICAgICAgICAoNDI0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDkgICAgICAgICAgICg0MjUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTAgICAgICAgICAgKDQyNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMSAgICAgICAgICAoNDI3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyICAgICAgICAgICg0MjgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTMgICAgICAgICAgKDQyOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNCAgICAgICAgICAoNDMwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1ICAgICAgICAgICg0MzEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTYgICAgICAgICAgKDQzMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNyAgICAgICAgICAoNDMzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE4ICAgICAgICAgICg0MzQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTkgICAgICAgICAgKDQzNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyMCAgICAgICAgICAoNDM2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDIxICAgICAgICAgICg0MzcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjIgICAgICAgICAgKDQzOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyMyAgICAgICAgICAoNDM5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDI0ICAgICAgICAgICg0NDApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjUgICAgICAgICAgKDQ0MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyNiAgICAgICAgICAoNDQyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDI3ICAgICAgICAgICg0NDMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMjggICAgICAgICAgKDQ0NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQyOSAgICAgICAgICAoNDQ1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDMwICAgICAgICAgICg0NDYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzEgICAgICAgICAgKDQ0NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzMiAgICAgICAgICAoNDQ4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDMzICAgICAgICAgICg0NDkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzQgICAgICAgICAgKDQ1MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzNSAgICAgICAgICAoNDUxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDM2ICAgICAgICAgICg0NTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMzcgICAgICAgICAgKDQ1MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQzOCAgICAgICAgICAoNDU0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDM5ICAgICAgICAgICg0NTUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDAgICAgICAgICAgKDQ1NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0MSAgICAgICAgICAoNDU3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQyICAgICAgICAgICg0NTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDMgICAgICAgICAgKDQ1OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0NCAgICAgICAgICAoNDYwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQ1ICAgICAgICAgICg0NjEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDYgICAgICAgICAgKDQ2MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ0NyAgICAgICAgICAoNDYzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDQ4ICAgICAgICAgICg0NjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNDkgICAgICAgICAgKDQ2NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1MCAgICAgICAgICAoNDY2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDUxICAgICAgICAgICg0NjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTIgICAgICAgICAgKDQ2OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1MyAgICAgICAgICAoNDY5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDU0ICAgICAgICAgICg0NzApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTUgICAgICAgICAgKDQ3MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1NiAgICAgICAgICAoNDcyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDU3ICAgICAgICAgICg0NzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNTggICAgICAgICAgKDQ3NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ1OSAgICAgICAgICAoNDc1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDYwICAgICAgICAgICg0NzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjEgICAgICAgICAgKDQ3NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2MiAgICAgICAgICAoNDc4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDYzICAgICAgICAgICg0NzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjQgICAgICAgICAgKDQ4MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2NSAgICAgICAgICAoNDgxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDY2ICAgICAgICAgICg0ODIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNjcgICAgICAgICAgKDQ4MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ2OCAgICAgICAgICAoNDg0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDY5ICAgICAgICAgICg0ODUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzAgICAgICAgICAgKDQ4NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3MSAgICAgICAgICAoNDg3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDcyICAgICAgICAgICg0ODgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzMgICAgICAgICAgKDQ4OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3NCAgICAgICAgICAoNDkwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDc1ICAgICAgICAgICg0OTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzYgICAgICAgICAgKDQ5MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ3NyAgICAgICAgICAoNDkzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDc4ICAgICAgICAgICg0OTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UNzkgICAgICAgICAgKDQ5NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4MCAgICAgICAgICAoNDk2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDgxICAgICAgICAgICg0OTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODIgICAgICAgICAgKDQ5OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4MyAgICAgICAgICAoNDk5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDg0ICAgICAgICAgICg1MDApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODUgICAgICAgICAgKDUwMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4NiAgICAgICAgICAoNTAyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDg3ICAgICAgICAgICg1MDMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UODggICAgICAgICAgKDUwNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ4OSAgICAgICAgICAoNTA1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDkwICAgICAgICAgICg1MDYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTEgICAgICAgICAgKDUwNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5MiAgICAgICAgICAoNTA4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDkzICAgICAgICAgICg1MDkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTQgICAgICAgICAgKDUxMCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5NSAgICAgICAgICAoNTExKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDk2ICAgICAgICAgICg1MTIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UOTcgICAgICAgICAgKDUxMykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQ5OCAgICAgICAgICAoNTE0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDk5ICAgICAgICAgICg1MTUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTAwICAgICAgICAgKDUxNikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDEgICAgICAgICAoNTE3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwMiAgICAgICAgICg1MTgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTAzICAgICAgICAgKDUxOSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDQgICAgICAgICAoNTIwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwNSAgICAgICAgICg1MjEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTA2ICAgICAgICAgKDUyMikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMDcgICAgICAgICAoNTIzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEwOCAgICAgICAgICg1MjQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTA5ICAgICAgICAgKDUyNSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTAgICAgICAgICAoNTI2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExMSAgICAgICAgICg1MjcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTEyICAgICAgICAgKDUyOCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTMgICAgICAgICAoNTI5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExNCAgICAgICAgICg1MzApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTE1ICAgICAgICAgKDUzMSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTYgICAgICAgICAoNTMyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDExNyAgICAgICAgICg1MzMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTE4ICAgICAgICAgKDUzNCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMTkgICAgICAgICAoNTM1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyMCAgICAgICAgICg1MzYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTIxICAgICAgICAgKDUzNykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjIgICAgICAgICAoNTM4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyMyAgICAgICAgICg1MzkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTI0ICAgICAgICAgKDU0MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjUgICAgICAgICAoNTQxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyNiAgICAgICAgICg1NDIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTI3ICAgICAgICAgKDU0MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMjggICAgICAgICAoNTQ0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEyOSAgICAgICAgICg1NDUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTMwICAgICAgICAgKDU0NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzEgICAgICAgICAoNTQ3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzMiAgICAgICAgICg1NDgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTMzICAgICAgICAgKDU0OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzQgICAgICAgICAoNTUwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzNSAgICAgICAgICg1NTEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTM2ICAgICAgICAgKDU1MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxMzcgICAgICAgICAoNTUzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDEzOCAgICAgICAgICg1NTQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTM5ICAgICAgICAgKDU1NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDAgICAgICAgICAoNTU2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0MSAgICAgICAgICg1NTcpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQyICAgICAgICAgKDU1OCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDMgICAgICAgICAoNTU5KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0NCAgICAgICAgICg1NjApICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQ1ICAgICAgICAgKDU2MSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDYgICAgICAgICAoNTYyKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE0NyAgICAgICAgICg1NjMpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTQ4ICAgICAgICAgKDU2NCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNDkgICAgICAgICAoNTY1KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1MCAgICAgICAgICg1NjYpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTUxICAgICAgICAgKDU2NykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTIgICAgICAgICAoNTY4KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1MyAgICAgICAgICg1NjkpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTU0ICAgICAgICAgKDU3MCkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTUgICAgICAgICAoNTcxKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1NiAgICAgICAgICg1NzIpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTU3ICAgICAgICAgKDU3MykgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNTggICAgICAgICAoNTc0KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE1OSAgICAgICAgICg1NzUpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTYwICAgICAgICAgKDU3NikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjEgICAgICAgICAoNTc3KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2MiAgICAgICAgICg1NzgpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTYzICAgICAgICAgKDU3OSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjQgICAgICAgICAoNTgwKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2NSAgICAgICAgICg1ODEpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTY2ICAgICAgICAgKDU4MikgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNjcgICAgICAgICAoNTgzKSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0jZGVmaW5lIElOVENfSURfVElOVDE2OCAgICAgICAgICg1ODQpICAgLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSNkZWZpbmUgSU5UQ19JRF9USU5UMTY5ICAgICAgICAgKDU4NSkgICAvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBJTlRDX0lEX1RJTlQxNzAgICAgICAgICAoNTg2KSAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIElOVENfTEVWRUxfU0VOU0lUSVZFICAgICgwKQ0KLSNkZWZpbmUgSU5UQ19FREdFX1RSSUdHRVIgICAgICAgKDEpDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9JTlRDX1JlZ2lzdEludEZ1bmModWludDE2X3QgaW50X2lkLCB2b2lkICgqIGZ1bmMpKHVpbnQzMl90IGludF9zZW5zZSkpOw0KLXZvaWQgICAgUl9JTlRDX0luaXQodm9pZCk7DQotaW50MzJfdCBSX0lOVENfRW5hYmxlKHVpbnQxNl90IGludF9pZCk7DQotaW50MzJfdCBSX0lOVENfRGlzYWJsZSh1aW50MTZfdCBpbnRfaWQpOw0KLWludDMyX3QgUl9JTlRDX1NldFByaW9yaXR5KHVpbnQxNl90IGludF9pZCwgdWludDhfdCBwcmlvcml0eSk7DQotaW50MzJfdCBSX0lOVENfU2V0TWFza0xldmVsKHVpbnQ4X3QgbWFza19sZXZlbCk7DQotdm9pZCAgICBSX0lOVENfR2V0TWFza0xldmVsKHVpbnQ4X3QgKiBtYXNrX2xldmVsKTsNCi0NCi12b2lkICAgIFVzZXJkZWZfSU5UQ19SZWdpc3RJbnRGdW5jKHVpbnQxNl90IGludF9pZCwgdm9pZCAoKiBmdW5jKSh1aW50MzJfdCBpbnRfc2Vuc2UpKTsNCi12b2lkICAgIFVzZXJkZWZfSU5UQ19VbmRlZklkKHVpbnQxNl90IGludF9pZCk7DQotdm9pZCAgICBVc2VyZGVmX0lOVENfSGFuZGxlckV4ZSh1aW50MTZfdCBpbnRfaWQsIHVpbnQzMl90IGludF9zZW5zZSk7DQotdm9pZCAgICBVc2VyZGVmX0ZJUV9IYW5kbGVyRXhlKHZvaWQpOw0KLQ0KLSNlbmRpZiAgLyogX0RFVkRSVl9JTlRDX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvZGV2ZHJ2X29zdG0uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfb3N0bS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNTkyMTM4Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfb3N0bS5oCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiBkZXZkcnZfb3N0bS5oDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gT1MgdGltZXIgZGV2aWNlIGRyaXZlciBoZWFkZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfREVWRFJWX09TVE1fSF8NCi0jZGVmaW5lIF9ERVZEUlZfT1NUTV9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlICJpb2RlZmluZS5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIE9TVE1fTU9ERV9JTlRFUlZBTCAgKDApDQotI2RlZmluZSBPU1RNX01PREVfQ09NUEFSRSAgICgxKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1pbnQzMl90IFJfT1NUTV9Jbml0KHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90IG1vZGUsIHVpbnQzMl90IGN5Y2xlKTsNCi1pbnQzMl90IFJfT1NUTV9PcGVuKHVpbnQzMl90IGNoYW5uZWwpOw0KLWludDMyX3QgUl9PU1RNX0Nsb3NlKHVpbnQzMl90IGNoYW5uZWwsIHVpbnQzMl90ICogY291bnQpOw0KLWludDMyX3QgUl9PU1RNX0ludGVycnVwdCh1aW50MzJfdCBjaGFubmVsKTsNCi0NCi1pbnQzMl90IFVzZXJkZWZfT1NUTTBfSW5pdCh1aW50MzJfdCBtb2RlLCB1aW50MzJfdCBjeWNsZSk7DQotaW50MzJfdCBVc2VyZGVmX09TVE0xX0luaXQodWludDMyX3QgbW9kZSwgdWludDMyX3QgY3ljbGUpOw0KLXZvaWQgICAgVXNlcmRlZl9PU1RNMF9JbnQodm9pZCk7DQotdm9pZCAgICBVc2VyZGVmX09TVE0xX0ludCh2b2lkKTsNCi12b2lkICAgIFVzZXJkZWZfT1NUTTBfV2FpdEludCh2b2lkKTsNCi12b2lkICAgIFVzZXJkZWZfT1NUTTFfV2FpdEludCh2b2lkKTsNCi0NCi0jZW5kaWYgIC8qIF9ERVZEUlZfT1NUTV9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9zY2lmX3VhcnQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9kZXZkcnZfc2NpZl91YXJ0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxYjljZDkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2RldmRydl9zY2lmX3VhcnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc2NpZl91YXJ0LmgNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBTQ0lGIFVBUlQgZGV2aWNlIGRyaXZlciBoZWFkZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfREVWRFJWX1NDSUZfVUFSVF9IXw0KLSNkZWZpbmUgX0RFVkRSVl9TQ0lGX1VBUlRfSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaW5jbHVkZSAiaW9kZWZpbmUuaCINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBTQ0lGX1VBUlRfTU9ERV9XICAgICAgICAoMSkNCi0jZGVmaW5lIFNDSUZfVUFSVF9NT0RFX1IgICAgICAgICgyKQ0KLSNkZWZpbmUgU0NJRl9VQVJUX01PREVfUlcgICAgICAgKDMpDQotDQotdHlwZWRlZiBlbnVtIHNjaWZfY2tzX2RpdmlzaW9uDQotew0KLSAgICBTQ0lGX0NLU19ESVZJU0lPTl8xLA0KLSAgICBTQ0lGX0NLU19ESVZJU0lPTl80LA0KLSAgICBTQ0lGX0NLU19ESVZJU0lPTl8xNiwNCi0gICAgU0NJRl9DS1NfRElWSVNJT05fNjQNCi19IHNjaWZfY2tzX2RpdmlzaW9uX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLWludDMyX3QgUl9TQ0lGX1VBUlRfSW5pdCh1aW50MzJfdCBjaGFubmVsLCB1aW50MzJfdCBtb2RlLCB1aW50MTZfdCBja3MsIHVpbnQ4X3Qgc2NicnIpOw0KLQ0KLXZvaWQgVXNlcmRlZl9TQ0lGMl9VQVJUX0luaXQodWludDhfdCBtb2RlLCB1aW50MTZfdCBja3MsIHVpbnQ4X3Qgc2NicnIpOw0KLQ0KLSNlbmRpZiAgLyogX0RFVkRSVl9TQ0lGX1VBUlRfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyOGE5N2IuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzk2OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBESVNDTEFJTUVSDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qICAgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogICBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKg0KLSogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUw0KLSogICBSRUdBUkRJTkcgVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwNCi0qICAgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQQ0KLSogICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkNCi0qICAgRElTQ0xBSU1FRC4NCi0qDQotKiAgIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qICAgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiAgIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMNCi0qICAgRk9SIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTDQotKiAgIEFGRklMSUFURVMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qDQotKiAgIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMNCi0qICAgc29mdHdhcmUgYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4NCi0qICAgQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwgeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZA0KLSogICBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUgZm9sbG93aW5nIGxpbms6DQotKiAgIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBDb3B5cmlnaHQgKEMpIDIwMTAoMjAxMSkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRlY2huaWNhbCByZWZlcmVuY2UgZGF0YSAqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBTeXN0ZW0gTmFtZSA6IFNINzI2OSBTYW1wbGUgUHJvZ3JhbQ0KLSogICBGaWxlIE5hbWUgICA6IGlvZGVmaW5lLmgNCi0qICAgQWJzdHJhY3QgICAgOiBTSDcyNjkgSU8gZGVmaW5lIGZpbGUNCi0qICAgVmVyc2lvbiAgICAgOiAwLjExLjAwDQotKiAgIERldmljZSAgICAgIDogU0g3MjY5DQotDQotKiAgIFRvb2wtQ2hhaW4gIDogSGlnaC1wZXJmb3JtYW5jZSBFbWJlZGRlZCBXb3Jrc2hvcCAoVmVyLjQuMDcuMDApLg0KLSogICAgICAgICAgICAgICA6IEMvQysrIGNvbXBpbGVyIHBhY2thZ2UgZm9yIHRoZSBTdXBlckggUklTQyBlbmdpbmUgZmFtaWx5DQotKiAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVmVyLjkuMDMgUmVsZWFzZTAyKS4NCi0qICAgT1MgICAgICAgICAgOiBOb25lDQotKiAgIEgvVyBQbGF0Zm9ybTogUjBLNTcyNjkoQ1BVIGJvYXJkKQ0KLSogICBEZXNjcmlwdGlvbiA6DQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgSGlzdG9yeSAgICAgOiBTZXAuMDIsMjAxMCBWZXIuMC4wMS4wMCBQcmVsaW1pbmFyeSB2ZXJzaW9uIGlzc3VlZA0KLSogICAgICAgICAgICAgICA6IE9jdC4wNi4yMDEwIFZlci4wLjAyLjAwIFZEQzQuR1IxX0FCMSBtb2RpZmllZA0KLSogICAgICAgICAgICAgICA6IE9jdC4wNy4yMDEwIFZlci4wLjAzLjAwIFZEQzQuR1IxX0FCMSB0eXBlIGRlZmluaXRpb24gbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgOiBPY3QuMTkuMjAxMCBWZXIuMC4wNC4wMCBNTUMuQ0VfRE1BX01PREUgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNTUMuQ0VfQk9PVCBkZWxldGVkDQotKiAgICAgICAgICAgICAgIDogTm92LjA5LjIwMTAgVmVyLjAuMDUuMDAgVkRDNC5HUjNfQ0xVVF9JTlQuR1IzX0xJTkUgYWRkZWQNCi0qICAgICAgICAgICAgICAgOiBKYW4uMjguMjAxMSBWZXIuMC4wNi4wMCBEVkRFQy5BRERDUi0+QURDQ1IxIGNoYW5nZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5BRENDUjEuQUdDTU9ERVhBLT5BR0NNT0RFIGNoYW5nZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5JTlNDUiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuQUdDQ1IyLkFHQ01BWEdBSU4gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkFHQ0NSMi5WSURFT0dBSU4gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkFHQ0NSMi5WSURFT0dBSU4gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkNST01BU1IyLk5DT01PREUgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLkRDUFNSM341IGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5ZQ1NDUjEgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERWREVDLllDU0NSM343LDksMTEgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5ZQ1NDUjguSEZJTF9UQVBfU0VMIGFkZGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuWUNTQ1IxMi5ERVQyX01JWF9DIGFkZGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuWUNTQ1IxMi5ERVQyX01JWF9ZIGFkZGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuRENQQ1I5LkNMUF9GSUxfU0VMIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5EQ1BDUjEwfjEzIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5QR0FfVVBEQVRFIGFkZGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFZERUMuUEdBQ1IgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEVkRFQy5BRENDUjIgYWRkZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgU1BJQlNDIGFkZGVkDQotKiAgICAgICAgICAgICAgIDogRmViLjIzLjIwMTEgVmVyLjAuMDcuMDAgQ1BHLlNUQkNSNy5NU1RQNzUgYWRkZWQNCi0qICAgICAgICAgICAgICAgOiBGZWIuMjguMjAxMSBWZXIuMC4wOC4wMCBQT1JULlBCQ1I1IG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9SVC5QQkNSNCBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBPUlQuUEJDUjMgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQ1UuSkNTVFMgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuSU5QX1NFTF9DTlQuSU5QX1ZTUF9TWU5DX1NFTCBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5TQ0wwX0RTNC5SRVNfRFNfSF9JTklQSEFTRSBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfQUIxLkdSMV9BUkNfT04gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuR1IxX0FCMS5HUjFfQVJDX0RJU1BfT04gZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuR1IxX0FCNCBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfQUI1IGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LkdSMV9BQjYgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuR1IxX0FCNy5HUjFfQVJDX0RFRiBkZWxldGVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkRDNC5HUjFfTU9OIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0LkFESl9NVFhfTU9ERS5NVFhfTUQtPkFESl9NVFhfTUQgY2hhbmdlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZEQzQuT1VUX1NFVC5PVVRfUElYRUxfSU5WX09OIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWREM0Lk9VVF9TRVQuT1VUX1NVTV9NT1ZFIGRlbGV0ZWQNCi0qICAgICAgICAgICAgICAgOiBNYXIuMDIuMjAxMSBWZXIuMC4wOS4wMCBKQ1UuSkNRVEJMMCBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ1FUQkwxIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkNVLkpDUVRCTDIgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQ1UuSkNRVEJMMyBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ0hUQkQwIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSkNVLkpDSFRCQTAgbW9kaWZpZWQNCi0qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKQ1UuSkNIVEJEMSBtb2RpZmllZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpDVS5KQ0hUQkExIG1vZGlmaWVkDQotKiAgICAgICAgICAgICAgIDogQXByLjA0LjIwMTEgVmVyLjAuMTAuMDAgQ1BHLlNXUlNUQ1IyLkpDVVNSU1QgYWRkZWQNCi0qICAgICAgICAgICAgICAgOiBNYXkuMDkuMjAxMSBWZXIuMC4xMS4wMCBCU0MuQUNTV1IgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJTQy5BQ0tFWVIgZGVsZXRlZA0KLSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTQi5VU0JBQ1NXUjEgZGVsZXRlZA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfSU9ERUZJTkVfSF8NCi0jZGVmaW5lIF9JT0RFRklORV9IXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotLyogbmV3IGlvZGVmaW5lIEFEQyAqLw0KLQ0KLXN0cnVjdCBzdF9hZGMNCi17ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBBREMgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkEgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJCOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkIgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkMgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkQgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkUgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJGOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkYgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJHOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkcgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgRFJIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBEUkggICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgY2hhciAgZHVtbXkzMlsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhBICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExBICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhCICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExCICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhDICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExDICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhEICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExEICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhFICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExFICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhGICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMRjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExGICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBIRzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhHICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMRzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExHICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBISDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEhIICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBMSDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUExIICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgY2hhciAgZHVtbXkzM1szMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBTUiAgICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUEVSICAgICAgICAgICAgKi8NCi0gICAgdW5zaWduZWQgc2hvcnQgTVBTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBNUFNSICAgICAgICAgICAgKi8NCi19Ow0KLQ0KLSNkZWZpbmUgQURDRFJBIEFEQy5EUkENCi0jZGVmaW5lIEFEQ0RSQiBBREMuRFJCDQotI2RlZmluZSBBRENEUkMgQURDLkRSQw0KLSNkZWZpbmUgQURDRFJEIEFEQy5EUkQNCi0jZGVmaW5lIEFEQ0RSRSBBREMuRFJFDQotI2RlZmluZSBBRENEUkYgQURDLkRSRg0KLSNkZWZpbmUgQURDRFJHIEFEQy5EUkcNCi0jZGVmaW5lIEFEQ0RSSCBBREMuRFJIDQotI2RlZmluZSBBRENNUEhBIEFEQy5NUEhBDQotI2RlZmluZSBBRENNUExBIEFEQy5NUExBDQotI2RlZmluZSBBRENNUEhCIEFEQy5NUEhCDQotI2RlZmluZSBBRENNUExCIEFEQy5NUExCDQotI2RlZmluZSBBRENNUEhDIEFEQy5NUEhDDQotI2RlZmluZSBBRENNUExDIEFEQy5NUExDDQotI2RlZmluZSBBRENNUEhEIEFEQy5NUEhEDQotI2RlZmluZSBBRENNUExEIEFEQy5NUExEDQotI2RlZmluZSBBRENNUEhFIEFEQy5NUEhFDQotI2RlZmluZSBBRENNUExFIEFEQy5NUExFDQotI2RlZmluZSBBRENNUEhGIEFEQy5NUEhGDQotI2RlZmluZSBBRENNUExGIEFEQy5NUExGDQotI2RlZmluZSBBRENNUEhHIEFEQy5NUEhHDQotI2RlZmluZSBBRENNUExHIEFEQy5NUExHDQotI2RlZmluZSBBRENNUEhIIEFEQy5NUEhIDQotI2RlZmluZSBBRENNUExIIEFEQy5NUExIDQotI2RlZmluZSBBRENTUiBBREMuU1INCi0jZGVmaW5lIEFEQ01QRVIgQURDLk1QRVINCi0jZGVmaW5lIEFEQ01QU1IgQURDLk1QU1INCi0NCi0jZGVmaW5lIEFEQyAgICAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2FkYyAgICAgKikweEU4MDA1ODAwKSAvKiBBREMgKi8NCi0NCi0vKiBuZXcgaW9kZWZpbmUgQURDICovDQotDQotDQotCSNpZgkwDQotc3RydWN0IHN0X2NwZyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IENQRyAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRlJRQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tPRU4yOjE7ICAgICAgICAgICAgLyogICBDS09FTjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tPRU46MjsgICAgICAgICAgICAgLyogICBDS09FTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUZDOjI7ICAgICAgICAgICAgICAgLyogICBJRkMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkZDOjI7ICAgICAgICAgICAgICAgLyogICBCRkMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRlJRQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RCWToxOyAgICAgICAgICAgICAgLyogICBTVEJZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgREVFUDoxOyAgICAgICAgICAgICAgLyogICBERUVQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1IyICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwOjE7ICAgICAgICAgICAgLyogICBNU1RQMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDg6MTsgICAgICAgICAgICAgLyogICBNU1RQOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDc6MTsgICAgICAgICAgICAgLyogICBNU1RQNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbOTk5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNRTM6MTsgICAgICAgICAgICAgLyogICBSQU1FMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNRTI6MTsgICAgICAgICAgICAgLyogICBSQU1FMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNRTE6MTsgICAgICAgICAgICAgLyogICBSQU1FMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNRTA6MTsgICAgICAgICAgICAgLyogICBSQU1FMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ1IyICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNV0UzOjE7ICAgICAgICAgICAgLyogICBSQU1XRTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNV0UyOjE7ICAgICAgICAgICAgLyogICBSQU1XRTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNV0UxOjE7ICAgICAgICAgICAgLyogICBSQU1XRTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNV0UwOjE7ICAgICAgICAgICAgLyogICBSQU1XRTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1IzICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSElaOjE7ICAgICAgICAgICAgICAgLyogICBISVogICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDM2OjE7ICAgICAgICAgICAgLyogICBNU1RQMzYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDM1OjE7ICAgICAgICAgICAgLyogICBNU1RQMzUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICBNU1RQMzQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICBNU1RQMzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDMyOjE7ICAgICAgICAgICAgLyogICBNU1RQMzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDMwOjE7ICAgICAgICAgICAgLyogICBNU1RQMzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I0ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQ3OjE7ICAgICAgICAgICAgLyogICBNU1RQNDcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQ2OjE7ICAgICAgICAgICAgLyogICBNU1RQNDYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQ1OjE7ICAgICAgICAgICAgLyogICBNU1RQNDUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQ0OjE7ICAgICAgICAgICAgLyogICBNU1RQNDQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQzOjE7ICAgICAgICAgICAgLyogICBNU1RQNDMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQyOjE7ICAgICAgICAgICAgLyogICBNU1RQNDIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQxOjE7ICAgICAgICAgICAgLyogICBNU1RQNDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDQwOjE7ICAgICAgICAgICAgLyogICBNU1RQNDAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I1ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDU3OjE7ICAgICAgICAgICAgLyogICBNU1RQNTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDU2OjE7ICAgICAgICAgICAgLyogICBNU1RQNTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDU1OjE7ICAgICAgICAgICAgLyogICBNU1RQNTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDU0OjE7ICAgICAgICAgICAgLyogICBNU1RQNTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDUzOjE7ICAgICAgICAgICAgLyogICBNU1RQNTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDUyOjE7ICAgICAgICAgICAgLyogICBNU1RQNTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDUxOjE7ICAgICAgICAgICAgLyogICBNU1RQNTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDUwOjE7ICAgICAgICAgICAgLyogICBNU1RQNTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I2ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDY3OjE7ICAgICAgICAgICAgLyogICBNU1RQNjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDY2OjE7ICAgICAgICAgICAgLyogICBNU1RQNjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDY1OjE7ICAgICAgICAgICAgLyogICBNU1RQNjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDY0OjE7ICAgICAgICAgICAgLyogICBNU1RQNjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDYzOjE7ICAgICAgICAgICAgLyogICBNU1RQNjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDYyOjE7ICAgICAgICAgICAgLyogICBNU1RQNjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDYxOjE7ICAgICAgICAgICAgLyogICBNU1RQNjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDYwOjE7ICAgICAgICAgICAgLyogICBNU1RQNjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I3ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDc3OjE7ICAgICAgICAgICAgLyogICBNU1RQNzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDc2OjE7ICAgICAgICAgICAgLyogICBNU1RQNzYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDc1OjE7ICAgICAgICAgICAgLyogICBNU1RQNzUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDczOjE7ICAgICAgICAgICAgLyogICBNU1RQNzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDcyOjE7ICAgICAgICAgICAgLyogICBNU1RQNzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDcwOjE7ICAgICAgICAgICAgLyogICBNU1RQNzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I3OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I4ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDg3OjE7ICAgICAgICAgICAgLyogICBNU1RQODcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDg2OjE7ICAgICAgICAgICAgLyogICBNU1RQODYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDg1OjE7ICAgICAgICAgICAgLyogICBNU1RQODUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDg0OjE7ICAgICAgICAgICAgLyogICBNU1RQODQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDgyOjE7ICAgICAgICAgICAgLyogICBNU1RQODIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDgxOjE7ICAgICAgICAgICAgLyogICBNU1RQODEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ1IzICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUU1OjE7ICAgICAgICAgICAgLyogICBWUkFNRTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUU0OjE7ICAgICAgICAgICAgLyogICBWUkFNRTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUUzOjE7ICAgICAgICAgICAgLyogICBWUkFNRTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUUyOjE7ICAgICAgICAgICAgLyogICBWUkFNRTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUUxOjE7ICAgICAgICAgICAgLyogICBWUkFNRTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTUUwOjE7ICAgICAgICAgICAgLyogICBWUkFNRTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ1I0ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFNToxOyAgICAgICAgICAgLyogICBWUkFNV0U1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFNDoxOyAgICAgICAgICAgLyogICBWUkFNV0U0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFMzoxOyAgICAgICAgICAgLyogICBWUkFNV0UzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFMjoxOyAgICAgICAgICAgLyogICBWUkFNV0UyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFMToxOyAgICAgICAgICAgLyogICBWUkFNV0UxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVlJBTVdFMDoxOyAgICAgICAgICAgLyogICBWUkFNV0UwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ1I1ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTVdFMzoxOyAgICAgICAgICAgLyogICBSUkFNV0UzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTVdFMjoxOyAgICAgICAgICAgLyogICBSUkFNV0UyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTVdFMToxOyAgICAgICAgICAgLyogICBSUkFNV0UxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTVdFMDoxOyAgICAgICAgICAgLyogICBSUkFNV0UwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzddOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1dSU1RDUjEgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQVhUQUxFOjE7ICAgICAgICAgICAgLyogICBBWFRBTEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjVTUlNUOjE7ICAgICAgICAgLyogICBTU0lGNVNSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjRTUlNUOjE7ICAgICAgICAgLyogICBTU0lGNFNSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUVCU1JTVDoxOyAgICAgICAgICAgLyogICBJRUJTUlNUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjNTUlNUOjE7ICAgICAgICAgLyogICBTU0lGM1NSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjJTUlNUOjE7ICAgICAgICAgLyogICBTU0lGMlNSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjFTUlNUOjE7ICAgICAgICAgLyogICBTU0lGMVNSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJRjBTUlNUOjE7ICAgICAgICAgLyogICBTU0lGMFNSU1QgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1dSU1RDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE0WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1dSU1RDUjIgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSkNVU1JTVDoxOyAgICAgICAgICAgLyogICBKQ1VTUlNUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkdQVkdTUlNUOjE7ICAgICAgICAgLyogICBTU0lGM1NSU1QgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1dSU1RDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE1WzExXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1I5ICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDk3OjE7ICAgICAgICAgICAgLyogICBNU1RQOTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDk2OjE7ICAgICAgICAgICAgLyogICBNU1RQOTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDk1OjE7ICAgICAgICAgICAgLyogICBNU1RQOTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDk0OjE7ICAgICAgICAgICAgLyogICBNU1RQOTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDkzOjE7ICAgICAgICAgICAgLyogICBNU1RQOTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDkyOjE7ICAgICAgICAgICAgLyogICBNU1RQOTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDkxOjE7ICAgICAgICAgICAgLyogICBNU1RQOTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDkwOjE7ICAgICAgICAgICAgLyogICBNU1RQOTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RCQ1IxMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwNzoxOyAgICAgICAgICAgLyogICBNU1RQMTA3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwNjoxOyAgICAgICAgICAgLyogICBNU1RQMTA2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwNToxOyAgICAgICAgICAgLyogICBNU1RQMTA1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwMzoxOyAgICAgICAgICAgLyogICBNU1RQMTAzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwMjoxOyAgICAgICAgICAgLyogICBNU1RQMTAyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwMToxOyAgICAgICAgICAgLyogICBNU1RQMTAxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTVNUUDEwMDoxOyAgICAgICAgICAgLyogICBNU1RQMTAwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1RCQ1IxMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE3WzI1NTMxXTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlJBTUtQICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTUtQMzoxOyAgICAgICAgICAgLyogICBSUkFNS1AzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTUtQMjoxOyAgICAgICAgICAgLyogICBSUkFNS1AyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTUtQMToxOyAgICAgICAgICAgLyogICBSUkFNS1AxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUlJBTUtQMDoxOyAgICAgICAgICAgLyogICBSUkFNS1AwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlJBTUtQOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNDVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRUJVU0tFRVBFOjE7ICAgICAgICAgLyogICBFQlVTS0VFUEUgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNQk9PVDoxOyAgICAgICAgICAgLyogICBSQU1CT09UICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE5WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNTU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMzoxOyAgICAgICAgICAgICAgLyogICBQSjIzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMjoxOyAgICAgICAgICAgICAgLyogICBQSjIyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMToxOyAgICAgICAgICAgICAgLyogICBQSjIxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMDoxOyAgICAgICAgICAgICAgLyogICBQSjIwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEczOjE7ICAgICAgICAgICAgICAgLyogICBQRzMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEcyOjE7ICAgICAgICAgICAgICAgLyogICBQRzIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JOjE7ICAgICAgICAgICAgICAgLyogICBOTUkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRDQVI6MTsgICAgICAgICAgICAgLyogICBSVENBUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxOToxOyAgICAgICAgICAgICAgLyogICBQRjE5ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxODoxOyAgICAgICAgICAgICAgLyogICBQRjE4ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxNzoxOyAgICAgICAgICAgICAgLyogICBQRjE3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxNjoxOyAgICAgICAgICAgICAgLyogICBQRjE2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM3OjE7ICAgICAgICAgICAgICAgLyogICBQQzcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM1OjE7ICAgICAgICAgICAgICAgLyogICBQQzUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNTU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNFU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyM0U6MTsgICAgICAgICAgICAgLyogICBQSjIzRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMkU6MTsgICAgICAgICAgICAgLyogICBQSjIyRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMUU6MTsgICAgICAgICAgICAgLyogICBQSjIxRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMEU6MTsgICAgICAgICAgICAgLyogICBQSjIwRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEczRToxOyAgICAgICAgICAgICAgLyogICBQRzNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEcyRToxOyAgICAgICAgICAgICAgLyogICBQRzJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JRToxOyAgICAgICAgICAgICAgLyogICBOTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxOUU6MTsgICAgICAgICAgICAgLyogICBQRjE5RSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxOEU6MTsgICAgICAgICAgICAgLyogICBQRjE4RSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxN0U6MTsgICAgICAgICAgICAgLyogICBQRjE3RSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxNkU6MTsgICAgICAgICAgICAgLyogICBQRjE2RSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM3RToxOyAgICAgICAgICAgICAgLyogICBQQzdFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM1RToxOyAgICAgICAgICAgICAgLyogICBQQzVFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNFU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNGUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU9LRUVQOjE7ICAgICAgICAgICAgLyogICBJT0tFRVAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyM0Y6MTsgICAgICAgICAgICAgLyogICBQSjIzRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMkY6MTsgICAgICAgICAgICAgLyogICBQSjIyRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMUY6MTsgICAgICAgICAgICAgLyogICBQSjIxRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEoyMEY6MTsgICAgICAgICAgICAgLyogICBQSjIwRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEczRjoxOyAgICAgICAgICAgICAgLyogICBQRzNGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEcyRjoxOyAgICAgICAgICAgICAgLyogICBQRzJGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JRjoxOyAgICAgICAgICAgICAgLyogICBOTUlGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRDQVJGOjE7ICAgICAgICAgICAgLyogICBSVENBUkYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxOUY6MTsgICAgICAgICAgICAgLyogICBQRjE5RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxOEY6MTsgICAgICAgICAgICAgLyogICBQRjE4RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxN0Y6MTsgICAgICAgICAgICAgLyogICBQRjE3RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEYxNkY6MTsgICAgICAgICAgICAgLyogICBQRjE2RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM3RjoxOyAgICAgICAgICAgICAgLyogICBQQzdGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEM1RjoxOyAgICAgICAgICAgICAgLyogICBQQzVGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNGUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIwWzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFRBTENUUiAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgR0FJTjoxOyAgICAgICAgICAgICAgLyogICBHQUlOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWFRBTENUUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2ludGMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IElOVEMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNSMCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JTDoxOyAgICAgICAgICAgICAgLyogICBOTUlMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JRToxOyAgICAgICAgICAgICAgLyogICBOTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JRjoxOyAgICAgICAgICAgICAgLyogICBOTUlGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JTToxOyAgICAgICAgICAgICAgLyogICBOTUlNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNSMSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNzFTOjE7ICAgICAgICAgICAgLyogICBJUlE3MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNzBTOjE7ICAgICAgICAgICAgLyogICBJUlE3MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNjFTOjE7ICAgICAgICAgICAgLyogICBJUlE2MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNjBTOjE7ICAgICAgICAgICAgLyogICBJUlE2MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNTFTOjE7ICAgICAgICAgICAgLyogICBJUlE1MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNTBTOjE7ICAgICAgICAgICAgLyogICBJUlE1MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNDFTOjE7ICAgICAgICAgICAgLyogICBJUlE0MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNDBTOjE7ICAgICAgICAgICAgLyogICBJUlE0MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMzFTOjE7ICAgICAgICAgICAgLyogICBJUlEzMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMzBTOjE7ICAgICAgICAgICAgLyogICBJUlEzMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMjFTOjE7ICAgICAgICAgICAgLyogICBJUlEyMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMjBTOjE7ICAgICAgICAgICAgLyogICBJUlEyMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMTFTOjE7ICAgICAgICAgICAgLyogICBJUlExMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMTBTOjE7ICAgICAgICAgICAgLyogICBJUlExMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMDFTOjE7ICAgICAgICAgICAgLyogICBJUlEwMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMDBTOjE7ICAgICAgICAgICAgLyogICBJUlEwMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNSMiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDdTOjE7ICAgICAgICAgICAgLyogICBQSU5UN1MgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDZTOjE7ICAgICAgICAgICAgLyogICBQSU5UNlMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDVTOjE7ICAgICAgICAgICAgLyogICBQSU5UNVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDRTOjE7ICAgICAgICAgICAgLyogICBQSU5UNFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDNTOjE7ICAgICAgICAgICAgLyogICBQSU5UM1MgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDJTOjE7ICAgICAgICAgICAgLyogICBQSU5UMlMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDFTOjE7ICAgICAgICAgICAgLyogICBQSU5UMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDBTOjE7ICAgICAgICAgICAgLyogICBQSU5UMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVJRUlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRN0Y6MTsgICAgICAgICAgICAgLyogICBJUlE3RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNkY6MTsgICAgICAgICAgICAgLyogICBJUlE2RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNUY6MTsgICAgICAgICAgICAgLyogICBJUlE1RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNEY6MTsgICAgICAgICAgICAgLyogICBJUlE0RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRM0Y6MTsgICAgICAgICAgICAgLyogICBJUlEzRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMkY6MTsgICAgICAgICAgICAgLyogICBJUlEyRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMUY6MTsgICAgICAgICAgICAgLyogICBJUlExRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMEY6MTsgICAgICAgICAgICAgLyogICBJUlEwRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVJRUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElOVEVSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDdFOjE7ICAgICAgICAgICAgLyogICBQSU5UN0UgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDZFOjE7ICAgICAgICAgICAgLyogICBQSU5UNkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDVFOjE7ICAgICAgICAgICAgLyogICBQSU5UNUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDRFOjE7ICAgICAgICAgICAgLyogICBQSU5UNEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDNFOjE7ICAgICAgICAgICAgLyogICBQSU5UM0UgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDJFOjE7ICAgICAgICAgICAgLyogICBQSU5UMkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDFFOjE7ICAgICAgICAgICAgLyogICBQSU5UMUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDBFOjE7ICAgICAgICAgICAgLyogICBQSU5UMEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElOVEVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElSUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDdSOjE7ICAgICAgICAgICAgLyogICBQSU5UN1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDZSOjE7ICAgICAgICAgICAgLyogICBQSU5UNlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDVSOjE7ICAgICAgICAgICAgLyogICBQSU5UNVIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDRSOjE7ICAgICAgICAgICAgLyogICBQSU5UNFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDNSOjE7ICAgICAgICAgICAgLyogICBQSU5UM1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDJSOjE7ICAgICAgICAgICAgLyogICBQSU5UMlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDFSOjE7ICAgICAgICAgICAgLyogICBQSU5UMVIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOVDBSOjE7ICAgICAgICAgICAgLyogICBQSU5UMFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElSUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUJDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTE1OjE7ICAgICAgICAgICAgICAgLyogICBFMTUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTE0OjE7ICAgICAgICAgICAgICAgLyogICBFMTQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTEzOjE7ICAgICAgICAgICAgICAgLyogICBFMTMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTEyOjE7ICAgICAgICAgICAgICAgLyogICBFMTIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTExOjE7ICAgICAgICAgICAgICAgLyogICBFMTEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTEwOjE7ICAgICAgICAgICAgICAgLyogICBFMTAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTk6MTsgICAgICAgICAgICAgICAgLyogICBFOSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTg6MTsgICAgICAgICAgICAgICAgLyogICBFOCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTc6MTsgICAgICAgICAgICAgICAgLyogICBFNyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTY6MTsgICAgICAgICAgICAgICAgLyogICBFNiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTU6MTsgICAgICAgICAgICAgICAgLyogICBFNSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTQ6MTsgICAgICAgICAgICAgICAgLyogICBFNCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTM6MTsgICAgICAgICAgICAgICAgLyogICBFMyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTI6MTsgICAgICAgICAgICAgICAgLyogICBFMiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRTE6MTsgICAgICAgICAgICAgICAgLyogICBFMSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUJDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUJOUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkU6MjsgICAgICAgICAgICAgICAgLyogICBCRSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQk9WRToxOyAgICAgICAgICAgICAgLyogICBCT1ZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjk7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQk46NDsgICAgICAgICAgICAgICAgLyogICBCTiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUJOUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTA6NDsgICAgICAgICAgICAgLyogICBfSVJRMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTE6NDsgICAgICAgICAgICAgLyogICBfSVJRMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTI6NDsgICAgICAgICAgICAgLyogICBfSVJRMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTM6NDsgICAgICAgICAgICAgLyogICBfSVJRMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTQ6NDsgICAgICAgICAgICAgLyogICBfSVJRNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTU6NDsgICAgICAgICAgICAgLyogICBfSVJRNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTY6NDsgICAgICAgICAgICAgLyogICBfSVJRNiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lSUTc6NDsgICAgICAgICAgICAgLyogICBfSVJRNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1BJTlQ6NDsgICAgICAgICAgICAgLyogICBQSU5UNy0wICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbOTkwXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMwOjQ7ICAgICAgICAgICAgLyogICBfRE1BQzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxOjQ7ICAgICAgICAgICAgLyogICBfRE1BQzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMyOjQ7ICAgICAgICAgICAgLyogICBfRE1BQzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMzOjQ7ICAgICAgICAgICAgLyogICBfRE1BQzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM0OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM1OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM2OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM3OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDggICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM4OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUM5OjQ7ICAgICAgICAgICAgLyogICBfRE1BQzkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxMDo0OyAgICAgICAgICAgLyogICBfRE1BQzEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxMTo0OyAgICAgICAgICAgLyogICBfRE1BQzExICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMDkgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxMjo0OyAgICAgICAgICAgLyogICBfRE1BQzEyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxMzo0OyAgICAgICAgICAgLyogICBfRE1BQzEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxNDo0OyAgICAgICAgICAgLyogICBfRE1BQzE0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RNQUMxNTo0OyAgICAgICAgICAgLyogICBfRE1BQzE1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1VTQjo0OyAgICAgICAgICAgICAgLyogICBfVVNCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1ZEQzQwOjQ7ICAgICAgICAgICAgLyogICBfVkRDNDAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1ZEQzQxOjQ7ICAgICAgICAgICAgLyogICBfVkRDNDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1ZEQzQyOjQ7ICAgICAgICAgICAgLyogICBfVkRDNDIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lNUkxTOjQ7ICAgICAgICAgICAgLyogICAgSU1STFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0pDVTo0OyAgICAgICAgICAgICAgLyogICAgSkNVICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0RJU0NPTTo0OyAgICAgICAgICAgLyogICAgRElTQ09NICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JHUFZHOjQ7ICAgICAgICAgICAgLyogICAgUkdQVkcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0NNVDA6NDsgICAgICAgICAgICAgLyogICBfQ01UMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0NNVDE6NDsgICAgICAgICAgICAgLyogICBfQ01UMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0JTQzo0OyAgICAgICAgICAgICAgLyogICBfQlNDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1dEVDo0OyAgICAgICAgICAgICAgLyogICBfV0RUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTAwOjQ7ICAgICAgICAgICAgLyogICBfTVRVMDAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTAxOjQ7ICAgICAgICAgICAgLyogICBfTVRVMDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTEwOjQ7ICAgICAgICAgICAgLyogICBfTVRVMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTExOjQ7ICAgICAgICAgICAgLyogICBfTVRVMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTIwOjQ7ICAgICAgICAgICAgLyogICBfTVRVMjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTIxOjQ7ICAgICAgICAgICAgLyogICBfTVRVMjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTMwOjQ7ICAgICAgICAgICAgLyogICBfTVRVMzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTMxOjQ7ICAgICAgICAgICAgLyogICBfTVRVMzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTQwOjQ7ICAgICAgICAgICAgLyogICBfTVRVNDAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01UVTQxOjQ7ICAgICAgICAgICAgLyogICBfTVRVNDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1BXTTE6NDsgICAgICAgICAgICAgLyogICBfUFdNMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1BXTTI6NDsgICAgICAgICAgICAgLyogICBfUFdNMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NERzA6NDsgICAgICAgICAgICAgLyogICBfU0RHMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NERzE6NDsgICAgICAgICAgICAgLyogICBfU0RHMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NERzI6NDsgICAgICAgICAgICAgLyogICBfU0RHMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NERzM6NDsgICAgICAgICAgICAgLyogICBfU0RHMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0FEQzo0OyAgICAgICAgICAgICAgLyogICBfQURDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTA6NDsgICAgICAgICAgICAgLyogICBfU1NJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTE6NDsgICAgICAgICAgICAgLyogICBfU1NJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTI6NDsgICAgICAgICAgICAgLyogICBfU1NJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTggICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTM6NDsgICAgICAgICAgICAgLyogICBfU1NJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTQ6NDsgICAgICAgICAgICAgLyogICBfU1NJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NTSTU6NDsgICAgICAgICAgICAgLyogICBfU1NJNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NQRElGOjQ7ICAgICAgICAgICAgLyogICBfU1BESUYgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMTkgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lJQzMwOjQ7ICAgICAgICAgICAgLyogICBfSUlDMzAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lJQzMxOjQ7ICAgICAgICAgICAgLyogICBfSUlDMzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lJQzMyOjQ7ICAgICAgICAgICAgLyogICBfSUlDMzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lJQzMzOjQ7ICAgICAgICAgICAgLyogICBfSUlDMzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMTk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUYwOjQ7ICAgICAgICAgICAgLyogICBfU0NJRjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUYxOjQ7ICAgICAgICAgICAgLyogICBfU0NJRjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUYyOjQ7ICAgICAgICAgICAgLyogICBfU0NJRjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUYzOjQ7ICAgICAgICAgICAgLyogICBfU0NJRjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUY0OjQ7ICAgICAgICAgICAgLyogICBfU0NJRjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUY1OjQ7ICAgICAgICAgICAgLyogICBfU0NJRjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUY2OjQ7ICAgICAgICAgICAgLyogICBfU0NJRjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NDSUY3OjQ7ICAgICAgICAgICAgLyogICBfU0NJRjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NJT0Y6NDsgICAgICAgICAgICAgLyogICBfU0lPRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JDQU4wOjQ7ICAgICAgICAgICAgLyogICBfUkNBTjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JDQU4xOjQ7ICAgICAgICAgICAgLyogICBfUkNBTjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JDQU4yOjQ7ICAgICAgICAgICAgLyogICBfUkNBTjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JTUEkwOjQ7ICAgICAgICAgICAgLyogICBfUlNQSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JTUEkxOjQ7ICAgICAgICAgICAgLyogICBfUlNQSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JRU1BJMDo0OyAgICAgICAgICAgLyogICBfUlFTUEkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JRU1BJMTo0OyAgICAgICAgICAgLyogICBfUlFTUEkxICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0lFQjo0OyAgICAgICAgICAgICAgLyogICBfSUVCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JPTURFQzo0OyAgICAgICAgICAgLyogICBfUk9NREVDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX0ZMQ1RMOjQ7ICAgICAgICAgICAgLyogICBfRkxDVEwgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX01NQzo0OyAgICAgICAgICAgICAgLyogICBfTU1DICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NESEkwOjQ7ICAgICAgICAgICAgLyogICBfU0RISTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NESEkxOjQ7ICAgICAgICAgICAgLyogICBfU0RISTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1JUQzo0OyAgICAgICAgICAgICAgLyogICBfUlRDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBSMjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NSQzA6NDsgICAgICAgICAgICAgLyogICBfU1JDMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NSQzE6NDsgICAgICAgICAgICAgLyogICBfU1JDMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgX1NSQzI6NDsgICAgICAgICAgICAgLyogICBfU1JDMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVBSMjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNlbmRpZg0KLXN0cnVjdCBzdF9jY250IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBDQ05UICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENDUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjA7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJQ0Y6MTsgICAgICAgICAgICAgIC8qICAgSUNGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJQ0U6MTsgICAgICAgICAgICAgIC8qICAgSUNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0Y6MTsgICAgICAgICAgICAgIC8qICAgT0NGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVDoxOyAgICAgICAgICAgICAgIC8qICAgV1QgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0U6MTsgICAgICAgICAgICAgIC8qICAgT0NFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENDUjIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTU7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMRToxOyAgICAgICAgICAgICAgIC8qICAgTEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXM0xPQUQ6MTsgICAgICAgICAgIC8qICAgVzNMT0FEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXM0xPQ0s6MTsgICAgICAgICAgIC8qICAgVzNMT0NLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXMkxPQUQ6MTsgICAgICAgICAgIC8qICAgVzJMT0FEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXMkxPQ0s6MTsgICAgICAgICAgIC8qICAgVzJMT0NLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07DQotCSNpZgkwDQotdW5pb24gQ1NuQkNSeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1NuQkNSICAgICAgICovDQotICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdXOjM7ICAgICAgICAgICAgICAgICAgICAgLyogICBJV1cgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSV0Q6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JXRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSV1M6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JXUyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSUkQ6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JSRCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVdSUlM6MzsgICAgICAgICAgICAgICAgICAgLyogICBJV1JSUyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFlQRTozOyAgICAgICAgICAgICAgICAgICAgLyogICBUWVBFICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRU5ESUFOOjE7ICAgICAgICAgICAgICAgICAgLyogICBFTkRJQU4gICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlNaOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBCU1ogICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2JzYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEJTQyAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01OQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJMT0NLOjE7ICAgICAgICAgICAgLyogICBCTE9DSyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERQUlRZOjI7ICAgICAgICAgICAgLyogICBEUFJUWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlXOjM7ICAgICAgICAgICAgLyogICBETUFJVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlXQToxOyAgICAgICAgICAgLyogICBETUFJV0EgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJWk1FTToxOyAgICAgICAgICAgLyogICBISVpNRU0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJWkNOVDoxOyAgICAgICAgICAgLyogICBISVpDTlQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ01OQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzBCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1MwQkNSICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzFCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1MxQkNSICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzJCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1MyQkNSICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzNCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1MzQkNSICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzRCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1M0QkNSICAgICAgICovDQotICAgICAgIHVuaW9uIENTbkJDUiBDUzVCQ1I7ICAgICAgICAgICAgICAgICAgICAgLyogQ1M1QkNSICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSKE5PUk1BTCkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBUzoxOyAgICAgICAvKiAgIEJBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOjI7ICAgICAgICAvKiAgIFNXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdSOjQ7ICAgICAgICAvKiAgIFdSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhXOjI7ICAgICAgICAvKiAgIEhXICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gTk9STUFMOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUzBXQ1IoQlJPTV9BU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCU1Q6MjsgICAgICAgLyogICBCU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fQVNZOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSKEJST01fU1kpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTQ7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVzoyOyAgICAgICAgLyogICBCVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXOjQ7ICAgICAgICAgLyogICBXICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJST01fU1k7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1MwV0NSOw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMVdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgICAgICAgIC8qICAgQkFTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgICAgICAgIC8qICAgV1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgICAgICAgIC8qICAgU1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgICAgICAgIC8qICAgV1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgICAgICAgIC8qICAgSFcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTMVdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMldDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMldDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSKFNEUkFNKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJDTDoyOyAgICAgIC8qICAgQTJDTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRFJBTTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTMldDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTM1dDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTM1dDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSKFNEUkFNKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE3OyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSUDoyOyAgICAgIC8qICAgV1RSUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSQ0Q6MjsgICAgIC8qICAgV1RSQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNDTDoyOyAgICAgIC8qICAgQTNDTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJXTDoyOyAgICAgIC8qICAgVFJXTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSQzoyOyAgICAgIC8qICAgV1RSQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRFJBTTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTM1dDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNFdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNFdDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSKEJST01fQVNZKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEwOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlNUOjI7ICAgICAgIC8qICAgQlNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlc6MjsgICAgICAgIC8qICAgQlcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c6MjsgICAgICAgIC8qICAgU1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVzo0OyAgICAgICAgIC8qICAgVyAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSFc6MjsgICAgICAgIC8qICAgSFcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCUk9NX0FTWTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTNFdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNVdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNVdDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTWlNFTDoxOyAgICAgLyogICBTWlNFTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNUFhXQkFTOjE7ICAgLyogICBNUFhXL0JBUyAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M1V0NSKFBDTUNJQSkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBOjI7ICAgICAgICAvKiAgIFNBICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFRDo0OyAgICAgICAvKiAgIFRFRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBDVzo0OyAgICAgICAvKiAgIFBDVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdNOjE7ICAgICAgICAvKiAgIFdNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSDo0OyAgICAgICAvKiAgIFRFSCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gUENNQ0lBOyAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUzVXQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTRENSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJST1c6MjsgICAgICAgICAgICAvKiAgIEEyUk9XICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJDT0w6MjsgICAgICAgICAgICAvKiAgIEEyQ09MICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREVFUDoxOyAgICAgICAgICAgICAvKiAgIERFRVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkZTSDoxOyAgICAgICAgICAgICAvKiAgIFJGU0ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUk1PREU6MTsgICAgICAgICAgICAvKiAgIFJNT0RFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUERPV046MTsgICAgICAgICAgICAvKiAgIFBET1dOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkFDVFY6MTsgICAgICAgICAgICAvKiAgIEJBQ1RWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNST1c6MjsgICAgICAgICAgICAvKiAgIEEzUk9XICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNDT0w6MjsgICAgICAgICAgICAvKiAgIEEzQ09MICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01GOjE7ICAgICAgICAgICAgICAvKiAgIENNRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JRToxOyAgICAgICAgICAgICAvKiAgIENNSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0tTOjM7ICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlJDOjM7ICAgICAgICAgICAgICAvKiAgIFJSQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENOVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSVENPUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVENPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfZG1hYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgRE1BQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIwICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIwICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETzoxOyAgICAgICAgICAgICAgICAvKiAgIERPICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUTDoxOyAgICAgICAgICAgICAgICAvKiAgIFRMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBTToxOyAgICAgICAgICAgICAgICAvKiAgIEFNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBTDoxOyAgICAgICAgICAgICAgICAvKiAgIEFMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETDoxOyAgICAgICAgICAgICAgICAvKiAgIERMICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEUzoxOyAgICAgICAgICAgICAgICAvKiAgIERTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIyICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIyICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIzICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIzICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI0ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI0ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI1ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI1ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI2ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI2ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI3ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI3ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I3ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI4ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI4ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVI5ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVI5ICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1I5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIxNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVIxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQVIxNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQVIxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFUQ1IxNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFUQ1IxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDSENSMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQzoxOyAgICAgICAgICAgICAgICAvKiAgIFRDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTERTQVI6MTsgICAgICAgICAgICAvKiAgIFJMRFNBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSTEREQVI6MTsgICAgICAgICAgICAvKiAgIFJMRERBUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEQUY6MTsgICAgICAgICAgICAgICAvKiAgIERBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQUY6MTsgICAgICAgICAgICAgICAvKiAgIFNBRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU1BU0s6MTsgICAgICAgICAgICAvKiAgIFRFTUFTSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIRToxOyAgICAgICAgICAgICAgICAvKiAgIEhFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISUU6MTsgICAgICAgICAgICAgICAvKiAgIEhJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBETToyOyAgICAgICAgICAgICAgICAvKiAgIERNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTToyOyAgICAgICAgICAgICAgICAvKiAgIFNNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUzo0OyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQjoxOyAgICAgICAgICAgICAgICAvKiAgIFRCICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUzoyOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJRToxOyAgICAgICAgICAgICAgICAvKiAgIElFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERToxOyAgICAgICAgICAgICAgICAvKiAgIERFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDSENSMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSNzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSOTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSU0FSMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSU0FSMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSREFSMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSREFSMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRE1BVENSMTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRDozMjsgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSRE1BVENSMTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFPUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTVM6MjsgICAgICAgICAgICAgICAvKiAgIENNUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQUjoyOyAgICAgICAgICAgICAgICAvKiAgIFBSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBRToxOyAgICAgICAgICAgICAgICAvKiAgIEFFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlGOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBETUU6MTsgICAgICAgICAgICAgICAvKiAgIERNRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbMjU0XTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDE6ODsgICAgICAgICAgICAgICAvKiAgIENIMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDA6ODsgICAgICAgICAgICAgICAvKiAgIENIMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDFNSUQ6NjsgICAgICAgICAgICAvKiAgIENIMU1JRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDFSSUQ6MjsgICAgICAgICAgICAvKiAgIENIMVJJRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDBNSUQ6NjsgICAgICAgICAgICAvKiAgIENIME1JRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDBSSUQ6MjsgICAgICAgICAgICAvKiAgIENIMFJJRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETUFSUzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETUFSUzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDM6ODsgICAgICAgICAgICAgICAvKiAgIENIMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDI6ODsgICAgICAgICAgICAgICAvKiAgIENIMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSDNNSUQ6NjsgICAgICAgICAgICAvKiAgIENIM0lEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIM1JJRDoyOyAgICAgICAgICAgIC8qICAgQ0gzUklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMk1JRDo2OyAgICAgICAgICAgIC8qICAgQ0gyTUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMlJJRDoyOyAgICAgICAgICAgIC8qICAgQ0gyUklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINTo4OyAgICAgICAgICAgICAgIC8qICAgQ0g1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINDo4OyAgICAgICAgICAgICAgIC8qICAgQ0g0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINU1JRDo2OyAgICAgICAgICAgIC8qICAgQ0g1TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINVJJRDoyOyAgICAgICAgICAgIC8qICAgQ0g1UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINE1JRDo2OyAgICAgICAgICAgIC8qICAgQ0g0TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINFJJRDoyOyAgICAgICAgICAgIC8qICAgQ0g0UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINzo4OyAgICAgICAgICAgICAgIC8qICAgQ0g3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINjo4OyAgICAgICAgICAgICAgIC8qICAgQ0g2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIN01JRDo2OyAgICAgICAgICAgIC8qICAgQ0g3TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIN1JJRDoyOyAgICAgICAgICAgIC8qICAgQ0g3UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINk1JRDo2OyAgICAgICAgICAgIC8qICAgQ0g2TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENINlJJRDoyOyAgICAgICAgICAgIC8qICAgQ0g2UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIOTo4OyAgICAgICAgICAgICAgIC8qICAgQ0g5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIODo4OyAgICAgICAgICAgICAgIC8qICAgQ0g4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIOU1JRDo2OyAgICAgICAgICAgIC8qICAgQ0g5TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIOVJJRDoyOyAgICAgICAgICAgIC8qICAgQ0g5UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIOE1JRDo2OyAgICAgICAgICAgIC8qICAgQ0g4TUlEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIOFJJRDoyOyAgICAgICAgICAgIC8qICAgQ0g4UklEICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTE6ODsgICAgICAgICAgICAgIC8qICAgQ0gxMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTA6ODsgICAgICAgICAgICAgIC8qICAgQ0gxMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTFNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxMU1JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTFSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxMVJJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTBNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxME1JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTBSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxMFJJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTNTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTM6ODsgICAgICAgICAgICAgIC8qICAgQ0gxMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTI6ODsgICAgICAgICAgICAgIC8qICAgQ0gxMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTNNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxM01JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTNSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxM1JJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTJNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxMk1JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTJSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxMlJJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTNjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syM1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERNQVJTNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTU6ODsgICAgICAgICAgICAgIC8qICAgQ0gxNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTQ6ODsgICAgICAgICAgICAgIC8qICAgQ0gxNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTVNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxNU1JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTVSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxNVJJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTRNSUQ6NjsgICAgICAgICAgIC8qICAgQ0gxNE1JRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIMTRSSUQ6MjsgICAgICAgICAgIC8qICAgQ0gxNFJJRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERNQVJTNzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjZW5kaWYNCi0jaWYgMA0KLXN0cnVjdCBzdF9tdHUyIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBNVFUyICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8yICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MjsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVVOjE7ICAgICAgICAgICAgIC8qICAgVENJRVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8yICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlU6MTsgICAgICAgICAgICAgIC8qICAgVENGVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzUwMF07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8zICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl80ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzQgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzQgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0UyOjE7ICAgICAgICAgICAgIC8qICAgVFRHRTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEQ6MTsgICAgICAgICAgICAgIC8qICAgT0U0RCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEM6MTsgICAgICAgICAgICAgIC8qICAgT0U0QyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FM0Q6MTsgICAgICAgICAgICAgIC8qICAgT0UzRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEI6MTsgICAgICAgICAgICAgIC8qICAgT0U0QiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEE6MTsgICAgICAgICAgICAgIC8qICAgT0U0QSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FM0I6MTsgICAgICAgICAgICAgIC8qICAgT0UzQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJEQzoxOyAgICAgICAgICAgICAgIC8qICAgQkRDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE46MTsgICAgICAgICAgICAgICAgIC8qICAgTiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFA6MTsgICAgICAgICAgICAgICAgIC8qICAgUCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEZCOjE7ICAgICAgICAgICAgICAgIC8qICAgRkIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdGOjE7ICAgICAgICAgICAgICAgIC8qICAgV0YgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZGOjE7ICAgICAgICAgICAgICAgIC8qICAgVkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFVGOjE7ICAgICAgICAgICAgICAgIC8qICAgVUYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBTWUU6MTsgICAgICAgICAgICAgIC8qICAgUFNZRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPQ0w6MTsgICAgICAgICAgICAgIC8qICAgVE9DTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPQ1M6MTsgICAgICAgICAgICAgIC8qICAgVE9DUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MU046MTsgICAgICAgICAgICAgIC8qICAgT0xTTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MU1A6MTsgICAgICAgICAgICAgIC8qICAgT0xTUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGOjI7ICAgICAgICAgICAgICAgIC8qICAgQkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNOOjE7ICAgICAgICAgICAgIC8qICAgT0xTM04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNQOjE7ICAgICAgICAgICAgIC8qICAgT0xTM1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMk4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMlAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMVAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEREUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBURERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ05UUyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRTOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDQlIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8zICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl80ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJVENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFQzQUVOOjE7ICAgICAgICAgICAgIC8qICAgVDNBRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8zQUNPUjozOyAgICAgICAgICAgIC8qICAgXzNBQ09SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFQ0VkVOOjE7ICAgICAgICAgICAgIC8qICAgVDRWRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF80VkNPUjozOyAgICAgICAgICAgIC8qICAgXzRWQ09SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJVENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJVENOVCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8zQUNOVDozOyAgICAgICAgICAgIC8qICAgXzNBQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF80VkNOVDozOyAgICAgICAgICAgIC8qICAgXzRWQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJVENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVEVSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJURToyOyAgICAgICAgICAgICAgIC8qICAgQlRFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVEVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRERVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRERVI6MTsgICAgICAgICAgICAgIC8qICAgVERFUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRERVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPTEJSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNOOjE7ICAgICAgICAgICAgIC8qICAgT0xTM04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNQOjE7ICAgICAgICAgICAgIC8qICAgT0xTM1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMk4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMlAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMVAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPTEJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJGOjI7ICAgICAgICAgICAgICAgIC8qICAgQkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVUNEFFOjE7ICAgICAgICAgICAgIC8qICAgVVQ0QUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNEFFOjE7ICAgICAgICAgICAgIC8qICAgRFQ0QUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVUNEJFOjE7ICAgICAgICAgICAgIC8qICAgVVQ0QkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNEJFOjE7ICAgICAgICAgICAgIC8qICAgRFQ0QkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQTNBRToxOyAgICAgICAgICAgIC8qICAgSVRBM0FFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQTRWRToxOyAgICAgICAgICAgIC8qICAgSVRBNFZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQjNBRToxOyAgICAgICAgICAgIC8qICAgSVRCM0FFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElUQjRWRToxOyAgICAgICAgICAgIC8qICAgSVRCNFZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPUkFfNCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPUkFfNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPUkJfNCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPUkJfNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPQlJBXzQgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPQlJBXzQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRBRENPQlJCXzQgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRBRENPQlJCXzQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRXQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDRToxOyAgICAgICAgICAgICAgIC8qICAgQ0NFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdSRToxOyAgICAgICAgICAgICAgIC8qICAgV1JFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRXQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFszMV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTVFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDQ6MTsgICAgICAgICAgICAgIC8qICAgQ1NUNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDM6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDI6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDE6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDA6MTsgICAgICAgICAgICAgIC8qICAgQ1NUMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTWVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkM0OjE7ICAgICAgICAgICAgIC8qICAgU1lOQzQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMzOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMyOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMxOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNZTkMwOjE7ICAgICAgICAgICAgIC8qICAgU1lOQzAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTWVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSV0VSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJXRToxOyAgICAgICAgICAgICAgIC8qICAgUldFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSV0VSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsxMjNdOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8wICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGRToxOyAgICAgICAgICAgICAgIC8qICAgQkZFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8wICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkNfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkNfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkRfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkRfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1sxNl07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkVfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkVfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkZfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkZfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVIyXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0UyOjE7ICAgICAgICAgICAgIC8qICAgVFRHRTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVGOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVFOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVIyXzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUjJfMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkY6MTsgICAgICAgICAgICAgIC8qICAgVEdGRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkU6MTsgICAgICAgICAgICAgIC8qICAgVEdGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUjJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRCVE1fMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0U6MTsgICAgICAgICAgICAgIC8qICAgVFRTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0I6MTsgICAgICAgICAgICAgIC8qICAgVFRTQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUU0E6MTsgICAgICAgICAgICAgIC8qICAgVFRTQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRCVE1fMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFs4OV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8xICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MjsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVVOjE7ICAgICAgICAgICAgIC8qICAgVENJRVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRTUl8xICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlU6MTsgICAgICAgICAgICAgIC8qICAgVENGVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkQ6MTsgICAgICAgICAgICAgIC8qICAgVEdGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkM6MTsgICAgICAgICAgICAgIC8qICAgVEdGQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkI6MTsgICAgICAgICAgICAgIC8qICAgVEdGQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHRkE6MTsgICAgICAgICAgICAgIC8qICAgVEdGQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJQ0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkyQkU6MTsgICAgICAgICAgICAgIC8qICAgSTJCRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkyQUU6MTsgICAgICAgICAgICAgIC8qICAgSTJBRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkxQkU6MTsgICAgICAgICAgICAgIC8qICAgSTFCRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEkxQUU6MTsgICAgICAgICAgICAgIC8qICAgSTFBRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJQ0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSNlbmRpZg0KLQ0KLXN0cnVjdCBzdF9jbXQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBDTVQgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNU1RSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUUjE6MTsgICAgICAgICAgICAgIC8qICAgU1RSMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUUjA6MTsgICAgICAgICAgICAgIC8qICAgU1RSMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNU1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ1NSMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRjoxOyAgICAgICAgICAgICAgIC8qICAgQ01GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNSUU6MTsgICAgICAgICAgICAgIC8qICAgQ01JRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLUzoyOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ1NSMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ05UMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ05UMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ09SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ09SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ1NSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRjoxOyAgICAgICAgICAgICAgIC8qICAgQ01GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNSUU6MTsgICAgICAgICAgICAgIC8qICAgQ01JRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLUzoyOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ1NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ05UMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ05UMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNQ09SMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNQ09SMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXVuaW9uIHVuX3dkdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVuaW9uIFdEVCAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQgIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgIC8qIFdUQ1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgIC8qICBCaXQgIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBJT1ZGOjE7IC8qICAgIElPVkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBXVElUOjE7IC8qICAgIFdUL0lUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBUTUU6MTsgIC8qICAgIFRNRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBDS1M6MzsgIC8qICAgIENLUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBXVENTUjsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIHdrMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdUQ05UOyAgICAgICAgICAgICAgIC8qIFdUQ05UICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIHdrMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgIC8qIFdSQ1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgIC8qICBCaXQgIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBXT1ZGOjE7IC8qICAgIFdPVkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBSU1RFOjE7IC8qICAgIFJTVEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBSU1RTOjE7IC8qICAgIFJTVFMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBXUkNTUjsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBSRUFEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdyaXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdUQ1NSOyAgICAgICAgICAgICAgIC8qIFdUQ1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdUQ05UOyAgICAgICAgICAgICAgIC8qIFdUQ05UICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdSQ1NSOyAgICAgICAgICAgICAgIC8qIFdSQ1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXUklURTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9ydGMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBSVEMgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFI2NENOVCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8xSHo6MTsgICAgICAgICAgICAgIC8qICAgXzFIeiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8ySHo6MTsgICAgICAgICAgICAgIC8qICAgXzJIeiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF80SHo6MTsgICAgICAgICAgICAgIC8qICAgXzRIeiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF84SHo6MTsgICAgICAgICAgICAgIC8qICAgXzhIeiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8xNkh6OjE7ICAgICAgICAgICAgIC8qICAgXzE2SHogICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF8zMkh6OjE7ICAgICAgICAgICAgIC8qICAgXzMySHogICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIF82NEh6OjE7ICAgICAgICAgICAgIC8qICAgXzY0SHogICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFI2NENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUlNFQ0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTRUNDTlQgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUk1JTkNOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJNSU5DTlQgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUkhSQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJIUkNOVCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUldLQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJXS0NOVCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUkRBWUNOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVlDTlQgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgUk1PTkNOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJNT05DTlQgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUllSQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJZUkNOVCAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJTRUNBUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJTRUNBUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJNSU5BUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJNSU5BUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJIUkFSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJIUkFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJXS0FSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJXS0FSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQVlBUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJEQVlBUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJNT05BUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJNT05BUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJDUjEgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENGOjE7ICAgICAgICAgICAgICAgIC8qICAgQ0YgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENJRToxOyAgICAgICAgICAgICAgIC8qICAgQ0lFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFJRToxOyAgICAgICAgICAgICAgIC8qICAgQUlFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFGOjE7ICAgICAgICAgICAgICAgIC8qICAgQUYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1sxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJDUjIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFRjoxOyAgICAgICAgICAgICAgIC8qICAgUEVGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFUzozOyAgICAgICAgICAgICAgIC8qICAgUEVTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJUQ0VOOjE7ICAgICAgICAgICAgIC8qICAgUlRDRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEFESjoxOyAgICAgICAgICAgICAgIC8qICAgQURKICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJFU0VUOjE7ICAgICAgICAgICAgIC8qICAgUkVTRVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUQVJUOjE7ICAgICAgICAgICAgIC8qICAgU1RBUlQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVVdPUkQgUllSQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJZUkFSICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJDUjMgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEVOQjoxOyAgICAgICAgICAgICAgIC8qICAgRU5CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJDUjUgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJDS1NFTDoyOyAgICAgICAgICAgIC8qICAgUkNLU0VMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxN1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJGUkggICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNFTDY0OjE7ICAgICAgICAgICAgIC8qICAgU0VMNjQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE4OjE7ICAgICAgICAgICAgIC8qICAgUkZDWzE4XSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE3OjE7ICAgICAgICAgICAgIC8qICAgUkZDWzE3XSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE2OjE7ICAgICAgICAgICAgIC8qICAgUkZDWzE2XSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJGUkg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJGUkwgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE1OjE7ICAgICAgICAgICAgIC8qICAgUkZDWzE1XSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE0OjE7ICAgICAgICAgICAgIC8qICAgUkZDWzE0XSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzEzOjE7ICAgICAgICAgICAgIC8qICAgUkZDWzEzXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzEyOjE7ICAgICAgICAgICAgIC8qICAgUkZDWzEyXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzExOjE7ICAgICAgICAgICAgIC8qICAgUkZDWzExXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzEwOjE7ICAgICAgICAgICAgIC8qICAgUkZDWzEwXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzk6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzldICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzg6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzhdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzc6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzddICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzY6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzZdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzU6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzVdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzQ6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzRdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzM6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzNdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzI6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzJdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzE6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGQzA6MTsgICAgICAgICAgICAgIC8qICAgUkZDWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJGUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjaWYJMA0KLXN0cnVjdCBzdF9zY2lmMDIzNDYgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTQ0lGICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU01SXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENBOjE7ICAgICAgICAgICAgICAgIC8qICAgQy9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUjoxOyAgICAgICAgICAgICAgIC8qICAgQ0hSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFOjE7ICAgICAgICAgICAgICAgIC8qICAgUEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9FOjE7ICAgICAgICAgICAgICAgIC8qICAgTy9FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUT1A6MTsgICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLUzoyOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDQlJSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDQlJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRJRToxOyAgICAgICAgICAgICAgIC8qICAgVElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJJRToxOyAgICAgICAgICAgICAgIC8qICAgUklFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFOjE7ICAgICAgICAgICAgICAgIC8qICAgUkUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFSUU6MTsgICAgICAgICAgICAgIC8qICAgUkVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLRToyOyAgICAgICAgICAgICAgIC8qICAgQ0tFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlREUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlREUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUk46NDsgICAgICAgICAgICAgIC8qICAgUEVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUk46NDsgICAgICAgICAgICAgIC8qICAgRkVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVSOjE7ICAgICAgICAgICAgICAgIC8qICAgRVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRERkU6MTsgICAgICAgICAgICAgIC8qICAgVERGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSSzoxOyAgICAgICAgICAgICAgIC8qICAgQlJLICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUjoxOyAgICAgICAgICAgICAgIC8qICAgRkVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUjoxOyAgICAgICAgICAgICAgIC8qICAgUEVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJERjoxOyAgICAgICAgICAgICAgIC8qICAgUkRGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSOjE7ICAgICAgICAgICAgICAgIC8qICAgRFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlJEUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlJEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVFJHOjM7ICAgICAgICAgICAgIC8qICAgUlNUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUUkc6MjsgICAgICAgICAgICAgIC8qICAgUlRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRUUkc6MjsgICAgICAgICAgICAgIC8qICAgVFRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DRToxOyAgICAgICAgICAgICAgIC8qICAgTUNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRGUlNUOjE7ICAgICAgICAgICAgIC8qICAgVEZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGUlNUOjE7ICAgICAgICAgICAgIC8qICAgUkZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPT1A6MTsgICAgICAgICAgICAgIC8qICAgTE9PUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkRSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFQ6NTsgICAgICAgICAgICAgICAgIC8qICAgVCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFI6NTsgICAgICAgICAgICAgICAgIC8qICAgUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU1BUUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0lPOjE7ICAgICAgICAgICAgIC8qICAgU0NLSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RUOjE7ICAgICAgICAgICAgIC8qICAgU0NLRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJJTzoxOyAgICAgICAgICAgIC8qICAgU1BCMklPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJEVDoxOyAgICAgICAgICAgIC8qICAgU1BCMkRUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU1BUUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTFNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9SRVI6MTsgICAgICAgICAgICAgIC8qICAgT1JFUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRU1SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJHRE06MTsgICAgICAgICAgICAgIC8qICAgQkdETSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFCQ1M6MTsgICAgICAgICAgICAgIC8qICAgQUJDUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRU1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zY2lmMTU3IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTQ0lGICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU01SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENBOjE7ICAgICAgICAgICAgICAgIC8qICAgQy9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUjoxOyAgICAgICAgICAgICAgIC8qICAgQ0hSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFOjE7ICAgICAgICAgICAgICAgIC8qICAgUEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9FOjE7ICAgICAgICAgICAgICAgIC8qICAgTy9FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUT1A6MTsgICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLUzoyOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDQlJSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDQlJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRJRToxOyAgICAgICAgICAgICAgIC8qICAgVElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJJRToxOyAgICAgICAgICAgICAgIC8qICAgUklFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFOjE7ICAgICAgICAgICAgICAgIC8qICAgUkUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFSUU6MTsgICAgICAgICAgICAgIC8qICAgUkVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLRToyOyAgICAgICAgICAgICAgIC8qICAgQ0tFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU0NSICA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlREUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlREUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUk46NDsgICAgICAgICAgICAgIC8qICAgUEVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUk46NDsgICAgICAgICAgICAgIC8qICAgRkVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVSOjE7ICAgICAgICAgICAgICAgIC8qICAgRVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRERkU6MTsgICAgICAgICAgICAgIC8qICAgVERGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSSzoxOyAgICAgICAgICAgICAgIC8qICAgQlJLICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUjoxOyAgICAgICAgICAgICAgIC8qICAgRkVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUjoxOyAgICAgICAgICAgICAgIC8qICAgUEVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJERjoxOyAgICAgICAgICAgICAgIC8qICAgUkRGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSOjE7ICAgICAgICAgICAgICAgIC8qICAgRFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlNSICA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlJEUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlJEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVFJHOjM7ICAgICAgICAgICAgIC8qICAgUlNUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUUkc6MjsgICAgICAgICAgICAgIC8qICAgUlRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRUUkc6MjsgICAgICAgICAgICAgIC8qICAgVFRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DRToxOyAgICAgICAgICAgICAgIC8qICAgTUNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRGUlNUOjE7ICAgICAgICAgICAgIC8qICAgVEZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGUlNUOjE7ICAgICAgICAgICAgIC8qICAgUkZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPT1A6MTsgICAgICAgICAgICAgIC8qICAgTE9PUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkRSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFQ6NTsgICAgICAgICAgICAgICAgIC8qICAgVCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFI6NTsgICAgICAgICAgICAgICAgIC8qICAgUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU1BUUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUU0lPOjE7ICAgICAgICAgICAgIC8qICAgUlRTSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUU0RUOjE7ICAgICAgICAgICAgIC8qICAgUlRTRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUU0lPOjE7ICAgICAgICAgICAgIC8qICAgQ1RTSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUU0RUOjE7ICAgICAgICAgICAgIC8qICAgQ1RTRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0lPOjE7ICAgICAgICAgICAgIC8qICAgU0NLSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RUOjE7ICAgICAgICAgICAgIC8qICAgU0NLRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJJTzoxOyAgICAgICAgICAgIC8qICAgU1BCMklPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJEVDoxOyAgICAgICAgICAgIC8qICAgU1BCMkRUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU1BUUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTFNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9SRVI6MTsgICAgICAgICAgICAgIC8qICAgT1JFUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRU1SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJHRE06MTsgICAgICAgICAgICAgIC8qICAgQkdETSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFCQ1M6MTsgICAgICAgICAgICAgIC8qICAgQUJDUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRU1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjZW5kaWYNCi1zdHJ1Y3Qgc3RfcnNwaSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgUlNQSSAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFJJRToxOyAgICAgICAgICAgICAvKiAgIFNQUklFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUEU6MTsgICAgICAgICAgICAgICAvKiAgIFNQRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFRJRToxOyAgICAgICAgICAgICAvKiAgIFNQVElFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUEVJRToxOyAgICAgICAgICAgICAvKiAgIFNQRUlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RSOjE7ICAgICAgICAgICAgICAvKiAgIE1TVFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNT0RGRU46MTsgICAgICAgICAgICAvKiAgIE1PREZFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0xQICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTU0wwUDoxOyAgICAgICAgICAgICAvKiAgIFNTTDBQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0xQOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUFBDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNT0lGRToxOyAgICAgICAgICAgICAvKiAgIE1PSUZFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNT0lGVjoxOyAgICAgICAgICAgICAvKiAgIE1PSUZWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUExQOjE7ICAgICAgICAgICAgICAvKiAgIFNQTFAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUFBDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUFNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFJGOjE7ICAgICAgICAgICAgICAvKiAgIFNQUkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU5EOjE7ICAgICAgICAgICAgICAvKiAgIFRFTkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFRFRjoxOyAgICAgICAgICAgICAvKiAgIFNQVEVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNT0RGOjE7ICAgICAgICAgICAgICAvKiAgIE1PREYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPVlJGOjE7ICAgICAgICAgICAgICAvKiAgIE9WUkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUERSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgfSBTUERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUFNDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFNMTjoyOyAgICAgICAgICAgICAvKiAgIFNQU0xOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUFNDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUFNTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUENQOjI7ICAgICAgICAgICAgICAvKiAgIFNQQ1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUFNTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUEJSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUFI6ODsgICAgICAgICAgICAgICAvKiAgIFNQUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUEJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUERDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUWERNWToxOyAgICAgICAgICAgICAvKiAgIFRYRE1ZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUExXOjI7ICAgICAgICAgICAgICAvKiAgIFNQTFcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUERDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENLRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQ0tETDozOyAgICAgICAgICAgICAvKiAgIFNDS0RMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENLRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTU0xORCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTTE5ETDozOyAgICAgICAgICAgICAvKiAgIFNMTkRMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTU0xORDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUE5EICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUE5ETDozOyAgICAgICAgICAgICAvKiAgIFNQTkRMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUE5EOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENNRDAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tERU46MTsgICAgICAgICAgICAvKiAgIFNDS0RFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTE5ERU46MTsgICAgICAgICAgICAvKiAgIFNMTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUE5ERU46MTsgICAgICAgICAgICAvKiAgIFNQTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMU0JGOjE7ICAgICAgICAgICAgICAvKiAgIExTQkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUEI6NDsgICAgICAgICAgICAgICAvKiAgIFNQQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTU0xLUDoxOyAgICAgICAgICAgICAvKiAgIFNTTEtQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRWOjI7ICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUE9MOjE7ICAgICAgICAgICAgICAvKiAgIENQT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUEhBOjE7ICAgICAgICAgICAgICAvKiAgIENQSEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENNRDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENNRDEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tERU46MTsgICAgICAgICAgICAvKiAgIFNDS0RFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTE5ERU46MTsgICAgICAgICAgICAvKiAgIFNMTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUE5ERU46MTsgICAgICAgICAgICAvKiAgIFNQTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMU0JGOjE7ICAgICAgICAgICAgICAvKiAgIExTQkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUEI6NDsgICAgICAgICAgICAgICAvKiAgIFNQQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTU0xLUDoxOyAgICAgICAgICAgICAvKiAgIFNTTEtQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRWOjI7ICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUE9MOjE7ICAgICAgICAgICAgICAvKiAgIENQT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUEhBOjE7ICAgICAgICAgICAgICAvKiAgIENQSEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENNRDEgOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENNRDIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tERU46MTsgICAgICAgICAgICAvKiAgIFNDS0RFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTE5ERU46MTsgICAgICAgICAgICAvKiAgIFNMTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUE5ERU46MTsgICAgICAgICAgICAvKiAgIFNQTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMU0JGOjE7ICAgICAgICAgICAgICAvKiAgIExTQkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUEI6NDsgICAgICAgICAgICAgICAvKiAgIFNQQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTU0xLUDoxOyAgICAgICAgICAgICAvKiAgIFNTTEtQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRWOjI7ICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUE9MOjE7ICAgICAgICAgICAgICAvKiAgIENQT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUEhBOjE7ICAgICAgICAgICAgICAvKiAgIENQSEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENNRDIgOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUENNRDMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tERU46MTsgICAgICAgICAgICAvKiAgIFNDS0RFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTE5ERU46MTsgICAgICAgICAgICAvKiAgIFNMTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUE5ERU46MTsgICAgICAgICAgICAvKiAgIFNQTkRFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMU0JGOjE7ICAgICAgICAgICAgICAvKiAgIExTQkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUEI6NDsgICAgICAgICAgICAgICAvKiAgIFNQQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTU0xLUDoxOyAgICAgICAgICAgICAvKiAgIFNTTEtQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRWOjI7ICAgICAgICAgICAgICAvKiAgIEJSRFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUE9MOjE7ICAgICAgICAgICAgICAvKiAgIENQT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUEhBOjE7ICAgICAgICAgICAgICAvKiAgIENQSEEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUENNRDMgOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUEJGQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUWFJTVDoxOyAgICAgICAgICAgICAvKiAgIFRYUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSWFJTVDoxOyAgICAgICAgICAgICAvKiAgIFJYUlNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUWFRSRzoyOyAgICAgICAgICAgICAvKiAgIFRYVFJHICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSWFRSRzozOyAgICAgICAgICAgICAvKiAgIFJYVFJHICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUEJGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUEJGRFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUOjQgOyAgICAgICAgICAgICAgICAvKiAgIFQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSOjY7ICAgICAgICAgICAgICAgICAvKiAgIFIgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTUEJGRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2lmCTANCi1zdHJ1Y3Qgc3RfaWljMyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSUlDMyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJQ0U6MTsgICAgICAgICAgICAgICAvKiAgIElDRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQ1ZEOjE7ICAgICAgICAgICAgICAvKiAgIFJDVkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1Q6MTsgICAgICAgICAgICAgICAvKiAgIE1TVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUlM6MTsgICAgICAgICAgICAgICAvKiAgIFRSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDS1M6NDsgICAgICAgICAgICAgICAvKiAgIENLUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCQlNZOjE7ICAgICAgICAgICAgICAvKiAgIEJCU1kgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQ1A6MTsgICAgICAgICAgICAgICAvKiAgIFNDUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTREFPOjE7ICAgICAgICAgICAgICAvKiAgIFNEQU8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTREFPUDoxOyAgICAgICAgICAgICAvKiAgIFNEQU9QICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTQ0xPOjE7ICAgICAgICAgICAgICAvKiAgIFNDTE8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJSUNSU1Q6MTsgICAgICAgICAgICAvKiAgIElJQ1JTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ01SICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNTFM6MTsgICAgICAgICAgICAgICAvKiAgIE1MUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCQ1dQOjE7ICAgICAgICAgICAgICAvKiAgIEJDV1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCQzozOyAgICAgICAgICAgICAgICAvKiAgIEJDICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0lFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUSUU6MTsgICAgICAgICAgICAgICAvKiAgIFRJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURUlFOjE7ICAgICAgICAgICAgICAvKiAgIFRFSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSSUU6MTsgICAgICAgICAgICAgICAvKiAgIFJJRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOQUtJRToxOyAgICAgICAgICAgICAvKiAgIE5BS0lFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVElFOjE7ICAgICAgICAgICAgICAvKiAgIFNUSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBQ0tFOjE7ICAgICAgICAgICAgICAvKiAgIEFDS0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBQ0tCUjoxOyAgICAgICAgICAgICAvKiAgIEFDS0JSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBQ0tCVDoxOyAgICAgICAgICAgICAvKiAgIEFDS0JUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0lFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1NSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURFJFOjE7ICAgICAgICAgICAgICAvKiAgIFREUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBURU5EOjE7ICAgICAgICAgICAgICAvKiAgIFRFTkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSRFJGOjE7ICAgICAgICAgICAgICAvKiAgIFJEUkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOQUNLRjoxOyAgICAgICAgICAgICAvKiAgIE5BQ0tGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVE9QOjE7ICAgICAgICAgICAgICAvKiAgIFNUT1AgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBTE9WRToxOyAgICAgICAgICAgICAvKiAgIEFML09WRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBQVM6MTsgICAgICAgICAgICAgICAvKiAgIEFBUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBRFo6MTsgICAgICAgICAgICAgICAvKiAgIEFEWiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQVIgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVkE6NzsgICAgICAgICAgICAgICAvKiAgIFNWQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBGUzoxOyAgICAgICAgICAgICAgICAvKiAgIEZTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIElDRFJUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RSVCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIElDRFJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RSUiAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORjJDWUMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDS1M0OjE7ICAgICAgICAgICAgICAvKiAgIENLUzQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBQUlM6MTsgICAgICAgICAgICAgICAvKiAgIFBSUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBORjJDWUM6MTsgICAgICAgICAgICAvKiAgIE5GMkNZQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBORjJDWUM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2VuZGlmDQotc3RydWN0IHN0X3NzaWYgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNTSUYgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLUzoxOyAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRVSUVOOjE7ICAgICAgICAgICAgLyogICBUVUlFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRPSUVOOjE7ICAgICAgICAgICAgLyogICBUT0lFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJVSUVOOjE7ICAgICAgICAgICAgLyogICBSVUlFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJPSUVOOjE7ICAgICAgICAgICAgLyogICBST0lFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElJRU46MTsgICAgICAgICAgICAgLyogICBJSUVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENITkw6MjsgICAgICAgICAgICAgLyogICBDSE5MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERXTDozOyAgICAgICAgICAgICAgLyogICBEV0wgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXTDozOyAgICAgICAgICAgICAgLyogICBTV0wgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDS0Q6MTsgICAgICAgICAgICAgLyogICBTQ0tEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXU0Q6MTsgICAgICAgICAgICAgLyogICBTV1NEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDS1A6MTsgICAgICAgICAgICAgLyogICBTQ0tQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXU1A6MTsgICAgICAgICAgICAgLyogICBTV1NQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRFA6MTsgICAgICAgICAgICAgLyogICBTUERQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEVEE6MTsgICAgICAgICAgICAgLyogICBTRFRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBEVEE6MTsgICAgICAgICAgICAgLyogICBQRFRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERFTDoxOyAgICAgICAgICAgICAgLyogICBERUwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLRFY6NDsgICAgICAgICAgICAgLyogICBDS0RWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1VRU46MTsgICAgICAgICAgICAgLyogICBNVUVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFTjoxOyAgICAgICAgICAgICAgLyogICBURU4gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFTjoxOyAgICAgICAgICAgICAgLyogICBSRU4gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRVSVJROjE7ICAgICAgICAgICAgLyogICBUVUlSUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRPSVJROjE7ICAgICAgICAgICAgLyogICBUT0lSUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJVSVJROjE7ICAgICAgICAgICAgLyogICBSVUlSUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJPSVJROjE7ICAgICAgICAgICAgLyogICBST0lSUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElJUlE6MTsgICAgICAgICAgICAgLyogICBJSVJRICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxODsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDSE5POjI7ICAgICAgICAgICAgLyogICBUQ0hOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRTV05POjE7ICAgICAgICAgICAgLyogICBUU1dOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJDSE5POjI7ICAgICAgICAgICAgLyogICBSQ0hOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTV05POjE7ICAgICAgICAgICAgLyogICBSU1dOTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElEU1Q6MTsgICAgICAgICAgICAgLyogICBJRFNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJRkNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRUUkc6MjsgICAgICAgICAgICAgLyogICBUVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJUUkc6MjsgICAgICAgICAgICAgLyogICBSVFJHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJRToxOyAgICAgICAgICAgICAgLyogICBUSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJRToxOyAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRGUlNUOjE7ICAgICAgICAgICAgLyogICBURlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJGUlNUOjE7ICAgICAgICAgICAgLyogICBSRlJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJRkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJRlNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFREQzo0OyAgICAgICAgICAgICAgLyogICBUREMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRERToxOyAgICAgICAgICAgICAgLyogICBUREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEQzo0OyAgICAgICAgICAgICAgLyogICBSREMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJERjoxOyAgICAgICAgICAgICAgLyogICBSREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgU1NJRlREUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJRlREUiAgICAgICovDQotICAgICAgIF9VRFdPUkQgU1NJRlJEUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJRlJEUiAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJVERNUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTlQ6MTsgICAgICAgICAgICAgLyogICBDT05UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRETToxOyAgICAgICAgICAgICAgLyogICBURE0gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJVERNUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3Npb2YgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNJT0YgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lNRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJNRDoyOyAgICAgICAgICAgICAgLyogICBUUk1EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ0FUOjE7ICAgICAgICAgICAgLyogICBTWU5DQVQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVERzoxOyAgICAgICAgICAgICAgLyogICBSRURHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkw6NDsgICAgICAgICAgICAgICAgLyogICBGTCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFhESVo6MTsgICAgICAgICAgICAgLyogICBUWERJWiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ0FDOjE7ICAgICAgICAgICAgLyogICBTWU5DQUMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ0RMOjE7ICAgICAgICAgICAgLyogICBTWU5DREwgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lNRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lTQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVNTRUw6MTsgICAgICAgICAgICAgLyogICBNU1NFTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJQUzo1OyAgICAgICAgICAgICAgLyogICBCUlBTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEVjozOyAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lTQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lUREFSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERMRToxOyAgICAgICAgICAgICAgLyogICBURExFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERMQTo0OyAgICAgICAgICAgICAgLyogICBURExBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERSRToxOyAgICAgICAgICAgICAgLyogICBURFJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVExSRVA6MTsgICAgICAgICAgICAgLyogICBUTFJFUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERSQTo0OyAgICAgICAgICAgICAgLyogICBURFJBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lUREFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lSREFSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRMRToxOyAgICAgICAgICAgICAgLyogICBSRExFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRMQTo0OyAgICAgICAgICAgICAgLyogICBSRExBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRSRToxOyAgICAgICAgICAgICAgLyogICBSRFJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRSQTo0OyAgICAgICAgICAgICAgLyogICBSRFJBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lSREFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lDVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0NLRToxOyAgICAgICAgICAgICAgLyogICBTQ0tFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlNFOjE7ICAgICAgICAgICAgICAgLyogICBGU0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFhFOjE7ICAgICAgICAgICAgICAgLyogICBUWEUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlhFOjE7ICAgICAgICAgICAgICAgLyogICBSWEUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFhSU1Q6MTsgICAgICAgICAgICAgLyogICBUWFJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlhSU1Q6MTsgICAgICAgICAgICAgLyogICBSWFJTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lGQ1RSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZXTTozOyAgICAgICAgICAgICAgLyogICBURldNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZVQTo1OyAgICAgICAgICAgICAgLyogICBURlVBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZXTTozOyAgICAgICAgICAgICAgLyogICBSRldNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZVQTo1OyAgICAgICAgICAgICAgLyogICBSRlVBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lGQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lTVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZFTVA6MTsgICAgICAgICAgICAgLyogICBURkVNUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERSRVE6MTsgICAgICAgICAgICAgLyogICBURFJFUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZGVUw6MSA7ICAgICAgICAgICAgLyogICBSRkZVTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRSRVE6MTsgICAgICAgICAgICAgLyogICBSRFJFUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlNFUlI6MTsgICAgICAgICAgICAgLyogICBGU0VSUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZPVkY6MTsgICAgICAgICAgICAgLyogICBURk9WRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZVREY6MTsgICAgICAgICAgICAgLyogICBURlVERiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZVREY6MTsgICAgICAgICAgICAgLyogICBSRlVERiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZPVkY6MTsgICAgICAgICAgICAgLyogICBSRk9WRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lTVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lJRVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERNQUU6MTsgICAgICAgICAgICAgLyogICBURE1BRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZFTVBFOjE7ICAgICAgICAgICAgLyogICBURkVNUEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVERSRVFFOjE7ICAgICAgICAgICAgLyogICBURFJFUUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRNQUU6MTsgICAgICAgICAgICAgLyogICBSRE1BRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZGVUxFOjE7ICAgICAgICAgICAgLyogICBSRkZVTEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRSRVFFOjE7ICAgICAgICAgICAgLyogICBSRFJFUUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlNFUlJFOjE7ICAgICAgICAgICAgLyogICBGU0VSUkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZPVkZFOjE7ICAgICAgICAgICAgLyogICBURk9WRkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEZVREZFOjE7ICAgICAgICAgICAgLyogICBURlVERkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZVREZFOjE7ICAgICAgICAgICAgLyogICBSRlVERkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkZPVkZFOjE7ICAgICAgICAgICAgLyogICBSRk9WRkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lJRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lURFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lUREw6MTY7ICAgICAgICAgICAgLyogICBTSVRETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lURFI6MTY7ICAgICAgICAgICAgLyogICBTSVREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lURFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0lSRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lSREw6MTY7ICAgICAgICAgICAgLyogICBTSVJETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lSRFI6MTY7ICAgICAgICAgICAgLyogICBTSVJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0lSRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsNCi11bmlvbiB1bl9tYjMxMTZ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNQjMxLU1CMTYgICAgKi8NCi0gICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMzE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMzA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjk6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjg6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjggICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjY6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjQ6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjM6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjI6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMjA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMjAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTk6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTg6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTggICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIE1CMTY6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE1CMTYgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19Ow0KLXVuaW9uIHVuX21iMTVfMHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1CMTUtTUIwICAgICAqLw0KLSAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxNToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxNDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxMzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxMjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI5OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI5ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI4OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI4ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI3OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI3ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI2OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI2ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI1OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUI0OjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUI0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIzOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIyOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIxOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgTUIwOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUIwICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07DQotdW5pb24gdW5fbWIxNV8xeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTUIxNS1NQjEgICAgICovDQotICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE1OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjE1ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE0OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjE0ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEzOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEzICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEyOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjExOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjExICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjEwOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjk6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjkgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjg6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjggICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjc6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjY6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjU6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjQ6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjM6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjI6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBNQjE6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNQjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsNCi1zdHJ1Y3Qgc3RfcmNhbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgUkNBTiAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBNQ1IgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJRFIgIDoxOyAgICAgICAgICAgICAvKiAgIElEUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBSEJPIDoxOyAgICAgICAgICAgICAvKiAgIEFIQk8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCAgICAgIDozOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUU1QgIDozOyAgICAgICAgICAgICAvKiAgIFRTVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBV00gIDoxOyAgICAgICAgICAgICAvKiAgIEFXTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVEJPIDoxOyAgICAgICAgICAgICAvKiAgIEhUQk8gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTFBNIDoxOyAgICAgICAgICAgICAvKiAgIFNMUE0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCAgICAgIDoyOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNVFAgIDoxOyAgICAgICAgICAgICAvKiAgIE1UUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBITFRSUToxOyAgICAgICAgICAgICAvKiAgIEhMVFJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1RSUToxOyAgICAgICAgICAgICAvKiAgIFJTVFJRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHU1IgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFUFM6MTsgICAgICAgICAgICAgICAvKiAgIEVQUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIU1M6MTsgICAgICAgICAgICAgICAvKiAgIEhTUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSUzoxOyAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNVFBGOjE7ICAgICAgICAgICAgICAvKiAgIE1UUEYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUldGOjE7ICAgICAgICAgICAgICAvKiAgIFRSV0YgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCT0Y6MTsgICAgICAgICAgICAgICAvKiAgIEJPRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCQ1IxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUU0cxOjQ7ICAgICAgICAgICAgICAvKiAgIFRTRzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUU0cyOjM7ICAgICAgICAgICAgICAvKiAgIFRTRzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSlc6MjsgICAgICAgICAgICAgICAvKiAgIFNKVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1A6MTsgICAgICAgICAgICAgICAvKiAgIEJTUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCQ1IwICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUlA6ODsgICAgICAgICAgICAgICAvKiAgIEJSUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUlIgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JMSA6MTsgICAgICAgICAgICAvKiAgIFRDTUkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JMCA6MTsgICAgICAgICAgICAvKiAgIFRDTUkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUT0kgICA6MTsgICAgICAgICAgICAvKiAgIFRPSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQVNNSUY6MTsgICAgICAgICAgICAvKiAgIEJBU01JRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JMiA6MTsgICAgICAgICAgICAvKiAgIFRDTUkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTlNNSSA6MTsgICAgICAgICAgICAvKiAgIFNOU01JICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNT09JRiA6MTsgICAgICAgICAgICAvKiAgIE1PT0lGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQkVJRiA6MTsgICAgICAgICAgICAvKiAgIE1CRUlGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPTEYgICA6MTsgICAgICAgICAgICAvKiAgIE9MRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCT0ZJRiA6MTsgICAgICAgICAgICAvKiAgIEJPRklGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFUElGICA6MTsgICAgICAgICAgICAvKiAgIEVQSUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRUNXSUY6MTsgICAgICAgICAgICAvKiAgIFJFQ1dJRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURUNXSUY6MTsgICAgICAgICAgICAvKiAgIFRFQ1dJRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRlJJRiA6MTsgICAgICAgICAgICAvKiAgIFJGUklGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERlJJRiA6MTsgICAgICAgICAgICAvKiAgIERGUklGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1RJRiA6MTsgICAgICAgICAgICAvKiAgIFJTVElGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTVIgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JMU06MTsgICAgICAgICAgICAvKiAgIFRDTUkxTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JME06MTsgICAgICAgICAgICAvKiAgIFRDTUkwTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUT0lNICA6MTsgICAgICAgICAgICAvKiAgIFRPSU0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQVNNSU06MTsgICAgICAgICAgICAvKiAgIEJBU01JTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01JMk06MTsgICAgICAgICAgICAvKiAgIFRDTUkyTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTlNNSU06MTsgICAgICAgICAgICAvKiAgIFNOU01JTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNT09JTSA6MTsgICAgICAgICAgICAvKiAgIE1PT0lNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQkVJTSA6MTsgICAgICAgICAgICAvKiAgIE1CRUlNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPTEZNICA6MTsgICAgICAgICAgICAvKiAgIE9MRk0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCT0ZJTSA6MTsgICAgICAgICAgICAvKiAgIEJPRklNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFUElNICA6MTsgICAgICAgICAgICAvKiAgIEVQSU0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRUNXSU06MTsgICAgICAgICAgICAvKiAgIFJFQ1dJTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURUNXSU06MTsgICAgICAgICAgICAvKiAgIFRFQ1dJTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRlJJTSA6MTsgICAgICAgICAgICAvKiAgIFJGUklNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERlJJTSA6MTsgICAgICAgICAgICAvKiAgIERGUklNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1RJTSA6MTsgICAgICAgICAgICAvKiAgIFJTVElNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBURUNfUkVDICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURUM6ODsgICAgICAgICAgICAgICAvKiAgIFRFQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRUM6ODsgICAgICAgICAgICAgICAvKiAgIFJFQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBURUNfUkVDICA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb257ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUWFBSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIzMToxOyAgICAgICAgICAgICAvKiAgIE1CMzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIzMDoxOyAgICAgICAgICAgICAvKiAgIE1CMzAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyOToxOyAgICAgICAgICAgICAvKiAgIE1CMjkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyODoxOyAgICAgICAgICAgICAvKiAgIE1CMjggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyNzoxOyAgICAgICAgICAgICAvKiAgIE1CMjcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyNjoxOyAgICAgICAgICAgICAvKiAgIE1CMjYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyNToxOyAgICAgICAgICAgICAvKiAgIE1CMjUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyNDoxOyAgICAgICAgICAgICAvKiAgIE1CMjQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyMzoxOyAgICAgICAgICAgICAvKiAgIE1CMjMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyMjoxOyAgICAgICAgICAgICAvKiAgIE1CMjIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyMToxOyAgICAgICAgICAgICAvKiAgIE1CMjEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyMDoxOyAgICAgICAgICAgICAvKiAgIE1CMjAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxOToxOyAgICAgICAgICAgICAvKiAgIE1CMTkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxODoxOyAgICAgICAgICAgICAvKiAgIE1CMTggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxNzoxOyAgICAgICAgICAgICAvKiAgIE1CMTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxNjoxOyAgICAgICAgICAgICAvKiAgIE1CMTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxNToxOyAgICAgICAgICAgICAvKiAgIE1CMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxNDoxOyAgICAgICAgICAgICAvKiAgIE1CMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxMzoxOyAgICAgICAgICAgICAvKiAgIE1CMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxMjoxOyAgICAgICAgICAgICAvKiAgIE1CMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxMToxOyAgICAgICAgICAgICAvKiAgIE1CMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxMDoxOyAgICAgICAgICAgICAvKiAgIE1CMTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI5OjE7ICAgICAgICAgICAgICAvKiAgIE1COSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI4OjE7ICAgICAgICAgICAgICAvKiAgIE1COCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI3OjE7ICAgICAgICAgICAgICAvKiAgIE1CNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI2OjE7ICAgICAgICAgICAgICAvKiAgIE1CNiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI1OjE7ICAgICAgICAgICAgICAvKiAgIE1CNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUI0OjE7ICAgICAgICAgICAgICAvKiAgIE1CNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIzOjE7ICAgICAgICAgICAgICAvKiAgIE1CMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIyOjE7ICAgICAgICAgICAgICAvKiAgIE1CMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUIxOjE7ICAgICAgICAgICAgICAvKiAgIE1CMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUWFBSMCAgOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IFRYQ1IxOyAgICAgICAgICAgICAgICAgICAvKiBUWENSMSAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8xIFRYQ1IwOyAgICAgICAgICAgICAgICAgICAvKiBUWENSMCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IFRYQUNLMTsgICAgICAgICAgICAgICAgICAvKiBUWEFDSzEgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8xIFRYQUNLMDsgICAgICAgICAgICAgICAgICAvKiBUWEFDSzAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IEFCQUNLMTsgICAgICAgICAgICAgICAgICAvKiBBQkFDSzEgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8xIEFCQUNLMDsgICAgICAgICAgICAgICAgICAvKiBBQkFDSzAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IFJYUFIxOyAgICAgICAgICAgICAgICAgICAvKiBSWFBSMSAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8wIFJYUFIwOyAgICAgICAgICAgICAgICAgICAvKiBSWFBSMCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IFJGUFIxOyAgICAgICAgICAgICAgICAgICAvKiBSRlBSMSAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8wIFJGUFIwOyAgICAgICAgICAgICAgICAgICAvKiBSRlBSMCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNls0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IE1CSU1SMTsgICAgICAgICAgICAgICAgICAvKiBNQklNUjEgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8wIE1CSU1SMDsgICAgICAgICAgICAgICAgICAvKiBNQklNUjAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIzMTE2IFVNU1IxOyAgICAgICAgICAgICAgICAgICAvKiBVTVNSMSAgICAgICAgKi8NCi0gICAgICAgdW5pb24gdW5fbWIxNV8wIFVNU1IwOyAgICAgICAgICAgICAgICAgICAvKiBVTVNSMCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFszNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUVENSMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURToxOyAgICAgICAgICAgICAgICAvKiAgIFRFICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUzoxOyAgICAgICAgICAgICAgICAvKiAgIFRTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQU5DIDoxOyAgICAgICAgICAgICAvKiAgIENBTkMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUUyOjE7ICAgICAgICAgICAgICAvKiAgIENNRTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUUxOjE7ICAgICAgICAgICAgICAvKiAgIENNRTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUUwOjE7ICAgICAgICAgICAgICAvKiAgIENNRTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ1NDOjE7ICAgICAgICAgICAgICAvKiAgIFRDU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUFNDIDo2OyAgICAgICAgICAgICAvKiAgIFRQU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUVENSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTUFYX1RFVyAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUFYOjM7ICAgICAgICAgICAgICAvKiAgIENNQVggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURVc6NCA7ICAgICAgICAgICAgICAvKiAgIFRFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDTUFYX1RFVzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFJGVFJPRkY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRlRST0ZGICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1IgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTlNNOjE7ICAgICAgICAgICAgICAvKiAgIFNOU00gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01GMjoxOyAgICAgICAgICAgICAvKiAgIFRDTUYyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01GMToxOyAgICAgICAgICAgICAvKiAgIFRDTUYxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ01GMDoxOyAgICAgICAgICAgICAvKiAgIFRDTUYwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUT19OR1JfTUU6MTsgICAgICAgICAvKiAgIFRPX05HUl9NRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIENDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDQ1IgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFRDTlRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ05UUiAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIENZQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDWUNUUiAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFJGTUs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSRk1LICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFRDTVIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ01SMCAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFRDTVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ01SMSAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFRDTVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ01SMiAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFRUVFNFTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUVFRTRUwgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbOTBdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgc3RydWN0IHsNCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDT05UUk9MMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSURFOjE7ICAgICAgICAvKiAgIElERSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlRSOjE7ICAgICAgICAvKiAgIFJUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RESUQ6MTE7ICAgICAvKiAgIFNURElEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVhUSUQ6MTg7ICAgICAvKiAgIEVYVElEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgfSBDT05UUk9MMDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMQUZNICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSURFOjE7ICAgICAgICAvKiAgIElERSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RESURfTEFGTToxMTsvKiAgIFNURElEX0xBRk0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVhUSURfTEFGTToxODsvKiAgIEVYVElEX0xBRk0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgfSBMQUZNOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIE1TR19EQVRBWzhdOyAgICAgICAgICAgICAgICAvKiBNU0dfREFUQSAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDT05UUk9MMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBIOyAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VQllURSBMOyAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUM6MTsgICAgICAgICAvKiAgIE5NQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFg6MTsgICAgICAgICAvKiAgIEFUWCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQVJUOjE7ICAgICAgICAvKiAgIERBUlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQkM6MzsgICAgICAgICAvKiAgIE1CQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBETEM6NDsgICAgICAgICAvKiAgIERMQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgfSBDT05UUk9MMTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFRJTUVTVEFNUDsgICAgICAgICAgICAgICAgICAvKiBUSU1FU1RBTVAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFRUVDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBUVFQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUVEMgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBUVFc6MjsgICAgICAgICAvKiAgIFRUVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCBPZmZzZXQ6NjsgICAgICAvKiAgIE9mZnNldCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VV09SRCByZXBfZmFjdG9yOjM7ICAvKiAgIHJlcF9mYWN0b3IgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgfSBUVEM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIHdrMTdbOF07ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB9IE1CWzMyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9pZWIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBJRUIgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFQ1RSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPTDoxOyAgICAgICAgICAgICAgIC8qICAgSU9MICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERFRToxOyAgICAgICAgICAgICAgIC8qICAgREVFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJFOjE7ICAgICAgICAgICAgICAgIC8qICAgUkUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFQ01SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENNRDozOyAgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFTUNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNTOjE7ICAgICAgICAgICAgICAgIC8qICAgU1MgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJOOjM7ICAgICAgICAgICAgICAgIC8qICAgUk4gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENUTDo0OyAgICAgICAgICAgICAgIC8qICAgQ1RMICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFTUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFQVIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElBUkw0OjQ7ICAgICAgICAgICAgIC8qICAgSUFSTDQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElNRDoyOyAgICAgICAgICAgICAgIC8qICAgSU1EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNURToxOyAgICAgICAgICAgICAgIC8qICAgU1RFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFQVIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFQVIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElBUlU4Ojg7ICAgICAgICAgICAgIC8qICAgSUFSVTggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFU0ExICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElTQUw0OjQ7ICAgICAgICAgICAgIC8qICAgSVNBTDQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFU0ExOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFU0EyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElTQVU4Ojg7ICAgICAgICAgICAgIC8qICAgSVNBVTggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFU0EyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSUVUQkZMOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFVEJGTCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFTUExICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElNQUw0OjQ7ICAgICAgICAgICAgIC8qICAgSU1BTDQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFTUExOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFTUEyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElNQVU4Ojg7ICAgICAgICAgICAgIC8qICAgSU1BVTggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFTUEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFUkNUTCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJDVEw6NDsgICAgICAgICAgICAgIC8qICAgUkNUTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFUkNUTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSUVSQkZMOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFUkJGTCAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFTEExICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElMQUw4Ojg7ICAgICAgICAgICAgIC8qICAgSUxBTDggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFTEExOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFTEEyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElMQVU0OjQ7ICAgICAgICAgICAgIC8qICAgSUxBVTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFTEEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFRkxHICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENNWDoxOyAgICAgICAgICAgICAgIC8qICAgQ01YICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1SUToxOyAgICAgICAgICAgICAgIC8qICAgTVJRICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSUToxOyAgICAgICAgICAgICAgIC8qICAgU1JRICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNSRToxOyAgICAgICAgICAgICAgIC8qICAgU1JFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExDSzoxOyAgICAgICAgICAgICAgIC8qICAgTENLICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTUzoxOyAgICAgICAgICAgICAgIC8qICAgUlNTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEdHOjE7ICAgICAgICAgICAgICAgIC8qICAgR0cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFRkxHOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFVFNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYUzoxOyAgICAgICAgICAgICAgIC8qICAgVFhTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRjoxOyAgICAgICAgICAgICAgIC8qICAgVFhGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRUFMOjE7ICAgICAgICAgICAgIC8qICAgVFhFQUwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRVRUTUU6MTsgICAgICAgICAgIC8qICAgVFhFVFRNRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRVJPOjE7ICAgICAgICAgICAgIC8qICAgVFhFUk8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRUFDSzoxOyAgICAgICAgICAgIC8qICAgVFhFQUNLICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFVFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFSUVUICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYU0U6MTsgICAgICAgICAgICAgIC8qICAgVFhTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRkU6MTsgICAgICAgICAgICAgIC8qICAgVFhGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRUFMRToxOyAgICAgICAgICAgIC8qICAgVFhFQUxFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRVRUTUVFOjE7ICAgICAgICAgIC8qICAgVFhFVFRNRUUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRVJPRToxOyAgICAgICAgICAgIC8qICAgVFhFUk9FICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRUFDS0U6MTsgICAgICAgICAgIC8qICAgVFhFQUNLRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFSUVUOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFUlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYQlNZOjE7ICAgICAgICAgICAgIC8qICAgUlhCU1kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYUzoxOyAgICAgICAgICAgICAgIC8qICAgUlhTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRjoxOyAgICAgICAgICAgICAgIC8qICAgUlhGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRURFOjE7ICAgICAgICAgICAgIC8qICAgUlhFREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRU9WRToxOyAgICAgICAgICAgIC8qICAgUlhFT1ZFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRVJUTUU6MTsgICAgICAgICAgIC8qICAgUlhFUlRNRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRURMRToxOyAgICAgICAgICAgIC8qICAgUlhFRExFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRVBFOjE7ICAgICAgICAgICAgIC8qICAgUlhFUEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFUlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFSUVSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYQlNZRToxOyAgICAgICAgICAgIC8qICAgUlhCU1lFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYU0U6MTsgICAgICAgICAgICAgIC8qICAgUlhTRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRkU6MTsgICAgICAgICAgICAgIC8qICAgUlhGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRURFRToxOyAgICAgICAgICAgIC8qICAgUlhFREVFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRU9WRUU6MTsgICAgICAgICAgIC8qICAgUlhFT1ZFRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRVJUTUVFOjE7ICAgICAgICAgIC8qICAgUlhFUlRNRUUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRURMRUU6MTsgICAgICAgICAgIC8qICAgUlhFRExFRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYRVBFRToxOyAgICAgICAgICAgIC8qICAgUlhFUEVFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFSUVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFQ0tTUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzM6MTsgICAgICAgICAgICAgIC8qICAgQ0tTMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzozOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFQ0tTUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzIzMV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFVEIwMDEtMTI4ICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRCOjg7ICAgICAgICAgICAgICAgIC8qICBUQiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFVEJbMTI4XTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzEyOF07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElFUkIwMDEtMTI4ICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJCOjg7ICAgICAgICAgICAgICAgIC8qICBSQiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElFUkJbMTI4XTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zcGRpZiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTUERJRiAqLw0KLSAgICAgICBfVURXT1JEIFRMQ0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRMQ0EgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFRSQ0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSQ0EgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRMQ1MgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTEFDOjI7ICAgICAgICAgICAgIC8qICAgQ0xBQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGUzo0OyAgICAgICAgICAgICAgIC8qICAgRlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDSE5POjQ7ICAgICAgICAgICAgIC8qICAgQ0hOTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUkNOTzo0OyAgICAgICAgICAgIC8qICAgU1JDTk8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQVRDRDo4OyAgICAgICAgICAgIC8qICAgQ0FUQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVEw6NTsgICAgICAgICAgICAgIC8qICAgQ1RMICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRMQ1M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSQ1MgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTEFDOjI7ICAgICAgICAgICAgIC8qICAgQ0xBQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGUzo0OyAgICAgICAgICAgICAgIC8qICAgRlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDSE5POjQ7ICAgICAgICAgICAgIC8qICAgQ0hOTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUkNOTzo0OyAgICAgICAgICAgIC8qICAgU1JDTk8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQVRDRDo4OyAgICAgICAgICAgIC8qICAgQ0FUQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVEw6NTsgICAgICAgICAgICAgIC8qICAgQ1RMICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSQ1M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFRVSTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRVSSAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFJMQ0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJMQ0EgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFJSQ0E7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJSQ0EgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJMQ1MgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTEFDOjI7ICAgICAgICAgICAgIC8qICAgQ0xBQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGUzo0OyAgICAgICAgICAgICAgIC8qICAgRlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDSE5POjQ7ICAgICAgICAgICAgIC8qICAgQ0hOTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUkNOTzo0OyAgICAgICAgICAgIC8qICAgU1JDTk8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQVRDRDo4OyAgICAgICAgICAgIC8qICAgQ0FUQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVEw6NTsgICAgICAgICAgICAgIC8qICAgQ1RMICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJMQ1M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJSQ1MgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTEFDOjI7ICAgICAgICAgICAgIC8qICAgQ0xBQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGUzo0OyAgICAgICAgICAgICAgIC8qICAgRlMgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDSE5POjQ7ICAgICAgICAgICAgIC8qICAgQ0hOTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUkNOTzo0OyAgICAgICAgICAgIC8qICAgU1JDTk8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQVRDRDo4OyAgICAgICAgICAgIC8qICAgQ0FUQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVEw6NTsgICAgICAgICAgICAgIC8qICAgQ1RMICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJSQ1M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFJVSTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJVSSAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENUUkwgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDS1M6MTsgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQQjoxOyAgICAgICAgICAgICAgIC8qICAgUEIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQVNTOjI7ICAgICAgICAgICAgIC8qICAgUkFTUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQVNTOjI7ICAgICAgICAgICAgIC8qICAgVEFTUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSREU6MTsgICAgICAgICAgICAgIC8qICAgUkRFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUREU6MTsgICAgICAgICAgICAgIC8qICAgVERFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQ1NJOjE7ICAgICAgICAgICAgIC8qICAgTkNTSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBT1M6MTsgICAgICAgICAgICAgIC8qICAgQU9TICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSTUU6MTsgICAgICAgICAgICAgIC8qICAgUk1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTUU6MTsgICAgICAgICAgICAgIC8qICAgVE1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRUlFOjE7ICAgICAgICAgICAgIC8qICAgUkVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUlFOjE7ICAgICAgICAgICAgIC8qICAgVEVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVQk9JOjE7ICAgICAgICAgICAgIC8qICAgVUJPSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVQlVJOjE7ICAgICAgICAgICAgIC8qICAgVUJVSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUkVJOjE7ICAgICAgICAgICAgIC8qICAgQ1JFSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQQUVJOjE7ICAgICAgICAgICAgIC8qICAgUEFFSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUkVJOjE7ICAgICAgICAgICAgIC8qICAgUFJFSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDU0VJOjE7ICAgICAgICAgICAgIC8qICAgQ1NFSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQk9JOjE7ICAgICAgICAgICAgIC8qICAgQUJPSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQlVJOjE7ICAgICAgICAgICAgIC8qICAgQUJVSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSVUlJOjE7ICAgICAgICAgICAgIC8qICAgUlVJSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUVUlJOjE7ICAgICAgICAgICAgIC8qICAgVFVJSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQ1NJOjE7ICAgICAgICAgICAgIC8qICAgUkNTSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQ0JJOjE7ICAgICAgICAgICAgIC8qICAgUkNCSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ1NJOjE7ICAgICAgICAgICAgIC8qICAgVENTSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ0JJOjE7ICAgICAgICAgICAgIC8qICAgVENCSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNUQVQgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTU7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQ6MTsgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSVM6MTsgICAgICAgICAgICAgIC8qICAgUklTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSVM6MTsgICAgICAgICAgICAgIC8qICAgVElTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVQk86MTsgICAgICAgICAgICAgIC8qICAgVUJPICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVQlU6MTsgICAgICAgICAgICAgIC8qICAgVUJVICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRToxOyAgICAgICAgICAgICAgIC8qICAgQ0UgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQQVJFOjE7ICAgICAgICAgICAgIC8qICAgUEFSRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUkVFOjE7ICAgICAgICAgICAgIC8qICAgUFJFRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDU0U6MTsgICAgICAgICAgICAgIC8qICAgQ1NFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQk86MTsgICAgICAgICAgICAgIC8qICAgQUJPICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQlU6MTsgICAgICAgICAgICAgIC8qICAgQUJVICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSVUlSOjE7ICAgICAgICAgICAgIC8qICAgUlVJUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUVUlSOjE7ICAgICAgICAgICAgIC8qICAgVFVJUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDU1JYOjE7ICAgICAgICAgICAgIC8qICAgQ1NSWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQlJYOjE7ICAgICAgICAgICAgIC8qICAgQ0JSWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDU1RYOjE7ICAgICAgICAgICAgIC8qICAgQ1NUWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQlRYOjE7ICAgICAgICAgICAgIC8qICAgQ0JUWCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNUQVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFREQUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFREQUQgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEIFJEQUQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJEQUQgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9yb21kZWMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBST01ERUMgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVUJDX0VOOjE7ICAgICAgICAgICAvKiAgIFNVQkNfRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDUk9NX0VOOjE7ICAgICAgICAgICAvKiAgIENST01fRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDUk9NX1NUUDoxOyAgICAgICAgICAvKiAgIENST01fU1RQICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NRU47ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NU1kwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWV9BVVQ6MTsgICAgICAgICAgICAvKiAgIFNZX0FVVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWV9JRU46MTsgICAgICAgICAgICAvKiAgIFNZX0lFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWV9ERU46MTsgICAgICAgICAgICAvKiAgIFNZX0RFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NU1kwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQ1RMMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9ERVNDOjE7ICAgICAgICAgICAvKiAgIE1EX0RFU0MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9BVVRPOjE7ICAgICAgICAgICAvKiAgIE1EX0FVVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9BVVRPUzE6MTsgICAgICAgICAvKiAgIE1EX0FVVE9TMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9BVVRPUzI6MTsgICAgICAgICAvKiAgIE1EX0FVVE9TMiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9TRUM6MzsgICAgICAgICAgICAvKiAgIE1EX1NFQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQ1RMMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQ1RMMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNMkYyRURDOjE7ICAgICAgICAgICAvKiAgIE0yRjJFREMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9ERUM6MzsgICAgICAgICAgICAvKiAgIE1EX0RFQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRF9QUVJFUDoyOyAgICAgICAgICAvKiAgIE1EX1BRUkVQICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQ1RMMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQ1RMMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBfRUNDOjE7ICAgICAgICAgICAvKiAgIFNUUF9FQ0MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBfRURDOjE7ICAgICAgICAgICAvKiAgIFNUUF9FREMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBfTUQ6MTsgICAgICAgICAgICAvKiAgIFNUUF9NRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBfTUlOOjE7ICAgICAgICAgICAvKiAgIFNUUF9NSU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQ1RMMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQ1RMNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LT0ZGOjE7ICAgICAgICAgICAvKiAgIExJTktPRkYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSU5LMjoxOyAgICAgICAgICAgICAvKiAgIExJTksyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFUk9TRUw6MTsgICAgICAgICAgICAvKiAgIEVST1NFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBOT19FQ0M6MTsgICAgICAgICAgICAvKiAgIE5PX0VDQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUk9NQ1RMNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUk9NQ1RMNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU0ZfTEJBX1NFTDoxOyAgICAgICAvKiAgIE1TRl9MQkFfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTUNUTDU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU1lJTDoxOyAgICAgICAgICAgLyogICBTVF9TWUlMICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU1lOTzoxOyAgICAgICAgICAgLyogICBTVF9TWU5PICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfQkxLUzoxOyAgICAgICAgICAgLyogICBTVF9CTEtTICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfQkxLTDoxOyAgICAgICAgICAgLyogICBTVF9CTEtMICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU0VDUzoxOyAgICAgICAgICAgLyogICBTVF9TRUNTICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU0VDTDoxOyAgICAgICAgICAgLyogICBTVF9TRUNMICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX0hFQUQwOjE7ICAgICAgICAgLyogICBFUjJfSEVBRDAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX0hFQUQxOjE7ICAgICAgICAgLyogICBFUjJfSEVBRDEgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX0hFQUQyOjE7ICAgICAgICAgLyogICBFUjJfSEVBRDIgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX0hFQUQzOjE7ICAgICAgICAgLyogICBFUjJfSEVBRDMgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFEMDoxOyAgICAgICAgLyogICBFUjJfU0hFQUQwICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFEMToxOyAgICAgICAgLyogICBFUjJfU0hFQUQxICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFEMjoxOyAgICAgICAgLyogICBFUjJfU0hFQUQyICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFEMzoxOyAgICAgICAgLyogICBFUjJfU0hFQUQzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFENDoxOyAgICAgICAgLyogICBFUjJfU0hFQUQ0ICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFENToxOyAgICAgICAgLyogICBFUjJfU0hFQUQ1ICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFENjoxOyAgICAgICAgLyogICBFUjJfU0hFQUQ2ICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVIyX1NIRUFENzoxOyAgICAgICAgLyogICBFUjJfU0hFQUQ3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUNCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTUQ6MTsgICAgICAgICAgICAgLyogICBOR19NRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURDTVAxOjE7ICAgICAgICAgLyogICBOR19NRENNUDEgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURDTVAyOjE7ICAgICAgICAgLyogICBOR19NRENNUDIgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURDTVAzOjE7ICAgICAgICAgLyogICBOR19NRENNUDMgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURDTVA0OjE7ICAgICAgICAgLyogICBOR19NRENNUDQgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURERUY6MTsgICAgICAgICAgLyogICBOR19NRERFRiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURUSU0xOjE7ICAgICAgICAgLyogICBOR19NRFRJTTEgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTkdfTURUSU0yOjE7ICAgICAgICAgLyogICBOR19NRFRJTTIgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUNSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfQU1EOjM7ICAgICAgICAgICAgLyogICBTVF9BTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfTURYOjE7ICAgICAgICAgICAgLyogICBTVF9NRFggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTElOS19PTjoxOyAgICAgICAgICAgLyogICBMSU5LX09OICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTElOS19ERVQ6MTsgICAgICAgICAgLyogICBMSU5LX0RFVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTElOS19TREVUOjE7ICAgICAgICAgLyogICBMSU5LX1NERVQgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTElOS19PVVQxOjE7ICAgICAgICAgLyogICBMSU5LX09VVDEgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUNTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUNiAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRVJSOjE7ICAgICAgICAgICAgLyogICBTVF9FUlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRUNDQUJUOjE7ICAgICAgICAgLyogICBTVF9FQ0NBQlQgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRUNDTkc6MTsgICAgICAgICAgLyogICBTVF9FQ0NORyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRUNDUDoxOyAgICAgICAgICAgLyogICBTVF9FQ0NQICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRUNDUToxOyAgICAgICAgICAgLyogICBTVF9FQ0NRICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRURDMToxOyAgICAgICAgICAgLyogICBTVF9FREMxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfRURDMjoxOyAgICAgICAgICAgLyogICBTVF9FREMyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUNjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRlNUMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX1JFRjoxOyAgICAgICAgICAgLyogICBCVUZfUkVGICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX0FDVDoxOyAgICAgICAgICAgLyogICBCVUZfQUNUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0JVRlNUMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRlNUMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX0VDQzoxOyAgICAgICAgICAgLyogICBCVUZfRUNDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX0VEQzoxOyAgICAgICAgICAgLyogICBCVUZfRURDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX01EOjE7ICAgICAgICAgICAgLyogICBCVUZfTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX01JTjoxOyAgICAgICAgICAgLyogICBCVUZfTUlOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0JVRlNUMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRlNUMiAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGX05HOjE7ICAgICAgICAgICAgLyogICBCVUZfTkcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0JVRlNUMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDAwICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDAxICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDAyICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDAzICAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwMCAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwMSAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwMiAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwMyAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwNCAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDA1OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwNSAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDA2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwNiAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDA3OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQwNyAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDIwICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDIxICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDIyICAgICAgICovDQotICAgICAgIF9VQllURSBIRUFEMjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEVBRDIzICAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyMCAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyMSAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyMiAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyMyAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDI0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyNCAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyNSAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDI2OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyNiAgICAgICovDQotICAgICAgIF9VQllURSBTSEVBRDI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0hFQUQyNyAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRkNUTDAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9BVVQ6MTsgICAgICAgICAgLyogICBDQlVGX0FVVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9FTjoxOyAgICAgICAgICAgLyogICBDQlVGX0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9MSU5LOjE7ICAgICAgICAgLyogICBDQlVGX0xJTksgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9NRDoyOyAgICAgICAgICAgLyogICBDQlVGX01EICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9UUzoxOyAgICAgICAgICAgLyogICBDQlVGX1RTICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQ0JVRl9ROjE7ICAgICAgICAgICAgLyogICBDQlVGX1EgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0JVRkNUTDA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBDQlVGQ1RMMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRkNUTDEgICAgICovDQotICAgICAgIF9VQllURSBDQlVGQ1RMMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRkNUTDIgICAgICovDQotICAgICAgIF9VQllURSBDQlVGQ1RMMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JVRkNUTDMgICAgICovDQotICAgICAgIF9VQllURSB3azVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTVNUME0gICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU1lJTE06MTsgICAgICAgICAgLyogICBTVF9TWUlMTSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU1lOT006MTsgICAgICAgICAgLyogICBTVF9TWU5PTSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfQkxLU006MTsgICAgICAgICAgLyogICBTVF9CTEtTTSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfQkxLTE06MTsgICAgICAgICAgLyogICBTVF9CTEtMTSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU0VDU006MTsgICAgICAgICAgLyogICBTVF9TRUNTTSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RfU0VDTE06MTsgICAgICAgICAgLyogICBTVF9TRUNMTSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTVNUME07ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMTg2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk9NREVDUlNUICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTE9HSUNSU1Q6MTsgICAgICAgICAgLyogICBMT0dJQ1JTVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNUlNUOjE7ICAgICAgICAgICAgLyogICBSQU1SU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUk9NREVDUlNUOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlNUU1RBVCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUkFNQ0xSU1Q6MTsgICAgICAgICAgLyogICBSQU1DTFJTVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlNUU1RBVDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1NJICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQllURU5EOjE7ICAgICAgICAgICAgLyogICBCWVRFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQklURU5EOjE7ICAgICAgICAgICAgLyogICBCSVRFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGRU5EMDoyOyAgICAgICAgICAgLyogICBCVUZFTkQwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgQlVGRU5EMToyOyAgICAgICAgICAgLyogICBCVUZFTkQxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1NJOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbNV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5USE9MRCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVNFQzoxOyAgICAgICAgICAgICAgLyogICBJU0VDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVRBUkc6MTsgICAgICAgICAgICAgLyogICBJVEFSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVNZOjE7ICAgICAgICAgICAgICAgLyogICBJU1kgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUVSUjoxOyAgICAgICAgICAgICAgLyogICBJRVJSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSUJVRjoxOyAgICAgICAgICAgICAgLyogICBJQlVGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSVJFQURZOjE7ICAgICAgICAgICAgLyogICBJUkVBRFkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5USE9MRDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5ISU5UICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISVNFQzoxOyAgICAgICAgICAgLyogICBJTkhJU0VDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISVRBUkc6MTsgICAgICAgICAgLyogICBJTkhJVEFSRyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISVNZOjE7ICAgICAgICAgICAgLyogICBJTkhJU1kgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISUVSUjoxOyAgICAgICAgICAgLyogICBJTkhJRVJSICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISUJVRjoxOyAgICAgICAgICAgLyogICBJTkhJQlVGICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5ISVJFQURZOjE7ICAgICAgICAgLyogICBJTkhJUkVBRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUFJFSU5IUkVRRE06MTsgICAgICAgLyogICBQUkVJTkhSRVFETSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBSRUlOSElSRUFEWToxOyAgICAgIC8qICAgUFJFSU5ISVJFQURZICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5ISU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMjQ2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgU1RSTURJTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RSTURJTiAgICAgICovDQotICAgICAgIF9VV09SRCBTVFJNRE9VVDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1RSTURPVVQgICAgICovDQotfTsNCi0NCi0NCi0jaWYgMCAvKiCQVmlvZGVmaW5lLmiCzEFEQ5Loi2CC8JdwgqKC6YK9gt+Vc5d2ICovDQotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2FkYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEFEQyAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUREUkggICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUREUkg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURDU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURGOjE7ICAgICAgICAgICAgICAgLyogICBBREYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURJRToxOyAgICAgICAgICAgICAgLyogICBBRElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURTVDoxOyAgICAgICAgICAgICAgLyogICBBRFNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJHUzo0OyAgICAgICAgICAgICAgLyogICBUUkdTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0tTOjM7ICAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTURTOjM7ICAgICAgICAgICAgICAgLyogICBNRFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0g6MzsgICAgICAgICAgICAgICAgLyogICBDSCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURDU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotI2VuZGlmDQotDQotDQotDQotc3RydWN0IHN0X2ZsY3RsIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEZMQ1RMICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRkxDTU5DUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCVVNZT046MTsgICAgICAgICAgIC8qICAgQlVTWU9OICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTTkFORDoxOyAgICAgICAgICAgIC8qICAgU05BTkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBRVFNFTDoxOyAgICAgICAgICAgIC8qICAgUVRTRUwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQ006MjsgICAgICAgICAgICAgIC8qICAgQUNNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQU5EV0Y6MTsgICAgICAgICAgIC8qICAgTkFORFdGICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRToxOyAgICAgICAgICAgICAgIC8qICAgQ0UgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMQ01OQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQ01EQ1IgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFJDTlQyOjE7ICAgICAgICAgIC8qICAgQURSQ05UMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1RDTlRfOjQ7ICAgICAgICAgIC8qICAgU0NUQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFJNRDoxOyAgICAgICAgICAgIC8qICAgQURSTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRFNSQzoxOyAgICAgICAgICAgIC8qICAgQ0RTUkMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1NSOjE7ICAgICAgICAgICAgIC8qICAgRE9TUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTRUxSVzoxOyAgICAgICAgICAgIC8qICAgU0VMUlcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET0FEUjoxOyAgICAgICAgICAgIC8qICAgRE9BRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFJDTlQ6MjsgICAgICAgICAgIC8qICAgQURSQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET0NNRDI6MTsgICAgICAgICAgIC8qICAgRE9DTUQyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET0NNRDE6MTsgICAgICAgICAgIC8qICAgRE9DTUQxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1RDTlQ6MTY7ICAgICAgICAgIC8qICAgU0NUQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMQ01EQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQ01DRFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQyOjg7ICAgICAgICAgICAgIC8qICAgQ01EMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQxOjg7ICAgICAgICAgICAgIC8qICAgQ01EMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMQ01DRFI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEICBGTEFEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMQURSICAgICAgICAqLw0KLSAgICAgICBfVURXT1JEICBGTERBVEFSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMREFUQVIgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMRFRDTlRSICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0ZMVzo4OyAgICAgICAgICAgIC8qICAgRUNGTFcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEVEZMVzo4OyAgICAgICAgICAgIC8qICAgRFRGTFcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEVENOVDoxMjsgICAgICAgICAgIC8qICAgRFRDTlQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEZMRFRDTlRSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZMSU5URE1BQ1IgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1RSRzoyOyAgICAgICAgICAvKiAgIEZJRk9UUkcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUMxQ0xSOjE7ICAgICAgICAgICAvKiAgIEFDMUNMUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUMwQ0xSOjE7ICAgICAgICAgICAvKiAgIEFDMENMUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJFUTFFTjoxOyAgICAgICAgICAvKiAgIERSRVExRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJFUTBFTjoxOyAgICAgICAgICAvKiAgIERSRVEwRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RFUkI6MTsgICAgICAgICAgICAvKiAgIFNURVJCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlRPRVJCOjE7ICAgICAgICAgICAvKiAgIEJUT0VSQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJSRVFGMToxOyAgICAgICAgICAvKiAgIFRSUkVRRjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJSRVFGMDoxOyAgICAgICAgICAvKiAgIFRSUkVRRjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RFUklOVEU6MTsgICAgICAgICAvKiAgIFNURVJJTlRFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkJFUklOVEU6MTsgICAgICAgICAvKiAgIFJCRVJJTlRFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJTlRFOjE7ICAgICAgICAgICAvKiAgIFRFSU5URSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJJTlRFMToxOyAgICAgICAgICAvKiAgIFRSSU5URTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJJTlRFMDoxOyAgICAgICAgICAvKiAgIFRSSU5URTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGTElOVERNQUNSOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTEJTWVRNUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkJUTU9VVDoyMDsgICAgICAgICAvKiAgIFJCVE1PVVQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGTEJTWVRNUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTEJTWUNOVCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RBVDo4OyAgICAgICAgICAgICAvKiAgIFNUQVQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkJUSU1DTlQ6MjA7ICAgICAgICAvKiAgIFJCVElNQ05UICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGTEJTWUNOVDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTFRSQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUlNUQVQ6MTsgICAgICAgICAgICAvKiAgIFRSU1RBVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUkVORDoxOyAgICAgICAgICAgICAvKiAgIFRSRU5EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUlNUUlQ6MTsgICAgICAgICAgICAvKiAgIFRSU1RSVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGTFRSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsxMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTEhPTERDUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSE9MREVOOjE7ICAgICAgICAgICAvKiAgIEhPTERFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGTEhPTERDUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBGTEFEUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTEFEUjIgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBGTERURklGTzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTERURklGTyAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1sxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBGTEVDRklGTzsgICAgICAgICAgICAgICAgICAgICAgICAvKiBGTEVDRklGTyAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0JI2lmCTANCi1zdHJ1Y3Qgc3RfdXNiIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgVVNCICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQ0tFOjE7ICAgICAgICAgICAgICAvKiAgIFNDS0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIU0U6MTsgICAgICAgICAgICAgICAvKiAgIEhTRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0ZNOjE7ICAgICAgICAgICAgICAvKiAgIERDRk0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUlBEOjE7ICAgICAgICAgICAgICAvKiAgIERSUEQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUFJQVToxOyAgICAgICAgICAgICAvKiAgIERQUlBVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQ0tGU0VMOjE7ICAgICAgICAgICAvKiAgIFVDS0ZTRUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQ0tQU0VMOjE7ICAgICAgICAgICAvKiAgIFVDS1BTRUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUExMRToxOyAgICAgICAgICAgICAvKiAgIFVQTExFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCRToxOyAgICAgICAgICAgICAgLyogICBVU0JFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlVTV0FJVCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQldBSVQ6NDsgICAgICAgICAgICAgLyogICBCV0FJVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlVTV0FJVDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTU1RTICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE5TVDoyOyAgICAgICAgICAgICAgLyogICBMTlNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFZTVENUUiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV0tVUDoxOyAgICAgICAgICAgICAgLyogICBXS1VQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUldVUEU6MTsgICAgICAgICAgICAgLyogICBSV1VQRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCUlNUOjE7ICAgICAgICAgICAgLyogICBVU0JSU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTVU1FOjE7ICAgICAgICAgICAgLyogICBSRVNVTUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVUFDVDoxOyAgICAgICAgICAgICAgLyogICBVQUNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkhTVDozOyAgICAgICAgICAgICAgLyogICBSSFNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFZTVENUUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEVTVE1PREUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVRTVDo0OyAgICAgICAgICAgICAgLyogICBVVFNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEVTVE1PREU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDBGQkNGRyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjExOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVOREU6MTsgICAgICAgICAgICAgLyogICBURU5ERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDBGQkNGRzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDFGQkNGRyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjExOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVEVOREU6MTsgICAgICAgICAgICAgLyogICBURU5ERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDFGQkNGRzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0ZJRk8gICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZJRk9QT1JUOjMyOyAgICAgICAgLyogICBGSUZPUE9SVCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0ZJRk87ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDBGSUZPICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZJRk9QT1JUOjMyOyAgICAgICAgLyogICBGSUZPUE9SVCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDBGSUZPOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDFGSUZPICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZJRk9QT1JUOjMyOyAgICAgICAgLyogICBGSUZPUE9SVCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDFGSUZPOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0ZJRk9TRUwgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkNOVDoxOyAgICAgICAgICAgICAgLyogICBSQ05UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVXOjE7ICAgICAgICAgICAgICAgLyogICBSRVcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJXOjI7ICAgICAgICAgICAgICAgLyogICBNQlcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQklHRU5EOjE7ICAgICAgICAgICAgLyogICBCSUdFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVNFTDoxOyAgICAgICAgICAgICAgLyogICBJU0VMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1VSUElQRTo0OyAgICAgICAgICAgLyogICBDVVJQSVBFICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0ZJRk9TRUw7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0ZJRk9DVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlZBTDoxOyAgICAgICAgICAgICAgLyogICBCVkFMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNMUjoxOyAgICAgICAgICAgICAgLyogICBCQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlJEWToxOyAgICAgICAgICAgICAgLyogICBGUkRZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFRMTjoxMjsgICAgICAgICAgICAgLyogICBEVExOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0ZJRk9DVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDBGSUZPU0VMICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkNOVDoxOyAgICAgICAgICAgICAgLyogICBSQ05UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVXOjE7ICAgICAgICAgICAgICAgLyogICBSRVcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENMUk06MTsgICAgICAgICAgICAgLyogICBEQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFJFUUU6MTsgICAgICAgICAgICAgLyogICBEUkVRRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJXOjI7ICAgICAgICAgICAgICAgLyogICBNQlcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQklHRU5EOjE7ICAgICAgICAgICAgLyogICBCSUdFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1VSUElQRTo0OyAgICAgICAgICAgLyogICBDVVJQSVBFICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDBGSUZPU0VMOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDBGSUZPQ1RSICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlZBTDoxOyAgICAgICAgICAgICAgLyogICBCVkFMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNMUjoxOyAgICAgICAgICAgICAgLyogICBCQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlJEWToxOyAgICAgICAgICAgICAgLyogICBGUkRZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFRMTjoxMjsgICAgICAgICAgICAgLyogICBEVExOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDBGSUZPQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDFGSUZPU0VMICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkNOVDoxOyAgICAgICAgICAgICAgLyogICBSQ05UICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVXOjE7ICAgICAgICAgICAgICAgLyogICBSRVcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENMUk06MTsgICAgICAgICAgICAgLyogICBEQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFJFUUU6MTsgICAgICAgICAgICAgLyogICBEUkVRRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJXOjI7ICAgICAgICAgICAgICAgLyogICBNQlcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQklHRU5EOjE7ICAgICAgICAgICAgLyogICBCSUdFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1VSUElQRTo0OyAgICAgICAgICAgLyogICBDVVJQSVBFICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDFGSUZPU0VMOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRDFGSUZPQ1RSICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlZBTDoxOyAgICAgICAgICAgICAgLyogICBCVkFMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNMUjoxOyAgICAgICAgICAgICAgLyogICBCQ0xSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlJEWToxOyAgICAgICAgICAgICAgLyogICBGUkRZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFRMTjoxMjsgICAgICAgICAgICAgLyogICBEVExOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRDFGSUZPQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5URU5CMCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkJTRToxOyAgICAgICAgICAgICAgLyogICBWQlNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNNRToxOyAgICAgICAgICAgICAgLyogICBSU01FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU09GRToxOyAgICAgICAgICAgICAgLyogICBTT0ZFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFZTRToxOyAgICAgICAgICAgICAgLyogICBEVlNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RSRToxOyAgICAgICAgICAgICAgLyogICBDVFJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkVNUEU6MTsgICAgICAgICAgICAgLyogICBCRU1QRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlJEWUU6MTsgICAgICAgICAgICAgLyogICBOUkRZRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEWUU6MTsgICAgICAgICAgICAgLyogICBCUkRZRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5URU5CMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5URU5CMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNIR0U6MTsgICAgICAgICAgICAgLyogICBCQ0hHRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFRDSEU6MTsgICAgICAgICAgICAgLyogICBEVENIRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRUQ0hFOjE7ICAgICAgICAgICAgLyogICBBVFRDSEUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRU9GRVJSRToxOyAgICAgICAgICAgLyogICBFT0ZFUlJFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lHTkU6MTsgICAgICAgICAgICAgLyogICBTSUdORSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0FDS0U6MTsgICAgICAgICAgICAgLyogICBTQUNLRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5URU5CMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlJEWUVOQiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlCUkRZRToxOyAgICAgICAgLyogICBQSVBFOUJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThCUkRZRToxOyAgICAgICAgLyogICBQSVBFOEJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdCUkRZRToxOyAgICAgICAgLyogICBQSVBFN0JSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZCUkRZRToxOyAgICAgICAgLyogICBQSVBFNkJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVCUkRZRToxOyAgICAgICAgLyogICBQSVBFNUJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTRCUkRZRToxOyAgICAgICAgLyogICBQSVBFNEJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNCUkRZRToxOyAgICAgICAgLyogICBQSVBFM0JSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJCUkRZRToxOyAgICAgICAgLyogICBQSVBFMkJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFCUkRZRToxOyAgICAgICAgLyogICBQSVBFMUJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBCUkRZRToxOyAgICAgICAgLyogICBQSVBFMEJSRFlFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlJEWUVOQjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTlJEWUVOQiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlOUkRZRToxOyAgICAgICAgLyogICBQSVBFOU5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThOUkRZRToxOyAgICAgICAgLyogICBQSVBFOE5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdOUkRZRToxOyAgICAgICAgLyogICBQSVBFN05SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZOUkRZRToxOyAgICAgICAgLyogICBQSVBFNk5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVOUkRZRToxOyAgICAgICAgLyogICBQSVBFNU5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTROUkRZRToxOyAgICAgICAgLyogICBQSVBFNE5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNOUkRZRToxOyAgICAgICAgLyogICBQSVBFM05SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJOUkRZRToxOyAgICAgICAgLyogICBQSVBFMk5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFOUkRZRToxOyAgICAgICAgLyogICBQSVBFMU5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBOUkRZRToxOyAgICAgICAgLyogICBQSVBFME5SRFlFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTlJEWUVOQjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQkVNUEVOQiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlCRU1QRToxOyAgICAgICAgLyogICBQSVBFOUJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThCRU1QRToxOyAgICAgICAgLyogICBQSVBFOEJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdCRU1QRToxOyAgICAgICAgLyogICBQSVBFN0JFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZCRU1QRToxOyAgICAgICAgLyogICBQSVBFNkJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVCRU1QRToxOyAgICAgICAgLyogICBQSVBFNUJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTRCRU1QRToxOyAgICAgICAgLyogICBQSVBFNEJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNCRU1QRToxOyAgICAgICAgLyogICBQSVBFM0JFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJCRU1QRToxOyAgICAgICAgLyogICBQSVBFMkJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFCRU1QRToxOyAgICAgICAgLyogICBQSVBFMUJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBCRU1QRToxOyAgICAgICAgLyogICBQSVBFMEJFTVBFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQkVNUEVOQjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU09GQ0ZHICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJORU5TRUw6MTsgICAgICAgICAgLyogICBUUk5FTlNFTCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEWU06MTsgICAgICAgICAgICAgLyogICBCUkRZTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU09GQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5UU1RTMCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkJJTlQ6MTsgICAgICAgICAgICAgLyogICBWQklOVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTTToxOyAgICAgICAgICAgICAgLyogICBSRVNNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU09GUjoxOyAgICAgICAgICAgICAgLyogICBTT0ZSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFZTVDoxOyAgICAgICAgICAgICAgLyogICBEVlNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RSVDoxOyAgICAgICAgICAgICAgLyogICBDVFJUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkVNUDoxOyAgICAgICAgICAgICAgLyogICBCRU1QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlJEWToxOyAgICAgICAgICAgICAgLyogICBOUkRZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJEWToxOyAgICAgICAgICAgICAgLyogICBCUkRZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkJTVFM6MTsgICAgICAgICAgICAgLyogICBWQlNUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFZTUTozOyAgICAgICAgICAgICAgLyogICBEVlNRICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkFMSUQ6MTsgICAgICAgICAgICAgLyogICBWQUxJRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1RTUTozOyAgICAgICAgICAgICAgLyogICBDVFNRICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5UU1RTMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5UU1RTMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNIRzoxOyAgICAgICAgICAgICAgLyogICBCQ0hHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRFRDSDoxOyAgICAgICAgICAgICAgLyogICBEVENIICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRUQ0g6MTsgICAgICAgICAgICAgLyogICBBVFRDSCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRU9GRVJSOjE7ICAgICAgICAgICAgLyogICBFT0ZFUlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0lHTjoxOyAgICAgICAgICAgICAgLyogICBTSUdOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0FDSzoxOyAgICAgICAgICAgICAgLyogICBTQUNLICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5UU1RTMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlJEWVNUUyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlCUkRZOjE7ICAgICAgICAgLyogICBQSVBFOUJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThCUkRZOjE7ICAgICAgICAgLyogICBQSVBFOEJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdCUkRZOjE7ICAgICAgICAgLyogICBQSVBFN0JSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZCUkRZOjE7ICAgICAgICAgLyogICBQSVBFNkJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVCUkRZOjE7ICAgICAgICAgLyogICBQSVBFNUJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTRCUkRZOjE7ICAgICAgICAgLyogICBQSVBFNEJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNCUkRZOjE7ICAgICAgICAgLyogICBQSVBFM0JSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJCUkRZOjE7ICAgICAgICAgLyogICBQSVBFMkJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFCUkRZOjE7ICAgICAgICAgLyogICBQSVBFMUJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBCUkRZOjE7ICAgICAgICAgLyogICBQSVBFMEJSRFkgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlJEWVNUUzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTlJEWVNUUyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlOUkRZOjE7ICAgICAgICAgLyogICBQSVBFOU5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThOUkRZOjE7ICAgICAgICAgLyogICBQSVBFOE5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdOUkRZOjE7ICAgICAgICAgLyogICBQSVBFN05SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZOUkRZOjE7ICAgICAgICAgLyogICBQSVBFNk5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVOUkRZOjE7ICAgICAgICAgLyogICBQSVBFNU5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTROUkRZOjE7ICAgICAgICAgLyogICBQSVBFNE5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNOUkRZOjE7ICAgICAgICAgLyogICBQSVBFM05SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJOUkRZOjE7ICAgICAgICAgLyogICBQSVBFMk5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFOUkRZOjE7ICAgICAgICAgLyogICBQSVBFMU5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBOUkRZOjE7ICAgICAgICAgLyogICBQSVBFME5SRFkgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTlJEWVNUUzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQkVNUFNUUyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTlCRU1QOjE7ICAgICAgICAgLyogICBQSVBFOUJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRThCRU1QOjE7ICAgICAgICAgLyogICBQSVBFOEJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTdCRU1QOjE7ICAgICAgICAgLyogICBQSVBFN0JFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTZCRU1QOjE7ICAgICAgICAgLyogICBQSVBFNkJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTVCRU1QOjE7ICAgICAgICAgLyogICBQSVBFNUJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTRCRU1QOjE7ICAgICAgICAgLyogICBQSVBFNEJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTNCRU1QOjE7ICAgICAgICAgLyogICBQSVBFM0JFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTJCRU1QOjE7ICAgICAgICAgLyogICBQSVBFMkJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTFCRU1QOjE7ICAgICAgICAgLyogICBQSVBFMUJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRTBCRU1QOjE7ICAgICAgICAgLyogICBQSVBFMEJFTVAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQkVNUFNUUzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRlJNTlVNICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgT1ZSTjoxOyAgICAgICAgICAgICAgLyogICBPVlJOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDRToxOyAgICAgICAgICAgICAgLyogICBDUkNFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlJOTToxMTsgICAgICAgICAgICAgLyogICBGUk5NICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRlJNTlVNOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVUZSTU5VTSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEzOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVUZSTk06MzsgICAgICAgICAgICAgLyogICBVRlJOTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVUZSTU5VTTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNCQUREUiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjk7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCQUREUjo3OyAgICAgICAgICAgLyogICBVU0JBRERSICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVVNCQUREUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNCUkVRICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlJFUVVFU1Q6ODsgICAgICAgICAgLyogICBCUkVRVUVTVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQk1SRVFVRVNUVFlQRTo4OyAgICAgLyogICBCTVJFUVVFU1RUWVBFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVVNCUkVROyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBVU0JWQUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNCVkFMICAgICAgICovDQotICAgICAgIF9VV09SRCBVU0JJTkRYOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNCSU5EWCAgICAgICovDQotICAgICAgIF9VV09SRCBVU0JMRU5HOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNCTEVORyAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ0ZHICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjExOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRElSOjE7ICAgICAgICAgICAgICAgLyogICBESVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQTUFYUCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREVWU0VMOjQ7ICAgICAgICAgICAgLyogICBERVZTRUwgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVhQUzo3OyAgICAgICAgICAgICAgLyogICBNWFBTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQTUFYUDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ1RSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1VSRVE6MTsgICAgICAgICAgICAgLyogICBTVVJFUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1VSRVFDTFI6MTsgICAgICAgICAgLyogICBTVVJFUUNMUiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElOR0U6MTsgICAgICAgICAgICAgLyogICBQSU5HRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0NQTDoxOyAgICAgICAgICAgICAgLyogICBDQ1BMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRVNFTCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQRVNFTDo0OyAgICAgICAgICAgLyogICBQSVBFU0VMICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRVNFTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRUNGRyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFlQRToyOyAgICAgICAgICAgICAgLyogICBUWVBFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkZSRToxOyAgICAgICAgICAgICAgLyogICBCRlJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREJMQjoxOyAgICAgICAgICAgICAgLyogICBEQkxCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ05UTUQ6MTsgICAgICAgICAgICAgLyogICBDTlRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hUTkFLOjE7ICAgICAgICAgICAgLyogICBTSFROQUsgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRElSOjE7ICAgICAgICAgICAgICAgLyogICBESVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRVBOVU06NDsgICAgICAgICAgICAgLyogICBFUE5VTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRUNGRzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRUJVRiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlVGU0laRTo1OyAgICAgICAgICAgLyogICBCVUZTSVpFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlVGTk1COjc7ICAgICAgICAgICAgLyogICBCVUZOTUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRUJVRjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRU1BWFAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREVWU0VMOjQ7ICAgICAgICAgICAgLyogICBERVZTRUwgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVhQUzoxMTsgICAgICAgICAgICAgLyogICBNWFBTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRU1BWFA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRVBFUkkgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUZJUzoxOyAgICAgICAgICAgICAgLyogICBJRklTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjk7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSUlUVjozOyAgICAgICAgICAgICAgLyogICBJSVRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRVBFUkk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTFDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5CVUZNOjE7ICAgICAgICAgICAgLyogICBJTkJVRk0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRSRVBNOjE7ICAgICAgICAgICAgLyogICBBVFJFUE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTFDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTJDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5CVUZNOjE7ICAgICAgICAgICAgLyogICBJTkJVRk0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRSRVBNOjE7ICAgICAgICAgICAgLyogICBBVFJFUE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTJDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTNDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5CVUZNOjE7ICAgICAgICAgICAgLyogICBJTkJVRk0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRSRVBNOjE7ICAgICAgICAgICAgLyogICBBVFJFUE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTNDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTRDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5CVUZNOjE7ICAgICAgICAgICAgLyogICBJTkJVRk0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRSRVBNOjE7ICAgICAgICAgICAgLyogICBBVFJFUE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTRDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTVDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5CVUZNOjE7ICAgICAgICAgICAgLyogICBJTkJVRk0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQVRSRVBNOjE7ICAgICAgICAgICAgLyogICBBVFJFUE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTVDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTZDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTZDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTdDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTdDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRThDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRThDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTlDVFIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlNUUzoxOyAgICAgICAgICAgICAgLyogICBCU1RTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NDTFI6MTsgICAgICAgICAgICAgLyogICBDU0NMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1NTVFM6MTsgICAgICAgICAgICAgLyogICBDU1NUUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNMUk06MTsgICAgICAgICAgICAgLyogICBBQ0xSTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FDTFI6MTsgICAgICAgICAgICAgLyogICBTUUNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FTRVQ6MTsgICAgICAgICAgICAgLyogICBTUVNFVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1FNT046MTsgICAgICAgICAgICAgLyogICBTUU1PTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJVU1k6MTsgICAgICAgICAgICAgLyogICBQQlVTWSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElEOjI7ICAgICAgICAgICAgICAgLyogICBQSUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTlDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzE0XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTFUUkUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJFTkI6MTsgICAgICAgICAgICAgLyogICBUUkVOQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJDTFI6MTsgICAgICAgICAgICAgLyogICBUUkNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTFUUkU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBQSVBFMVRSTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTFUUk4gICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTJUUkUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJFTkI6MTsgICAgICAgICAgICAgLyogICBUUkVOQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJDTFI6MTsgICAgICAgICAgICAgLyogICBUUkNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTJUUkU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBQSVBFMlRSTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTJUUk4gICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTNUUkUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJFTkI6MTsgICAgICAgICAgICAgLyogICBUUkVOQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJDTFI6MTsgICAgICAgICAgICAgLyogICBUUkNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTNUUkU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBQSVBFM1RSTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTNUUk4gICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTRUUkUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJFTkI6MTsgICAgICAgICAgICAgLyogICBUUkVOQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJDTFI6MTsgICAgICAgICAgICAgLyogICBUUkNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTRUUkU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBQSVBFNFRSTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTRUUk4gICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTVUUkUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJFTkI6MTsgICAgICAgICAgICAgLyogICBUUkVOQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVFJDTFI6MTsgICAgICAgICAgICAgLyogICBUUkNMUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQRTVUUkU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VV09SRCBQSVBFNVRSTjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQRTVUUk4gICAgICovDQotICAgICAgIF9VQllURSB3azExWzQ0XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREMCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREMiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREMyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQURENCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQURENDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQURENSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQURENTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQURENiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQURENjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQURENyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQURENzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREOCAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREOSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREOTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogREVWQUREQSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVBQSFVCOjQ7ICAgICAgICAgICAgLyogICBVUFBIVUIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFVCUE9SVDozOyAgICAgICAgICAgLyogICBIVUJQT1JUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVVNCU1BEOjI7ICAgICAgICAgICAgLyogICBVU0JTUEQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gREVWQUREQTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNlbmRpZg0KLXN0cnVjdCBzdF92ZGM0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgVkRDNCAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5QX1VQREFURSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlBfRVhUX1VQREFURToxOyAgICAgICAgICAvKiAgIElOUF9FWFRfVVBEQVRFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlBfSU1HX1VQREFURToxOyAgICAgICAgICAvKiAgIElOUF9JTUdfVVBEQVRFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOUF9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5QX1NFTF9DTlQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjExOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9TRUw6MTsgICAgICAgICAgICAgICAgICAvKiAgIElOUF9TRUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9GT1JNQVQ6MzsgICAgICAgICAgICAgICAvKiAgIElOUF9GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1BYRF9FREdFOjE7ICAgICAgICAgICAgIC8qICAgSU5QX1BYRF9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9WU19FREdFOjE7ICAgICAgICAgICAgICAvKiAgIElOUF9WU19FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9IU19FREdFOjE7ICAgICAgICAgICAgICAvKiAgIElOUF9IU19FREdFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOUF9TRUxfQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5QX0VYVF9TWU5DX0NOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfRU5ESUFOX09OOjE7ICAgICAgICAgICAgLyogICBJTlBfRU5ESUFOX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9TV0FQX09OOjE7ICAgICAgICAgICAgICAvKiAgIElOUF9TV0FQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9WU19JTlY6MTsgICAgICAgICAgICAgICAvKiAgIElOUF9WU19JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0hTX0lOVjoxOyAgICAgICAgICAgICAgIC8qICAgSU5QX0hTX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfSF9FREdFX1NFTDoxOyAgICAgICAgICAgLyogICBJTlBfSF9FREdFX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfRjUyNV82MjU6MTsgICAgICAgICAgICAgLyogICBJTlBfRjUyNV82MjUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0hfUE9TOjI7ICAgICAgICAgICAgICAgIC8qICAgSU5QX0hfUE9TICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlBfRVhUX1NZTkNfQ05UOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElOUF9WU1lOQ19QSF9BREogKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX0ZINTA6MTA7ICAgICAgICAgICAgICAgIC8qICAgSU5QX0ZINTAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlBfRkgyNToxMDsgICAgICAgICAgICAgICAgLyogICBJTlBfRkgyNSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElOUF9WU1lOQ19QSF9BREo7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5QX0RMWV9BREogICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9WU19ETFlfTDozOyAgICAgICAgICAgICAvKiAgIElOUF9WU19ETFlfTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9GTERfRExZOjg7ICAgICAgICAgICAgICAvKiAgIElOUF9GTERfRExZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5QX1ZTX0RMWTo4OyAgICAgICAgICAgICAgIC8qICAgSU5QX1ZTX0RMWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOUF9IU19ETFk6ODsgICAgICAgICAgICAgICAvKiAgIElOUF9IU19ETFkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU5QX0RMWV9BREo7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzEwOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX1VQREFURSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1HQ05UX1ZFTjoxOyAgICAgICAgICAgICAgLyogICBJTUdDTlRfVkVOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX05SX0NOVDAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9NRDoxOyAgICAgICAgICAgICAgICAgIC8qICAgTlIxRF9NRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX09OOjE7ICAgICAgICAgICAgICAgICAgLyogICBOUjFEX09OICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SMURfWV9USDo3OyAgICAgICAgICAgICAgICAvKiAgIE5SMURfWV9USCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9ZX1RBUDoyOyAgICAgICAgICAgICAgIC8qICAgTlIxRF9ZX1RBUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUjFEX1lfR0FJTjoyOyAgICAgICAgICAgICAgLyogICBOUjFEX1lfR0FJTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTUdDTlRfTlJfQ05UMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNR0NOVF9OUl9DTlQxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SMURfQ0JfVEg6NzsgICAgICAgICAgICAgICAvKiAgIE5SMURfQ0JfVEggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DQl9UQVA6MjsgICAgICAgICAgICAgIC8qICAgTlIxRF9DQl9UQVAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DQl9HQUlOOjI7ICAgICAgICAgICAgIC8qICAgTlIxRF9DQl9HQUlOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5SMURfQ1JfVEg6NzsgICAgICAgICAgICAgICAvKiAgIE5SMURfQ1JfVEggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DUl9UQVA6MjsgICAgICAgICAgICAgIC8qICAgTlIxRF9DUl9UQVAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTlIxRF9DUl9HQUlOOjI7ICAgICAgICAgICAgIC8qICAgTlIxRF9DUl9HQUlOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9OUl9DTlQxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNR0NOVF9NVFhfTU9ERSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1HQ05UX01UWF9NRDoyOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX01EICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9NVFhfTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX01UWF9ZR19BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfWUc6ODsgICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfWUcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU1HQ05UX01UWF9HRzoxMTsgICAgICAgICAgIC8qICAgSU1HQ05UX01UWF9HRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTUdDTlRfTVRYX1lHX0FESjA7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNR0NOVF9NVFhfWUdfQURKMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX0dCOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX0dCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfR1I6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfR1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9ZR19BREoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTVRYX0NCQl9BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfQjo4OyAgICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX0JHOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX0JHICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9NVFhfQ0JCX0FESjA7ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX01UWF9DQkJfQURKMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX0JCOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX0JCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfQlI6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfQlIgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9DQkJfQURKMTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTUdDTlRfTVRYX0NSUl9BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfUjo4OyAgICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX1JHOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX1JHICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNR0NOVF9NVFhfQ1JSX0FESjA7ICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU1HQ05UX01UWF9DUlJfQURKMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTUdDTlRfTVRYX1JCOjExOyAgICAgICAgICAgLyogICBJTUdDTlRfTVRYX1JCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElNR0NOVF9NVFhfUlI6MTE7ICAgICAgICAgICAvKiAgIElNR0NOVF9NVFhfUlIgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSU1HQ05UX01UWF9DUlJfQURKMTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzY4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUERBVEUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxODsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wwX1ZFTl9EOjE7ICAgICAgICAgICAgICAvKiAgIFNDTDBfVkVOX0QgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMMF9WRU5fQzoxOyAgICAgICAgICAgICAgLyogICBTQ0wwX1ZFTl9DICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wwX1VQREFURToxOyAgICAgICAgICAgICAvKiAgIFNDTDBfVVBEQVRFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wwX1ZFTl9COjE7ICAgICAgICAgICAgICAvKiAgIFNDTDBfVkVOX0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTDBfVkVOX0E6MTsgICAgICAgICAgICAgIC8qICAgU0NMMF9WRU5fQSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19WTUFTSzoxNjsgICAgICAgICAgICAgICAvKiAgIFJFU19WTUFTSyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZNQVNLX09OOjE7ICAgICAgICAgICAgIC8qICAgUkVTX1ZNQVNLX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRlJDMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9GUkMyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZMQUNLOjE2OyAgICAgICAgICAgICAgIC8qICAgUkVTX1ZMQUNLICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVkxBQ0tfT046MTsgICAgICAgICAgICAgLyogICBSRVNfVkxBQ0tfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0ZSQzMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19WU19TRUw6MTsgICAgICAgICAgICAgIC8qICAgUkVTX1ZTX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRlY6MTE7ICAgICAgICAgICAgICAgICAgLyogICBSRVNfRlYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GSDoxMTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19GSCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkM0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0ZSQzUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19GTERfRExZX1NFTDoxOyAgICAgICAgIC8qICAgUkVTX0ZMRF9ETFlfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19WU0RMWTo4OyAgICAgICAgICAgICAgIC8qICAgUkVTX1ZTRExZICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0ZSQzU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDNiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRl9WUzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfRl9WUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19GX1ZXOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19GX1ZXICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0ZSQzcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0ZfSFM6MTE7ICAgICAgICAgICAgICAgIC8qICAgUkVTX0ZfSFMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRl9IVzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfRl9IVyAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRlJDNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRlJDOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1FWTE9DSzoxOyAgICAgICAgICAgICAgLyogICBSRVNfUVZMT0NLICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfUVZMQUNLOjE7ICAgICAgICAgICAgICAvKiAgIFJFU19RVkxBQ0sgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9GUkM5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRFNfVl9PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19EU19WX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRFNfSF9PTjoxOyAgICAgICAgICAgICAvKiAgIFJFU19EU19IX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFMxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19WUzoxMTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19WUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZXOjExOyAgICAgICAgICAgICAgICAgIC8qICAgUkVTX1ZXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0RTMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRFMzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfSFM6MTE7ICAgICAgICAgICAgICAgICAgLyogICBSRVNfSFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19IVzoxMTsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19IVyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9EUzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX0RTNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1BGSUxfU0VMOjE7ICAgICAgICAgICAgIC8qICAgUkVTX1BGSUxfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0RTX0hfSU5URVJQT1RZUDoxOyAgICAgIC8qICAgUkVTX0RTX0hfSU5URVJQT1RZUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRFNfSF9SQVRJTzoxNjsgICAgICAgICAgLyogICBSRVNfRFNfSF9SQVRJTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0RTNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfRFM1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVl9JTlRFUlBPVFlQOjE7ICAgICAgICAgLyogICBSRVNfVl9JTlRFUlBPVFlQICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1RPUF9JTklQSEFTRToxMjsgICAgICAgIC8qICAgUkVTX1RPUF9JTklQSEFTRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfQlRNX0lOSVBIQVNFOjEyOyAgICAgICAgLyogICBSRVNfQlRNX0lOSVBIQVNFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFM1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19WX1JBVElPOjE2OyAgICAgICAgICAgICAvKiAgIFJFU19WX1JBVElPICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfRFM2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9EUzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19PVVRfVlc6MTE7ICAgICAgICAgICAgICAvKiAgIFJFU19PVVRfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX09VVF9IVzoxMTsgICAgICAgICAgICAgIC8qICAgUkVTX09VVF9IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX0RTNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVMxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1VTX1ZfT046MTsgICAgICAgICAgICAgLyogICBSRVNfVVNfVl9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1VTX0hfT046MTsgICAgICAgICAgICAgLyogICBSRVNfVVNfSF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVMyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfUF9WUzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfUF9WUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19QX1ZXOjExOyAgICAgICAgICAgICAgICAvKiAgIFJFU19QX1ZXICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMF9VUzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX1VTMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1BfSFM6MTE7ICAgICAgICAgICAgICAgIC8qICAgUkVTX1BfSFMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfUF9IVzoxMTsgICAgICAgICAgICAgICAgLyogICBSRVNfUF9IVyAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfVVMzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMF9VUzQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19JTl9WVzoxMTsgICAgICAgICAgICAgICAvKiAgIFJFU19JTl9WVyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0lOX0hXOjExOyAgICAgICAgICAgICAgIC8qICAgUkVTX0lOX0hXICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVM1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVVNfSF9SQVRJTzoxNjsgICAgICAgICAgLyogICBSRVNfVVNfSF9SQVRJTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVM2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfVVNfSF9JTlRFUlBPVFlQOjE7ICAgICAgLyogICBSRVNfVVNfSF9JTlRFUlBPVFlQICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1VTX0hUX0lOSVBIQVNFOjEyOyAgICAgIC8qICAgUkVTX1VTX0hUX0lOSVBIQVNFICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFU19VU19IQl9JTklQSEFTRToxMjsgICAgICAvKiAgIFJFU19VU19IQl9JTklQSEFTRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVM3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfSENVVDo4OyAgICAgICAgICAgICAgICAgLyogICBSRVNfSENVVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX1ZDVVQ6ODsgICAgICAgICAgICAgICAgIC8qICAgUkVTX1ZDVVQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDBfVVM4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0lCVVNfU1lOQ19TRUw6MTsgICAgICAgLyogICBSRVNfSUJVU19TWU5DX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0RJU1BfT046MTsgICAgICAgICAgICAgLyogICBSRVNfRElTUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wwX1VTODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wwX09WUjEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0JLX0NPTF9SOjg7ICAgICAgICAgICAgIC8qICAgUkVTX0JLX0NPTF9SICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0JLX0NPTF9HOjg7ICAgICAgICAgICAgIC8qICAgUkVTX0JLX0NPTF9HICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0JLX0NPTF9COjg7ICAgICAgICAgICAgIC8qICAgUkVTX0JLX0NPTF9CICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDBfT1ZSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfVVBEQVRFICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NMMV9WRU5fQjoxOyAgICAgICAgICAgICAgLyogICBTQ0wxX1ZFTl9CICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0wxX1ZFTl9BOjE7ICAgICAgICAgICAgICAvKiAgIFNDTDFfVkVOX0EgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMV9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9XUjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRFNfV1JfTUQ6MzsgICAgICAgICAgICAvKiAgIFJFU19EU19XUl9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfTUQ6MjsgICAgICAgICAgICAgICAgICAvKiAgIFJFU19NRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0xPT1A6MTsgICAgICAgICAgICAgICAgLyogICBSRVNfTE9PUCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19CU1RfTUQ6MTsgICAgICAgICAgICAgIC8qICAgUkVTX0JTVF9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfV1IyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfQkFTRTozMjsgICAgICAgICAgICAgICAvKiAgIFJFU19CQVNFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMV9XUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wxX1dSMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0xOX09GRjoxNTsgICAgICAgICAgICAgIC8qICAgUkVTX0xOX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfRkxNX05VTToxMDsgICAgICAgICAgICAgLyogICBSRVNfRkxNX05VTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfV1I0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0ZMTV9PRkY6MjM7ICAgICAgICAgICAgLyogICBSRVNfRkxNX09GRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azhbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTQ0wxX1dSNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19JTlRFUjoxOyAgICAgICAgICAgICAgIC8qICAgUkVTX0lOVEVSICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0ZTX1JBVEU6MjsgICAgICAgICAgICAgLyogICBSRVNfRlNfUkFURSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX0ZMRF9TRUw6MTsgICAgICAgICAgICAgLyogICBSRVNfRkxEX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTX1dFTkI6MTsgICAgICAgICAgICAgICAgLyogICBSRVNfV0VOQiAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTDFfV1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NMMV9XUjYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRVNfRFRIX09OOjE7ICAgICAgICAgICAgICAvKiAgIFJFU19EVEhfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFU19CSVRERUNfT046MTsgICAgICAgICAgIC8qICAgUkVTX0JJVERFQ19PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTQ0wxX1dSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTDFfV1I3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNfT1ZFUkZMT1c6MTsgICAgICAgICAgICAgLyogICBSRVNfT1ZFUkZMT1cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkVTX0ZMTV9DTlQ6MTA7ICAgICAgICAgICAgIC8qICAgUkVTX0ZMTV9DTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0NMMV9XUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5Wzg4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX1VQREFURSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjFfUF9WRU46MTsgICAgICAgICAgICAgICAvKiAgIEdSMV9QX1ZFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMV9JQlVTX1ZFTjoxOyAgICAgICAgICAgIC8qICAgR1IxX0lCVVNfVkVOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0ZMTV9SRCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjFfUl9FTkI6MTsgICAgICAgICAgICAgICAvKiAgIEdSMV9SX0VOQiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0ZMTV9SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0xOX09GRl9ESVI6MTsgICAgICAgICAgIC8qICAgR1IxX0xOX09GRl9ESVIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ZMTV9TRUw6MjsgICAgICAgICAgICAgIC8qICAgR1IxX0ZMTV9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0lNUl9GTE1fSU5WOjE7ICAgICAgICAgIC8qICAgR1IxX0lNUl9GTE1fSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9CU1RfTUQ6MTsgICAgICAgICAgICAgICAvKiAgIEdSMV9CU1RfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0ZMTTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IxX0JBU0U6MzI7ICAgICAgICAgICAgICAgLyogICBHUjFfQkFTRSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9GTE0yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0ZMTTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9MTl9PRkY6MTU7ICAgICAgICAgICAgICAvKiAgIEdSMV9MTl9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ZMTV9OVU06MTA7ICAgICAgICAgICAgIC8qICAgR1IxX0ZMTV9OVU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0ZMTTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMV9GTE1fT0ZGOjIzOyAgICAgICAgICAgIC8qICAgR1IxX0ZMTV9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0ZMTTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfRkxNNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ZMTV9MTlVNOjEwOyAgICAgICAgICAgIC8qICAgR1IxX0ZMTV9MTlVNICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9GTE1fTE9PUDoxMDsgICAgICAgICAgICAvKiAgIEdSMV9GTE1fTE9PUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9GTE02ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9GT1JNQVQ6NDsgICAgICAgICAgICAgICAvKiAgIEdSMV9GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0hXOjEwOyAgICAgICAgICAgICAgICAgIC8qICAgR1IxX0hXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9ZQ0NfU1dBUDozOyAgICAgICAgICAgICAvKiAgIEdSMV9ZQ0NfU1dBUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9FTkRJQU5fT046MTsgICAgICAgICAgICAvKiAgIEdSMV9FTkRJQU5fT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NOVjQ0NF9NRDoxOyAgICAgICAgICAgIC8qICAgR1IxX0NOVjQ0NF9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfU1RBX1BPUzo2OyAgICAgICAgICAgICAgLyogICBHUjFfU1RBX1BPUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfRkxNNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0dSQ19ESVNQX09OOjE7ICAgICAgICAgIC8qICAgR1IxX0dSQ19ESVNQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9ESVNQX1NFTDoyOyAgICAgICAgICAgICAvKiAgIEdSMV9ESVNQX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfR1JDX1ZTOjExOyAgICAgICAgICAgICAgLyogICBHUjFfR1JDX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9HUkNfVlc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMV9HUkNfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0FCMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfQUIzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0dSQ19IUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IxX0dSQ19IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfR1JDX0hXOjExOyAgICAgICAgICAgICAgLyogICBHUjFfR1JDX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBfMFsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjcgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX09OOjE7ICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX09OICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjggICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19LQ0xVVDo4OyAgICAgICAgICAgICAvKiAgIEdSMV9DS19LQ0xVVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19LRzo4OyAgICAgICAgICAgICAgICAvKiAgIEdSMV9DS19LRyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0tfS0I6ODsgICAgICAgICAgICAgICAgLyogICBHUjFfQ0tfS0IgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX0tSOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX0tSICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9BQjkgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19BOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMV9DS19BICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQ0tfRzo4OyAgICAgICAgICAgICAgICAgLyogICBHUjFfQ0tfRyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NLX0I6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IxX0NLX0IgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9DS19SOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMV9DS19SICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0FCOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfQUIxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0cwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IxX0cwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9CMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMV9CMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfUjA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9BQjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IxX0FCMTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0ExOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IxX0ExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9HMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMV9HMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQjE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjFfQjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX1IxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IxX1IxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjFfQUIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMV9CQVNFICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjFfQkFTRV9HOjg7ICAgICAgICAgICAgICAgLyogICBHUjFfQkFTRV9HICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0JBU0VfQjo4OyAgICAgICAgICAgICAgIC8qICAgR1IxX0JBU0VfQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMV9CQVNFX1I6ODsgICAgICAgICAgICAgICAvKiAgIEdSMV9CQVNFX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IxX0JBU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjFfQ0xVVCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NMVF9TRUw6MTsgICAgICAgICAgICAgIC8qICAgR1IxX0NMVF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMV9DTFVUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbNDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9VUERBVEUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURKX1ZFTjoxOyAgICAgICAgICAgICAgICAgLyogICBBREpfVkVOICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9VUERBVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0JLU1RSX1NFVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCS1NUUl9PTjoxOyAgICAgICAgICAgICAgICAgLyogICBCS1NUUl9PTiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQktTVFJfU1Q6NDsgICAgICAgICAgICAgICAgIC8qICAgQktTVFJfU1QgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJLU1RSX0Q6NDsgICAgICAgICAgICAgICAgICAvKiAgIEJLU1RSX0QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQktTVFJfVDE6NTsgICAgICAgICAgICAgICAgIC8qICAgQktTVFJfVDEgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCS1NUUl9UMjo1OyAgICAgICAgICAgICAgICAgLyogICBCS1NUUl9UMiAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9CS1NUUl9TRVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9USU0xICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFTkhfTUQ6MTsgICAgICAgICAgICAgICAgICAvKiAgIEVOSF9NRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOSF9ESVNQX09OOjE7ICAgICAgICAgICAgIC8qICAgRU5IX0RJU1BfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9USU0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1RJTTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRU5IX1ZTOjExOyAgICAgICAgICAgICAgICAgIC8qICAgRU5IX1ZTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFTkhfVlc6MTE7ICAgICAgICAgICAgICAgICAgLyogICBFTkhfVlcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfVElNMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9USU0zICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVOSF9IUzoxMTsgICAgICAgICAgICAgICAgICAvKiAgIEVOSF9IUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRU5IX0hXOjExOyAgICAgICAgICAgICAgICAgIC8qICAgRU5IX0hXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1RJTTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfU0hQMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSF9PTjoxOyAgICAgICAgICAgICAgICAgLyogICBTSFBfSF9PTiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMV9DT1JFOjc7ICAgICAgICAgICAgICAvKiAgIFNIUF9IMV9DT1JFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfU0hQMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9TSFAyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gxX0NMSVBfTzo4OyAgICAgICAgICAgIC8qICAgU0hQX0gxX0NMSVBfTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMV9DTElQX1U6ODsgICAgICAgICAgICAvKiAgIFNIUF9IMV9DTElQX1UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDFfR0FJTl9POjg7ICAgICAgICAgICAgLyogICBTSFBfSDFfR0FJTl9PICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gxX0dBSU5fVTo4OyAgICAgICAgICAgIC8qICAgU0hQX0gxX0dBSU5fVSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1NIUDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfU0hQMyAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDJfTFBGX1NFTDoxOyAgICAgICAgICAgLyogICBTSFBfSDJfTFBGX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDJfQ09SRTo3OyAgICAgICAgICAgICAgLyogICBTSFBfSDJfQ09SRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX1NIUDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9FTkhfU0hQNCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMl9DTElQX086ODsgICAgICAgICAgICAvKiAgIFNIUF9IMl9DTElQX08gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDJfQ0xJUF9VOjg7ICAgICAgICAgICAgLyogICBTSFBfSDJfQ0xJUF9VICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gyX0dBSU5fTzo4OyAgICAgICAgICAgIC8qICAgU0hQX0gyX0dBSU5fTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IMl9HQUlOX1U6ODsgICAgICAgICAgICAvKiAgIFNIUF9IMl9HQUlOX1UgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9TSFA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1NIUDUgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNIUF9IM19DT1JFOjc7ICAgICAgICAgICAgIC8qICAgU0hQX0gzX0NPUkUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9TSFA1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX1NIUDYgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDNfQ0xJUF9POjg7ICAgICAgICAgICAgLyogICBTSFBfSDNfQ0xJUF9PICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU0hQX0gzX0NMSVBfVTo4OyAgICAgICAgICAgIC8qICAgU0hQX0gzX0NMSVBfVSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNIUF9IM19HQUlOX086ODsgICAgICAgICAgICAvKiAgIFNIUF9IM19HQUlOX08gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFBfSDNfR0FJTl9VOjg7ICAgICAgICAgICAgLyogICBTSFBfSDNfR0FJTl9VICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9FTkhfU0hQNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX0VOSF9MVEkxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0hfT046MTsgICAgICAgICAgICAgICAgIC8qICAgTFRJX0hfT04gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDJfTFBGX1NFTDoxOyAgICAgICAgICAgLyogICBMVElfSDJfTFBGX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExUSV9IMl9JTkNfWkVSTzo4OyAgICAgICAgICAvKiAgIExUSV9IMl9JTkNfWkVSTyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExUSV9IMl9HQUlOOjg7ICAgICAgICAgICAgICAvKiAgIExUSV9IMl9HQUlOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0gyX0NPUkU6ODsgICAgICAgICAgICAgIC8qICAgTFRJX0gyX0NPUkUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX0VOSF9MVEkxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfRU5IX0xUSTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0g0X01FRElBTl9UQVBfU0VMOjE7ICAgIC8qICAgTFRJX0g0X01FRElBTl9UQVBfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0g0X0lOQ19aRVJPOjg7ICAgICAgICAgIC8qICAgTFRJX0g0X0lOQ19aRVJPICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFRJX0g0X0dBSU46ODsgICAgICAgICAgICAgIC8qICAgTFRJX0g0X0dBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVElfSDRfQ09SRTo4OyAgICAgICAgICAgICAgLyogICBMVElfSDRfQ09SRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfRU5IX0xUSTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9NVFhfTU9ERSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURKX01UWF9NRDoyOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX01EICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9NVFhfTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX01UWF9ZR19BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfWUc6ODsgICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfWUcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9HRzoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9HRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfTVRYX1lHX0FESjA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9NVFhfWUdfQURKMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX0dCOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX0dCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfR1I6MTE7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfR1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX01UWF9ZR19BREoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfTVRYX0NCQl9BREowICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfQjo4OyAgICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfQiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9CRzoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9CRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfTVRYX0NCQl9BREowOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFESl9NVFhfQ0JCX0FESjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9CQjoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9CQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX0JSOjExOyAgICAgICAgICAgICAgLyogICBBREpfTVRYX0JSICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFESl9NVFhfQ0JCX0FESjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURKX01UWF9DUlJfQURKMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBREpfTVRYX1I6ODsgICAgICAgICAgICAgICAgLyogICBBREpfTVRYX1IgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfUkc6MTE7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfUkcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQURKX01UWF9DUlJfQURKMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBREpfTVRYX0NSUl9BREoxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFESl9NVFhfUkI6MTE7ICAgICAgICAgICAgICAvKiAgIEFESl9NVFhfUkIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURKX01UWF9SUjoxMTsgICAgICAgICAgICAgIC8qICAgQURKX01UWF9SUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBREpfTVRYX0NSUl9BREoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzQ4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfVVBEQVRFICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9QX1ZFTjoxOyAgICAgICAgICAgICAgIC8qICAgR1IyX1BfVkVOICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0lCVVNfVkVOOjE7ICAgICAgICAgICAgLyogICBHUjJfSUJVU19WRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfRkxNX1JEICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9SX0VOQjoxOyAgICAgICAgICAgICAgIC8qICAgR1IyX1JfRU5CICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfRkxNX1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9GTE0xICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfTE5fT0ZGX0RJUjoxOyAgICAgICAgICAgLyogICBHUjJfTE5fT0ZGX0RJUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfRkxNX1NFTDoyOyAgICAgICAgICAgICAgLyogICBHUjJfRkxNX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQlNUX01EOjE7ICAgICAgICAgICAgICAgLyogICBHUjJfQlNUX01EICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0ZMTTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9CQVNFOjMyOyAgICAgICAgICAgICAgIC8qICAgR1IyX0JBU0UgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfRkxNMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9GTE0zICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfTE5fT0ZGOjE1OyAgICAgICAgICAgICAgLyogICBHUjJfTE5fT0ZGICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9GTE1fTlVNOjEwOyAgICAgICAgICAgICAvKiAgIEdSMl9GTE1fTlVNICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE0zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0ZMTTQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfRkxNX09GRjoyMzsgICAgICAgICAgICAvKiAgIEdSMl9GTE1fT0ZGICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9GTE00OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0ZMTTUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9GTE1fTE5VTToxMDsgICAgICAgICAgICAvKiAgIEdSMl9GTE1fTE5VTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfRkxNX0xPT1A6MTA7ICAgICAgICAgICAgLyogICBHUjJfRkxNX0xPT1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0ZMTTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfRkxNNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfRk9STUFUOjQ7ICAgICAgICAgICAgICAgLyogICBHUjJfRk9STUFUICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9IVzoxMDsgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9IVyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0VORElBTl9PTjoxOyAgICAgICAgICAgIC8qICAgR1IyX0VORElBTl9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfU1RBX1BPUzo2OyAgICAgICAgICAgICAgLyogICBHUjJfU1RBX1BPUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfRkxNNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0FSQ19PTjoxOyAgICAgICAgICAgICAgLyogICBHUjJfQVJDX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjJfQVJDX0RJU1BfT046MTsgICAgICAgICAvKiAgIEdSMl9BUkNfRElTUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0dSQ19ESVNQX09OOjE7ICAgICAgICAgLyogICBHUjJfR1JDX0RJU1BfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSMl9ESVNQX1NFTDoyOyAgICAgICAgICAgIC8qICAgR1IyX0RJU1BfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9HUkNfVlM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMl9HUkNfVlMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0dSQ19WVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0dSQ19WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfR1JDX0hTOjExOyAgICAgICAgICAgICAgLyogICBHUjJfR1JDX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9HUkNfSFc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMl9HUkNfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUI0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0FSQ19WUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0FSQ19WUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX1ZXOjExOyAgICAgICAgICAgICAgLyogICBHUjJfQVJDX1ZXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCNSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BUkNfSFM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0FSQ19IVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IyX0FSQ19IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUI1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX01PREU6MTsgICAgICAgICAgICAgLyogICBHUjJfQVJDX01PREUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQVJDX0NPRUY6ODsgICAgICAgICAgICAgLyogICBHUjJfQVJDX0NPRUYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0FSQ19SQVRFOjg7ICAgICAgICAgICAgIC8qICAgR1IyX0FSQ19SQVRFICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCNyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BUkNfREVGOjg7ICAgICAgICAgICAgICAvKiAgIEdSMl9BUkNfREVGICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19PTjoxOyAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19PTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUI4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfS0NMVVQ6ODsgICAgICAgICAgICAgLyogICBHUjJfQ0tfS0NMVVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfS0c6ODsgICAgICAgICAgICAgICAgLyogICBHUjJfQ0tfS0cgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NLX0tCOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IyX0NLX0tCICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19LUjo4OyAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19LUiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQUI5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfQTo4OyAgICAgICAgICAgICAgICAgLyogICBHUjJfQ0tfQSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NLX0c6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IyX0NLX0cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DS19COjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSMl9DS19CICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQ0tfUjo4OyAgICAgICAgICAgICAgICAgLyogICBHUjJfQ0tfUiAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9BQjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0FCMTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0EwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX0EwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9HMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9HMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQjA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjJfQjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX1IwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX1IwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQUIxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9BQjExICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9BMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9BMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfRzE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjJfRzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0IxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IyX0IxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9SMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSMl9SMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IyX0FCMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjJfQkFTRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0JBU0VfRzo4OyAgICAgICAgICAgICAgIC8qICAgR1IyX0JBU0VfRyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9CQVNFX0I6ODsgICAgICAgICAgICAgICAvKiAgIEdSMl9CQVNFX0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjJfQkFTRV9SOjg7ICAgICAgICAgICAgICAgLyogICBHUjJfQkFTRV9SICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9CQVNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IyX0NMVVQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSMl9DTFRfU0VMOjE7ICAgICAgICAgICAgICAvKiAgIEdSMl9DTFRfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjJfQ0xVVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSMl9NT04gICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IyX0FSQ19TVDoxOyAgICAgICAgICAgICAgLyogICBHUjJfQVJDX1NUICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSMl9NT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbNDBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19VUERBVEUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1BfVkVOOjE7ICAgICAgICAgICAgICAgLyogICBHUjNfUF9WRU4gICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfSUJVU19WRU46MTsgICAgICAgICAgICAvKiAgIEdSM19JQlVTX1ZFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19GTE1fUkQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1JfRU5COjE7ICAgICAgICAgICAgICAgLyogICBHUjNfUl9FTkIgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19GTE1fUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0ZMTTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19MTl9PRkZfRElSOjE7ICAgICAgICAgICAvKiAgIEdSM19MTl9PRkZfRElSICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19GTE1fU0VMOjI7ICAgICAgICAgICAgICAvKiAgIEdSM19GTE1fU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19CU1RfTUQ6MTsgICAgICAgICAgICAgICAvKiAgIEdSM19CU1RfTUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfRkxNMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX0JBU0U6MzI7ICAgICAgICAgICAgICAgLyogICBHUjNfQkFTRSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19GTE0yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0ZMTTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19MTl9PRkY6MTU7ICAgICAgICAgICAgICAvKiAgIEdSM19MTl9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ZMTV9OVU06MTA7ICAgICAgICAgICAgIC8qICAgR1IzX0ZMTV9OVU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfRkxNNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19GTE1fT0ZGOjIzOyAgICAgICAgICAgIC8qICAgR1IzX0ZMTV9PRkYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0ZMTTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfRkxNNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ZMTV9MTlVNOjEwOyAgICAgICAgICAgIC8qICAgR1IzX0ZMTV9MTlVNICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19GTE1fTE9PUDoxMDsgICAgICAgICAgICAvKiAgIEdSM19GTE1fTE9PUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfRkxNNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19GTE02ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19GT1JNQVQ6NDsgICAgICAgICAgICAgICAvKiAgIEdSM19GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0hXOjEwOyAgICAgICAgICAgICAgICAgIC8qICAgR1IzX0hXICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfRU5ESUFOX09OOjE7ICAgICAgICAgICAgLyogICBHUjNfRU5ESUFOX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19TVEFfUE9TOjY7ICAgICAgICAgICAgICAvKiAgIEdSM19TVEFfUE9TICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19GTE02OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfQVJDX09OOjE7ICAgICAgICAgICAgICAvKiAgIEdSM19BUkNfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19BUkNfRElTUF9PTjoxOyAgICAgICAgIC8qICAgR1IzX0FSQ19ESVNQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfR1JDX0RJU1BfT046MTsgICAgICAgICAvKiAgIEdSM19HUkNfRElTUF9PTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX0RJU1BfU0VMOjI7ICAgICAgICAgICAgLyogICBHUjNfRElTUF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUIyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0dSQ19WUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IzX0dSQ19WUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfR1JDX1ZXOjExOyAgICAgICAgICAgICAgLyogICBHUjNfR1JDX1ZXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19HUkNfSFM6MTE7ICAgICAgICAgICAgICAvKiAgIEdSM19HUkNfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0dSQ19IVzoxMTsgICAgICAgICAgICAgIC8qICAgR1IzX0dSQ19IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUIzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQVJDX1ZTOjExOyAgICAgICAgICAgICAgLyogICBHUjNfQVJDX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfVlc6MTE7ICAgICAgICAgICAgICAvKiAgIEdSM19BUkNfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUI1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0FSQ19IUzoxMTsgICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQVJDX0hXOjExOyAgICAgICAgICAgICAgLyogICBHUjNfQVJDX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCNiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfTU9ERToxOyAgICAgICAgICAgICAvKiAgIEdSM19BUkNfTU9ERSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19BUkNfQ09FRjo4OyAgICAgICAgICAgICAvKiAgIEdSM19BUkNfQ09FRiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQVJDX1JBVEU6ODsgICAgICAgICAgICAgLyogICBHUjNfQVJDX1JBVEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUI3ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0FSQ19ERUY6ODsgICAgICAgICAgICAgIC8qICAgR1IzX0FSQ19ERUYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX09OOjE7ICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX09OICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUI3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjggICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19LQ0xVVDo4OyAgICAgICAgICAgICAvKiAgIEdSM19DS19LQ0xVVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19LRzo4OyAgICAgICAgICAgICAgICAvKiAgIEdSM19DS19LRyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0tfS0I6ODsgICAgICAgICAgICAgICAgLyogICBHUjNfQ0tfS0IgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX0tSOjg7ICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX0tSICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUI4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19BQjkgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19BOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSM19DS19BICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQ0tfRzo4OyAgICAgICAgICAgICAgICAgLyogICBHUjNfQ0tfRyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NLX0I6ODsgICAgICAgICAgICAgICAgIC8qICAgR1IzX0NLX0IgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19DS19SOjg7ICAgICAgICAgICAgICAgICAvKiAgIEdSM19DS19SICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0FCOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQUIxMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfQTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0cwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX0cwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19CMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19CMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfUjA6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19BQjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR1IzX0FCMTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0ExOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX0ExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19HMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19HMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQjE6ODsgICAgICAgICAgICAgICAgICAgLyogICBHUjNfQjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX1IxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX1IxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQUIxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19CQVNFICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHUjNfQkFTRV9HOjg7ICAgICAgICAgICAgICAgLyogICBHUjNfQkFTRV9HICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0JBU0VfQjo4OyAgICAgICAgICAgICAgIC8qICAgR1IzX0JBU0VfQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdSM19CQVNFX1I6ODsgICAgICAgICAgICAgICAvKiAgIEdSM19CQVNFX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR1IzX0JBU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHUjNfQ0xVVF9JTlQgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NMVF9TRUw6MTsgICAgICAgICAgICAgIC8qICAgR1IzX0NMVF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0xJTkU6MTE7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHUjNfQ0xVVF9JTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdSM19NT04gICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX0FSQ19TVDoxOyAgICAgICAgICAgICAgLyogICBHUjNfQVJDX1NUICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdSM19NT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbNDBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX1VQREFURSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0FNX0dfVkVOOjE7ICAgICAgICAgICAgICAgLyogICBHQU1fR19WRU4gICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1NXICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHQU1fT046MTsgICAgICAgICAgICAgICAgICAvKiAgIEdBTV9PTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1NXOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wMDoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzAxOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzAxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wMzoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDMgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzA0OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzA0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQ0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wNjoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzA3OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzA3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUNSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMDg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMDggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8wOToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8wOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDYgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzEwOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzEwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQ3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xMjoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzEzOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzEzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUOCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xNToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzE2OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzE2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMTc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMTcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxMCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8xODoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8xOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzE5OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzE5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yMToxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQxMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDEyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzIyOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzIyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxMyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yNDoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzI1OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzI1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfTFVUMTQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8yNzoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8yNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19MVVQxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0xVVDE1ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzI4OjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzI4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX0dBSU5fMjk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9HX0dBSU5fMjkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfTFVUMTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19MVVQxNiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfR0FJTl8zMDoxMTsgICAgICAgICAgIC8qICAgR0FNX0dfR0FJTl8zMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19HQUlOXzMxOjExOyAgICAgICAgICAgLyogICBHQU1fR19HQUlOXzMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0xVVDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzAxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzAxICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19BUkVBMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0FSRUEyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzA0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzA0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzA3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzA3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTMgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMDg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMDggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8wOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8wOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzEwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzEwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfQVJFQTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19BUkVBNCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzEzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzEzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19BUkVBNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0FSRUE1ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzE2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzE2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMTc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMTcgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8xODo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8xOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzE5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzE5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0dfQVJFQTYgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzIyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzIyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0dfQVJFQTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fR19BUkVBNyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzI1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzI1ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8yNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8yNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fR19BUkVBNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9HX0FSRUE4ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzI4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzI4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0dfVEhfMjk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0dfVEhfMjkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fR19USF8zMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fR19USF8zMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9HX1RIXzMxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9HX1RIXzMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9HX0FSRUE4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbMjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX1VQREFURSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0FNX0JfVkVOOjE7ICAgICAgICAgICAgICAgLyogICBHQU1fQl9WRU4gICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzAwOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzAwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wMjoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzAzOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzAzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wNToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzA2OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzA2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMDc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMDcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQ1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8wODoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8wOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzA5OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzA5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUNiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xMToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDcgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzEyOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzEyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQ4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xNDoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzE1OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzE1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUOSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8xNzoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8xNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDEwICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzE4OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzE4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMTk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMTkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQxMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yMDoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzIxOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMTIgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yMzoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDEzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzI0OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzI0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9MVVQxNCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yNjoxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzI3OjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzI3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0xVVDE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfTFVUMTUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMjg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMjggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfR0FJTl8yOToxMTsgICAgICAgICAgIC8qICAgR0FNX0JfR0FJTl8yOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9MVVQxNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0xVVDE2ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9HQUlOXzMwOjExOyAgICAgICAgICAgLyogICBHQU1fQl9HQUlOXzMwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX0dBSU5fMzE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9CX0dBSU5fMzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfTFVUMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzAzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzAzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0FSRUExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfQVJFQTIgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzA2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzA2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMDc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMDcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBMyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8wODo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8wOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzA5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzA5ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9BUkVBMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0FSRUE0ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzEyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzEyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzE1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzE1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0FSRUE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfQVJFQTUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8xNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8xNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzE4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzE4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMTk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMTkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fQl9BUkVBNiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzIxOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzIxICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fQl9BUkVBNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9CX0FSRUE3ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzI0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzI0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzI3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzI3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9CX0FSRUE3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX0JfQVJFQTggICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMjg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMjggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fQl9USF8yOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fQl9USF8yOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9CX1RIXzMwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9CX1RIXzMwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX0JfVEhfMzE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX0JfVEhfMzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX0JfQVJFQTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNlsyNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfVVBEQVRFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHQU1fUl9WRU46MTsgICAgICAgICAgICAgICAvKiAgIEdBTV9SX1ZFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxN1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wMToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzAyOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzAyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDM6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wNDoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzA1OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzA1ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUNCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDY6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8wNzoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8wNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDUgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzA4OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzA4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMDk6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMDkgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQ2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xMDoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzExOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzExICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUNyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTI6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xMzoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDggICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzE0OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzE0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTU6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQ5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xNjoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzE3OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzE3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMTAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMTg6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMTggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8xOToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8xOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDExICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzIwOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzIwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjE6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxMiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yMjoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzIzOjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzIzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMTMgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjQ6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yNToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0xVVDE0ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzI2OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzI2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMjc6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfTFVUMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9MVVQxNSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8yODoxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8yOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9HQUlOXzI5OjExOyAgICAgICAgICAgLyogICBHQU1fUl9HQUlOXzI5ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0xVVDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfTFVUMTYgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX0dBSU5fMzA6MTE7ICAgICAgICAgICAvKiAgIEdBTV9SX0dBSU5fMzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfR0FJTl8zMToxMTsgICAgICAgICAgIC8qICAgR0FNX1JfR0FJTl8zMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9MVVQxNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUExICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzAyOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzAyICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDM6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfQVJFQTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9BUkVBMiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wNDo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wNCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzA1Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzA1ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDY6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8wNzo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8wNyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUEzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzA4Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzA4ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMDk6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMDkgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xMDo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzExOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzExICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0FSRUEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfQVJFQTQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTI6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xMzo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xMyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzE0Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzE0ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTU6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfQVJFQTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9BUkVBNSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xNjo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xNiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzE3Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzE3ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMTg6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMTggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8xOTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8xOSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEdBTV9SX0FSRUE2ICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzIwOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzIwICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjE6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yMjo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzIzOjg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzIzICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEdBTV9SX0FSRUE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR0FNX1JfQVJFQTcgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjQ6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yNTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzI2Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzI2ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMjc6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMjcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gR0FNX1JfQVJFQTc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHQU1fUl9BUkVBOCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8yODo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8yOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEdBTV9SX1RIXzI5Ojg7ICAgICAgICAgICAgICAvKiAgIEdBTV9SX1RIXzI5ICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR0FNX1JfVEhfMzA6ODsgICAgICAgICAgICAgIC8qICAgR0FNX1JfVEhfMzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHQU1fUl9USF8zMTo4OyAgICAgICAgICAgICAgLyogICBHQU1fUl9USF8zMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBHQU1fUl9BUkVBODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzI0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1VQREFURSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fVkVOOjE7ICAgICAgICAgICAgICAgIC8qICAgVENPTl9WRU4gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1VQREFURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX0hBTEY6MTE7ICAgICAgICAgICAgICAgLyogICBUQ09OX0hBTEYgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fT0ZGU0VUOjExOyAgICAgICAgICAgICAvKiAgIFRDT05fT0ZGU0VUICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fU1RWQTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVFZBX1ZTOjExOyAgICAgICAgICAgIC8qICAgVENPTl9TVFZBX1ZTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fU1RWQV9WVzoxMTsgICAgICAgICAgICAvKiAgIFRDT05fU1RWQV9WVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVFZBMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUVkEyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUVkFfSU5WOjE7ICAgICAgICAgICAvKiAgIFRDT05fU1RWQV9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RWQV9TRUw6MzsgICAgICAgICAgIC8qICAgVENPTl9TVFZBX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVFZBMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUVkIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fU1RWQl9WUzoxMTsgICAgICAgICAgICAvKiAgIFRDT05fU1RWQl9WUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1NUVkJfVlc6MTE7ICAgICAgICAgICAgLyogICBUQ09OX1NUVkJfVlcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fU1RWQjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9TVFZCMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVFZCX0lOVjoxOyAgICAgICAgICAgLyogICBUQ09OX1NUVkJfSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUVkJfU0VMOjM7ICAgICAgICAgICAvKiAgIFRDT05fU1RWQl9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fU1RWQjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9TVEgxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fU1RIX0hTOjExOyAgICAgICAgICAgICAvKiAgIFRDT05fU1RIX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fU1RIX0hXOjExOyAgICAgICAgICAgICAvKiAgIFRDT05fU1RIX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1NUSDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fU1RIMiAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVEhfSFNfU0VMOjE7ICAgICAgICAgLyogICBUQ09OX1NUSF9IU19TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RIX0lOVjoxOyAgICAgICAgICAgIC8qICAgVENPTl9TVEhfSU5WICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUSF9TRUw6MzsgICAgICAgICAgICAvKiAgIFRDT05fU1RIX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9TVEgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1NUQjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVEJfSFM6MTE7ICAgICAgICAgICAgIC8qICAgVENPTl9TVEJfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9TVEJfSFc6MTE7ICAgICAgICAgICAgIC8qICAgVENPTl9TVEJfSFcgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fU1RCMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9TVEIyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1NUQl9IU19TRUw6MTsgICAgICAgICAvKiAgIFRDT05fU1RCX0hTX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9TVEJfSU5WOjE7ICAgICAgICAgICAgLyogICBUQ09OX1NUQl9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fU1RCX1NFTDozOyAgICAgICAgICAgIC8qICAgVENPTl9TVEJfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1NUQjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fQ1BWMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX0NQVl9IUzoxMTsgICAgICAgICAgICAgLyogICBUQ09OX0NQVl9IUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX0NQVl9IVzoxMTsgICAgICAgICAgICAgLyogICBUQ09OX0NQVl9IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9DUFYxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX0NQVjIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fQ1BWX0hTX1NFTDoxOyAgICAgICAgIC8qICAgVENPTl9DUFZfSFNfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX0NQVl9JTlY6MTsgICAgICAgICAgICAvKiAgIFRDT05fQ1BWX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9DUFZfU0VMOjM7ICAgICAgICAgICAgLyogICBUQ09OX0NQVl9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENPTl9USU1fQ1BWMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ09OX1RJTV9QT0xBMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUQ09OX1BPTEFfSFM6MTE7ICAgICAgICAgICAgLyogICBUQ09OX1BPTEFfSFMgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9QT0xBX0hXOjExOyAgICAgICAgICAgIC8qICAgVENPTl9QT0xBX0hXICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1BPTEExOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fUE9MQTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQV9NRDoyOyAgICAgICAgICAgIC8qICAgVENPTl9QT0xBX01EICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1BPTEFfSFNfU0VMOjE7ICAgICAgICAvKiAgIFRDT05fUE9MQV9IU19TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQV9JTlY6MTsgICAgICAgICAgIC8qICAgVENPTl9QT0xBX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9QT0xBX1NFTDozOyAgICAgICAgICAgLyogICBUQ09OX1BPTEFfU0VMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDT05fVElNX1BPTEEyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVENPTl9USU1fUE9MQjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVENPTl9QT0xCX0hTOjExOyAgICAgICAgICAgIC8qICAgVENPTl9QT0xCX0hTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRDT05fUE9MQl9IVzoxMTsgICAgICAgICAgICAvKiAgIFRDT05fUE9MQl9IVyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9QT0xCMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX1BPTEIyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxODsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1BPTEJfTUQ6MjsgICAgICAgICAgICAvKiAgIFRDT05fUE9MQl9NRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9QT0xCX0hTX1NFTDoxOyAgICAgICAgLyogICBUQ09OX1BPTEJfSFNfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ09OX1BPTEJfSU5WOjE7ICAgICAgICAgICAvKiAgIFRDT05fUE9MQl9JTlYgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDT05fUE9MQl9TRUw6MzsgICAgICAgICAgIC8qICAgVENPTl9QT0xCX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9QT0xCMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDT05fVElNX0RFICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENPTl9ERV9JTlY6MTsgICAgICAgICAgICAgLyogICBUQ09OX0RFX0lOViAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ09OX1RJTV9ERTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE5WzYwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVRfVVBEQVRFICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9WRU46MTsgICAgICAgICAgICAgIC8qICAgT1VUQ05UX1ZFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9TRVQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPVVRfRU5ESUFOX09OOjE7ICAgICAgICAgICAgLyogICBPVVRfRU5ESUFOX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9TV0FQX09OOjE7ICAgICAgICAgICAgICAvKiAgIE9VVF9TV0FQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPVVRfRk9STUFUOjI7ICAgICAgICAgICAgICAgLyogICBPVVRfRk9STUFUICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9GUlFfU0VMOjI7ICAgICAgICAgICAgICAvKiAgIE9VVF9GUlFfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9ESVJfU0VMOjE7ICAgICAgICAgICAgICAvKiAgIE9VVF9ESVJfU0VMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9VVF9QSEFTRToyOyAgICAgICAgICAgICAgICAvKiAgIE9VVF9QSEFTRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gT1VUX1NFVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVRfQlJJR0hUMSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBCUlRfRzoxMDsgICAgICAgICAgICAgICAgIC8qICAgUEJSVF9HICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfQlJJR0hUMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE9VVF9CUklHSFQyICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlJUX0I6MTA7ICAgICAgICAgICAgICAgICAgLyogICBQQlJUX0IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBCUlRfUjoxMDsgICAgICAgICAgICAgICAgICAvKiAgIFBCUlRfUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gT1VUX0JSSUdIVDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVRfQ09OVFJBU1QgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ09OVF9HOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ09OVF9HICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENPTlRfQjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENPTlRfQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDT05UX1I6ODsgICAgICAgICAgICAgICAgICAgLyogICBDT05UX1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE9VVF9DT05UUkFTVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogT1VUX1BEVEhBICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBEVEhfU0VMOjI7ICAgICAgICAgICAgICAgICAvKiAgIFBEVEhfU0VMICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUERUSF9GT1JNQVQ6MjsgICAgICAgICAgICAgIC8qICAgUERUSF9GT1JNQVQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUERUSF9QQToyOyAgICAgICAgICAgICAgICAgIC8qICAgUERUSF9QQSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRFRIX1BCOjI7ICAgICAgICAgICAgICAgICAgLyogICBQRFRIX1BCICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBEVEhfUEM6MjsgICAgICAgICAgICAgICAgICAvKiAgIFBEVEhfUEMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUERUSF9QRDoyOyAgICAgICAgICAgICAgICAgIC8qICAgUERUSF9QRCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPVVRfUERUSEE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIwWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPVVRfQ0xLX1BIQVNFICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPVVRDTlRfRlJPTlRfR0FNOjE7ICAgICAgICAvKiAgIE9VVENOVF9GUk9OVF9HQU0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9MQ0RfRURHRToxOyAgICAgICAgIC8qICAgT1VUQ05UX0xDRF9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPVVRDTlRfU1RWQV9FREdFOjE7ICAgICAgICAvKiAgIE9VVENOVF9TVFZBX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1VUQ05UX1NUVkJfRURHRToxOyAgICAgICAgLyogICBPVVRDTlRfU1RWQl9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9TVEhfRURHRToxOyAgICAgICAgIC8qICAgT1VUQ05UX1NUSF9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9TVEJfRURHRToxOyAgICAgICAgIC8qICAgT1VUQ05UX1NUQl9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9DUFZfRURHRToxOyAgICAgICAgIC8qICAgT1VUQ05UX0NQVl9FREdFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9VVENOVF9QT0xBX0VER0U6MTsgICAgICAgIC8qICAgT1VUQ05UX1BPTEFfRURHRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPVVRDTlRfUE9MQl9FREdFOjE7ICAgICAgICAvKiAgIE9VVENOVF9QT0xCX0VER0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gT1VUX0NMS19QSEFTRTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMVs4OF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ05UX0lOVDEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfU1RBODoxOyAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEE4ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX0lOVDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDTlRfSU5UMiAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX1NUQTc6MTsgICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTcgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBNjoxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBNiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9TVEE1OjE7ICAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEE1ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX1NUQTQ6MTsgICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBMzoxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBMyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9TVEEyOjE7ICAgICAgICAgICAgICAgICAvKiAgIElOVF9TVEEyICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSU5UX1NUQTE6MTsgICAgICAgICAgICAgICAgIC8qICAgSU5UX1NUQTEgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTlRfU1RBMDoxOyAgICAgICAgICAgICAgICAgLyogICBJTlRfU1RBMCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NOVF9JTlQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ05UX0lOVDMgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfT1VUOF9PTjoxOyAgICAgICAgICAgICAvKiAgIElOVF9PVVQ4X09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NOVF9JTlQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ05UX0lOVDQgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQ3X09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQ3X09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQ2X09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQ2X09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQ1X09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQ1X09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQ0X09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQ0X09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQzX09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQzX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQyX09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQyX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQxX09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQxX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVF9PVVQwX09OOjE7ICAgICAgICAgICAgICAvKiAgIElOVF9PVVQwX09OICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NOVF9JTlQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ05UX1BBTkVMX0NMSyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBBTkVMX0lDS1NFTDoyOyAgICAgICAgICAgICAvKiAgIFBBTkVMX0lDS1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQU5FTF9JQ0tFTjoxOyAgICAgICAgICAgICAgLyogICBQQU5FTF9JQ0tFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQU5FTF9EQ0RSOjY7ICAgICAgICAgICAgICAgLyogICBQQU5FTF9EQ0RSICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNZU0NOVF9QQU5FTF9DTEs7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lTQ05UX0NMVVQgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IzX0NMVF9TRUxfU1Q6MTsgICAgICAgICAgIC8qICAgR1IzX0NMVF9TRUxfU1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IyX0NMVF9TRUxfU1Q6MTsgICAgICAgICAgIC8qICAgR1IyX0NMVF9TRUxfU1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgR1IxX0NMVF9TRUxfU1Q6MTsgICAgICAgICAgIC8qICAgR1IxX0NMVF9TRUxfU1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lTQ05UX0NMVVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc3JjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU1JDICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ0lEICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ0lEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ09EICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ09EOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ0lEQ1RSTCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElFRDoxOyAgICAgICAgICAgICAgIC8qICAgSUVEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElFTjoxOyAgICAgICAgICAgICAgIC8qICAgSUVOICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElGVFJHOjI7ICAgICAgICAgICAgIC8qICAgSUZUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ0lEQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ09EQ1RSTCAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9DSDoxOyAgICAgICAgICAgICAgIC8qICAgT0NIICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9FRDoxOyAgICAgICAgICAgICAgIC8qICAgT0VEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9FTjoxOyAgICAgICAgICAgICAgIC8qICAgT0VOICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9GVFJHOjI7ICAgICAgICAgICAgIC8qICAgT0ZUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ09EQ1RSTDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ0NUUkwgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENFRU46MTsgICAgICAgICAgICAgIC8qICAgQ0VFTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNSQ0VOOjE7ICAgICAgICAgICAgIC8qICAgU1JDRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVERU46MTsgICAgICAgICAgICAgIC8qICAgVURFTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9WRU46MTsgICAgICAgICAgICAgIC8qICAgT1ZFTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZMOjE7ICAgICAgICAgICAgICAgIC8qICAgRkwgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENMOjE7ICAgICAgICAgICAgICAgIC8qICAgQ0wgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElGUzo0OyAgICAgICAgICAgICAgIC8qICAgSUZTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9GUzozOyAgICAgICAgICAgICAgIC8qICAgT0ZTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ0NUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNSQ1NUQVQgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9GRE46NTsgICAgICAgICAgICAgIC8qICAgT0ZETiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElGRE46NDsgICAgICAgICAgICAgIC8qICAgSUZETiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENFRjoxOyAgICAgICAgICAgICAgIC8qICAgQ0VGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZMRjoxOyAgICAgICAgICAgICAgIC8qICAgRkxGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFVERjoxOyAgICAgICAgICAgICAgIC8qICAgVURGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9WRjoxOyAgICAgICAgICAgICAgIC8qICAgT1ZGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElJTlQ6MTsgICAgICAgICAgICAgIC8qICAgSUlOVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9JTlQ6MTsgICAgICAgICAgICAgIC8qICAgT0lOVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSQ1NUQVQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQkjaWYJMA0KLXN0cnVjdCBzdF9ncGlvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBHUElPICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBBSU9SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMUlPUjoxOyAgICAgICAgICAgIC8qICAgUEExSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMElPUjoxOyAgICAgICAgICAgIC8qICAgUEEwSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBBSU9SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBBRFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMURSOjE7ICAgICAgICAgICAgIC8qICAgUEExRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMERSOjE7ICAgICAgICAgICAgIC8qICAgUEEwRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBBRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBBUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMVBSOjE7ICAgICAgICAgICAgIC8qICAgUEExUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBBMFBSOjE7ICAgICAgICAgICAgIC8qICAgUEEwUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBBUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1I1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjJNRDozOyAgICAgICAgICAgIC8qICAgUEIyMk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjFNRDoyOyAgICAgICAgICAgIC8qICAgUEIyMU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjBNRDozOyAgICAgICAgICAgIC8qICAgUEIyME1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1I0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTlNRDozOyAgICAgICAgICAgIC8qICAgUEIxOU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMThNRDozOyAgICAgICAgICAgIC8qICAgUEIxOE1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTdNRDozOyAgICAgICAgICAgIC8qICAgUEIxN01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTZNRDozOyAgICAgICAgICAgIC8qICAgUEIxNk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1IzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTVNRDozOyAgICAgICAgICAgIC8qICAgUEIxNU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTRNRDozOyAgICAgICAgICAgIC8qICAgUEIxNE1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTNNRDozOyAgICAgICAgICAgIC8qICAgUEIxM01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTJNRDoyOyAgICAgICAgICAgIC8qICAgUEIxMk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTFNRDoyOyAgICAgICAgICAgIC8qICAgUEIxMU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTBNRDoyOyAgICAgICAgICAgIC8qICAgUEIxME1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOU1EOjI7ICAgICAgICAgICAgIC8qICAgUEI5TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOE1EOjI7ICAgICAgICAgICAgIC8qICAgUEI4TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCN01EOjI7ICAgICAgICAgICAgIC8qICAgUEI3TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNk1EOjI7ICAgICAgICAgICAgIC8qICAgUEI2TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNU1EOjI7ICAgICAgICAgICAgIC8qICAgUEI1TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNE1EOjI7ICAgICAgICAgICAgIC8qICAgUEI0TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCM01EOjI7ICAgICAgICAgICAgIC8qICAgUEIzTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMk1EOjI7ICAgICAgICAgICAgIC8qICAgUEIyTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMU1EOjI7ICAgICAgICAgICAgIC8qICAgUEIxTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCSU9SMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjJJT1I6MTsgICAgICAgICAgIC8qICAgUEIyMklPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjFJT1I6MTsgICAgICAgICAgIC8qICAgUEIyMUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjBJT1I6MTsgICAgICAgICAgIC8qICAgUEIyMElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTlJT1I6MTsgICAgICAgICAgIC8qICAgUEIxOUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMThJT1I6MTsgICAgICAgICAgIC8qICAgUEIxOElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTdJT1I6MTsgICAgICAgICAgIC8qICAgUEIxN0lPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTZJT1I6MTsgICAgICAgICAgIC8qICAgUEIxNklPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCSU9SMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCSU9SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTVJT1I6MTsgICAgICAgICAgIC8qICAgUEIxNUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTRJT1I6MTsgICAgICAgICAgIC8qICAgUEIxNElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTNJT1I6MTsgICAgICAgICAgIC8qICAgUEIxM0lPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTJJT1I6MTsgICAgICAgICAgIC8qICAgUEIxMklPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTFJT1I6MTsgICAgICAgICAgIC8qICAgUEIxMUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTBJT1I6MTsgICAgICAgICAgIC8qICAgUEIxMElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOUlPUjoxOyAgICAgICAgICAgIC8qICAgUEI5SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOElPUjoxOyAgICAgICAgICAgIC8qICAgUEI4SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCN0lPUjoxOyAgICAgICAgICAgIC8qICAgUEI3SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNklPUjoxOyAgICAgICAgICAgIC8qICAgUEI2SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNUlPUjoxOyAgICAgICAgICAgIC8qICAgUEI1SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNElPUjoxOyAgICAgICAgICAgIC8qICAgUEI0SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCM0lPUjoxOyAgICAgICAgICAgIC8qICAgUEIzSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMklPUjoxOyAgICAgICAgICAgIC8qICAgUEIySU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMUlPUjoxOyAgICAgICAgICAgIC8qICAgUEIxSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCSU9SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCRFIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjJEUjoxOyAgICAgICAgICAgIC8qICAgUEIyMkRSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjFEUjoxOyAgICAgICAgICAgIC8qICAgUEIyMURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjBEUjoxOyAgICAgICAgICAgIC8qICAgUEIyMERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTlEUjoxOyAgICAgICAgICAgIC8qICAgUEIxOURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMThEUjoxOyAgICAgICAgICAgIC8qICAgUEIxOERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTdEUjoxOyAgICAgICAgICAgIC8qICAgUEIxN0RSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTZEUjoxOyAgICAgICAgICAgIC8qICAgUEIxNkRSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCRFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCRFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTVEUjoxOyAgICAgICAgICAgIC8qICAgUEIxNURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTREUjoxOyAgICAgICAgICAgIC8qICAgUEIxNERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTNEUjoxOyAgICAgICAgICAgIC8qICAgUEIxM0RSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTJEUjoxOyAgICAgICAgICAgIC8qICAgUEIxMkRSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTFEUjoxOyAgICAgICAgICAgIC8qICAgUEIxMURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTBEUjoxOyAgICAgICAgICAgIC8qICAgUEIxMERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOURSOjE7ICAgICAgICAgICAgIC8qICAgUEI5RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOERSOjE7ICAgICAgICAgICAgIC8qICAgUEI4RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCN0RSOjE7ICAgICAgICAgICAgIC8qICAgUEI3RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNkRSOjE7ICAgICAgICAgICAgIC8qICAgUEI2RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNURSOjE7ICAgICAgICAgICAgIC8qICAgUEI1RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNERSOjE7ICAgICAgICAgICAgIC8qICAgUEI0RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCM0RSOjE7ICAgICAgICAgICAgIC8qICAgUEIzRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMkRSOjE7ICAgICAgICAgICAgIC8qICAgUEIyRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMURSOjE7ICAgICAgICAgICAgIC8qICAgUEIxRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCUFIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjJQUjoxOyAgICAgICAgICAgIC8qICAgUEIyMlBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjFQUjoxOyAgICAgICAgICAgIC8qICAgUEIyMVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMjBQUjoxOyAgICAgICAgICAgIC8qICAgUEIyMFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTlQUjoxOyAgICAgICAgICAgIC8qICAgUEIxOVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMThQUjoxOyAgICAgICAgICAgIC8qICAgUEIxOFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTdQUjoxOyAgICAgICAgICAgIC8qICAgUEIxN1BSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTZQUjoxOyAgICAgICAgICAgIC8qICAgUEIxNlBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCUFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBCUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTVQUjoxOyAgICAgICAgICAgIC8qICAgUEIxNVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTRQUjoxOyAgICAgICAgICAgIC8qICAgUEIxNFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTNQUjoxOyAgICAgICAgICAgIC8qICAgUEIxM1BSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTJQUjoxOyAgICAgICAgICAgIC8qICAgUEIxMlBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTFQUjoxOyAgICAgICAgICAgIC8qICAgUEIxMVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMTBQUjoxOyAgICAgICAgICAgIC8qICAgUEIxMFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOVBSOjE7ICAgICAgICAgICAgIC8qICAgUEI5UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCOFBSOjE7ICAgICAgICAgICAgIC8qICAgUEI4UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCN1BSOjE7ICAgICAgICAgICAgIC8qICAgUEI3UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNlBSOjE7ICAgICAgICAgICAgIC8qICAgUEI2UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNVBSOjE7ICAgICAgICAgICAgIC8qICAgUEI1UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCNFBSOjE7ICAgICAgICAgICAgIC8qICAgUEI0UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCM1BSOjE7ICAgICAgICAgICAgIC8qICAgUEIzUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMlBSOjE7ICAgICAgICAgICAgIC8qICAgUEIyUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBCMVBSOjE7ICAgICAgICAgICAgIC8qICAgUEIxUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBCUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzE0XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDOE1EOjM7ICAgICAgICAgICAgIC8qICAgUEM4TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDN01EOjM7ICAgICAgICAgICAgIC8qICAgUEM3TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNk1EOjM7ICAgICAgICAgICAgIC8qICAgUEM2TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNU1EOjM7ICAgICAgICAgICAgIC8qICAgUEM1TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNE1EOjI7ICAgICAgICAgICAgIC8qICAgUEM0TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDM01EOjI7ICAgICAgICAgICAgIC8qICAgUEMzTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMk1EOjI7ICAgICAgICAgICAgIC8qICAgUEMyTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMU1EOjE7ICAgICAgICAgICAgIC8qICAgUEMxTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDME1EOjE7ICAgICAgICAgICAgIC8qICAgUEMwTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDSU9SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDOElPUjoxOyAgICAgICAgICAgIC8qICAgUEM4SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDN0lPUjoxOyAgICAgICAgICAgIC8qICAgUEM3SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNklPUjoxOyAgICAgICAgICAgIC8qICAgUEM2SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNUlPUjoxOyAgICAgICAgICAgIC8qICAgUEM1SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNElPUjoxOyAgICAgICAgICAgIC8qICAgUEM0SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDM0lPUjoxOyAgICAgICAgICAgIC8qICAgUEMzSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMklPUjoxOyAgICAgICAgICAgIC8qICAgUEMySU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMUlPUjoxOyAgICAgICAgICAgIC8qICAgUEMxSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMElPUjoxOyAgICAgICAgICAgIC8qICAgUEMwSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDSU9SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDRFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDOERSOjE7ICAgICAgICAgICAgIC8qICAgUEM4RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDN0RSOjE7ICAgICAgICAgICAgIC8qICAgUEM3RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNkRSOjE7ICAgICAgICAgICAgIC8qICAgUEM2RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNURSOjE7ICAgICAgICAgICAgIC8qICAgUEM1RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNERSOjE7ICAgICAgICAgICAgIC8qICAgUEM0RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDM0RSOjE7ICAgICAgICAgICAgIC8qICAgUEMzRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMkRSOjE7ICAgICAgICAgICAgIC8qICAgUEMyRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMURSOjE7ICAgICAgICAgICAgIC8qICAgUEMxRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMERSOjE7ICAgICAgICAgICAgIC8qICAgUEMwRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBDUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDOFBSOjE7ICAgICAgICAgICAgIC8qICAgUEM4UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDN1BSOjE7ICAgICAgICAgICAgIC8qICAgUEM3UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNlBSOjE7ICAgICAgICAgICAgIC8qICAgUEM2UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNVBSOjE7ICAgICAgICAgICAgIC8qICAgUEM1UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDNFBSOjE7ICAgICAgICAgICAgIC8qICAgUEM0UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDM1BSOjE7ICAgICAgICAgICAgIC8qICAgUEMzUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMlBSOjE7ICAgICAgICAgICAgIC8qICAgUEMyUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMVBSOjE7ICAgICAgICAgICAgIC8qICAgUEMxUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBDMFBSOjE7ICAgICAgICAgICAgIC8qICAgUEMwUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBDUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBEQ1IzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTVNRDoyOyAgICAgICAgICAgIC8qICAgUEQxNU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTRNRDoyOyAgICAgICAgICAgIC8qICAgUEQxNE1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTNNRDoyOyAgICAgICAgICAgIC8qICAgUEQxM01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTJNRDoyOyAgICAgICAgICAgIC8qICAgUEQxMk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBEQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBEQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTFNRDoyOyAgICAgICAgICAgIC8qICAgUEQxMU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTBNRDoyOyAgICAgICAgICAgIC8qICAgUEQxME1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOU1EOjI7ICAgICAgICAgICAgIC8qICAgUEQ5TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOE1EOjI7ICAgICAgICAgICAgIC8qICAgUEQ4TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBEQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBEQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEN01EOjI7ICAgICAgICAgICAgIC8qICAgUEQ3TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENk1EOjI7ICAgICAgICAgICAgIC8qICAgUEQ2TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENU1EOjI7ICAgICAgICAgICAgIC8qICAgUEQ1TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENE1EOjI7ICAgICAgICAgICAgIC8qICAgUEQ0TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBEQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBEQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEM01EOjI7ICAgICAgICAgICAgIC8qICAgUEQzTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMk1EOjI7ICAgICAgICAgICAgIC8qICAgUEQyTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMU1EOjI7ICAgICAgICAgICAgIC8qICAgUEQxTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEME1EOjI7ICAgICAgICAgICAgIC8qICAgUEQwTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBEQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBESU9SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTVJT1I6MTsgICAgICAgICAgIC8qICAgUEQxNUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTRJT1I6MTsgICAgICAgICAgIC8qICAgUEQxNElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTNJT1I6MTsgICAgICAgICAgIC8qICAgUEQxM0lPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTJJT1I6MTsgICAgICAgICAgIC8qICAgUEQxMklPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTFJT1I6MTsgICAgICAgICAgIC8qICAgUEQxMUlPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTBJT1I6MTsgICAgICAgICAgIC8qICAgUEQxMElPUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOUlPUjoxOyAgICAgICAgICAgIC8qICAgUEQ5SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOElPUjoxOyAgICAgICAgICAgIC8qICAgUEQ4SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEN0lPUjoxOyAgICAgICAgICAgIC8qICAgUEQ3SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENklPUjoxOyAgICAgICAgICAgIC8qICAgUEQ2SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENUlPUjoxOyAgICAgICAgICAgIC8qICAgUEQ1SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENElPUjoxOyAgICAgICAgICAgIC8qICAgUEQ0SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEM0lPUjoxOyAgICAgICAgICAgIC8qICAgUEQzSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMklPUjoxOyAgICAgICAgICAgIC8qICAgUEQySU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMUlPUjoxOyAgICAgICAgICAgIC8qICAgUEQxSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMElPUjoxOyAgICAgICAgICAgIC8qICAgUEQwSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBESU9SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBERFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTVEUjoxOyAgICAgICAgICAgIC8qICAgUEQxNURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTREUjoxOyAgICAgICAgICAgIC8qICAgUEQxNERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTNEUjoxOyAgICAgICAgICAgIC8qICAgUEQxM0RSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTJEUjoxOyAgICAgICAgICAgIC8qICAgUEQxMkRSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTFEUjoxOyAgICAgICAgICAgIC8qICAgUEQxMURSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTBEUjoxOyAgICAgICAgICAgIC8qICAgUEQxMERSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOURSOjE7ICAgICAgICAgICAgIC8qICAgUEQ5RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOERSOjE7ICAgICAgICAgICAgIC8qICAgUEQ4RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEN0RSOjE7ICAgICAgICAgICAgIC8qICAgUEQ3RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENkRSOjE7ICAgICAgICAgICAgIC8qICAgUEQ2RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENURSOjE7ICAgICAgICAgICAgIC8qICAgUEQ1RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENERSOjE7ICAgICAgICAgICAgIC8qICAgUEQ0RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEM0RSOjE7ICAgICAgICAgICAgIC8qICAgUEQzRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMkRSOjE7ICAgICAgICAgICAgIC8qICAgUEQyRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMURSOjE7ICAgICAgICAgICAgIC8qICAgUEQxRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMERSOjE7ICAgICAgICAgICAgIC8qICAgUEQwRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBERFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBEUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTVQUjoxOyAgICAgICAgICAgIC8qICAgUEQxNVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTRQUjoxOyAgICAgICAgICAgIC8qICAgUEQxNFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTNQUjoxOyAgICAgICAgICAgIC8qICAgUEQxM1BSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTJQUjoxOyAgICAgICAgICAgIC8qICAgUEQxMlBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTFQUjoxOyAgICAgICAgICAgIC8qICAgUEQxMVBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMTBQUjoxOyAgICAgICAgICAgIC8qICAgUEQxMFBSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOVBSOjE7ICAgICAgICAgICAgIC8qICAgUEQ5UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEOFBSOjE7ICAgICAgICAgICAgIC8qICAgUEQ4UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEN1BSOjE7ICAgICAgICAgICAgIC8qICAgUEQ3UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENlBSOjE7ICAgICAgICAgICAgIC8qICAgUEQ2UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENVBSOjE7ICAgICAgICAgICAgIC8qICAgUEQ1UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBENFBSOjE7ICAgICAgICAgICAgIC8qICAgUEQ0UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEM1BSOjE7ICAgICAgICAgICAgIC8qICAgUEQzUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMlBSOjE7ICAgICAgICAgICAgIC8qICAgUEQyUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMVBSOjE7ICAgICAgICAgICAgIC8qICAgUEQxUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBEMFBSOjE7ICAgICAgICAgICAgIC8qICAgUEQwUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBEUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMlsxNl07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBFQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFN01EOjI7ICAgICAgICAgICAgIC8qICAgUEU3TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNk1EOjI7ICAgICAgICAgICAgIC8qICAgUEU2TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNU1EOjI7ICAgICAgICAgICAgIC8qICAgUEU1TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNE1EOjI7ICAgICAgICAgICAgIC8qICAgUEU0TUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBFQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBFQ1IwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFM01EOjM7ICAgICAgICAgICAgIC8qICAgUEUzTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMk1EOjM7ICAgICAgICAgICAgIC8qICAgUEUyTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMU1EOjM7ICAgICAgICAgICAgIC8qICAgUEUxTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFME1EOjI7ICAgICAgICAgICAgIC8qICAgUEUwTUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBFQ1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBFSU9SMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFN0lPUjoxOyAgICAgICAgICAgIC8qICAgUEU3SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNklPUjoxOyAgICAgICAgICAgIC8qICAgUEU2SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNUlPUjoxOyAgICAgICAgICAgIC8qICAgUEU1SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNElPUjoxOyAgICAgICAgICAgIC8qICAgUEU0SU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFM0lPUjoxOyAgICAgICAgICAgIC8qICAgUEUzSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMklPUjoxOyAgICAgICAgICAgIC8qICAgUEUySU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMUlPUjoxOyAgICAgICAgICAgIC8qICAgUEUxSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMElPUjoxOyAgICAgICAgICAgIC8qICAgUEUwSU9SICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBFSU9SMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBFRFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFN0RSOjE7ICAgICAgICAgICAgIC8qICAgUEU3RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNkRSOjE7ICAgICAgICAgICAgIC8qICAgUEU2RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNURSOjE7ICAgICAgICAgICAgIC8qICAgUEU1RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNERSOjE7ICAgICAgICAgICAgIC8qICAgUEU0RFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFM0RSOjE7ICAgICAgICAgICAgIC8qICAgUEUzRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMkRSOjE7ICAgICAgICAgICAgIC8qICAgUEUyRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMURSOjE7ICAgICAgICAgICAgIC8qICAgUEUxRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMERSOjE7ICAgICAgICAgICAgIC8qICAgUEUwRFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBFRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBFUFIwICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFN1BSOjE7ICAgICAgICAgICAgIC8qICAgUEU3UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNlBSOjE7ICAgICAgICAgICAgIC8qICAgUEU2UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNVBSOjE7ICAgICAgICAgICAgIC8qICAgUEU1UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFNFBSOjE7ICAgICAgICAgICAgIC8qICAgUEU0UFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFM1BSOjE7ICAgICAgICAgICAgIC8qICAgUEUzUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMlBSOjE7ICAgICAgICAgICAgIC8qICAgUEUyUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMVBSOjE7ICAgICAgICAgICAgIC8qICAgUEUxUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBFMFBSOjE7ICAgICAgICAgICAgIC8qICAgUEUwUFIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBFUFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxNls2XTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBGQ1I2ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMjNNRCA6MzsgICAgICAgICAgIC8qICAgUEYyM01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMjJNRCA6MzsgICAgICAgICAgIC8qICAgUEYyMk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMjFNRCA6MzsgICAgICAgICAgIC8qICAgUEYyMU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMjBNRCA6MzsgICAgICAgICAgIC8qICAgUEYyME1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBGQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBGQ1I1ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMTlNRCA6MzsgICAgICAgICAgIC8qICAgUEYxOU1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMThNRCA6MzsgICAgICAgICAgIC8qICAgUEYxOE1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMTdNRCA6MzsgICAgICAgICAgIC8qICAgUEYxN01EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBGMTZNRCA6MzsgICAgICAgICAgIC8qICAgUEYxNk1EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBGQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBGQ1I0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlYWQvV3JpdGUgQWNjZXNzICovDQotICAgICAgICAgICAgIH0gUEZDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV3JpdGluZyBIJzVBIGluIHRoZSB1cHBlciBieXRlICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNE1EOjM7ICAgICAgICAgICAgLyogICBQRjE0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxM01EOjM7ICAgICAgICAgICAgLyogICBQRjEzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMk1EOjM7ICAgICAgICAgICAgLyogICBQRjEyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMU1EOjM7ICAgICAgICAgICAgLyogICBQRjExTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxME1EOjM7ICAgICAgICAgICAgLyogICBQRjEwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY5TUQ6MzsgICAgICAgICAgICAgLyogICBQRjlNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY4TUQ6MzsgICAgICAgICAgICAgLyogICBQRjhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY3TUQ6MzsgICAgICAgICAgICAgLyogICBQRjdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY2TUQ6MzsgICAgICAgICAgICAgLyogICBQRjZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY1TUQ6MzsgICAgICAgICAgICAgLyogICBQRjVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY0TUQ6MzsgICAgICAgICAgICAgLyogICBQRjRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYzTUQ6MzsgICAgICAgICAgICAgLyogICBQRjNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyTUQ6MzsgICAgICAgICAgICAgLyogICBQRjJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxTUQ6MzsgICAgICAgICAgICAgLyogICBQRjFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYwTUQ6MzsgICAgICAgICAgICAgLyogICBQRjBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZJT1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyM0lPUjoxOyAgICAgICAgICAgLyogICBQRjIzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMklPUjoxOyAgICAgICAgICAgLyogICBQRjIySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMUlPUjoxOyAgICAgICAgICAgLyogICBQRjIxSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMElPUjoxOyAgICAgICAgICAgLyogICBQRjIwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOUlPUjoxOyAgICAgICAgICAgLyogICBQRjE5SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOElPUjoxOyAgICAgICAgICAgLyogICBQRjE4SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxN0lPUjoxOyAgICAgICAgICAgLyogICBQRjE3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNklPUjoxOyAgICAgICAgICAgLyogICBQRjE2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZJT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNUlPUjoxOyAgICAgICAgICAgLyogICBQRjE1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNElPUjoxOyAgICAgICAgICAgLyogICBQRjE0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxM0lPUjoxOyAgICAgICAgICAgLyogICBQRjEzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMklPUjoxOyAgICAgICAgICAgLyogICBQRjEySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMUlPUjoxOyAgICAgICAgICAgLyogICBQRjExSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMElPUjoxOyAgICAgICAgICAgLyogICBQRjEwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY5SU9SOjE7ICAgICAgICAgICAgLyogICBQRjlJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY4SU9SOjE7ICAgICAgICAgICAgLyogICBQRjhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY3SU9SOjE7ICAgICAgICAgICAgLyogICBQRjdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY2SU9SOjE7ICAgICAgICAgICAgLyogICBQRjZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY1SU9SOjE7ICAgICAgICAgICAgLyogICBQRjVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY0SU9SOjE7ICAgICAgICAgICAgLyogICBQRjRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYzSU9SOjE7ICAgICAgICAgICAgLyogICBQRjNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYySU9SOjE7ICAgICAgICAgICAgLyogICBQRjJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxSU9SOjE7ICAgICAgICAgICAgLyogICBQRjFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYwSU9SOjE7ICAgICAgICAgICAgLyogICBQRjBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZEUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyM0RSOjE7ICAgICAgICAgICAgLyogICBQRjIzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMkRSOjE7ICAgICAgICAgICAgLyogICBQRjIyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMURSOjE7ICAgICAgICAgICAgLyogICBQRjIxRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMERSOjE7ICAgICAgICAgICAgLyogICBQRjIwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOURSOjE7ICAgICAgICAgICAgLyogICBQRjE5RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOERSOjE7ICAgICAgICAgICAgLyogICBQRjE4RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxN0RSOjE7ICAgICAgICAgICAgLyogICBQRjE3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNkRSOjE7ICAgICAgICAgICAgLyogICBQRjE2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZEUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNURSOjE7ICAgICAgICAgICAgLyogICBQRjE1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNERSOjE7ICAgICAgICAgICAgLyogICBQRjE0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxM0RSOjE7ICAgICAgICAgICAgLyogICBQRjEzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMkRSOjE7ICAgICAgICAgICAgLyogICBQRjEyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMURSOjE7ICAgICAgICAgICAgLyogICBQRjExRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMERSOjE7ICAgICAgICAgICAgLyogICBQRjEwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY5RFI6MTsgICAgICAgICAgICAgLyogICBQRjlEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY4RFI6MTsgICAgICAgICAgICAgLyogICBQRjhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY3RFI6MTsgICAgICAgICAgICAgLyogICBQRjdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY2RFI6MTsgICAgICAgICAgICAgLyogICBQRjZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY1RFI6MTsgICAgICAgICAgICAgLyogICBQRjVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY0RFI6MTsgICAgICAgICAgICAgLyogICBQRjREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYzRFI6MTsgICAgICAgICAgICAgLyogICBQRjNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyRFI6MTsgICAgICAgICAgICAgLyogICBQRjJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxRFI6MTsgICAgICAgICAgICAgLyogICBQRjFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYwRFI6MTsgICAgICAgICAgICAgLyogICBQRjBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZQUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyM1BSOjE7ICAgICAgICAgICAgLyogICBQRjIzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMlBSOjE7ICAgICAgICAgICAgLyogICBQRjIyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMVBSOjE7ICAgICAgICAgICAgLyogICBQRjIxUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyMFBSOjE7ICAgICAgICAgICAgLyogICBQRjIwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOVBSOjE7ICAgICAgICAgICAgLyogICBQRjE5UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxOFBSOjE7ICAgICAgICAgICAgLyogICBQRjE4UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxN1BSOjE7ICAgICAgICAgICAgLyogICBQRjE3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNlBSOjE7ICAgICAgICAgICAgLyogICBQRjE2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZQUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNVBSOjE7ICAgICAgICAgICAgLyogICBQRjE1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxNFBSOjE7ICAgICAgICAgICAgLyogICBQRjE0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxM1BSOjE7ICAgICAgICAgICAgLyogICBQRjEzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMlBSOjE7ICAgICAgICAgICAgLyogICBQRjEyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMVBSOjE7ICAgICAgICAgICAgLyogICBQRjExUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxMFBSOjE7ICAgICAgICAgICAgLyogICBQRjEwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY5UFI6MTsgICAgICAgICAgICAgLyogICBQRjlQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY4UFI6MTsgICAgICAgICAgICAgLyogICBQRjhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY3UFI6MTsgICAgICAgICAgICAgLyogICBQRjdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY2UFI6MTsgICAgICAgICAgICAgLyogICBQRjZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY1UFI6MTsgICAgICAgICAgICAgLyogICBQRjVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEY0UFI6MTsgICAgICAgICAgICAgLyogICBQRjRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYzUFI6MTsgICAgICAgICAgICAgLyogICBQRjNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYyUFI6MTsgICAgICAgICAgICAgLyogICBQRjJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYxUFI6MTsgICAgICAgICAgICAgLyogICBQRjFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEYwUFI6MTsgICAgICAgICAgICAgLyogICBQRjBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE3WzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyN01EOjI7ICAgICAgICAgICAgLyogICBQRzI3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNk1EOjI7ICAgICAgICAgICAgLyogICBQRzI2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNU1EOjI7ICAgICAgICAgICAgLyogICBQRzI1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNE1EOjI7ICAgICAgICAgICAgLyogICBQRzI0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyM01EOjM7ICAgICAgICAgICAgLyogICBQRzIzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMk1EOjM7ICAgICAgICAgICAgLyogICBQRzIyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMU1EOjM7ICAgICAgICAgICAgLyogICBQRzIxTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyME1EOjM7ICAgICAgICAgICAgLyogICBQRzIwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOU1EOjM7ICAgICAgICAgICAgLyogICBQRzE5TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOE1EOjM7ICAgICAgICAgICAgLyogICBQRzE4TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxN01EOjI7ICAgICAgICAgICAgLyogICBQRzE3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNk1EOjI7ICAgICAgICAgICAgLyogICBQRzE2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNU1EOjI7ICAgICAgICAgICAgLyogICBQRzE1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNE1EOjI7ICAgICAgICAgICAgLyogICBQRzE0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxM01EOjI7ICAgICAgICAgICAgLyogICBQRzEzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMk1EOjI7ICAgICAgICAgICAgLyogICBQRzEyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMU1EOjM7ICAgICAgICAgICAgLyogICBQRzExTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxME1EOjM7ICAgICAgICAgICAgLyogICBQRzEwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc5TUQ6MzsgICAgICAgICAgICAgLyogICBQRzlNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc4TUQ6MzsgICAgICAgICAgICAgLyogICBQRzhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc3TUQ6MzsgICAgICAgICAgICAgLyogICBQRzdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc2TUQ6MzsgICAgICAgICAgICAgLyogICBQRzZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc1TUQ6MzsgICAgICAgICAgICAgLyogICBQRzVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc0TUQ6MzsgICAgICAgICAgICAgLyogICBQRzRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEczTUQ6MzsgICAgICAgICAgICAgLyogICBQRzNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyTUQ6MzsgICAgICAgICAgICAgLyogICBQRzJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxTUQ6MzsgICAgICAgICAgICAgLyogICBQRzFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcwTUQ6MzsgICAgICAgICAgICAgLyogICBQRzBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdJT1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyN0lPUjoxOyAgICAgICAgICAgLyogICBQRzI3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNklPUjoxOyAgICAgICAgICAgLyogICBQRzI2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNUlPUjoxOyAgICAgICAgICAgLyogICBQRzI1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNElPUjoxOyAgICAgICAgICAgLyogICBQRzI0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyM0lPUjoxOyAgICAgICAgICAgLyogICBQRzIzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMklPUjoxOyAgICAgICAgICAgLyogICBQRzIySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMUlPUjoxOyAgICAgICAgICAgLyogICBQRzIxSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMElPUjoxOyAgICAgICAgICAgLyogICBQRzIwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOUlPUjoxOyAgICAgICAgICAgLyogICBQRzE5SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOElPUjoxOyAgICAgICAgICAgLyogICBQRzE4SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxN0lPUjoxOyAgICAgICAgICAgLyogICBQRzE3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNklPUjoxOyAgICAgICAgICAgLyogICBQRzE2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdJT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNUlPUjoxOyAgICAgICAgICAgLyogICBQRzE1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNElPUjoxOyAgICAgICAgICAgLyogICBQRzE0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxM0lPUjoxOyAgICAgICAgICAgLyogICBQRzEzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMklPUjoxOyAgICAgICAgICAgLyogICBQRzEySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMUlPUjoxOyAgICAgICAgICAgLyogICBQRzExSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMElPUjoxOyAgICAgICAgICAgLyogICBQRzEwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc5SU9SOjE7ICAgICAgICAgICAgLyogICBQRzlJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc4SU9SOjE7ICAgICAgICAgICAgLyogICBQRzhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc3SU9SOjE7ICAgICAgICAgICAgLyogICBQRzdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc2SU9SOjE7ICAgICAgICAgICAgLyogICBQRzZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc1SU9SOjE7ICAgICAgICAgICAgLyogICBQRzVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc0SU9SOjE7ICAgICAgICAgICAgLyogICBQRzRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEczSU9SOjE7ICAgICAgICAgICAgLyogICBQRzNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcySU9SOjE7ICAgICAgICAgICAgLyogICBQRzJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxSU9SOjE7ICAgICAgICAgICAgLyogICBQRzFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcwSU9SOjE7ICAgICAgICAgICAgLyogICBQRzBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdEUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyN0RSOjE7ICAgICAgICAgICAgLyogICBQRzI3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNkRSOjE7ICAgICAgICAgICAgLyogICBQRzI2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNURSOjE7ICAgICAgICAgICAgLyogICBQRzI1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNERSOjE7ICAgICAgICAgICAgLyogICBQRzI0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyM0RSOjE7ICAgICAgICAgICAgLyogICBQRzIzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMkRSOjE7ICAgICAgICAgICAgLyogICBQRzIyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMURSOjE7ICAgICAgICAgICAgLyogICBQRzIxRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMERSOjE7ICAgICAgICAgICAgLyogICBQRzIwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOURSOjE7ICAgICAgICAgICAgLyogICBQRzE5RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOERSOjE7ICAgICAgICAgICAgLyogICBQRzE4RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxN0RSOjE7ICAgICAgICAgICAgLyogICBQRzE3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNkRSOjE7ICAgICAgICAgICAgLyogICBQRzE2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdEUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNURSOjE7ICAgICAgICAgICAgLyogICBQRzE1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNERSOjE7ICAgICAgICAgICAgLyogICBQRzE0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxM0RSOjE7ICAgICAgICAgICAgLyogICBQRzEzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMkRSOjE7ICAgICAgICAgICAgLyogICBQRzEyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMURSOjE7ICAgICAgICAgICAgLyogICBQRzExRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMERSOjE7ICAgICAgICAgICAgLyogICBQRzEwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc5RFI6MTsgICAgICAgICAgICAgLyogICBQRzlEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc4RFI6MTsgICAgICAgICAgICAgLyogICBQRzhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc3RFI6MTsgICAgICAgICAgICAgLyogICBQRzdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc2RFI6MTsgICAgICAgICAgICAgLyogICBQRzZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc1RFI6MTsgICAgICAgICAgICAgLyogICBQRzVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc0RFI6MTsgICAgICAgICAgICAgLyogICBQRzREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEczRFI6MTsgICAgICAgICAgICAgLyogICBQRzNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyRFI6MTsgICAgICAgICAgICAgLyogICBQRzJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxRFI6MTsgICAgICAgICAgICAgLyogICBQRzFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcwRFI6MTsgICAgICAgICAgICAgLyogICBQRzBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdQUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyN1BSOjE7ICAgICAgICAgICAgLyogICBQRzI3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNlBSOjE7ICAgICAgICAgICAgLyogICBQRzI2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNVBSOjE7ICAgICAgICAgICAgLyogICBQRzI1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyNFBSOjE7ICAgICAgICAgICAgLyogICBQRzI0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyM1BSOjE7ICAgICAgICAgICAgLyogICBQRzIzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMlBSOjE7ICAgICAgICAgICAgLyogICBQRzIyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMVBSOjE7ICAgICAgICAgICAgLyogICBQRzIxUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyMFBSOjE7ICAgICAgICAgICAgLyogICBQRzIwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOVBSOjE7ICAgICAgICAgICAgLyogICBQRzE5UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxOFBSOjE7ICAgICAgICAgICAgLyogICBQRzE4UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxN1BSOjE7ICAgICAgICAgICAgLyogICBQRzE3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNlBSOjE7ICAgICAgICAgICAgLyogICBQRzE2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdQUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNVBSOjE7ICAgICAgICAgICAgLyogICBQRzE1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxNFBSOjE7ICAgICAgICAgICAgLyogICBQRzE0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxM1BSOjE7ICAgICAgICAgICAgLyogICBQRzEzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMlBSOjE7ICAgICAgICAgICAgLyogICBQRzEyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMVBSOjE7ICAgICAgICAgICAgLyogICBQRzExUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxMFBSOjE7ICAgICAgICAgICAgLyogICBQRzEwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc5UFI6MTsgICAgICAgICAgICAgLyogICBQRzlQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc4UFI6MTsgICAgICAgICAgICAgLyogICBQRzhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc3UFI6MTsgICAgICAgICAgICAgLyogICBQRzdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc2UFI6MTsgICAgICAgICAgICAgLyogICBQRzZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc1UFI6MTsgICAgICAgICAgICAgLyogICBQRzVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEc0UFI6MTsgICAgICAgICAgICAgLyogICBQRzRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEczUFI6MTsgICAgICAgICAgICAgLyogICBQRzNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcyUFI6MTsgICAgICAgICAgICAgLyogICBQRzJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcxUFI6MTsgICAgICAgICAgICAgLyogICBQRzFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEcwUFI6MTsgICAgICAgICAgICAgLyogICBQRzBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEdQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE4WzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEhDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg3TUQ6MjsgICAgICAgICAgICAgLyogICBQSDdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg2TUQ6MjsgICAgICAgICAgICAgLyogICBQSDZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg1TUQ6MjsgICAgICAgICAgICAgLyogICBQSDVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg0TUQ6MjsgICAgICAgICAgICAgLyogICBQSDRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEhDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEhDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgzTUQ6MjsgICAgICAgICAgICAgLyogICBQSDNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgyTUQ6MjsgICAgICAgICAgICAgLyogICBQSDJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgxTUQ6MjsgICAgICAgICAgICAgLyogICBQSDFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgwTUQ6MjsgICAgICAgICAgICAgLyogICBQSDBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEhDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE5WzEwXTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEhQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg3UFI6MTsgICAgICAgICAgICAgLyogICBQSDdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg2UFI6MTsgICAgICAgICAgICAgLyogICBQSDZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg1UFI6MTsgICAgICAgICAgICAgLyogICBQSDVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEg0UFI6MTsgICAgICAgICAgICAgLyogICBQSDRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgzUFI6MTsgICAgICAgICAgICAgLyogICBQSDNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgyUFI6MTsgICAgICAgICAgICAgLyogICBQSDJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgxUFI6MTsgICAgICAgICAgICAgLyogICBQSDFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEgwUFI6MTsgICAgICAgICAgICAgLyogICBQSDBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEhQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIwWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjcgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMU1EOjE7ICAgICAgICAgICAgLyogICBQSjMxTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozME1EOjM7ICAgICAgICAgICAgLyogICBQSjMwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOU1EOjM7ICAgICAgICAgICAgLyogICBQSjI5TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOE1EOjM7ICAgICAgICAgICAgLyogICBQSjI4TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjYgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyN01EOjM7ICAgICAgICAgICAgLyogICBQSjI3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNk1EOjM7ICAgICAgICAgICAgLyogICBQSjI2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNU1EOjM7ICAgICAgICAgICAgLyogICBQSjI1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNE1EOjM7ICAgICAgICAgICAgLyogICBQSjI0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjUgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyM01EOjM7ICAgICAgICAgICAgLyogICBQSjIzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMk1EOjM7ICAgICAgICAgICAgLyogICBQSjIyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMU1EOjM7ICAgICAgICAgICAgLyogICBQSjIxTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyME1EOjM7ICAgICAgICAgICAgLyogICBQSjIwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjQgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOU1EOjM7ICAgICAgICAgICAgLyogICBQSjE5TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOE1EOjM7ICAgICAgICAgICAgLyogICBQSjE4TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxN01EOjM7ICAgICAgICAgICAgLyogICBQSjE3TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNk1EOjM7ICAgICAgICAgICAgLyogICBQSjE2TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjMgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNU1EOjM7ICAgICAgICAgICAgLyogICBQSjE1TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNE1EOjM7ICAgICAgICAgICAgLyogICBQSjE0TUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxM01EOjM7ICAgICAgICAgICAgLyogICBQSjEzTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMk1EOjM7ICAgICAgICAgICAgLyogICBQSjEyTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMU1EOjM7ICAgICAgICAgICAgLyogICBQSjExTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxME1EOjM7ICAgICAgICAgICAgLyogICBQSjEwTUQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo5TUQ6MzsgICAgICAgICAgICAgLyogICBQSjlNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo4TUQ6MzsgICAgICAgICAgICAgLyogICBQSjhNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo3TUQ6MzsgICAgICAgICAgICAgLyogICBQSjdNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo2TUQ6MzsgICAgICAgICAgICAgLyogICBQSjZNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo1TUQ6MzsgICAgICAgICAgICAgLyogICBQSjVNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo0TUQ6MzsgICAgICAgICAgICAgLyogICBQSjRNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpDUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozTUQ6MzsgICAgICAgICAgICAgLyogICBQSjNNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyTUQ6MzsgICAgICAgICAgICAgLyogICBQSjJNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxTUQ6MzsgICAgICAgICAgICAgLyogICBQSjFNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEowTUQ6MzsgICAgICAgICAgICAgLyogICBQSjBNRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpDUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpJT1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMUlPUjoxOyAgICAgICAgICAgLyogICBQSjMxSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMElPUjoxOyAgICAgICAgICAgLyogICBQSjMwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOUlPUjoxOyAgICAgICAgICAgLyogICBQSjI5SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOElPUjoxOyAgICAgICAgICAgLyogICBQSjI4SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyN0lPUjoxOyAgICAgICAgICAgLyogICBQSjI3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNklPUjoxOyAgICAgICAgICAgLyogICBQSjI2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNUlPUjoxOyAgICAgICAgICAgLyogICBQSjI1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNElPUjoxOyAgICAgICAgICAgLyogICBQSjI0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyM0lPUjoxOyAgICAgICAgICAgLyogICBQSjIzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMklPUjoxOyAgICAgICAgICAgLyogICBQSjIySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMUlPUjoxOyAgICAgICAgICAgLyogICBQSjIxSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMElPUjoxOyAgICAgICAgICAgLyogICBQSjIwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOUlPUjoxOyAgICAgICAgICAgLyogICBQSjE5SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOElPUjoxOyAgICAgICAgICAgLyogICBQSjE4SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxN0lPUjoxOyAgICAgICAgICAgLyogICBQSjE3SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNklPUjoxOyAgICAgICAgICAgLyogICBQSjE2SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpJT1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpJT1IwICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNUlPUjoxOyAgICAgICAgICAgLyogICBQSjE1SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNElPUjoxOyAgICAgICAgICAgLyogICBQSjE0SU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxM0lPUjoxOyAgICAgICAgICAgLyogICBQSjEzSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMklPUjoxOyAgICAgICAgICAgLyogICBQSjEySU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMUlPUjoxOyAgICAgICAgICAgLyogICBQSjExSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMElPUjoxOyAgICAgICAgICAgLyogICBQSjEwSU9SICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo5SU9SOjE7ICAgICAgICAgICAgLyogICBQSjlJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo4SU9SOjE7ICAgICAgICAgICAgLyogICBQSjhJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo3SU9SOjE7ICAgICAgICAgICAgLyogICBQSjdJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo2SU9SOjE7ICAgICAgICAgICAgLyogICBQSjZJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo1SU9SOjE7ICAgICAgICAgICAgLyogICBQSjVJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo0SU9SOjE7ICAgICAgICAgICAgLyogICBQSjRJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozSU9SOjE7ICAgICAgICAgICAgLyogICBQSjNJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoySU9SOjE7ICAgICAgICAgICAgLyogICBQSjJJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxSU9SOjE7ICAgICAgICAgICAgLyogICBQSjFJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEowSU9SOjE7ICAgICAgICAgICAgLyogICBQSjBJT1IgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpJT1IwOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpEUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMURSOjE7ICAgICAgICAgICAgLyogICBQSjMxRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMERSOjE7ICAgICAgICAgICAgLyogICBQSjMwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOURSOjE7ICAgICAgICAgICAgLyogICBQSjI5RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOERSOjE7ICAgICAgICAgICAgLyogICBQSjI4RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyN0RSOjE7ICAgICAgICAgICAgLyogICBQSjI3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNkRSOjE7ICAgICAgICAgICAgLyogICBQSjI2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNURSOjE7ICAgICAgICAgICAgLyogICBQSjI1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNERSOjE7ICAgICAgICAgICAgLyogICBQSjI0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyM0RSOjE7ICAgICAgICAgICAgLyogICBQSjIzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMkRSOjE7ICAgICAgICAgICAgLyogICBQSjIyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMURSOjE7ICAgICAgICAgICAgLyogICBQSjIxRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMERSOjE7ICAgICAgICAgICAgLyogICBQSjIwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOURSOjE7ICAgICAgICAgICAgLyogICBQSjE5RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOERSOjE7ICAgICAgICAgICAgLyogICBQSjE4RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxN0RSOjE7ICAgICAgICAgICAgLyogICBQSjE3RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNkRSOjE7ICAgICAgICAgICAgLyogICBQSjE2RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpEUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpEUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNURSOjE7ICAgICAgICAgICAgLyogICBQSjE1RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNERSOjE7ICAgICAgICAgICAgLyogICBQSjE0RFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxM0RSOjE7ICAgICAgICAgICAgLyogICBQSjEzRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMkRSOjE7ICAgICAgICAgICAgLyogICBQSjEyRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMURSOjE7ICAgICAgICAgICAgLyogICBQSjExRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMERSOjE7ICAgICAgICAgICAgLyogICBQSjEwRFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo5RFI6MTsgICAgICAgICAgICAgLyogICBQSjlEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo4RFI6MTsgICAgICAgICAgICAgLyogICBQSjhEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo3RFI6MTsgICAgICAgICAgICAgLyogICBQSjdEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo2RFI6MTsgICAgICAgICAgICAgLyogICBQSjZEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo1RFI6MTsgICAgICAgICAgICAgLyogICBQSjVEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo0RFI6MTsgICAgICAgICAgICAgLyogICBQSjREUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozRFI6MTsgICAgICAgICAgICAgLyogICBQSjNEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyRFI6MTsgICAgICAgICAgICAgLyogICBQSjJEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxRFI6MTsgICAgICAgICAgICAgLyogICBQSjFEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEowRFI6MTsgICAgICAgICAgICAgLyogICBQSjBEUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpQUjEgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMVBSOjE7ICAgICAgICAgICAgLyogICBQSjMxUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozMFBSOjE7ICAgICAgICAgICAgLyogICBQSjMwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOVBSOjE7ICAgICAgICAgICAgLyogICBQSjI5UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyOFBSOjE7ICAgICAgICAgICAgLyogICBQSjI4UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyN1BSOjE7ICAgICAgICAgICAgLyogICBQSjI3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNlBSOjE7ICAgICAgICAgICAgLyogICBQSjI2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNVBSOjE7ICAgICAgICAgICAgLyogICBQSjI1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyNFBSOjE7ICAgICAgICAgICAgLyogICBQSjI0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyM1BSOjE7ICAgICAgICAgICAgLyogICBQSjIzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMlBSOjE7ICAgICAgICAgICAgLyogICBQSjIyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMVBSOjE7ICAgICAgICAgICAgLyogICBQSjIxUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyMFBSOjE7ICAgICAgICAgICAgLyogICBQSjIwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOVBSOjE7ICAgICAgICAgICAgLyogICBQSjE5UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxOFBSOjE7ICAgICAgICAgICAgLyogICBQSjE4UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxN1BSOjE7ICAgICAgICAgICAgLyogICBQSjE3UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNlBSOjE7ICAgICAgICAgICAgLyogICBQSjE2UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpQUjE7DQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEpQUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNVBSOjE7ICAgICAgICAgICAgLyogICBQSjE1UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxNFBSOjE7ICAgICAgICAgICAgLyogICBQSjE0UFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxM1BSOjE7ICAgICAgICAgICAgLyogICBQSjEzUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMlBSOjE7ICAgICAgICAgICAgLyogICBQSjEyUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMVBSOjE7ICAgICAgICAgICAgLyogICBQSjExUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxMFBSOjE7ICAgICAgICAgICAgLyogICBQSjEwUFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo5UFI6MTsgICAgICAgICAgICAgLyogICBQSjlQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo4UFI6MTsgICAgICAgICAgICAgLyogICBQSjhQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo3UFI6MTsgICAgICAgICAgICAgLyogICBQSjdQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo2UFI6MTsgICAgICAgICAgICAgLyogICBQSjZQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo1UFI6MTsgICAgICAgICAgICAgLyogICBQSjVQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEo0UFI6MTsgICAgICAgICAgICAgLyogICBQSjRQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEozUFI6MTsgICAgICAgICAgICAgLyogICBQSjNQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoyUFI6MTsgICAgICAgICAgICAgLyogICBQSjJQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEoxUFI6MTsgICAgICAgICAgICAgLyogICBQSjFQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUEowUFI6MTsgICAgICAgICAgICAgLyogICBQSjBQUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEpQUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azIxWzM0XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05DUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSDsgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTDsgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjg7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjI7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJNU5DRToxOyAgICAgICAgICAgLyogICBTU0k1TkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJNE5DRToxOyAgICAgICAgICAgLyogICBTU0k0TkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJM05DRToxOyAgICAgICAgICAgLyogICBTU0kzTkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJMk5DRToxOyAgICAgICAgICAgLyogICBTU0kyTkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJMU5DRToxOyAgICAgICAgICAgLyogICBTU0kxTkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1NJME5DRToxOyAgICAgICAgICAgLyogICBTU0kwTkNFICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH1TTkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSNlbmRpZg0KLXN0cnVjdCBzdF9odWRpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBIVURJICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNESVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRJOjg7ICAgICAgICAgICAgICAgIC8qICAgVEkgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNESVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9wd20geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBQV00gICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQlRDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzJHOjE7ICAgICAgICAgICAgIC8qICAgQlRDMkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzJFOjE7ICAgICAgICAgICAgIC8qICAgQlRDMkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzJDOjE7ICAgICAgICAgICAgIC8qICAgQlRDMkMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzJBOjE7ICAgICAgICAgICAgIC8qICAgQlRDMkEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzFHOjE7ICAgICAgICAgICAgIC8qICAgQlRDMUcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzFFOjE7ICAgICAgICAgICAgIC8qICAgQlRDMUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzFDOjE7ICAgICAgICAgICAgIC8qICAgQlRDMUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJUQzFBOjE7ICAgICAgICAgICAgIC8qICAgQlRDMUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQlRDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzIxN107ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENNRjoxOyAgICAgICAgICAgICAgIC8qICAgQ01GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDoxOyAgICAgICAgICAgICAgIC8qICAgQ1NUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzozOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXUFIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFIOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFHOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFGOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFFOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFEOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFDOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFCOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzFBOjE7ICAgICAgICAgICAgIC8qICAgT1BTMUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXUFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQ1lSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxNToxOyAgICAgICAgICAgIC8qICAgUFdDWTE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxNDoxOyAgICAgICAgICAgIC8qICAgUFdDWTE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMzoxOyAgICAgICAgICAgIC8qICAgUFdDWTEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMjoxOyAgICAgICAgICAgIC8qICAgUFdDWTEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMToxOyAgICAgICAgICAgIC8qICAgUFdDWTExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMDoxOyAgICAgICAgICAgIC8qICAgUFdDWTEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k5OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k4OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k3OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k2OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k1OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k0OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kzOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kyOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kwOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQ1lSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMUEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMUE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMUMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMUM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMUUgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMUU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMUcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMUc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElFOjE7ICAgICAgICAgICAgICAgIC8qICAgSUUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENNRjoxOyAgICAgICAgICAgICAgIC8qICAgQ01GICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENTVDoxOyAgICAgICAgICAgICAgIC8qICAgQ1NUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLUzozOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXUFIyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJIOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJHOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJGOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJFOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJEOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJDOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJCOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9QUzJBOjE7ICAgICAgICAgICAgIC8qICAgT1BTMkEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXUFIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQ1lSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxNToxOyAgICAgICAgICAgIC8qICAgUFdDWTE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxNDoxOyAgICAgICAgICAgIC8qICAgUFdDWTE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMzoxOyAgICAgICAgICAgIC8qICAgUFdDWTEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMjoxOyAgICAgICAgICAgIC8qICAgUFdDWTEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMToxOyAgICAgICAgICAgIC8qICAgUFdDWTExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxMDoxOyAgICAgICAgICAgIC8qICAgUFdDWTEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k5OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k4OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k3OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k2OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k1OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1k0OjE7ICAgICAgICAgICAgIC8qICAgUFdDWTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kzOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kyOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kxOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBXQ1kwOjE7ICAgICAgICAgICAgIC8qICAgUFdDWTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQ1lSMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMkEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMkE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMkMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMkM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMkUgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMkU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBXQkZSMkcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9UUzoxOyAgICAgICAgICAgICAgIC8qICAgT1RTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUOToxOyAgICAgICAgICAgICAgIC8qICAgRFQ5ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUODoxOyAgICAgICAgICAgICAgIC8qICAgRFQ4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNzoxOyAgICAgICAgICAgICAgIC8qICAgRFQ3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNjoxOyAgICAgICAgICAgICAgIC8qICAgRFQ2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNToxOyAgICAgICAgICAgICAgIC8qICAgRFQ1ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUNDoxOyAgICAgICAgICAgICAgIC8qICAgRFQ0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMzoxOyAgICAgICAgICAgICAgIC8qICAgRFQzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMjoxOyAgICAgICAgICAgICAgIC8qICAgRFQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMToxOyAgICAgICAgICAgICAgIC8qICAgRFQxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERUMDoxOyAgICAgICAgICAgICAgIC8qICAgRFQwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBXQkZSMkc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9ycXNwaSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBSUVNQSSAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQUklFOjE7ICAgICAgICAgICAgIC8qICAgU1BSSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQRToxOyAgICAgICAgICAgICAgIC8qICAgU1BFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQVElFOjE7ICAgICAgICAgICAgIC8qICAgU1BUSUUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTFAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNTTFA6MTsgICAgICAgICAgICAgIC8qICAgU1NMUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTFA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQUENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PSUZFOjE7ICAgICAgICAgICAgIC8qICAgTU9JRkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1PSUZWOjE7ICAgICAgICAgICAgIC8qICAgTU9JRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPM0ZWOjE7ICAgICAgICAgICAgIC8qICAgSU8zRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPMkZWOjE7ICAgICAgICAgICAgIC8qICAgSU8yRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQTFA6MTsgICAgICAgICAgICAgIC8qICAgU1BMUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQUENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQUkZGOjE7ICAgICAgICAgICAgIC8qICAgU1BSRkYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQVEVGOjE7ICAgICAgICAgICAgIC8qICAgU1BURUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQRFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQU0M6MjsgICAgICAgICAgICAgIC8qICAgU1BTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQU1NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQU1M6MjsgICAgICAgICAgICAgIC8qICAgU1BTUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQU1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQlIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQQlI6ODsgICAgICAgICAgICAgIC8qICAgU1BCUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQRENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYRE1ZOjE7ICAgICAgICAgICAgIC8qICAgVFhETVkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo3OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ0tEICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNDS0RMOjM7ICAgICAgICAgICAgIC8qICAgU0NLREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ0tEOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTE5EICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNMTkRMOjM7ICAgICAgICAgICAgIC8qICAgU0xOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTE5EOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQTkQgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNQTkRMOjM7ICAgICAgICAgICAgIC8qICAgU1BOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQTkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQSU1PRDoyOyAgICAgICAgICAgIC8qICAgU1BJTU9EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQUlc6MTsgICAgICAgICAgICAgIC8qICAgU1BSVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQSU1PRDoyOyAgICAgICAgICAgIC8qICAgU1BJTU9EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQUlc6MTsgICAgICAgICAgICAgIC8qICAgU1BSVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMSA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQSU1PRDoyOyAgICAgICAgICAgIC8qICAgU1BJTU9EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQUlc6MTsgICAgICAgICAgICAgIC8qICAgU1BSVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMiA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQ01EMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RFTjoxOyAgICAgICAgICAgIC8qICAgU0NLREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNMTkRFTjoxOyAgICAgICAgICAgIC8qICAgU0xOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQTkRFTjoxOyAgICAgICAgICAgIC8qICAgU1BOREVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExTQkY6MTsgICAgICAgICAgICAgIC8qICAgTFNCRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjo0OyAgICAgICAgICAgICAgIC8qICAgU1BCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTTEtQOjE7ICAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQSU1PRDoyOyAgICAgICAgICAgIC8qICAgU1BJTU9EICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQUlc6MTsgICAgICAgICAgICAgIC8qICAgU1BSVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSRFY6MjsgICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQT0w6MTsgICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENQSEE6MTsgICAgICAgICAgICAgIC8qICAgQ1BIQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQ01EMyA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQkZDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYUlNUOjE7ICAgICAgICAgICAgIC8qICAgVFhSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYUlNUOjE7ICAgICAgICAgICAgIC8qICAgUlhSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRYVFJHOjI7ICAgICAgICAgICAgIC8qICAgVFhUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJYVFJHOjM7ICAgICAgICAgICAgIC8qICAgUlhUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkZDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQkRDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRYQkM6NiA7ICAgICAgICAgICAgIC8qICAgVFhCQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJYQkM6NjsgICAgICAgICAgICAgIC8qICAgUlhCQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkRDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQk1VTDAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQQk1VTDA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQk1VTDEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQQk1VTDE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQk1VTDIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQQk1VTDI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQk1VTDMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICB9IFNQQk1VTDM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9pbXJscyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSU1STFMgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1IgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXUlNUOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgU1dSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkVTVU1FOjE7ICAgICAgICAgICAgICAgICAgLyogICBSRVNVTUUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUT1A6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0ZFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTRkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFSUzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQVJTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSUzoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJTICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTUiAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFNBOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBEU0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVFA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVI6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJBOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBUUkEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1JDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUUENMUjoxOyAgICAgICAgICAgICAgICAgIC8qICAgU1RQQ0xSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UQ0xSOjE7ICAgICAgICAgICAgICAgICAgLyogICBJTlRDTFIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFUkNMUjoxOyAgICAgICAgICAgICAgICAgIC8qICAgSUVSQ0xSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUUkFDTFI6MTsgICAgICAgICAgICAgICAgICAvKiAgIFRSQUNMUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1JDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RQRU5COjE7ICAgICAgICAgICAgICAgICAgLyogICBTVFBFTkIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRFTkI6MTsgICAgICAgICAgICAgICAgICAvKiAgIElOVEVOQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVSRU5COjE7ICAgICAgICAgICAgICAgICAgLyogICBJRVJFTkIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRSQUVOQjoxOyAgICAgICAgICAgICAgICAgIC8qICAgVFJBRU5CICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElNUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVE06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5NICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRU06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElFTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJBTToxOyAgICAgICAgICAgICAgICAgICAgLyogICBUUkFNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElNUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERMUFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERMUDozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgRExQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBETFBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETFNBUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETFNBOjMyOyAgICAgICAgICAgICAgICAgICAvKiAgIERMU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRExTQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0FSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEU0FSOjMyOyAgICAgICAgICAgICAgICAgICAvKiAgIERTQVIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNBUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERTVFI6MTM7ICAgICAgICAgICAgICAgICAgIC8qICAgRFNUUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0FSMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEU0FSMjozMjsgICAgICAgICAgICAgICAgICAvKiAgIERTQVIyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNBUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBETFNBUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETFNBMjozMjsgICAgICAgICAgICAgICAgICAvKiAgIERMU0EyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRExTQVIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJJTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEVURWTToxOyAgICAgICAgICAgICAgICAgICAvKiAgIERVRFZNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFhEWU06MTsgICAgICAgICAgICAgICAgICAgLyogICBEWERZTSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFVVE9TRzoxOyAgICAgICAgICAgICAgICAgIC8qICAgQVVUT1NHICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBVVRPREc6MTsgICAgICAgICAgICAgICAgICAvKiAgIEFVVE9ERyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkZFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBCRkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNRToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVE1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUUklNUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRSSU1TUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ01TOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRDTVMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFVEVk1TOjE7ICAgICAgICAgICAgICAgICAgLyogICBEVURWTVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERYRFlNUzoxOyAgICAgICAgICAgICAgICAgIC8qICAgRFhEWU1TICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBVVRPU0dTOjE7ICAgICAgICAgICAgICAgICAvKiAgIEFVVE9TR1MgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVVUT0RHUzoxOyAgICAgICAgICAgICAgICAgLyogICBBVVRPREdTICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJGRVM6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQkZFUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTUVTOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRNRVMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVFJJTVNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUUklNQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENNQzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBUQ01DICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERVRFZNQzoxOyAgICAgICAgICAgICAgICAgIC8qICAgRFVEVk1DICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEWERZTUM6MTsgICAgICAgICAgICAgICAgICAvKiAgIERYRFlNQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVVUT1NHQzoxOyAgICAgICAgICAgICAgICAgLyogICBBVVRPU0dDICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFVVE9ER0M6MTsgICAgICAgICAgICAgICAgIC8qICAgQVVUT0RHQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCRkVDOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJGRUMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1FQzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBUTUVDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSSU1DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJJQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDVjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENWICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUQ1U6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRDVSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVENZOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUQ1kgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRSSUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVZEUE9SICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEREUDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgRERQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVZEUE86MzsgICAgICAgICAgICAgICAgICAgLyogICBVVkRQTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFVWRFBPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1VTUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVVzoxMDsgICAgICAgICAgICAgICAgICAgIC8qICAgU1VXICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1ZXOjEwOyAgICAgICAgICAgICAgICAgICAgLyogICBTVlcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNVU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1ZTUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNWU1I6MTA7ICAgICAgICAgICAgICAgICAgIC8qICAgU1ZTUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azVbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYTUlOUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWE1JTjoxMjsgICAgICAgICAgICAgICAgICAgLyogICBYTUlOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFhNSU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWU1JTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIwOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFlNSU46MTI7ICAgICAgICAgICAgICAgICAgIC8qICAgWU1JTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZTUlOUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFhNQVhSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYTUFYOjEyOyAgICAgICAgICAgICAgICAgICAvKiAgIFhNQVggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWE1BWFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZTUFYUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWU1BWDoxMjsgICAgICAgICAgICAgICAgICAgLyogICBZTUFYICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlNQVhSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQU1YU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFNWFM6MTA7ICAgICAgICAgICAgICAgICAgIC8qICAgQU1YUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBTVhTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFNWVNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTVlTOjEwOyAgICAgICAgICAgICAgICAgICAvKiAgIEFNWVMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQU1ZU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBTVhPUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQU1YTzoxMDsgICAgICAgICAgICAgICAgICAgLyogICBBTVhPICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFNWE9SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQU1ZT1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFNWU86MTA7ICAgICAgICAgICAgICAgICAgIC8qICAgQU1ZTyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBTVlPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1BQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFFXU1dQSToxOyAgICAgICAgICAgICAgICAgIC8qICAgUVdTV1BJICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBRV1NXUEM6MTsgICAgICAgICAgICAgICAgICAvKiAgIFFXU1dQQyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVNQU06MTsgICAgICAgICAgICAgICAgICAgIC8qICAgRU1BTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFdTV0FQOjE7ICAgICAgICAgICAgICAgICAgLyogICBMV1NXQVAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBNQUNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMjM5Nl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMU1BSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTFNQUjoxMDsgICAgICAgICAgICAgICAgICAgLyogICBMU1BSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IExTUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTEVQUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExFUFI6MTA7ICAgICAgICAgICAgICAgICAgIC8qICAgTEVQUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBMRVBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIExNU1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMTVNSOjM7ICAgICAgICAgICAgICAgICAgICAvKiAgIExNU1IgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTE1TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc2RnMCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNERzAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IxXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dTVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUE06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUUE0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dDSzoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dDSyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERQRjozOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERQRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjFfMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NTUl8wICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHSUU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0RFRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NTUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IyXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dFTkQ6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0dFTkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSEc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRDSEcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1IyXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dMUl8wICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMRDo4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICBMRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHTFJfMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dURlJfMCAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9ORTo3OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVE9ORSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1RGUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHU0ZSXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0ZTOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0ZTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1NGUl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9zZGcxIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgU0RHMSAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjFfMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR1NUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR1NUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU1RQTToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RQTSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0NLOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR0NLICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRFBGOjM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRFBGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NSMV8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1NSXzEgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dJRToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHREVGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1NSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDUjJfMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0VORDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0VORCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVENIRzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgVENIRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjJfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0xSXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExEOjg7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExEICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dMUl8xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR1RGUl8xICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUT05FOjc7ICAgICAgICAgICAgICAgICAgICAgLyogICBUT05FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHVEZSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dTRlJfMSAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTRlM6ODsgICAgICAgICAgICAgICAgICAgICAgLyogICBTRlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHU0ZSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3NkZzIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTREcyICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NSMV8yICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHU1Q6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVFBNOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVFBNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHQ0s6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHQ0sgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBEUEY6MzsgICAgICAgICAgICAgICAgICAgICAgLyogICBEUEYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1IxXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dDU1JfMiAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0lFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTR0lFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dERUY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0dERUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDU1JfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NSMl8yICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHRU5EOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNHRU5EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0hHOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBUQ0hHICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NSMl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHTFJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEQ6ODsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTEQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0xSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHVEZSXzIgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPTkU6NzsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRPTkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dURlJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR1NGUl8yICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNGUzo4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNGUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dTRlJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3Rfc2RnMyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFNERzMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IxXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dTVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dTVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNUUE06MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUUE0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dDSzoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dDSyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERQRjozOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERQRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0dDUjFfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTR0NTUl8zICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFNHSUU6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTR0RFRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR0NTUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHQ1IyXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0dFTkQ6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0dFTkQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSEc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRDSEcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHQ1IyXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dMUl8zICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMRDo4OyAgICAgICAgICAgICAgICAgICAgICAgLyogICBMRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNHTFJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0dURlJfMyAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgVE9ORTo3OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVE9ORSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1RGUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNHU0ZSXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgU0ZTOjg7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0ZTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTR1NGUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9tbWMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgTU1DICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfQ01EX1NFVCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJPT1Q6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEJPT1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUQ6NjsgICAgICAgICAgICAgICAgICAgICAgLyogICBDTUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlRZUDoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUlRZUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJCU1k6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJCU1kgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1NFTjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBDQ1NFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgV0RBVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgV0RBVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERXRU46MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIERXRU4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUxURToxOyAgICAgICAgICAgICAgICAgICAgLyogICBDTUxURSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01EMTJFTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgQ01EMTJFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJJRFhDOjI7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJJRFhDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ1JDN0M6MjsgICAgICAgICAgICAgICAgICAgLyogICBSQ1JDN0MgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQzE2QzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENSQzE2QyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCT09UQUNLOjE7ICAgICAgICAgICAgICAgICAgLyogICBCT09UQUNLICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDU1RFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDU1RFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRCSVQ6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFRCSVQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPUERNOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBPUERNICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0NTSDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0NTSCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQVRXOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBEQVRXICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0NNRF9TRVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0FSRyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBUkc6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIEFSRyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQVJHOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9BUkdfQ01EMTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQzEyQVJHOjMyOyAgICAgICAgICAgICAgICAgLyogICBDMTJBUkcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0FSR19DTUQxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfQ01EX0NUUkwgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQ1NEOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIENDU0QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJFQUs6MTsgICAgICAgICAgICAgICAgICAgLyogICBCUkVBSyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0NNRF9DVFJMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfQkxPQ0tfU0VUICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkxLQ05UOjE2OyAgICAgICAgICAgICAgICAgIC8qICAgQkxLQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJMS1NJWjoxNjsgICAgICAgICAgICAgICAgICAvKiAgIEJMS1NJWiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQkxPQ0tfU0VUOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9DTEtfQ1RSTCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMS0VOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0xLRU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0xLRElWOjQ7ICAgICAgICAgICAgICAgICAgLyogICBDTEtESVYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUlNQVE86MjsgICAgICAgICAgICAgICAgICAvKiAgIFNSU1BUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1JCU1lUTzo0OyAgICAgICAgICAgICAgICAgLyogICBTUkJTWVRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSV0RUTzo0OyAgICAgICAgICAgICAgICAgIC8qICAgU1JXRFRPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0NTVE86NDsgICAgICAgICAgICAgICAgICAvKiAgIFNDQ1NUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQ0xLX0NUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9CVUZfQUNDICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRE1BV0VOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRE1BV0VOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERNQVJFTjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIERNQVJFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlVTVzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQlVTVyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFUWVA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFUWVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0JVRl9BQ0M7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfUkVTUDMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTUDozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgUlNQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9SRVNQMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX1JFU1AyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSU1A6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIFJTUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfUkVTUDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9SRVNQMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNQOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBSU1AgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX1JFU1AxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfUkVTUDAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTUDozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgUlNQICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9SRVNQMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX1JFU1BfQ01EMTIgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlNQMTI6MzI7ICAgICAgICAgICAgICAgICAgLyogICBSU1AxMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX1JFU1BfQ01EMTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfREFUQSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERBVEE6MzI7ICAgICAgICAgICAgICAgICAgIC8qICAgREFUQSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9EQVRBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9JTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0NTREU6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ0NTREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTUQxMkRSRToxOyAgICAgICAgICAgICAgICAgLyogICBDTUQxMkRSRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ01EMTJSQkU6MTsgICAgICAgICAgICAgICAgIC8qICAgQ01EMTJSQkUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRDEyQ1JFOjE7ICAgICAgICAgICAgICAgICAvKiAgIENNRDEyQ1JFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVFJBTkU6MTsgICAgICAgICAgICAgICAgICAgLyogICBEVFJBTkUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlVGUkU6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQlVGUkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJVRldFTjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEJVRldFTiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZSRU46MTsgICAgICAgICAgICAgICAgICAgLyogICBCVUZSRU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0NTUkNWOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0NTUkNWICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQlNZRToxOyAgICAgICAgICAgICAgICAgICAgLyogICBSQlNZRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JTUEU6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ1JTUEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRFZJTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNRFZJTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZWSU86MTsgICAgICAgICAgICAgICAgICAgLyogICBCVUZWSU8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFdEQVRFUlI6MTsgICAgICAgICAgICAgICAgICAvKiAgIFdEQVRFUlIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSREFURVJSOjE7ICAgICAgICAgICAgICAgICAgLyogICBSREFURVJSICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUklEWEVSUjoxOyAgICAgICAgICAgICAgICAgIC8qICAgUklEWEVSUiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTUEVSUjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIFJTUEVSUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0NTVE86MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ0NTVE8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQ1NUTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENSQ1NUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBXREFUVE86MTsgICAgICAgICAgICAgICAgICAgLyogICBXREFUVE8gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkRBVFRPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUkRBVFRPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJCU1lUTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIFJCU1lUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU1BUTzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBSU1BUTyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0lOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfSU5UX0VOICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DQ1NERToxOyAgICAgICAgICAgICAgICAgICAvKiAgIE1DQ1NERSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUNNRDEyRFJFOjE7ICAgICAgICAgICAgICAgIC8qICAgTUNNRDEyRFJFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DTUQxMlJCRToxOyAgICAgICAgICAgICAgICAvKiAgIE1DTUQxMlJCRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQ01EMTJDUkU6MTsgICAgICAgICAgICAgICAgLyogICBNQ01EMTJDUkUgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTURUUkFORToxOyAgICAgICAgICAgICAgICAgIC8qICAgTURUUkFORSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1CVUZSRToxOyAgICAgICAgICAgICAgICAgICAvKiAgIE1CVUZSRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlVGV0VOOjE7ICAgICAgICAgICAgICAgICAgLyogICBNQlVGV0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJVRlJFTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgTUJVRlJFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DQ1NSQ1Y6MTsgICAgICAgICAgICAgICAgICAvKiAgIE1DQ1NSQ1YgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVJCU1lFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTVJCU1lFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DUlNQRToxOyAgICAgICAgICAgICAgICAgICAvKiAgIE1DUlNQRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQ01EVklPOjE7ICAgICAgICAgICAgICAgICAgLyogICBNQ01EVklPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTUJVRlZJTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgTUJVRlZJTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNV0RBVEVSUjoxOyAgICAgICAgICAgICAgICAgLyogICBNV0RBVEVSUiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVJEQVRFUlI6MTsgICAgICAgICAgICAgICAgIC8qICAgTVJEQVRFUlIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1SSURYRVJSOjE7ICAgICAgICAgICAgICAgICAvKiAgIE1SSURYRVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNUlNQRVJSOjE7ICAgICAgICAgICAgICAgICAgLyogICBNUlNQRVJSICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DQ1NUTzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIE1DQ1NUTyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQ1JDU1RPOjE7ICAgICAgICAgICAgICAgICAgLyogICBNQ1JDU1RPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVdEQVRUTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgTVdEQVRUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1SREFUVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIE1SREFUVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNUkJTWVRPOjE7ICAgICAgICAgICAgICAgICAgLyogICBNUkJTWVRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVJTUFRPOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTVJTUFRPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRV9JTlRfRU47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENFX0hPU1RfU1RTMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENNRFNFUToxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNRFNFUSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTURTSUc6MTsgICAgICAgICAgICAgICAgICAgLyogICBDTURTSUcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQSURYOjY7ICAgICAgICAgICAgICAgICAgIC8qICAgUlNQSURYICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERBVFNJRzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIERBVFNJRyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ1ZCTEs6MTY7ICAgICAgICAgICAgICAgICAgLyogICBSQ1ZCTEsgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX0hPU1RfU1RTMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfSE9TVF9TVFMyICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ1JDU1RFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1JDU1RFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQzE2RToxOyAgICAgICAgICAgICAgICAgICAvKiAgIENSQzE2RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQzEyQ1JDRToxOyAgICAgICAgICAgICAgICAgLyogICBBQzEyQ1JDRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQQ1JDN0U6MTsgICAgICAgICAgICAgICAgIC8qICAgUlNQQ1JDN0UgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQ1NURUJFOjE7ICAgICAgICAgICAgICAgICAvKiAgIENSQ1NURUJFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSREFURUJFOjE7ICAgICAgICAgICAgICAgICAgLyogICBSREFURUJFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUMxMlJFQkU6MTsgICAgICAgICAgICAgICAgIC8qICAgQUMxMlJFQkUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTUEVCRToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFJTUEVCRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQzEySURYRToxOyAgICAgICAgICAgICAgICAgLyogICBBQzEySURYRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUlNQSURYRToxOyAgICAgICAgICAgICAgICAgIC8qICAgUlNQSURYRSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJUQUNLUEFURToxOyAgICAgICAgICAgICAgICAvKiAgIEJUQUNLUEFURSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVEFDS0VCRToxOyAgICAgICAgICAgICAgICAgLyogICBCVEFDS0VCRSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSQ1NUOjM7ICAgICAgICAgICAgICAgICAgICAvKiAgIENSQ1NUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVENDU1RPOjE7ICAgICAgICAgICAgICAgICAgLyogICBTVENDU1RPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RSREFUVE86MTsgICAgICAgICAgICAgICAgIC8qICAgU1RSREFUVE8gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERBVEJTWVRPOjE7ICAgICAgICAgICAgICAgICAvKiAgIERBVEJTWVRPICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUkNTVFRPOjE7ICAgICAgICAgICAgICAgICAgLyogICBDUkNTVFRPICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUMxMkJTWVRPOjE7ICAgICAgICAgICAgICAgIC8qICAgQUMxMkJTWVRPICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTUEJTWVRPOjE7ICAgICAgICAgICAgICAgICAvKiAgIFJTUEJTWVRPICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQzEyUlNQVE86MTsgICAgICAgICAgICAgICAgLyogICBBQzEyUlNQVE8gICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1RSU1BUTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgU1RSU1BUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJUQUNLVE86MTsgICAgICAgICAgICAgICAgICAvKiAgIEJUQUNLVE8gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGU1RCVERBVFRPOjE7ICAgICAgICAgICAgICAgLyogICBGU1RCVERBVFRPICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQlREQVRUTzoxOyAgICAgICAgICAgICAgICAgIC8qICAgQlREQVRUTyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfSE9TVF9TVFMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syXzBbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfRE1BX01PREUgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFTRUw6MTsgICAgICAgICAgICAgICAgICAvKiAgIERNQVNFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfRE1BX01PREU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syXzFbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfREVURUNUICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRFNJRzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENEU0lHICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RSSVNFOjE7ICAgICAgICAgICAgICAgICAgLyogICBDRFJJU0UgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENERkFMTDoxOyAgICAgICAgICAgICAgICAgIC8qICAgQ0RGQUxMICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUNEUklTRToxOyAgICAgICAgICAgICAgICAgLyogICBNQ0RSSVNFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1DREZBTEw6MTsgICAgICAgICAgICAgICAgIC8qICAgTUNERkFMTCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfREVURUNUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRV9BRERfTU9ERSAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMS01BSU46MTsgICAgICAgICAgICAgICAgIC8qICAgQ0xLTUFJTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0VfQUREX01PREU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0VfVkVSU0lPTiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1dSU1Q6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU1dSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWRVJTSU9OOjE2OyAgICAgICAgICAgICAgICAgLyogICBWRVJTSU9OICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENFX1ZFUlNJT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X2R2ZGVjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBEVkRFQyAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBRENDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBR0NNT0RFOjE7ICAgICAgICAgICAgICAgICAgLyogICBBR0NNT0RFICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRENDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR0NSMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUkNMRUZUOjk7ICAgICAgICAgICAgICAgICAgLyogICBTUkNMRUZUICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEdDUjIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUkNUT1A6NjsgICAgICAgICAgICAgICAgICAgLyogICBTUkNUT1AgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1JDSEVJR0hUOjEwOyAgICAgICAgICAgICAgIC8qICAgU1JDSEVJR0hUICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR0NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHQ1IzICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNSQ1dJRFRIOjExOyAgICAgICAgICAgICAgICAvKiAgIFNSQ1dJRFRIICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVEdDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1lOU0NSMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMUEZWU1lOQzozOyAgICAgICAgICAgICAgICAgLyogICBMUEZWU1lOQyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTFBGSFNZTkM6MzsgICAgICAgICAgICAgICAgIC8qICAgTFBGSFNZTkMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWRUxPQ0lUWVNISUZUX0g6NDsgICAgICAgICAgLyogICBWRUxPQ0lUWVNISUZUX0ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTElDRVJNT0RFX0g6MjsgICAgICAgICAgICAgLyogICBTTElDRVJNT0RFX0ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTTElDRVJNT0RFX1Y6MjsgICAgICAgICAgICAgLyogICBTTElDRVJNT0RFX1YgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lOU0NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWU5TQ1IyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DTUFYRFVUWV9IOjY7ICAgICAgICAgICAgLyogICBTWU5DTUFYRFVUWV9IICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ01JTkRVVFlfSDo2OyAgICAgICAgICAgIC8qICAgU1lOQ01JTkRVVFlfSCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5TQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZTlNDUjMgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNTQ0xJUFNFTDo0OyAgICAgICAgICAgICAgICAvKiAgIFNTQ0xJUFNFTCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1lOQ1NMSUNFX0g6MTA7ICAgICAgICAgICAgLyogICBDU1lOQ1NMSUNFX0ggKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lOU0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWU5TQ1I0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTWU5DTUFYRFVUWV9WOjY7ICAgICAgICAgICAgLyogICBTWU5DTUFYRFVUWV9WICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgU1lOQ01JTkRVVFlfVjo2OyAgICAgICAgICAgIC8qICAgU1lOQ01JTkRVVFlfViAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWU5TQ1I0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNZTlNDUjUgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVlNZTkNERUxBWToxOyAgICAgICAgICAgICAgIC8qICAgVlNZTkNERUxBWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZTWU5DU0xJQ0U6NTsgICAgICAgICAgICAgICAvKiAgIFZTWU5DU0xJQ0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1lOQ1NMSUNFX1Y6MTA7ICAgICAgICAgICAgLyogICBDU1lOQ1NMSUNFX1YgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lOU0NSNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIQUZDQ1IxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNHQUlOOjQ7ICAgICAgICAgICAgICAgICAvKiAgIEhBRkNHQUlOICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSEFGQ0ZSRUVSVU46MTsgICAgICAgICAgICAgIC8qICAgSEFGQ0ZSRUVSVU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDVFlQOjEwOyAgICAgICAgICAgICAgICAgLyogICBIQUZDVFlQICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEhBRkNDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFGQ0NSMiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDU1RBUlQ6NDsgICAgICAgICAgICAgICAgLyogICBIQUZDU1RBUlQgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9YMkhPU0M6MTsgICAgICAgICAgICAgICAgIC8qICAgTk9YMkhPU0MgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERPWDJIT1NDOjE7ICAgICAgICAgICAgICAgICAvKiAgIERPWDJIT1NDICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDTUFYOjEwOyAgICAgICAgICAgICAgICAgLyogICBIQUZDTUFYICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEhBRkNDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFGQ0NSMyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQUZDRU5EOjQ7ICAgICAgICAgICAgICAgICAgLyogICBIQUZDRU5EICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSEFGQ01PREU6MjsgICAgICAgICAgICAgICAgIC8qICAgSEFGQ01PREUgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhBRkNNSU46MTA7ICAgICAgICAgICAgICAgICAvKiAgIEhBRkNNSU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSEFGQ0NSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBWQ0RXQ1IxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZDREZSRUVSVU46MTsgICAgICAgICAgICAgICAvKiAgIFZDREZSRUVSVU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1ZDRDUwOjE7ICAgICAgICAgICAgICAgICAgLyogICBOT1ZDRDUwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9WQ0Q2MDoxOyAgICAgICAgICAgICAgICAgIC8qICAgTk9WQ0Q2MCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFZDRERFRkFVTFQ6MjsgICAgICAgICAgICAgICAvKiAgIFZDRERFRkFVTFQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQ0RXSU5ET1c6NjsgICAgICAgICAgICAgICAgLyogICBWQ0RXSU5ET1cgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVkNET0ZGU0VUOjU7ICAgICAgICAgICAgICAgIC8qICAgVkNET0ZGU0VUICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBWQ0RXQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUE1PREVfWToxOyAgICAgICAgICAgICAgICAvKiAgIERDUE1PREVfWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQQ0hFQ0s6MTsgICAgICAgICAgICAgICAgIC8qICAgRENQQ0hFQ0sgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTEFOS0xFVkVMX1k6MTA7ICAgICAgICAgICAgLyogICBCTEFOS0xFVkVMX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUE1PREVfQzoxOyAgICAgICAgICAgICAgICAvKiAgIERDUE1PREVfQyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkxBTktMRVZFTF9DQjo2OyAgICAgICAgICAgIC8qICAgQkxBTktMRVZFTF9DQiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJMQU5LTEVWRUxfQ1I6NjsgICAgICAgICAgICAvKiAgIEJMQU5LTEVWRUxfQ1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ1BSRVNQT05TRTozOyAgICAgICAgICAgICAgLyogICBEQ1BSRVNQT05TRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUFNUQVJUOjY7ICAgICAgICAgICAgICAgICAvKiAgIERDUFNUQVJUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ1I1ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ1BFTkQ6NjsgICAgICAgICAgICAgICAgICAgLyogICBEQ1BFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERDUFdJRFRIOjc7ICAgICAgICAgICAgICAgICAvKiAgIERDUFdJRFRIICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUENSNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQQ1I3ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ1BQT1NfWTo4OyAgICAgICAgICAgICAgICAgLyogICBEQ1BQT1NfWSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERDUENSOCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENQUE9TX0M6ODsgICAgICAgICAgICAgICAgIC8qICAgRENQUE9TX0MgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1I4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOU0RDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0ZJTlBVVDoyOyAgICAgICAgICAgICAgICAgLyogICBBQ0ZJTlBVVCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDRkxBR1RJTUU6NTsgICAgICAgICAgICAgICAvKiAgIEFDRkxBR1RJTUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNGRklMVEVSOjI7ICAgICAgICAgICAgICAgIC8qICAgQUNGRklMVEVSICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOU0RDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEJUTENSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTE9DS1JBTkdFOjI7ICAgICAgICAgICAgICAgIC8qICAgTE9DS1JBTkdFICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPT1BHQUlOOjI7ICAgICAgICAgICAgICAgICAvKiAgIExPT1BHQUlOICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMT0NLTElNSVQ6MjsgICAgICAgICAgICAgICAgLyogICBMT0NLTElNSVQgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkNPRlJFRVJVTjoxOyAgICAgICAgICAgICAgIC8qICAgQkNPRlJFRVJVTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERUZBVUxUU1lTOjI7ICAgICAgICAgICAgICAgLyogICBERUZBVUxUU1lTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9OVFNDMzU4OjE7ICAgICAgICAgICAgICAgIC8qICAgTk9OVFNDMzU4ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PTlRTQzQ0MzoxOyAgICAgICAgICAgICAgICAvKiAgIE5PTlRTQzQ0MyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1BBTE06MTsgICAgICAgICAgICAgICAgICAgLyogICBOT1BBTE0gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk9QQUxOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgTk9QQUxOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PUEFMNDQzOjE7ICAgICAgICAgICAgICAgICAvKiAgIE5PUEFMNDQzICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT1NFQ0FNOjE7ICAgICAgICAgICAgICAgICAgLyogICBOT1NFQ0FNICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJUTENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlRHUENSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCR1BDSEVDSzoxOyAgICAgICAgICAgICAgICAgLyogICBCR1BDSEVDSyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQkdQV0lEVEg6NzsgICAgICAgICAgICAgICAgIC8qICAgQkdQV0lEVEggICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJHUFNUQVJUOjg7ICAgICAgICAgICAgICAgICAvKiAgIEJHUFNUQVJUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlRHUENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBQ0NDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEtJTExFUk9GRlNFVDo0OyAgICAgICAgICAgICAvKiAgIEtJTExFUk9GRlNFVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDQ01PREU6MTsgICAgICAgICAgICAgICAgICAvKiAgIEFDQ01PREUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0NNQVhHQUlOOjI7ICAgICAgICAgICAgICAgLyogICBBQ0NNQVhHQUlOICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNDTEVWRUw6OTsgICAgICAgICAgICAgICAgIC8qICAgQUNDTEVWRUwgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBQ0NDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFDQ0NSMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUk9NQVNVQkdBSU46MjsgICAgICAgICAgICAvKiAgIENIUk9NQVNVQkdBSU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDSFJPTUFNQUlOR0FJTjo5OyAgICAgICAgICAgLyogICBDSFJPTUFNQUlOR0FJTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBQ0NDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFDQ0NSMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNDUkVTUE9OU0U6MjsgICAgICAgICAgICAgIC8qICAgQUNDUkVTUE9OU0UgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0NQUkVDSVM6NjsgICAgICAgICAgICAgICAgLyogICBBQ0NQUkVDSVMgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgS0lMTEVSTU9ERToxOyAgICAgICAgICAgICAgIC8qICAgS0lMTEVSTU9ERSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEtJTExFUkxFVkVMOjY7ICAgICAgICAgICAgICAvKiAgIEtJTExFUkxFVkVMICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBQ0NDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJTlRDUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVElOVFNVQjo2OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVFNVQiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRJTlRNQUlOOjEwOyAgICAgICAgICAgICAgICAvKiAgIFRJTlRNQUlOICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVElOVENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ0RDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMVU1BREVMQVk6NTsgICAgICAgICAgICAgICAgLyogICBMVU1BREVMQVkgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUk9NQUxQRjoxOyAgICAgICAgICAgICAgICAvKiAgIENIUk9NQUxQRiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERU1PRE1PREU6MjsgICAgICAgICAgICAgICAgLyogICBERU1PRE1PREUgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDRENSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUdDQ1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRE9SRURVQ0U6MTsgICAgICAgICAgICAgICAgIC8qICAgRE9SRURVQ0UgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PUkVEVUNFOjE7ICAgICAgICAgICAgICAgICAvKiAgIE5PUkVEVUNFICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBR0NSRVNQT05TRTozOyAgICAgICAgICAgICAgLyogICBBR0NSRVNQT05TRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ0xFVkVMOjk7ICAgICAgICAgICAgICAgICAvKiAgIEFHQ0xFVkVMICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUdDQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBR0NDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBR0NQUkVDSVM6NjsgICAgICAgICAgICAgICAgLyogICBBR0NQUkVDSVMgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBR0NDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBLTElNSVRDUiAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVBS0xFVkVMOjI7ICAgICAgICAgICAgICAgIC8qICAgUEVBS0xFVkVMICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFQUtBVFRBQ0s6MjsgICAgICAgICAgICAgICAvKiAgIFBFQUtBVFRBQ0sgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRUFLUkVMRUFTRToyOyAgICAgICAgICAgICAgLyogICBQRUFLUkVMRUFTRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFQUtSQVRJTzoyOyAgICAgICAgICAgICAgICAvKiAgIFBFQUtSQVRJTyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQVhQRUFLU0FNUExFUzo4OyAgICAgICAgICAgLyogICBNQVhQRUFLU0FNUExFUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQS0xJTUlUQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHT1JDUjEgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJBREpfT19MRVZFTDA6MTA7ICAgICAgICAgICAvKiAgIFJBREpfT19MRVZFTDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkdPUkNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSR09SQ1IyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQURKX1VfTEVWRUwwOjEwOyAgICAgICAgICAgLyogICBSQURKX1VfTEVWRUwwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJHT1JDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdPUkNSMyAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkFESl9PX0xFVkVMMToxMDsgICAgICAgICAgIC8qICAgUkFESl9PX0xFVkVMMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSR09SQ1IzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHT1JDUjQgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJBREpfVV9MRVZFTDE6MTA7ICAgICAgICAgICAvKiAgIFJBREpfVV9MRVZFTDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkdPUkNSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSR09SQ1I1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQURKX09fTEVWRUwyOjEwOyAgICAgICAgICAgLyogICBSQURKX09fTEVWRUwyICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFJHT1JDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUkdPUkNSNiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUkFESl9VX0xFVkVMMjoxMDsgICAgICAgICAgIC8qICAgUkFESl9VX0xFVkVMMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSR09SQ1I2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHT1JDUjcgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFU1RfTU9OSTozOyAgICAgICAgICAgICAgICAvKiAgIFRFU1RfTU9OSSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQURKX01JWF9LX0ZJWDozOyAgICAgICAgICAgLyogICBSQURKX01JWF9LX0ZJWCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQ01QX1NXOjE7ICAgICAgICAgICAgICAgICAgLyogICBVQ01QX1NXICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRENNUF9TVzoxOyAgICAgICAgICAgICAgICAgIC8qICAgRENNUF9TVyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhXSURFX1NXOjE7ICAgICAgICAgICAgICAgICAvKiAgIEhXSURFX1NXICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUkdPUkNSNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzI0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQUZDUEZDUiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEhERVRfRklYOjE7ICAgICAgICAgICAgICAgIC8qICAgUEhERVRfRklYICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSERFVF9ESVY6MzsgICAgICAgICAgICAgICAgLyogICBQSERFVF9ESVYgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFGQ1BGQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlVQRENSICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBORVdTRVRUSU5HOjE7ICAgICAgICAgICAgICAgLyogICBORVdTRVRUSU5HICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSVVBEQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFZTWU5DU1IgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkhDT1VOVF9MOjE7ICAgICAgICAgICAgICAgIC8qICAgRkhDT1VOVF9MICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZITE9DSzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEZITE9DSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU05PSVNZOjE7ICAgICAgICAgICAgICAgICAgLyogICBJU05PSVNZICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRkhNT0RFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRkhNT0RFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5PU0lHTkFMOjE7ICAgICAgICAgICAgICAgICAvKiAgIE5PU0lHTkFMICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGVkxPQ0s6MTsgICAgICAgICAgICAgICAgICAgLyogICBGVkxPQ0sgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlZNT0RFOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRlZNT0RFICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElOVEVSTEFDRUQ6MTsgICAgICAgICAgICAgICAvKiAgIElOVEVSTEFDRUQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGVkNPVU5UOjg7ICAgICAgICAgICAgICAgICAgLyogICBGVkNPVU5UICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFZTWU5DU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSFNZTkNTUiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSENPVU5UX0g6MTY7ICAgICAgICAgICAgICAgLyogICBGSENPVU5UX0ggICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEhTWU5DU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQU1IxICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTEFNUExFVkVMX0NCOjY7ICAgICAgICAgICAgLyogICBDTEFNUExFVkVMX0NCICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0xBTVBMRVZFTF9ZOjEwOyAgICAgICAgICAgIC8qICAgQ0xBTVBMRVZFTF9ZICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERDUFNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENQU1IyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTEFNUExFVkVMX0NSOjY7ICAgICAgICAgICAgLyogICBDTEFNUExFVkVMX0NSICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjEwOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BTUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azRbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOU0RTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDRlNUUkVOR1RIOjE2OyAgICAgICAgICAgICAvKiAgIEFDRlNUUkVOR1RIICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IE5TRFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTUFTUjEgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDT0xPUlNZUzoyOyAgICAgICAgICAgICAgICAgLyogICBDT0xPUlNZUyAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRlNDTU9ERToxOyAgICAgICAgICAgICAgICAgIC8qICAgRlNDTU9ERSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZTQ0xPQ0s6MTsgICAgICAgICAgICAgICAgICAvKiAgIEZTQ0xPQ0sgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOT0JVUlNUOjE7ICAgICAgICAgICAgICAgICAgLyogICBOT0JVUlNUICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQUNDU1VCR0FJTjoyOyAgICAgICAgICAgICAgIC8qICAgQUNDU1VCR0FJTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFDQ01BSU5HQUlOOjk7ICAgICAgICAgICAgICAvKiAgIEFDQ01BSU5HQUlOICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENST01BU1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JPTUFTUjIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVNTRUNBTToxOyAgICAgICAgICAgICAgICAgIC8qICAgSVNTRUNBTSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElTUEFMOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElTUEFMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU05UU0M6MTsgICAgICAgICAgICAgICAgICAgLyogICBJU05UU0MgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPQ0tMRVZFTDo4OyAgICAgICAgICAgICAgICAvKiAgIExPQ0tMRVZFTCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JPTUFTUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWU5DU1NSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU1JFRFVDRUQ6MTsgICAgICAgICAgICAgICAgLyogICBJU1JFRFVDRUQgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNZTkNERVBUSDoxMDsgICAgICAgICAgICAgICAvKiAgIFNZTkNERVBUSCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU1lOQ1NTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBR0NDU1IxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhJR0hTQU1QTEVTOjg7ICAgICAgICAgICAgICAvKiAgIEhJR0hTQU1QTEVTICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEVBS1NBTVBMRVM6ODsgICAgICAgICAgICAgIC8qICAgUEVBS1NBTVBMRVMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUdDQ1NSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBR0NDU1IyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBR0NDT05WRVJHRToxOyAgICAgICAgICAgICAgLyogICBBR0NDT05WRVJHRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFHQ0dBSU46ODsgICAgICAgICAgICAgICAgICAvKiAgIEFHQ0dBSU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQUdDQ1NSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzE0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNls5MF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azdbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsxNTo0OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIEsxNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMTM6NjsgICAgICAgICAgICAgICAgICAgICAgLyogICBLMTMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzExOjY7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgSzExICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDU0NSNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzE2OjQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgSzE2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsxNDo2OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIEsxNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMTI6NjsgICAgICAgICAgICAgICAgICAgICAgLyogICBLMTIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1I1ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBLMjJBOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBLMjJBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsyMUE6NjsgICAgICAgICAgICAgICAgICAgICAvKiAgIEsyMUEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNTQ1I1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1NDUjYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsyMkI6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEsyMkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzIxQjo2OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSzIxQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDU0NSNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzIzQjo0OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSzIzQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEsyM0E6NDsgICAgICAgICAgICAgICAgICAgICAvKiAgIEsyM0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSzI0OjU7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgSzI0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDU0NSOCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSEJQRl9OQVJST1c6MTsgICAgICAgICAgICAgIC8qICAgSEJQRl9OQVJST1cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVkJQRl9OQVJST1c6MTsgICAgICAgICAgICAgLyogICBIVkJQRl9OQVJST1cgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIQlBGMV85VEFQX09OOjE7ICAgICAgICAgICAgLyogICBIQlBGMV85VEFQX09OICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFZCUEYxXzlUQVBfT046MTsgICAgICAgICAgIC8qICAgSFZCUEYxXzlUQVBfT04gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIRklMX1RBUF9TRUw6MTsgICAgICAgICAgICAgLyogICBIRklMX1RBUF9TRUwgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1I5ICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVQyX09OOjE7ICAgICAgICAgICAgICAgICAgLyogICBERVQyX09OICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEhTRUxfTUlYX1k6NDsgICAgICAgICAgICAgICAvKiAgIEhTRUxfTUlYX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWU0VMX01JWF9ZOjQ7ICAgICAgICAgICAgICAgLyogICBWU0VMX01JWF9ZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSFZTRUxfTUlYX1k6NDsgICAgICAgICAgICAgIC8qICAgSFZTRUxfTUlYX1kgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNTQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1IxMSAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgVl9ZX0xFVkVMOjk7ICAgICAgICAgICAgICAgIC8qICAgVl9ZX0xFVkVMICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDU0NSMTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNTQ1IxMiAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVQyX01JWF9DOjQ7ICAgICAgICAgICAgICAgLyogICBERVQyX01JWF9DICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgREVUMl9NSVhfWTo0OyAgICAgICAgICAgICAgIC8qICAgREVUMl9NSVhfWSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfTU9ERV8yRDoyOyAgICAgICAgICAgICAvKiAgIEZJTDJfTU9ERV8yRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyX05BUlJPV18yRDoxOyAgICAgICAgICAgLyogICBGSUwyX05BUlJPV18yRCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1NDUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMTA0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDUjkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTFBfSE9MRF9PTl9ZOjE7ICAgICAgICAgICAgLyogICBDTFBfSE9MRF9PTl9ZICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0xQX0hPTERfT05fQ0I6MTsgICAgICAgICAgIC8qICAgQ0xQX0hPTERfT05fQ0IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTFBfSE9MRF9PTl9DUjoxOyAgICAgICAgICAgLyogICBDTFBfSE9MRF9PTl9DUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENQQ1I5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFsxMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0YwICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjA6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0YxOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0YxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0YxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GMjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0YzICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjM6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0Y0OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0Y0ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0Y0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GNToxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdBX0Y2ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0FfRjY6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0FfRjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0FfRjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQV9GNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dBX0Y3OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dBX0Y3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdBX0Y3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0FfRjggICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQV9GODoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQV9GOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQV9GODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0YwICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjA6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0YxOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0YxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0YxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GMjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0YzICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjM6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0Y0OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0Y0ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0Y0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GNToxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVFdCX0Y2ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfV0JfRjY6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfV0JfRjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUV0JfRjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1RXQl9GNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX1dCX0Y3OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX1dCX0Y3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVFdCX0Y3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUV0JfRjggICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9XQl9GODoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9XQl9GOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1RXQl9GODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0YwICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjA6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0YxOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0YxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0YxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GMjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0YzICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjM6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0Y0OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0Y0ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0Y0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GNToxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5BX0Y2ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkFfRjY6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkFfRjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkFfRjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQV9GNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05BX0Y3OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05BX0Y3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5BX0Y3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkFfRjggICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQV9GODoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQV9GOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQV9GODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0YwICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjA6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0YxOjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0YxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0YxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjIgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GMjoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GMiAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0YzICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjM6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjMgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0Y0OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0Y0ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0Y0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjUgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GNToxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GNSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFlDVE5CX0Y2ICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZJTDJfMkRfTkJfRjY6MTM7ICAgICAgICAgICAvKiAgIEZJTDJfMkRfTkJfRjYgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gWUNUTkJfRjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZQ1ROQl9GNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGSUwyXzJEX05CX0Y3OjEzOyAgICAgICAgICAgLyogICBGSUwyXzJEX05CX0Y3ICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlDVE5CX0Y3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWUNUTkJfRjggICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRklMMl8yRF9OQl9GODoxMzsgICAgICAgICAgIC8qICAgRklMMl8yRF9OQl9GOCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBZQ1ROQl9GODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzM4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBZR0FJTkNSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBZX0dBSU4yOjEwOyAgICAgICAgICAgICAgICAgLyogICBZX0dBSU4yICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFlHQUlOQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0JHQUlOQ1IgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQ0JfR0FJTjI6MTA7ICAgICAgICAgICAgICAgIC8qICAgQ0JfR0FJTjIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDQkdBSU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENSR0FJTkNSICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENSX0dBSU4yOjEwOyAgICAgICAgICAgICAgICAvKiAgIENSX0dBSU4yICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JHQUlOQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxM1sxMjJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEdBX1VQREFURSAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEdBX1ZFTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgUEdBX1ZFTiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQR0FfVVBEQVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBHQUNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBHQV9HQUlOX1NFTDoxOyAgICAgICAgICAgICAvKiAgIFBHQV9HQUlOX1NFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBHQV9HQUlOOjU7ICAgICAgICAgICAgICAgICAvKiAgIFBHQV9HQUlOICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBHQUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQURDQ1IyICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgQURDX1ZJTlNFTDoxOyAgICAgICAgICAgICAgIC8qICAgQURDX1ZJTlNFTCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBRENDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF91YmMgewkJCQkJCQkJLyogc3RydWN0IFVCQyAgICovDQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCQVIwICAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkEwXzozMjsJCQkJLyogICBCQTBfICAgICAgICovDQotCQl9IEJJVDsJCQkJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQl9IEJBUjA7CQkJCQkJCQkJLyogICAgICAgICAgICAgICovDQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCQU1SMCAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkFNMF86MzI7CQkJCS8qICAgQkFNMF8gICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQkFNUjA7DQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCRFIwICAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkQwXzozMjsJCQkJLyogICBCRDBfICAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCRFIwOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkRNUjAgICAgICAgICovDQotCQlfVURXT1JEIExPTkc7CQkJCQkJLyogIExvbmcgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVURXT1JEIEJETTBfOjMyOwkJCQkvKiAgIEJETTBfICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJETVIwOw0KLQl1bmlvbiB7CQkJCQkJCQkJLyogQkFSMSAgICAgICAgICovDQotCQlfVURXT1JEIExPTkc7CQkJCQkJLyogIExvbmcgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVURXT1JEIEJBMV86MzI7CQkJCS8qICAgQkExXyAgICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQkFSMTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJBTVIxICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCQU0xXzozMjsJCQkJLyogICBCQU0xXyAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCQU1SMTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJEUjEgICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCBCRDFfOjMyOwkJCQkvKiAgIEJEMV8gICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJEUjE7DQotCXVuaW9uIHsJCQkJCQkJCQkvKiBCRE1SMSAgICAgICAgKi8NCi0JCV9VRFdPUkQgTE9ORzsJCQkJCQkvKiAgTG9uZyBBY2Nlc3MgKi8NCi0JCXN0cnVjdCB7CQkJCQkJCS8qICBCaXQgQWNjZXNzICAqLw0KLQkJCV9VRFdPUkQgQkRNMV86MzI7CQkJCS8qICAgQkRNMV8gICAgICAqLw0KLQkJfSBCSVQ7DQotCX0gQkRNUjE7DQotCV9VQllURSB3azBbMTI4XTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJCUjAgICAgICAgICAqLw0KLQkJX1VXT1JEIFdPUkQ7CQkJCQkJLyogIFdvcmQgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVVdPUkQgOjI7DQotCQkJX1VXT1JEIFVCSUQwOjE7CQkJCQkvKiAgIFVCSUQwICAgICAgKi8NCi0JCQlfVVdPUkQgREJFMDoxOwkJCQkJLyogICBEQkUwICAgICAgICovDQotCQkJX1VXT1JEIDoyOwkJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQkJCV9VV09SRCBDUDBfOjI7CQkJCQkvKiAgIENQMF8gICAgICAgKi8NCi0JCQlfVVdPUkQgQ0QwXzoyOwkJCQkJLyogICBDRDBfICAgICAgICovDQotCQkJX1VXT1JEIElEMF86MjsJCQkJCS8qICAgSUQwXyAgICAgICAqLw0KLQkJCV9VV09SRCBSVzBfOjI7CQkJCQkvKiAgIFJXMF8gICAgICAgKi8NCi0JCQlfVVdPUkQgU1owXzoyOwkJCQkJLyogICBTWjBfICAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCQlIwOw0KLQlfVUJZVEUgd2sxWzE0XTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJCUjEgICAgICAgICAqLw0KLQkJX1VXT1JEIFdPUkQ7CQkJCQkJLyogIFdvcmQgQWNjZXNzICovDQotCQlzdHJ1Y3QgewkJCQkJCQkvKiAgQml0IEFjY2VzcyAgKi8NCi0JCQlfVVdPUkQgOjI7CQkJCQkJLyogICAgICAgICAgICAgICovDQotCQkJX1VXT1JEIFVCSUQxOjE7CQkJCQkvKiAgIFVCSUQxICAgICAgKi8NCi0JCQlfVVdPUkQgREJFMToxOwkJCQkJLyogICBEQkUxICAgICAgICovDQotCQkJX1VXT1JEIDoyOwkJCQkJCS8qICAgICAgICAgICAgICAqLw0KLQkJCV9VV09SRCBDUDFfOjI7CQkJCQkvKiAgIENQMV8gICAgICAgKi8NCi0JCQlfVVdPUkQgQ0QxXzoyOwkJCQkJLyogICBDRDFfICAgICAgICovDQotCQkJX1VXT1JEIElEMV86MjsJCQkJCS8qICAgSUQxXyAgICAgICAqLw0KLQkJCV9VV09SRCBSVzFfOjI7CQkJCQkvKiAgIFJXMV8gICAgICAgKi8NCi0JCQlfVVdPUkQgU1oxXzoyOwkJCQkJLyogICBTWjFfICAgICAgICovDQotCQl9IEJJVDsNCi0JfSBCQlIxOw0KLQlfVUJZVEUgd2syWzE0XTsNCi0JdW5pb24gewkJCQkJCQkJCS8qIEJSQ1IgICAgICAgICAqLw0KLQkJX1VEV09SRCBMT05HOwkJCQkJCS8qICBMb25nIEFjY2VzcyAqLw0KLQkJc3RydWN0IHsJCQkJCQkJLyogIEJpdCBBY2Nlc3MgICovDQotCQkJX1VEV09SRCA6MTI7CQkJCQkvKiAgICAgICAgICAgICAgKi8NCi0JCQlfVURXT1JEIFVUT0QxOjE7CQkJCS8qICAgVVRPRDEgICAgICAgKi8NCi0JCQlfVURXT1JEIFVUT0QwOjE7CQkJCS8qICAgVVRPRDAgICAgICAgKi8NCi0JCQlfVURXT1JEIENLUzoyOwkJCQkJLyogICBDS1MgICAgICAgICovDQotCQkJX1VEV09SRCBTQ01GQzA6MTsJCQkJLyogICBTQ01GQzAgICAgICovDQotCQkJX1VEV09SRCBTQ01GQzE6MTsJCQkJLyogICBTQ01GQzEgICAgICovDQotCQkJX1VEV09SRCBTQ01GRDA6MTsJCQkJLyogICBTQ01GRDAgICAgICovDQotCQkJX1VEV09SRCBTQ01GRDE6MTsJCQkJLyogICBTQ01GRDEgICAgICovDQotCQkJX1VEV09SRCA6NTsJCQkJCQkvKiAgICAgICAgICAgICAgKi8NCi0JCQlfVURXT1JEIFBDQjE6MTsJCQkJCS8qICAgUENCMSAgICAgICAqLw0KLQkJCV9VRFdPUkQgUENCMDoxOwkJCQkJLyogICBQQ0IwICAgICAgICovDQotCQkJX1VEV09SRCA6NTsJCQkJCQkvKiAgICAgICAgICAgICAgKi8NCi0JCX0gQklUOw0KLQl9IEJSQ1I7DQotfTsNCi1zdHJ1Y3Qgc3RfZGlzYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERJU0MgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01DUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBSVToxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNUFJVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFI6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01QUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01TVFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBTVDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENNUFNUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTVNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNQ0xTVFIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QQ0xTVDoxOyAgICAgICAgICAgICAgICAgLyogICBDTVBDTFNUICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01DTFNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTUlFTlIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjMxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUElFTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgQ01QSUVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNSUVOUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCSAgIF9VQllURSB3azBbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNUE1SICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QQlQ6MTsgICAgICAgICAgICAgICAgICAgLyogICBDTVBCVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUERGQTo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ01QREZBICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBEQVVGOjE7ICAgICAgICAgICAgICAgICAvKiAgIENNUERBVUYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFNFTFA6NDsgICAgICAgICAgICAgICAgIC8qICAgQ01QU0VMUCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNUE1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01FQ1JDUiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUEVDUkM6MzI7ICAgICAgICAgICAgICAgIC8qICAgQ01QRUNSQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNRUNSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01DQ1JDUiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUENDUkM6MzI7ICAgICAgICAgICAgICAgIC8qICAgQ01QQ0NSQyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNQ0NSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01TUFhSICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBTUFg6MTE7ICAgICAgICAgICAgICAgICAvKiAgIENNUFNQWCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTVNQWFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNU1BZUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QU1BZOjExOyAgICAgICAgICAgICAgICAgLyogICBDTVBTUFkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERPQ01TUFlSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9DTVNaWFIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUFNaWDoxMTsgICAgICAgICAgICAgICAgIC8qICAgQ01QU1pYICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBET0NNU1pYUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPQ01TWllSICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVBTWlk6MTE7ICAgICAgICAgICAgICAgICAvKiAgIENNUFNaWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTVNaWVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET0NNQ1JDSVIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUkNJTkk6MzI7ICAgICAgICAgICAgICAgICAvKiAgIENSQ0lOSSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE9DTUNSQ0lSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi1zdHJ1Y3Qgc3RfamN1IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IEpDVSAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDTU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERTUDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERTUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSRURVOjM7ICAgICAgICAgICAgICAgICAgICAgLyogICBSRURVICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpDTU9EOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNDTUQgICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCUlNUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBCUlNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEpFTkQ6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEpFTkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBKUlNUOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBKUlNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSlNSVDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSlNSVCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0NNRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBfMFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ1FUTiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBRVDM6MjsgICAgICAgICAgICAgICAgICAgICAgLyogICBRVDMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgUVQyOjI7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUVQyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFFUMToyOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFFUMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNRVE47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hUTiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIVEEzOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBIVEEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFREMzoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFREMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhUQTI6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhUQTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBIVEQyOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBIVEQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSFRBMToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSFRBMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhURDE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhURDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNIVE47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RSSVUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERSSVU6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIERSSVUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNEUklVOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RSSUQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERSSUQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIERSSUQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNEUklEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ1ZTWlUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZTWlU6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFZTWlUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNWU1pVOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ1ZTWkQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZTWkQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFZTWkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNWU1pEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hTWlUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhTWlU6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhTWlUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNIU1pVOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hTWkQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhTWkQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEhTWkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNIU1pEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RUQ1UgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERDVTo4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERDVSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNEVENVOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RUQ00gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERDTTo4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERDTSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNEVENNOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0RUQ0QgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIERDRDo4OyAgICAgICAgICAgICAgICAgICAgICAvKiAgIERDRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNEVENEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSU5URTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOVDc6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTlQ2OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQ2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSU5UNToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTlQzOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSU5URTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJTlRTMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOUzY6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOUzYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJTlM1OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBJTlM1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElOUzM6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIElOUzMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJTlRTMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNERVJSICAgICAgICovDQotICAgICAgICAgICAgIF9VQllURSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgRVJSOjQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKQ0RFUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDUlNUICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgOjc7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFJTVDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJTVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSkNSU1Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzQ2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRUNOVCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE3OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpPVVRSSU5JOjE7ICAgICAgICAgICAgICAgIC8qICAgSk9VVFJJTkkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKT1VUUkNNRDoxOyAgICAgICAgICAgICAgICAvKiAgIEpPVVRSQ01EICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSk9VVEM6MTsgICAgICAgICAgICAgICAgICAgLyogICBKT1VUQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKT1VUU1dBUDozOyAgICAgICAgICAgICAgICAvKiAgIEpPVVRTV0FQICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJTlJJTkk6MTsgICAgICAgICAgICAgICAgIC8qICAgRElOUklOSSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBESU5SQ01EOjE7ICAgICAgICAgICAgICAgICAvKiAgIERJTlJDTUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElOTEM6MTsgICAgICAgICAgICAgICAgICAgLyogICBESU5MQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBESU5TV0FQOjM7ICAgICAgICAgICAgICAgICAvKiAgIERJTlNXQVAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRUNOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZFU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFU0E6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVTQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRVNBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZFU09GU1QgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVNNVzoxNTsgICAgICAgICAgICAgICAgICAgLyogICBFU01XICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkVTT0ZTVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRURBICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRURBOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBFREEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkVEQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRVNMQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkVTOjE2OyAgICAgICAgICAgICAgICAgIC8qICAgTElORVMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZFU0xDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkVEREMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKREFUQVM6MTY7ICAgICAgICAgICAgICAgICAvKiAgIEpEQVRBUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRUREQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZEQ05UICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVklOVEVSOjI7ICAgICAgICAgICAgICAgICAgLyogICBWSU5URVIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJTlRFUjoyOyAgICAgICAgICAgICAgICAgIC8qICAgSElOVEVSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEY6MjsgICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpJTlJJTkk6MTsgICAgICAgICAgICAgICAgIC8qICAgSklOUklOSSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKSU5SQ01EOjE7ICAgICAgICAgICAgICAgICAvKiAgIEpJTlJDTUQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSklOQzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBKSU5DICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKSU5TV0FQOjM7ICAgICAgICAgICAgICAgICAvKiAgIEpJTlNXQVAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERPVVRSSU5JOjE7ICAgICAgICAgICAgICAgIC8qICAgRE9VVFJJTkkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1VUUkNNRDoxOyAgICAgICAgICAgICAgICAvKiAgIERPVVRSQ01EICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE9VVExDOjE7ICAgICAgICAgICAgICAgICAgLyogICBET1VUTEMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1VUU1dBUDozOyAgICAgICAgICAgICAgICAvKiAgIERPVVRTV0FQICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRENOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZEU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEU0E6MzI7ICAgICAgICAgICAgICAgICAgICAvKiAgIERTQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRFNBOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZERE9GU1QgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRERNVzoxNTsgICAgICAgICAgICAgICAgICAgLyogICBERE1XICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkRET0ZTVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRERBICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRERBOjMyOyAgICAgICAgICAgICAgICAgICAgLyogICBEREEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkREQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSklGRFNEQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpEQVRBUzoxNjsgICAgICAgICAgICAgICAgIC8qICAgSkRBVEFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBKSUZEU0RDOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJRkRETEMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5FUzoxNjsgICAgICAgICAgICAgICAgICAvKiAgIExJTkVTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklGRERMQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSUZEQURUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxQSEE6ODsgICAgICAgICAgICAgICAgICAgLyogICBBTFBIQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJRkRBRFQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpJTlRFMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDQlRFTjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENCVEVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRElOTEVOOjE7ICAgICAgICAgICAgICAgICAgLyogICBESU5MRU4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpPVVRFTjoxOyAgICAgICAgICAgICAgICAgIC8qICAgSk9VVEVOICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgREJURU46MTsgICAgICAgICAgICAgICAgICAgLyogICBEQlRFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpJTkVOOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSklORU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBET1VUTEVOOjE7ICAgICAgICAgICAgICAgICAvKiAgIERPVVRMRU4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSklOVEUxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKSU5UUzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0JURjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBDQlRGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJTkxGOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgRElOTEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKT1VURjoxOyAgICAgICAgICAgICAgICAgICAvKiAgIEpPVVRGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERCVEY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgREJURiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKSU5GOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIEpJTkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE9VVExGOjE7ICAgICAgICAgICAgICAgICAgLyogICBET1VUTEYgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEpJTlRTMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsxMDhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBKQ1FUQkwwWzY0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDUVRCTDAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSkNRVEJMMVs2NF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ1FUQkwxICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEpDUVRCTDJbNjRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNRVEJMMiAgICAgICovDQotICAgICAgIF9VQllURSBKQ1FUQkwzWzY0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDUVRCTDMgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSkNIVEJEMFsyOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hUQkQwICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSBKQ0hUQkEwWzE3OF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEpDSFRCQTAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzQ2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIEpDSFRCRDFbMjhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSkNIVEJEMSAgICAgICovDQotICAgICAgIF9VQllURSB3azlbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgSkNIVEJBMVsxNzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBKQ0hUQkExICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotc3RydWN0IHN0X3NwaWJzYyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTUElCU0MgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ01OQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUQ6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNRCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo3OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzM6MjsgICAgICAgICAgICAgICAgICAvKiAgIE1PSUlPMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU9JSU8yOjI7ICAgICAgICAgICAgICAgICAgLyogICBNT0lJTzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PSUlPMToyOyAgICAgICAgICAgICAgICAgIC8qICAgTU9JSU8xICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzA6MjsgICAgICAgICAgICAgICAgICAvKiAgIE1PSUlPMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU8zRlY6MjsgICAgICAgICAgICAgICAgICAgLyogICBJTzNGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElPMkZWOjI7ICAgICAgICAgICAgICAgICAgIC8qICAgSU8yRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU8wRlY6MjsgICAgICAgICAgICAgICAgICAgLyogICBJTzBGViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUEhBVDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIENQSEFUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1BIQVI6MTsgICAgICAgICAgICAgICAgICAgLyogICBDUEhBUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTTFA6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU1NMUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUE9MOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIENQT0wgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJTWjoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQlNaICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDTU5DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTERSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUE5ETDozOyAgICAgICAgICAgICAgICAgICAvKiAgIFNQTkRMICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNMTkRMOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgU0xOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NLREw6MzsgICAgICAgICAgICAgICAgICAgLyogICBTQ0tETCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU1BCQ1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQQlI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BCUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJEVjoyOyAgICAgICAgICAgICAgICAgICAgLyogICBCUkRWICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJCVVJTVDo0OyAgICAgICAgICAgICAgICAgIC8qICAgUkJVUlNUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkNGOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBSQ0YgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJCRToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUkJFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NMRToxOyAgICAgICAgICAgICAgICAgICAgLyogICBTU0xFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJDTVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0NNRDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPQ01EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJFQVIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVBVjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgRUFWICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUFDOjM7ICAgICAgICAgICAgICAgICAgICAgLyogICBFQUMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSRUFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJPUFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERST1BSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFJFTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RCOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBDREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DREI6MjsgICAgICAgICAgICAgICAgICAgIC8qICAgT0NEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURCOjI7ICAgICAgICAgICAgICAgICAgICAgLyogICBBREIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERCOjI7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QREIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSREI6MjsgICAgICAgICAgICAgICAgICAgIC8qICAgRFJEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0RFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBDREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RFOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9DREUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURFOjQ7ICAgICAgICAgICAgICAgICAgICAgLyogICBBREUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QREU6NDsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFJFTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTUNSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NMS1A6MTsgICAgICAgICAgICAgICAgICAgLyogICBTU0xLUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElSRToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFNQSVJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJV0U6MTsgICAgICAgICAgICAgICAgICAgLyogICBTUElXRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSUU6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQ01SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIENNRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9DTUQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT0NNRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTUNNUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQURSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEUjozMjsgICAgICAgICAgICAgICAgICAgIC8qICAgQURSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTUFEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNT1BSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QRDIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBPUEQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRDA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgT1BEMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTU9QUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNRU5SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENEQjoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0RCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RCOjI7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9DREIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEQjoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQURCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEQjoyOyAgICAgICAgICAgICAgICAgICAgLyogICBPUERCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElEQjoyOyAgICAgICAgICAgICAgICAgICAvKiAgIFNQSURCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENERToxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ0RFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0NERToxOyAgICAgICAgICAgICAgICAgICAgLyogICBPQ0RFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFERTo0OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQURFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERFOjQ7ICAgICAgICAgICAgICAgICAgICAvKiAgIE9QREUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJREU6NDsgICAgICAgICAgICAgICAgICAgLyogICBTUElERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNUkRSMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSREFUQTA6MzI7ICAgICAgICAgICAgICAgICAvKiAgIFJEQVRBMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01SRFIwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTVJEUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBIaWdoICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdywgSGlnaCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMTDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3csIExvdyAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkRBVEExOjMyOyAgICAgICAgICAgICAgICAgLyogICBSREFUQTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNUkRSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU01XRFIwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJ5dGUgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgSEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIExvdyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBMSDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBMb3csIEhpZ2ggICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEw7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdEQVRBMDozMjsgICAgICAgICAgICAgICAgIC8qICAgV0RBVEEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTVdEUjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNV0RSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEhpZ2gsIEhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBITDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBIaWdoLCBMb3cgICovDQotICAgICAgICAgICAgICAgICAgICBfVUJZVEUgTEg7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIExvdywgTG93ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQllURTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXREFUQTE6MzI7ICAgICAgICAgICAgICAgICAvKiAgIFdEQVRBMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01XRFIxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDTU5TUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzA7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NMRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTU0xGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDTU5TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLQkjaWYJMA0KLSNkZWZpbmUgQ1BHICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9jcGcgKikweEZGRkUwMDEwKSAgICAvKiBDUEcgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIElOVEMgKCoodm9sYXRpbGUgc3RydWN0IHN0X2ludGMgKikweEZGRkUwODAwKSAgLyogSU5UQyBBZGRyZXNzICovDQotCSNlbmRpZg0KLSNkZWZpbmUgQ0NOVCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfY2NudCAqKTB4RkZGQzEwMDApICAvKiBDQ05UIEFkZHJlc3MgKi8NCi0JI2lmCTANCi0jZGVmaW5lIEJTQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfYnNjICopMHhGRkZDMDAwMCkgICAgLyogQlNDIEFkZHJlc3MgICovDQotI2RlZmluZSBETUFDICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjICopMHhGRkZFMTAwMCkgIC8qIERNQUMgQWRkcmVzcyAqLw0KLQkjZW5kaWYNCi0JI2lmCTANCi0jZGVmaW5lIE1UVTIgKCoodm9sYXRpbGUgc3RydWN0IHN0X210dTIgKikweEZGRkU0MDAwKSAgLyogTVRVMiBBZGRyZXNzICovDQotCSNlbmRpZg0KLSNkZWZpbmUgQ01UICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9jbXQgKikweEZGRkVDMDAwKSAgICAvKiBDTVQgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIFdEVCAoKih2b2xhdGlsZSB1bmlvbiAgdW5fd2R0ICopMHhGRkZFMDAwMCkgICAgLyogV0RUIEFkZHJlc3MgICovDQotI2RlZmluZSBSVEMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3J0YyAqKTB4RkZGRTYwMDApICAgIC8qIFJUQyBBZGRyZXNzICAqLw0KLQkjaWYJMA0KLSNkZWZpbmUgU0NJRjAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYwMjM0NiAqKTB4RTgwMDcwMDApLyogU0NJRjAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWYxNTcgKikweEU4MDA3ODAwKS8qIFNDSUYxIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUYyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMDIzNDYgKikweEU4MDA4MDAwKS8qIFNDSUYyIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUYzICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMDIzNDYgKikweEU4MDA4ODAwKS8qIFNDSUYzIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY0ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMDIzNDYgKikweEU4MDA5MDAwKS8qIFNDSUY0IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY1ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmMTU3ICopMHhFODAwOTgwMCkvKiBTQ0lGNSBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGNiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZjAyMzQ2ICopMHhFODAwQTAwMCkvKiBTQ0lGNiBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGNyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZjE1NyAqKTB4RTgwMEE4MDApLyogU0NJRjcgQWRkcmVzcyAqLw0KLQkjZW5kaWYNCi0jZGVmaW5lIFJTUEkwICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yc3BpICopMHhFODAwRTAwMCkgIC8qIFJTUEkwIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJTUEkxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yc3BpICopMHhFODAwRTgwMCkgIC8qIFJTUEkxIEFkZHJlc3MgKi8NCi0JI2lmCTANCi0jZGVmaW5lIElJQzNfMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaWljMyAqKTB4RkZGRUUwMDApLyogSUlDM18wIEFkZHJlc3MgKi8NCi0jZGVmaW5lIElJQzNfMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaWljMyAqKTB4RkZGRUU0MDApLyogSUlDM18xIEFkZHJlc3MgKi8NCi0jZGVmaW5lIElJQzNfMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaWljMyAqKTB4RkZGRUU4MDApLyogSUlDM18yIEFkZHJlc3MgKi8NCi0jZGVmaW5lIElJQzNfMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaWljMyAqKTB4RkZGRUVDMDApLyogSUlDM18zIEFkZHJlc3MgKi8NCi0JI2VuZGlmDQotI2RlZmluZSBTU0lGMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3NpZiAqKTB4RkZGRjAwMDApLyogU1NJRjAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1NJRjEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NzaWYgKikweEZGRkYwODAwKS8qIFNTSUYxIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNTSUYyICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zc2lmICopMHhGRkZGMTAwMCkvKiBTU0lGMiBBZGRyZXNzICovDQotI2RlZmluZSBTU0lGMyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3NpZiAqKTB4RkZGRjE4MDApLyogU1NJRjMgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1NJRjQgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NzaWYgKikweEZGRkYyMDAwKS8qIFNTSUY0IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNTSUY1ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zc2lmICopMHhGRkZGMjgwMCkvKiBTU0lGNSBBZGRyZXNzICovDQotI2RlZmluZSBTSU9GICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zaW9mICopMHhGRkZGNDgwMCkgIC8qIFNJT0YgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUkNBTjAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JjYW4gKikweEZGRkU1MDAwKSAvKiBSQ0FOMCBBZGRyZXNzICovDQotI2RlZmluZSBSQ0FOMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcmNhbiAqKTB4RkZGRTU4MDApIC8qIFJDQU4xIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFJDQU4yICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yY2FuICopMHhGRkZFRDgwMCkgLyogUkNBTjIgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSUVCICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9pZWIgKikweEZGRkVGMDAwKSAgICAvKiBJRUIgQWRkcmVzcyAgKi8NCi0jZGVmaW5lIFNQRElGICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcGRpZiAqKTB4RTgwMTIwMDApLyogU1BESUYgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUk9NREVDICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9yb21kZWMgKikweEU4MDA1MDAwKS8qIFJPTURFQyBBZGRyZXNzICovDQotCSNpZiAwIC8qIE9sZCBBREMgaW9kZWZpbmUgKi8NCi0jZGVmaW5lIEFEQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfYWRjICopMHhFODAwNTgwMCkgICAgLyogQURDIEFkZHJlc3MgICovDQotCSNlbmRpZi8qIE9sZCBBREMgaW9kZWZpbmUgKi8NCi0jZGVmaW5lIEZMQ1RMICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9mbGN0bCAqKTB4RkZGRjQwMDApLyogRkxDVEwgQWRkcmVzcyAqLw0KLQkjaWYJMA0KLSNkZWZpbmUgVVNCICgqKHZvbGF0aWxlIHN0cnVjdCBzdF91c2IgKikweEU4MDEwMDAwKSAgICAvKiBVU0IgQWRkcmVzcyAgKi8NCi0JI2VuZGlmDQotI2RlZmluZSBWREM0ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF92ZGM0ICopMHhGRkZGNzQwMCkgIC8qIFZEQzQgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1JDMCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3JjICopMHhGRkZFNzAwMCkgIC8qIFNSQzAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1JDMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3JjICopMHhGRkZFNzgwMCkgIC8qIFNSQzEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU1JDMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc3JjICopMHhGRkZFODAwMCkgIC8qIFNSQzIgQWRkcmVzcyAqLw0KLQkjaWYJMA0KLSNkZWZpbmUgUE9SVCAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZ3BpbyAqKTB4RkZGRTM4MTApICAvKiBHUElPIEFkZHJlc3MgKi8NCi0JI2VuZGlmDQotI2RlZmluZSBIVURJICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9odWRpICopMHhGRkZFMjAwMCkgIC8qIEhVREkgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUFdNICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wd20gKikweEZGRkVGNDA2KSAgICAvKiBQV00gQWRkcmVzcyAgKi8NCi0jZGVmaW5lIFFTUEkwICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9ycXNwaSAqKTB4RTgwMzM4MDApICAvKiBSUVNQSTAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgUVNQSTEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3Jxc3BpICopMHhFODAzNDAwMCkgIC8qIFJRU1BJMSBBZGRyZXNzICovDQotI2RlZmluZSBJTVJMUyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaW1ybHMgKikweEZGRkYzMDA4KS8qIElNUkxTIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNERzAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NkZzAgKikweEZGRkVDODAwKSAgLyogU0RHMCBBZGRyZXNzICovDQotI2RlZmluZSBTREcxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zZGcxICopMHhGRkZFQ0EwMCkgIC8qIFNERzEgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0RHMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2RnMiAqKTB4RkZGRUNDMDApICAvKiBTREcyIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNERzMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NkZzMgKikweEZGRkVDRTAwKSAgLyogU0RHMyBBZGRyZXNzICovDQotI2RlZmluZSBNTUMgKCoodm9sYXRpbGUgc3RydWN0IHN0X21tYyAqKTB4RTgwMzA4MDApICAgIC8qIE1NQyBBZGRyZXNzICAqLw0KLSNkZWZpbmUgRFZERUMgKCoodm9sYXRpbGUgc3RydWN0IHN0X2R2ZGVjICopMHhGRkZGQTAwOCkvKiBEVkRFQyBBZGRyZXNzICovDQotI2RlZmluZSBVQkMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3ViYyAqKTB4RkZGQzA0MDApICAgIC8qIFVCQyBBZGRyZXNzICAqLw0KLSNkZWZpbmUgRElTQyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZGlzYyAqKTB4RkZGRkE4MDApICAvKiBESVNDIEFkZHJlc3MgKi8NCi0jZGVmaW5lIEpDVSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfamN1ICopMHhFODAxNzAwMCkgICAgLyogSkNVIEFkZHJlc3MgICovDQotI2RlZmluZSBTUElCU0MgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NwaWJzYyAqKTB4RkZGQzFDMDApLyogU1BJQlNDIEFkZHJlc3MgKi8NCi0NCi0NCi0vKiA9PT09IGluY2x1ZGVzIGVhY2ggaW9kZWZpbmUgPT09PSAqLw0KLSNpbmNsdWRlICJ1c2JfaW9kZWZpbmUuaCIJCQkvKiBmb3IgVVNCIG1vZHVsZSAqLw0KLSNpbmNsdWRlICJzY2lmX2lvZGVmaW5lLmgiCQkJLyogZm9yIFNDSUYgbW9kdWxlICovDQotI2luY2x1ZGUgInBmY19pb2RlZmluZS5oIgkJCS8qIGZvciBQRkMgbW9kdWxlICovDQotI2luY2x1ZGUgImJzY19pb2RlZmluZS5oIgkJCS8qIGZvciBCU0MgbW9kdWxlICovDQotI2luY2x1ZGUgImNwZ19pb2RlZmluZS5oIgkJCS8qIGZvciBDUEcgbW9kdWxlICovDQotLy8jaW5jbHVkZSAiZG1hY19pb2RlZmluZS5oIgkJCS8qIGZvciBETUFDIG1vZHVsZSAqLw0KLSNpbmNsdWRlICJpbnRjX2lvZGVmaW5lLmgiCQkJLyogZm9yIElOVEMgbW9kdWxlICovDQotI2luY2x1ZGUgIm9zdG1faW9kZWZpbmUuaCIJCQkvKiBmb3IgT1NUTSBtb2R1bGUgKi8NCi0jaW5jbHVkZSAicmlpY19pb2RlZmluZS5oIgkJCS8qIGZvciBSSUlDIG1vZHVsZSAqLw0KLSNpbmNsdWRlICJwcnJfaW9kZWZpbmUuaCIJCQkvKiBmb3IgkLuVaYNvgVuDV4OHg5ODjINXg1iDXiAqLw0KLSNpbmNsdWRlICJzcGlic2NfaW9kZWZpbmUuaCIJCS8qIGZvciBTUElCU0MgbW9kdWxlICovDQotI2luY2x1ZGUgIm10dTJfaW9kZWZpbmUuaCIJCQkvKiBmb3IgTVRVMiBtb2R1bGUgKi8NCi0NCi0jZW5kaWYgLyogX0lPREVGSU5FX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9ic2NfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvYnNjX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExM2VhZTMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9ic2NfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDMyNCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogYnNjX2lvZGVmaW5lLmgNCi0qIFZlcnNpb24gICAgICAgOiAwLjAxDQotKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLSogICAgICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gdmVjb3RyLnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGc2VjMDhfQlNDXzIwMTIwNjE1LmRvYyAhISFUT1NDT1JugsmOZJdsj5GCyYLIgqKDcoNig2eWvIKggughISENCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19CU0NfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX0JTQ19JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTbkJDUiAgICAgICAqLw0KLSAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDo5OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJTWjoyOyAgICAgICAgICAgICAgICAgICAgIC8qICAgQlNaICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRZUEU6MzsgICAgICAgICAgICAgICAgICAgIC8qICAgVFlQRSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElXUlJTOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgSVdSUlMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElXUlJEOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgSVdSUkQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElXUldTOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgSVdSV1MgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElXUldEOjM7ICAgICAgICAgICAgICAgICAgIC8qICAgSVdSV0QgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElXVzozOyAgICAgICAgICAgICAgICAgICAgIC8qICAgSVdXICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gQ1NuQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPU0NPUm4gICAgICAqLw0KLSAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIHh4eDoxNjsgICAgICAgICAgICAgICAgICAgIC8qICAgeHh4ICAgICAgICAqLwkvKiAhISGDcoNig2eWvIyIkuiOn5HmgUGS6ItggreC6SEhISAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gVE9TQ09SbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLXN0cnVjdCBzdF9ic2MgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBCU0MgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNTkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBISVpDTlQ6MTsgICAgICAgICAgIC8qICAgSElaQ05UICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBISVpNRU06MTsgICAgICAgICAgIC8qICAgSElaTUVNICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUFJUWToyOyAgICAgICAgICAgIC8qICAgRFBSVFkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTDA6MTsgICAgICAgICAgICAgIC8qICAgQUwwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTDA6MTsgICAgICAgICAgICAgIC8qICAgVEwwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNTkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1MwQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMEJDUiAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1MxQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMUJDUiAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1MyQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMkJDUiAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1MzQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTM0JDUiAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1M0QkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNEJDUiAgICAgICAqLw0KLSAgICAgICBDU25CQ1IgQ1M1QkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNUJDUiAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMFdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMFdDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MwV0NSKEJST01fQVNZKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVzo0OyAgICAgICAgIC8qICAgVyAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlc6MjsgICAgICAgIC8qICAgQlcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlNUOjI7ICAgICAgIC8qICAgQlNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEwOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCUk9NX0FTWTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMFdDUihCUk9NX1NZKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVzo0OyAgICAgICAgIC8qICAgVyAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlc6MjsgICAgICAgIC8qICAgQlcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE0OyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCUk9NX1NZOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTMFdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMVdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSFc6MjsgICAgICAgIC8qICAgSFcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1I6NDsgICAgICAgIC8qICAgV1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c6MjsgICAgICAgIC8qICAgU1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1c6MzsgICAgICAgIC8qICAgV1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQkFTOjE7ICAgICAgIC8qICAgQkFTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTMVdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMldDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTMldDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MyV0NSKFNEUkFNKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjc7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTJDTDoyOyAgICAgIC8qICAgQTJDTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjIzOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRFJBTTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTMldDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTM1dDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTM1dDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6OTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1MzV0NSKFNEUkFNKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSQzoyOyAgICAgIC8qICAgV1RSQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFJXTDoyOyAgICAgIC8qICAgVFJXTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQTNDTDoyOyAgICAgIC8qICAgQTNDTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSQ0Q6MjsgICAgIC8qICAgV1RSQ0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RSUDoyOyAgICAgIC8qICAgV1RSUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE3OyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRFJBTTsgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTM1dDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNFdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNFdDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCQVM6MTsgICAgICAgLyogICBCQVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1M0V0NSKEJST01fQVNZKSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSFc6MjsgICAgICAgIC8qICAgSFcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV006MTsgICAgICAgIC8qICAgV00gICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVzo0OyAgICAgICAgIC8qICAgVyAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c6MjsgICAgICAgIC8qICAgU1cgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlc6MjsgICAgICAgIC8qICAgQlcgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlNUOjI7ICAgICAgIC8qICAgQlNUICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEwOyAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCUk9NX0FTWTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENTNFdDUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNVdDUiAgICAgICAqLw0KLSAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENTNVdDUihOT1JNQUwpICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIVzoyOyAgICAgICAgLyogICBIVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXTToxOyAgICAgICAgLyogICBXTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXUjo0OyAgICAgICAgLyogICBXUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzoyOyAgICAgICAgLyogICBTVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVzozOyAgICAgICAgLyogICBXVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNUFhXQkFTOjE7ICAgLyogICBNUFhXL0JBUyAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTWlNFTDoxOyAgICAgLyogICBTWlNFTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTA7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IE5PUk1BTDsgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1M1V0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbMTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0RDUiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEEzQ09MOjI7ICAgICAgICAgICAgLyogICBBM0NPTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEEzUk9XOjI7ICAgICAgICAgICAgLyogICBBM1JPVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJBQ1RWOjE7ICAgICAgICAgICAgLyogICBCQUNUViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBET1dOOjE7ICAgICAgICAgICAgLyogICBQRE9XTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJNT0RFOjE7ICAgICAgICAgICAgLyogICBSTU9ERSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJGU0g6MTsgICAgICAgICAgICAgLyogICBSRlNIICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERFRVA6MTsgICAgICAgICAgICAgLyogICBERUVQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEEyQ09MOjI7ICAgICAgICAgICAgLyogICBBMkNPTCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEEyUk9XOjI7ICAgICAgICAgICAgLyogICBBMlJPVyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0RDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlRDU1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJSQzozOyAgICAgICAgICAgICAgLyogICBSUkMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLUzozOyAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSUU6MTsgICAgICAgICAgICAgLyogICBDTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNRjoxOyAgICAgICAgICAgICAgLyogICBDTUYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlRDU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlRDTlQgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEQ6MzI7ICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlRDTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlRDT1IgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEQ6MzI7ICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUlRDT1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azJbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SMCAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SMTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SMSAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SMiAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SMzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SMyAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SNDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SNCAgICAgICovDQotICAgICAgIFRPU0NPUm4gVE9TQ09SNTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TQ09SNSAgICAgICovDQotICAgICAgIF9VQllURSB3azNbOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9TVFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMFRPU1RGOjE7ICAgICAgICAgLyogICBDUzBUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMVRPU1RGOjE7ICAgICAgICAgLyogICBDUzFUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMlRPU1RGOjE7ICAgICAgICAgLyogICBDUzJUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTM1RPU1RGOjE7ICAgICAgICAgLyogICBDUzNUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTNFRPU1RGOjE7ICAgICAgICAgLyogICBDUzRUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTNVRPU1RGOjE7ICAgICAgICAgLyogICBDUzVUT1NURiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9TVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVE9FTlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMFRPRU46MTsgICAgICAgICAgLyogICBDUzBUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMVRPRU46MTsgICAgICAgICAgLyogICBDUzFUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTMlRPRU46MTsgICAgICAgICAgLyogICBDUzJUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTM1RPRU46MTsgICAgICAgICAgLyogICBDUzNUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTNFRPRU46MTsgICAgICAgICAgLyogICBDUzRUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENTNVRPRU46MTsgICAgICAgICAgLyogICBDUzVUT0VOICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVE9FTlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZQlCU0MJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9ic2MgKikweDNGRkZDMDAwKSAgIC8qIEJTQyBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fQlNDX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9jcGdfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvY3BnX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNDAzNjIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9jcGdfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogY3BnX2lvZGVmaW5lLmgNCi0qIFZlcnNpb24gICAgICAgOiAwLjAxDQotKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS44DQotKiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLSogICAgICAgICAgICAgICA6IA0KLSogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi0qIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gdmVjb3RyLnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKiAgICAgICAgIDogMjcuMDcuMjAxMiAwLjAxCQmOUY1sjpGXv4FGUlpfQTFIXzA1Sl8xMjEwMTBfMTEucGRmDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fQ1BHX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19DUEdfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfY3BnIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgQ1BHICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGUlFDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJRkM6MjsgICAgICAgICAgICAgICAvKiAgIElGQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDS09FTjoyOyAgICAgICAgICAgICAvKiAgIENLT0VOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDS09FTjI6MTsgICAgICAgICAgICAvKiAgIENLT0VOMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGUlFDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGUlFDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBHRkM6MjsgICAgICAgICAgICAgICAvKiAgIEdGQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGUlFDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDUFVTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJU0JVU1kwOjE7ICAgICAgICAgICAvKiAgIElTQlVTWTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDUFVTVFM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls3XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBERUVQOjE7ICAgICAgICAgICAgICAvKiAgIERFRVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJZOjE7ICAgICAgICAgICAgICAvKiAgIFNUQlkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMjA6MTsgICAgICAgICAgICAvKiAgIE1TVFAyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBISVo6MTsgICAgICAgICAgICAgICAvKiAgIEhJWiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsxMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJSRVExICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTEwOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTEzOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTE1OjE7ICAgICAgICAgICAvKiAgIFNUQlJRMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJSRVExOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJSRVEyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTIwOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTIxOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTIyOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTIzOjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTI0OjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTI1OjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTI2OjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJSUTI3OjE7ICAgICAgICAgICAvKiAgIFNUQlJRMjcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJSRVEyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsxMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJBQ0sxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzEwOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzEzOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzE1OjE7ICAgICAgICAgICAvKiAgIFNUQkFLMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJBQ0sxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1szXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJBQ0syICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzIwOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzIxOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzIyOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzIzOjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzI0OjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzI1OjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzI2OjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTVEJBSzI3OjE7ICAgICAgICAgICAvKiAgIFNUQkFLMjcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJBQ0syOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFs5NTVdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTA6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTE6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTI6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTM6MTsgICAgICAgICAgICAvKiAgIFZSQU1FMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNRTQ6MTsgICAgICAgICAgICAvKiAgIFZSQU1FNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UwOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UxOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UyOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0UzOjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBWUkFNV0U0OjE7ICAgICAgICAgICAvKiAgIFZSQU1XRTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UwOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UxOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UyOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNV0UzOjE7ICAgICAgICAgICAvKiAgIFJSQU1XRTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbMjNdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzA6MTsgICAgICAgICAgICAvKiAgIE1TVFAzMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzI6MTsgICAgICAgICAgICAvKiAgIE1TVFAzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzM6MTsgICAgICAgICAgICAvKiAgIE1TVFAzMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzQ6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzU6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzY6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMzc6MTsgICAgICAgICAgICAvKiAgIE1TVFAzNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDA6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDE6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDI6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDM6MTsgICAgICAgICAgICAvKiAgIE1TVFA0MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDU6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDY6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNDc6MTsgICAgICAgICAgICAvKiAgIE1TVFA0NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTA6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTE6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTI6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTM6MTsgICAgICAgICAgICAvKiAgIE1TVFA1MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTU6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTY6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNTc6MTsgICAgICAgICAgICAvKiAgIE1TVFA1NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjA6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjE6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjI6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjM6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjU6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjY6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNjc6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzA6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzE6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzM6MTsgICAgICAgICAgICAvKiAgIE1TVFA3MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzY6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQNzc6MTsgICAgICAgICAgICAvKiAgIE1TVFA3NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjggICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODE6MTsgICAgICAgICAgICAvKiAgIE1TVFA4MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODM6MTsgICAgICAgICAgICAvKiAgIE1TVFA4MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODU6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODY6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQODc6MTsgICAgICAgICAgICAvKiAgIE1TVFA4NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTdbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTA6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTE6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTI6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTM6MTsgICAgICAgICAgICAvKiAgIE1TVFA2MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTQ6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTU6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTY6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQOTc6MTsgICAgICAgICAgICAvKiAgIE1TVFA2NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMThbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjEwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAwOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAxOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAyOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTAzOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA0OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA1OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA2OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTA3OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTlbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjExICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTEwOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTExOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTEyOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTEzOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTE0OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTE1OjE7ICAgICAgICAgICAvKiAgIE1TVFAxMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjExOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjBbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVEJDUjEyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTIwOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTIxOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTIyOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNU1RQMTIzOjE7ICAgICAgICAgICAvKiAgIE1TVFAxMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVEJDUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjFbMjddOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTE6MTsgICAgICAgICAgICAvKiAgIFNSU1QxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTI6MTsgICAgICAgICAgICAvKiAgIFNSU1QxMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTM6MTsgICAgICAgICAgICAvKiAgIFNSU1QxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTQ6MTsgICAgICAgICAgICAvKiAgIFNSU1QxNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTU6MTsgICAgICAgICAgICAvKiAgIFNSU1QxNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMTY6MTsgICAgICAgICAgICAvKiAgIFNSU1QxNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBBWFRBTEU6MTsgICAgICAgICAgICAvKiAgIEFYVEFMRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjJbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjE6MTsgICAgICAgICAgICAvKiAgIFNSU1QyMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjI6MTsgICAgICAgICAgICAvKiAgIFNSU1QyMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjM6MTsgICAgICAgICAgICAvKiAgIFNSU1QyMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjQ6MTsgICAgICAgICAgICAvKiAgIFNSU1QyNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjU6MTsgICAgICAgICAgICAvKiAgIFNSU1QyNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjY6MTsgICAgICAgICAgICAvKiAgIFNSU1QyNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMjc6MTsgICAgICAgICAgICAvKiAgIFNSU1QyNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjNbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzE6MTsgICAgICAgICAgICAvKiAgIFNSU1QzMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzI6MTsgICAgICAgICAgICAvKiAgIFNSU1QzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzM6MTsgICAgICAgICAgICAvKiAgIFNSU1QzMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzQ6MTsgICAgICAgICAgICAvKiAgIFNSU1QzNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzU6MTsgICAgICAgICAgICAvKiAgIFNSU1QzNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUMzY6MTsgICAgICAgICAgICAvKiAgIFNSU1QzNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjRbM107ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTV1JTVENSNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUNDA6MTsgICAgICAgICAgICAvKiAgIFNSU1Q0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTUlNUNDE6MTsgICAgICAgICAgICAvKiAgIFNSU1Q0MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTV1JTVENSNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjVbNzA1NDddOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSUkFNS1AgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AwOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AxOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AyOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSUkFNS1AzOjE7ICAgICAgICAgICAvKiAgIFJSQU1LUDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBSUkFNS1A7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjZbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0NUUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSQU1CT09UOjE7ICAgICAgICAgICAvKiAgIFJBTUJPT1QgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBFQlVTS0VFUEU6MTsgICAgICAgICAvKiAgIEVCVVNLRUVQRSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjdbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU1NTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF8yOjE7ICAgICAgICAgICAgICAvKiAgIFA4XzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOV8xOjE7ICAgICAgICAgICAgICAvKiAgIFA5XzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xNToxOyAgICAgICAgICAgICAvKiAgIFAyXzE1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQN184OjE7ICAgICAgICAgICAgICAvKiAgIFA3XzggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNV85OjE7ICAgICAgICAgICAgICAvKiAgIFA1XzkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl80OjE7ICAgICAgICAgICAgICAvKiAgIFA2XzQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSVENBUjoxOyAgICAgICAgICAgICAvKiAgIFJUQ0FSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUk6MTsgICAgICAgICAgICAgICAvKiAgIE5NSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18zOjE7ICAgICAgICAgICAgICAvKiAgIFAzXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF83OjE7ICAgICAgICAgICAgICAvKiAgIFA4XzcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xMjoxOyAgICAgICAgICAgICAvKiAgIFAyXzEyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18xOjE7ICAgICAgICAgICAgICAvKiAgIFAzXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM185OjE7ICAgICAgICAgICAgICAvKiAgIFAzXzkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl8yOjE7ICAgICAgICAgICAgICAvKiAgIFA2XzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU1NTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0VTUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF8yRToxOyAgICAgICAgICAgICAvKiAgIFA4XzJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOV8xRToxOyAgICAgICAgICAgICAvKiAgIFA5XzFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xNUU6MTsgICAgICAgICAgICAvKiAgIFAyXzE1RSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQN184RToxOyAgICAgICAgICAgICAvKiAgIFA3XzhFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNV85RToxOyAgICAgICAgICAgICAvKiAgIFA1XzlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl80RToxOyAgICAgICAgICAgICAvKiAgIFA2XzRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlFOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18zRToxOyAgICAgICAgICAgICAvKiAgIFAzXzNFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF83RToxOyAgICAgICAgICAgICAvKiAgIFA4XzdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xMkU6MTsgICAgICAgICAgICAvKiAgIFAyXzEyRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18xRToxOyAgICAgICAgICAgICAvKiAgIFAzXzFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM185RToxOyAgICAgICAgICAgICAvKiAgIFAzXzlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl8yRToxOyAgICAgICAgICAgICAvKiAgIFA2XzJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0VTUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEU0ZSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF8yRjoxOyAgICAgICAgICAgICAvKiAgIFA4XzJGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOV8xRjoxOyAgICAgICAgICAgICAvKiAgIFA5XzFGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xNUY6MTsgICAgICAgICAgICAvKiAgIFAyXzE1RiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQN184RjoxOyAgICAgICAgICAgICAvKiAgIFA3XzhGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNV85RjoxOyAgICAgICAgICAgICAvKiAgIFA1XzlGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl80RjoxOyAgICAgICAgICAgICAvKiAgIFA2XzRGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSVENBUkY6MTsgICAgICAgICAgICAvKiAgIFJUQ0FSRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlGOjE7ICAgICAgICAgICAgICAvKiAgIE5NSUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18zRjoxOyAgICAgICAgICAgICAvKiAgIFAzXzNGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQOF83RjoxOyAgICAgICAgICAgICAvKiAgIFA4XzdGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQMl8xMkY6MTsgICAgICAgICAgICAvKiAgIFAyXzEyRiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM18xRjoxOyAgICAgICAgICAgICAvKiAgIFAzXzFGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQM185RjoxOyAgICAgICAgICAgICAvKiAgIFAzXzlGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQNl8yRjoxOyAgICAgICAgICAgICAvKiAgIFA2XzJGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJT0tFRVA6MTsgICAgICAgICAgICAvKiAgIElPS0VFUCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEU0ZSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMjhbNl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBYVEFMQ1RSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBHQUlOMDoxOyAgICAgICAgICAgICAvKiAgIEdBSU4wICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBHQUlOMToxOyAgICAgICAgICAgICAvKiAgIEdBSU4xICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBYVEFMQ1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIENQRyAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfY3BnICopMHhGQ0ZFMDAxMCkgICAgLyogQ1BHIEFkZHJlc3MgICovDQotDQotDQotI2VuZGlmIC8qIF9fQ1BHX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9kbWFjX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2RtYWNfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTIwNTBlMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL2RtYWNfaW9kZWZpbmUuaAorKysgL2Rldi9udWxsCkBAIC0xLDUxMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIERJU0NMQUlNRVINCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seSANCi0qICAgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlciANCi0qICAgYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSoNCi0qICAgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgDQotKiAgIFJFR0FSRElORyBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCANCi0qICAgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSANCi0qICAgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiAgQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIA0KLSogICBESVNDTEFJTUVELg0KLSoNCi0qICAgVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUyANCi0qICAgRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFIA0KLSogICBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIA0KLSogICBGT1IgQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMNCi0qICAgQUZGSUxJQVRFUyBIQVZFIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSoNCi0qICAgUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyANCi0qICAgc29mdHdhcmUgYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4NCi0qICAgQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwgeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCANCi0qICAgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlIGZvbGxvd2luZyBsaW5rOiANCi0qICAgaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBUZWNobmljYWwgcmVmZXJlbmNlIGRhdGEgKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgU3lzdGVtIE5hbWUgOiANCi0qICAgRmlsZSBOYW1lICAgOiBkbWFjX2lvZGVmaW5lLmgNCi0qICAgQWJzdHJhY3QgICAgOiANCi0qICAgVmVyc2lvbiAgICAgOiAxLjAwLjAwDQotKiAgIERldmljZSAgICAgIDogQVJNDQotKiAgIFRvb2wtQ2hhaW4gIDogDQotKiAgIE9TICAgICAgICAgIDogTm9uZQ0KLSogICBIL1cgUGxhdGZvcm06IA0KLSogICBEZXNjcmlwdGlvbiA6IA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIEhpc3RvcnkgICAgIDogTWFyLjA2LDIwMTIgVmVyLjEuMDAuMDANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19ETUFDX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19ETUFDX0lPREVGSU5FX0hfXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotc3RydWN0IHN0X2RtYWNfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjBTQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBOjMyOyAgICAgICAgICAgICAgLyogICBTQSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjBTQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjBEQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERBOjMyOyAgICAgICAgICAgICAgLyogICBEQSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjBEQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjBUQiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRCOjMyOyAgICAgICAgICAgICAgLyogICBUQiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjBUQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjFTQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBOjMyOyAgICAgICAgICAgICAgLyogICBTQSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjFTQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjFEQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERBOjMyOyAgICAgICAgICAgICAgLyogICBEQSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjFEQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTjFUQiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRCOjMyOyAgICAgICAgICAgICAgLyogICBUQiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTjFUQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JTQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSU0E6MzI7ICAgICAgICAgICAgLyogICBDUlNBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JTQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JEQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSREE6MzI7ICAgICAgICAgICAgLyogICBDUkRBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JEQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JUQiAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSVEI6MzI7ICAgICAgICAgICAgLyogICBDUlRCICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JUQjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0hTVEFUICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOOjE7ICAgICAgICAgICAgICAgLyogICBFTiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJRU1Q6MTsgICAgICAgICAgICAgLyogICBSUVNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRBQ1Q6MTsgICAgICAgICAgICAgLyogICBUQUNUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzoxOyAgICAgICAgICAgICAgLyogICBTVVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSOjE7ICAgICAgICAgICAgICAgLyogICBFUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDoxOyAgICAgICAgICAgICAgLyogICBFTkQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDOjE7ICAgICAgICAgICAgICAgLyogICBUQyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNSOjE7ICAgICAgICAgICAgICAgLyogICBTUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERMOjE7ICAgICAgICAgICAgICAgLyogICBETCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERXOjE7ICAgICAgICAgICAgICAgLyogICBEVyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERFUjoxOyAgICAgICAgICAgICAgLyogICBERVIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1PREU6MTsgICAgICAgICAgICAgLyogICBNT0RFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVE1TSzoxOyAgICAgICAgICAgLyogICBJTlRNU0sgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0hTVEFUOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0hDVFJMICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFVEVOOjE7ICAgICAgICAgICAgLyogICBTRVRFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUkVOOjE7ICAgICAgICAgICAgLyogICBDTFJFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNURzoxOyAgICAgICAgICAgICAgLyogICBTVEcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXUlNUOjE7ICAgICAgICAgICAgLyogICBTV1JTVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUlJROjE7ICAgICAgICAgICAgLyogICBDTFJSUSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUkVORDoxOyAgICAgICAgICAgLyogICBDTFJFTkQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUlRDOjE7ICAgICAgICAgICAgLyogICBDTFJUQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFVFNVUzoxOyAgICAgICAgICAgLyogICBTRVRTVVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUlNVUzoxOyAgICAgICAgICAgLyogICBDTFJTVVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFVElOVE1TSzoxOyAgICAgICAgLyogICBTRVRJTlRNU0sgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMUklOVE1TSzoxOyAgICAgICAgLyogICBDTFJJTlRNU0sgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0hDVFJMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0hDRkcgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFTDozOyAgICAgICAgICAgICAgLyogICBTRUwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFUUQ6MTsgICAgICAgICAgICAgLyogICBSRVFEICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPRU46MTsgICAgICAgICAgICAgLyogICBMT0VOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhJRU46MTsgICAgICAgICAgICAgLyogICBISUVOICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExWTDoxOyAgICAgICAgICAgICAgLyogICBMVkwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFNOjM7ICAgICAgICAgICAgICAgLyogICBBTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEUzo0OyAgICAgICAgICAgICAgLyogICBTRFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEREUzo0OyAgICAgICAgICAgICAgLyogICBERFMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBRDoxOyAgICAgICAgICAgICAgLyogICBTQUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERBRDoxOyAgICAgICAgICAgICAgLyogICBEQUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNOjE7ICAgICAgICAgICAgICAgLyogICBUTSAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERFTToxOyAgICAgICAgICAgICAgLyogICBERU0gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDTToxOyAgICAgICAgICAgICAgLyogICBUQ00gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNCRToxOyAgICAgICAgICAgICAgLyogICBTQkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTRUw6MTsgICAgICAgICAgICAgLyogICBSU0VMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTVzoxOyAgICAgICAgICAgICAgLyogICBSU1cgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJFTjoxOyAgICAgICAgICAgICAgLyogICBSRU4gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNUzoxOyAgICAgICAgICAgICAgLyogICBETVMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0hDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0hJVFZMICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUVkw6MTY7ICAgICAgICAgICAgLyogICBJVFZMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0hJVFZMOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ0hFWFQgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDQTo0OyAgICAgICAgICAgICAgLyogICBTQ0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERDQTo0OyAgICAgICAgICAgICAgLyogICBEQ0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IENIRVhUOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ0hFWFQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTlhMQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5YTEE6MzI7ICAgICAgICAgICAgLyogICBOWExBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTlhMQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ1JMQSAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENSTEE6MzI7ICAgICAgICAgICAgLyogICBDUkxBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQ1JMQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMDcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENUUkwgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSOjE7ICAgICAgICAgICAgICAgLyogICBQUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExWSU5UOjE7ICAgICAgICAgICAgLyogICBMVklOVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExEQ0E6NDsgICAgICAgICAgICAgLyogICBMRENBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExXQ0E6NDsgICAgICAgICAgICAgLyogICBMV0NBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRU4gICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMDoxOyAgICAgICAgICAgICAgLyogICBFTjAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMToxOyAgICAgICAgICAgICAgLyogICBFTjEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMjoxOyAgICAgICAgICAgICAgLyogICBFTjIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMzoxOyAgICAgICAgICAgICAgLyogICBFTjMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVONDoxOyAgICAgICAgICAgICAgLyogICBFTjQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVONToxOyAgICAgICAgICAgICAgLyogICBFTjUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVONjoxOyAgICAgICAgICAgICAgLyogICBFTjYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVONzoxOyAgICAgICAgICAgICAgLyogICBFTjcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRU47ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRVIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMDoxOyAgICAgICAgICAgICAgLyogICBFUjAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMToxOyAgICAgICAgICAgICAgLyogICBFUjEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMjoxOyAgICAgICAgICAgICAgLyogICBFUjIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMzoxOyAgICAgICAgICAgICAgLyogICBFUjMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSNDoxOyAgICAgICAgICAgICAgLyogICBFUjQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSNToxOyAgICAgICAgICAgICAgLyogICBFUjUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSNjoxOyAgICAgICAgICAgICAgLyogICBFUjYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSNzoxOyAgICAgICAgICAgICAgLyogICBFUjcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRVI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRU5EICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDA6MTsgICAgICAgICAgICAgLyogICBFTkQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDE6MTsgICAgICAgICAgICAgLyogICBFTkQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDI6MTsgICAgICAgICAgICAgLyogICBFTkQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDM6MTsgICAgICAgICAgICAgLyogICBFTkQzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDQ6MTsgICAgICAgICAgICAgLyogICBFTkQ0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDU6MTsgICAgICAgICAgICAgLyogICBFTkQ1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDY6MTsgICAgICAgICAgICAgLyogICBFTkQ2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDc6MTsgICAgICAgICAgICAgLyogICBFTkQ3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRU5EOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfVEMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMDoxOyAgICAgICAgICAgICAgLyogICBUQzAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMToxOyAgICAgICAgICAgICAgLyogICBUQzEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMjoxOyAgICAgICAgICAgICAgLyogICBUQzIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMzoxOyAgICAgICAgICAgICAgLyogICBUQzMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDNDoxOyAgICAgICAgICAgICAgLyogICBUQzQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDNToxOyAgICAgICAgICAgICAgLyogICBUQzUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDNjoxOyAgICAgICAgICAgICAgLyogICBUQzYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDNzoxOyAgICAgICAgICAgICAgLyogICBUQzcgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfVEM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfU1VTICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzA6MTsgICAgICAgICAgICAgLyogICBTVVMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzE6MTsgICAgICAgICAgICAgLyogICBTVVMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzI6MTsgICAgICAgICAgICAgLyogICBTVVMyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzM6MTsgICAgICAgICAgICAgLyogICBTVVMzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzQ6MTsgICAgICAgICAgICAgLyogICBTVVM0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzU6MTsgICAgICAgICAgICAgLyogICBTVVM1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzY6MTsgICAgICAgICAgICAgLyogICBTVVM2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzc6MTsgICAgICAgICAgICAgLyogICBTVVM3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfU1VTOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfODE1IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRENUUkwgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSOjE7ICAgICAgICAgICAgICAgLyogICBQUiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExWSU5UOjE7ICAgICAgICAgICAgLyogICBMVklOVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExEQ0E6NDsgICAgICAgICAgICAgLyogICBMRENBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExXQ0E6NDsgICAgICAgICAgICAgLyogICBMV0NBICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRENUUkw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRU4gICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOODoxOyAgICAgICAgICAgICAgLyogICBFTjggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOOToxOyAgICAgICAgICAgICAgLyogICBFTjkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTA6MTsgICAgICAgICAgICAgLyogICBFTjEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTE6MTsgICAgICAgICAgICAgLyogICBFTjExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTI6MTsgICAgICAgICAgICAgLyogICBFTjEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTM6MTsgICAgICAgICAgICAgLyogICBFTjEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTQ6MTsgICAgICAgICAgICAgLyogICBFTjE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVOMTU6MTsgICAgICAgICAgICAgLyogICBFTjE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRU47ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRVIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSODoxOyAgICAgICAgICAgICAgLyogICBFUjggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSOToxOyAgICAgICAgICAgICAgLyogICBFUjkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTA6MTsgICAgICAgICAgICAgLyogICBFUjEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTE6MTsgICAgICAgICAgICAgLyogICBFUjExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTI6MTsgICAgICAgICAgICAgLyogICBFUjEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTM6MTsgICAgICAgICAgICAgLyogICBFUjEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTQ6MTsgICAgICAgICAgICAgLyogICBFUjE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSMTU6MTsgICAgICAgICAgICAgLyogICBFUjE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRVI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfRU5EICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDg6MTsgICAgICAgICAgICAgLyogICBFTkQ4ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDk6MTsgICAgICAgICAgICAgLyogICBFTkQ5ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDEwOjE7ICAgICAgICAgICAgLyogICBFTkQxMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDExOjE7ICAgICAgICAgICAgLyogICBFTkQxMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDEyOjE7ICAgICAgICAgICAgLyogICBFTkQxMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDEzOjE7ICAgICAgICAgICAgLyogICBFTkQxMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDE0OjE7ICAgICAgICAgICAgLyogICBFTkQxNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVORDE1OjE7ICAgICAgICAgICAgLyogICBFTkQxNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfRU5EOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfVEMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDODoxOyAgICAgICAgICAgICAgLyogICBUQzggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDOToxOyAgICAgICAgICAgICAgLyogICBUQzkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTA6MTsgICAgICAgICAgICAgLyogICBUQzEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTE6MTsgICAgICAgICAgICAgLyogICBUQzExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTI6MTsgICAgICAgICAgICAgLyogICBUQzEyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTM6MTsgICAgICAgICAgICAgLyogICBUQzEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTQ6MTsgICAgICAgICAgICAgLyogICBUQzE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRDMTU6MTsgICAgICAgICAgICAgLyogICBUQzE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfVEM7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRFNUQVRfU1VTICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzg6MTsgICAgICAgICAgICAgLyogICBTVVM4ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzk6MTsgICAgICAgICAgICAgLyogICBTVVM5ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzEwOjE7ICAgICAgICAgICAgLyogICBTVVMxMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzExOjE7ICAgICAgICAgICAgLyogICBTVVMxMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzEyOjE7ICAgICAgICAgICAgLyogICBTVVMxMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzEzOjE7ICAgICAgICAgICAgLyogICBTVVMxMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzE0OjE7ICAgICAgICAgICAgLyogICBTVVMxNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNVUzE1OjE7ICAgICAgICAgICAgLyogICBTVVMxNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRFNUQVRfU1VTOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMDEgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMF9SSUQ6MjsgICAgICAgICAgLyogICBDSDBfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMF9NSUQ6NzsgICAgICAgICAgLyogICBDSDBfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMV9SSUQ6MjsgICAgICAgICAgLyogICBDSDFfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMV9NSUQ6NzsgICAgICAgICAgLyogICBDSDFfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMjMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMl9SSUQ6MjsgICAgICAgICAgLyogICBDSDJfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMl9NSUQ6NzsgICAgICAgICAgLyogICBDSDJfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIM19SSUQ6MjsgICAgICAgICAgLyogICBDSDNfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIM19NSUQ6NzsgICAgICAgICAgLyogICBDSDNfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfNDUgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINF9SSUQ6MjsgICAgICAgICAgLyogICBDSDRfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINF9NSUQ6NzsgICAgICAgICAgLyogICBDSDRfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINV9SSUQ6MjsgICAgICAgICAgLyogICBDSDVfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINV9NSUQ6NzsgICAgICAgICAgLyogICBDSDVfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfNjcgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINl9SSUQ6MjsgICAgICAgICAgLyogICBDSDZfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENINl9NSUQ6NzsgICAgICAgICAgLyogICBDSDZfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIN19SSUQ6MjsgICAgICAgICAgLyogICBDSDdfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIN19NSUQ6NzsgICAgICAgICAgLyogICBDSDdfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfODkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIOF9SSUQ6MjsgICAgICAgICAgLyogICBDSDhfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIOF9NSUQ6NzsgICAgICAgICAgLyogICBDSDhfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIOV9SSUQ6MjsgICAgICAgICAgLyogICBDSDlfUklEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIOV9NSUQ6NzsgICAgICAgICAgLyogICBDSDlfTUlEICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMTAxMSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTBfUklEOjI7ICAgICAgICAgLyogICBDSDEwX1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTBfTUlEOjc7ICAgICAgICAgLyogICBDSDEwX01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTFfUklEOjI7ICAgICAgICAgLyogICBDSDExX1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTFfTUlEOjc7ICAgICAgICAgLyogICBDSDExX01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMTIxMyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTJfUklEOjI7ICAgICAgICAgLyogICBDSDEyX1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTJfTUlEOjc7ICAgICAgICAgLyogICBDSDEyX01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTNfUklEOjI7ICAgICAgICAgLyogICBDSDEzX1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTNfTUlEOjc7ICAgICAgICAgLyogICBDSDEzX01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X2RtYWNfMTQxNSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IERNQUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE1BUlMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTRfUklEOjI7ICAgICAgICAgLyogICBDSDE0X1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTRfTUlEOjc7ICAgICAgICAgLyogICBDSDE0X01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTVfUklEOjI7ICAgICAgICAgLyogICBDSDE1X1JJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENIMTVfTUlEOjc7ICAgICAgICAgLyogICBDSDE1X01JRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRE1BUlM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZSBETUFDMCAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAwMDApCS8qIERNQUMwICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMSAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAwNDApCS8qIERNQUMxICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMiAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAwODApCS8qIERNQUMyICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMyAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAwQzApCS8qIERNQUMzICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDNCAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAxMDApCS8qIERNQUM0ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDNSAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAxNDApCS8qIERNQUM1ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDNiAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAxODApCS8qIERNQUM2ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDNyAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDAxQzApCS8qIERNQUM3ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDOCAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA0MDApCS8qIERNQUM4ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDOSAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA0NDApCS8qIERNQUM5ICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA0ODApCS8qIERNQUMxMCBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTEgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA0QzApCS8qIERNQUMxMSBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTIgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA1MDApCS8qIERNQUMxMiBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTMgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA1NDApCS8qIERNQUMxMyBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTQgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA1ODApCS8qIERNQUMxNCBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTUgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfbiAqKTB4RTgyMDA1QzApCS8qIERNQUMxNSBBZGRyZXNzICovDQotDQotI2RlZmluZSBETUFDMDcgICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY18wNyAgICopMHhFODIwMDMwMCkJLyogRE1BQzAtNyAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzgxNSAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfODE1ICAqKTB4RTgyMDA3MDApCS8qIERNQUM4LTE1IEFkZHJlc3MgKi8NCi0NCi0jZGVmaW5lIERNQUMwMSAgICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzAxICAgKikweEZDRkUxMDAwKQkvKiBETUFDMC0xICAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzIzICAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfMjMgICAqKTB4RkNGRTEwMDQpCS8qIERNQUMyLTMgICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDNDUgICAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY180NSAgICopMHhGQ0ZFMTAwOCkJLyogRE1BQzQtNSAgIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUM2NyAgICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzY3ICAgKikweEZDRkUxMDBDKQkvKiBETUFDNi03ICAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzg5ICAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfODkgICAqKTB4RkNGRTEwMTApCS8qIERNQUM4LTkgICBBZGRyZXNzICovDQotI2RlZmluZSBETUFDMTAxMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfZG1hY18xMDExICopMHhGQ0ZFMTAxNCkJLyogRE1BQzEwLTExIEFkZHJlc3MgKi8NCi0jZGVmaW5lIERNQUMxMjEzICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9kbWFjXzEyMTMgKikweEZDRkUxMDE4KQkvKiBETUFDMTItMTMgQWRkcmVzcyAqLw0KLSNkZWZpbmUgRE1BQzE0MTUgKCoodm9sYXRpbGUgc3RydWN0IHN0X2RtYWNfMTQxNSAqKTB4RkNGRTEwMUMpCS8qIERNQUMxNC0xNSBBZGRyZXNzICovDQotDQotI2VuZGlmIC8qIF9fRE1BQ19JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvaW50Y19pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9pbnRjX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJlNjE1MWIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9pbnRjX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NjM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICAgOiBpbnRjX2lvZGVmaW5lLmgNCi0qIFZlcnNpb24gICAgICAgOiAwLjAxDQotKiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotKiBUb29sLUNoYWluICAgIDogRFMtNSBWZXIgNS4xMw0KLSogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi0qICAgICAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX0lOVENfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX0lOVENfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MCAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1c0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c0ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzYgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1c3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c3ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzkgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cxMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzEyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzEyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1cxMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNXMTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVzE1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVzE1ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUE1VSVJRMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUE1VSVJRMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENPTU1SWDA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENPTU1SWDAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDT01NVFgwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDT01NVFgwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RJSVJRMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RJSVJRMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUlExOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUlExICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJRMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUlE0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUlE0ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJRNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElSUTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJUlE3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJUlE3ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUEwzMTBFUlI6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUEwzMTBFUlIgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDY6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UODoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UOCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMDoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTE6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTEgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEyOjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMzoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTQ6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTQgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE1OjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDE1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBETUFFUlI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBETUFFUlIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDIgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFVTQkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFVTQkkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBVU0JJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBVU0JJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfVklfVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzBfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgR1IzX1ZMSU5FMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDA6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFMwX1ZGSUVMRDAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjFfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjNfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjVfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjA6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjZfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTA6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBTMF9XTElORTAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVklfVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgUzFfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWMl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMDoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElWNF9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMDoxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgIFMxX1dMSU5FMCAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMwOjE7ICAgICAgICAgICAgICAgICAgLyogICBPSVJfVklfVlNZTkMwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMDoxOyAgICAgICAgICAgICAgICAgIC8qICAgT0lSX0xPX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9WU1lOQ0VSUjA6MTsgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBPSVJfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDMgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVY3X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIwOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVY4X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMDoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgT0lSX1dMSU5FMCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMwX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMwX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMwX1ZTWU5DRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIEdSM19WTElORTEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQxOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBTMF9WRklFTEQxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVYxX1ZCVUZFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVYxX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVYzX1ZCVUZFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVYzX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVY1X1ZCVUZFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVY1X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVY2X1ZCVUZFUlIxOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVY2X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUxOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgUzBfV0xJTkUxICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMxX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMxX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMToxOyAgICAgICAgICAgICAgICAgICAvKiAgIFMxX1ZTWU5DRVJSMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDE6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIFMxX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjJfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjRfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTE6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBTMV9XTElORTEgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMToxOyAgICAgICAgICAgICAgICAgIC8qICAgT0lSX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzE6MTsgICAgICAgICAgICAgICAgICAvKiAgIE9JUl9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfVkxJTkUxOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBPSVJfVkxJTkUxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZGSUVMRDE6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgT0lSX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjdfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjE6MTsgICAgICAgICAgICAgICAgICAgLyogICBJVjhfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUxOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBPSVJfV0xJTkUxICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU1SREk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSU1SREkgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElNUjJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElNUjJJMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTVIySTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJTVIySTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSkVESToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSkVESSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEpEVEk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEpEVEkgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHg0ICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENNUDA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENNUDAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDTVAxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDTVAxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElOVDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJTlQyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJTlQyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE9TVE1JMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBPU1RNSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBPU1RNSTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ01JOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFdUT1VUOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFdUT1VUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJVEk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJVEkgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTBCOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBCICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kwQzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTBWOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBWICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kwRToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTFBOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFBICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kxQjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kxQiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMVYgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTFVOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFVICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kyQToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kyQSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMkIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTJWOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJWICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kyVToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kyVSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0E6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0EgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTNCOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNCICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0kzQzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0Q6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0QgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTNWOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNWICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0k0QToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QSAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4NSAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0k0QjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRHSTREOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTREICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUR0k0VjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUR0k0ViAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ01JMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENNSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENNSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTR0RFSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNHREVJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTR0RFSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQURJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQURJICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEFEV0FSOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEFEV0FSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJUlRJMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSUkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSUk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUk0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lSVEk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lSVEk0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTUgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTU0lUWEk1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTU0lUWEk1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BESUZJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BESUZJICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRFSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSSTAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkwICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDYgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNUSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBOQUtJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQUxJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRNT0kwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBURUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBURUkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUkkxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1RJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE5BS0kxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBBTEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBBTEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRFSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSSTIgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTVEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTVEkyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTkFLSTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEFMSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEFMSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUTU9JMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVEVJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSTMgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNUSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBOQUtJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQUxJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRNT0kzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRNT0kzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHg2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHg3ICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlJJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEkyICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkkzICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkk0ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEk0ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQlJJNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEk1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEk1ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJNToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEJSSTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkk2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkk2ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUlhJNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRYSTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBCUkk3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBCUkk3ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVJJNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJNyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJYSTc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJYSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUWEk3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUWEk3ICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgR0VSSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgR0VSSSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFJGSToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFJGSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRlJYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4OCAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENGUlhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVJJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENGUlhJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVJJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENGUlhJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVJJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENGUlhJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVJJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVJJNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQRUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFJJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQRUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFJJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQRUkyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFJJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQRUkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFJJMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTMgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNQRUk0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUk0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTUFJJNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTUFJJNCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElFQkJURDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElFQkJURCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRUJCVEVSUjoxOyAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRUJCVEVSUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRTVEE6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlRTVEEgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDkgICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRWOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlRWICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElTWToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElTWSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRVJSOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRVJSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVRBUkc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVRBUkcgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElTRUM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIElTRUMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJQlVGOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJQlVGICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSVJFQURZOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgSVJFQURZICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEZMU1RFOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEZMU1RFICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBGTFRFTkRJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBGTFRFTkRJICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMEk6MTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRkxUUkVRMEkgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTFJOjE7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEZMVFJFUTFJICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBNTUMwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBNTUMwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTU1DMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE1NQzI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1NQzIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTREhJMF8zOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTREhJMF8zICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0RISTBfMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTREhJMV8zOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTREhJMV8zICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBBUk06MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBBUk0gICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgUFJEOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgUFJEICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIENVUDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIENVUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVQUkxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTIgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHg5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxMCAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTUxCQ0k6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgTUxCQ0kgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIE1MQlNJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIE1MQlNJICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBEUkMwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBEUkMwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRFJDMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRFJDMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfVDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9SOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9SICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1M6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX1MgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfTToxOyAgICAgICAgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfTSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9UOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1I6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1IgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUzoxOyAgICAgICAgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfUyAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9NOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9NICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVSSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEkwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRFSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFUkkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFUkkxICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTEgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBSWEkxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBSWEkxICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVFhJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRFSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRVRIRVJJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRVRIRVJJICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBDRVVJOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBDRVVJICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSU5UX0NTSUgwVElSICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSRToxOyAgICAgICAgICAgICAgICAgIC8qICAgSU5UX0NTSUgwVElSRSAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJQzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElOVF9DU0lIMVRJQyAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJSkM6MTsgICAgICAgICAgICAgICAgICAvKiAgIElOVF9DU0lIMVRJSkMgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBIMlhNTEJfRVJSSU5UOjE7ICAgICAgICAgICAgICAgICAgLyogICBIMlhNTEJfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgSDJYSUMxX0VSUklOVDoxOyAgICAgICAgICAgICAgICAgIC8qICAgSDJYSUMxX0VSUklOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkxX0VSUklOVDoxOyAgICAgICAgICAgICAgICAvKiAgIFgySFBFUkkxX0VSUklOVCAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDEyICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTJfRVJSSU5UOjE7ICAgICAgICAgICAgICAgIC8qICAgWDJIUEVSSTJfRVJSSU5UICovDQotICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTM0X0VSUklOVDoxOyAgICAgICAgICAgICAgIC8qICAgWDJIUEVSSTM0X0VSUklOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkk1X0VSUklOVDoxOyAgICAgICAgICAgICAgICAvKiAgIFgySFBFUkk1X0VSUklOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkk2N19FUlJJTlQ6MTsgICAgICAgICAgICAgICAvKiAgIFgySFBFUkk2N19FUlJJTlQgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBYMkhEQkdSX0VSUklOVDoxOyAgICAgICAgICAgICAgICAgLyogICBYMkhEQkdSX0VSUklOVCAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFBSUkk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFBSUkkgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRkVJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRkVJMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgT0ZGSTAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFBGVkVJMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBJRkVJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBJRkVJMSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgT0ZGSTEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFBGVkVJMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCA6MjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTMgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMyAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOToxOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMjc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMxICAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDE0ICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMzc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0ODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNDk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNTg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MyAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxNSAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjUgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNjg6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzE6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MzoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UNzc6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzcgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3OToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3OSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MjoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODM6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4ODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UODk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UODkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MToxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTI6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NDoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTU6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTUgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX0gSUNEeHh4MTU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi10eXBlZGVmIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEeHh4MTYgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5ODoxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UOTk6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTkgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDc6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTExOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTExICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExODoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDExOCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNyAgICAqLw0KLSAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19IElDRHh4eDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRHh4eDE3ICAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyODoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyOCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjkgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMwOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzI6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMzOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzU6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzUgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM2OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzg6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM5OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MDoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDE6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQyOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MzoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MyAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDQ6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ1OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDc6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDcgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ4OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0OSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTM6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU0OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NToxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTY6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU3OjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1ODoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1OCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTk6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTkgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXR5cGVkZWYgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0R4eHgxOCAgICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjA6MTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYxOjE7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MjoxOyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIDoyOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBJQ0R4eHgxODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLQ0KLXN0cnVjdCBzdF9pbnRjIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSU5UQyAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNERENSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRW5hYmxlOjE7ICAgICAgICAgICAgICAgICAgLyogICBFbmFibGUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0REQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDVFIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUTGluZXNOdW1iZXI6NTsgICAgICAgICAgIC8qICAgSVRMaW5lc051bWJlciAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUFVOdW1iZXI6MzsgICAgICAgICAgICAgICAvKiAgIENQVU51bWJlciAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNlY3VyaXR5RXh0bjoxOyAgICAgICAgICAgIC8qICAgU2VjdXJpdHlFeHRuICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExTUEk6NTsgICAgICAgICAgICAgICAgICAgIC8qICAgTFNQSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJSURSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJbXBsZW1lbnRlcjoxMjsgICAgICAgICAgICAvKiAgIEltcGxlbWVudGVyICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJldmlzaW9uOjQ7ICAgICAgICAgICAgICAgIC8qICAgUmV2aXNpb24gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWYXJpYW50OjQ7ICAgICAgICAgICAgICAgICAvKiAgIFZhcmlhbnQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFByb2R1Y3RJRDo4OyAgICAgICAgICAgICAgIC8qICAgUHJvZHVjdElEICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJSURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMTE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HWzE5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBJQ0RJU1JuICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MCAgSUNESVNSMDsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEgIElDRElTUjE7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgyICBJQ0RJU1IyOyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MyAgSUNESVNSMzsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDQgIElDRElTUjQ7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg1ICBJQ0RJU1I1OyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NiAgSUNESVNSNjsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1I2ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDcgIElDRElTUjc7ICAgICAgICAgICAgICAgICAgLyogSUNESVNSNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg4ICBJQ0RJU1I4OyAgICAgICAgICAgICAgICAgIC8qIElDRElTUjggICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OSAgSUNESVNSOTsgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1I5ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEwIElDRElTUjEwOyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMSBJQ0RJU1IxMTsgICAgICAgICAgICAgICAgIC8qIElDRElTUjExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTIgSUNESVNSMTI7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEzIElDRElTUjEzOyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNCBJQ0RJU1IxNDsgICAgICAgICAgICAgICAgIC8qIElDRElTUjE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTUgSUNESVNSMTU7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE2IElDRElTUjE2OyAgICAgICAgICAgICAgICAgLyogSUNESVNSMTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNyBJQ0RJU1IxNzsgICAgICAgICAgICAgICAgIC8qIElDRElTUjE3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTggSUNESVNSMTg7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1IxOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzUyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVNFUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9OR1sxOV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgSUNESVNFUm4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDAgIElDRElTRVIwOyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxICBJQ0RJU0VSMTsgICAgICAgICAgICAgICAgIC8qIElDRElTRVIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MiAgSUNESVNFUjI7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDMgIElDRElTRVIzOyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg0ICBJQ0RJU0VSNDsgICAgICAgICAgICAgICAgIC8qIElDRElTRVI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NSAgSUNESVNFUjU7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDYgIElDRElTRVI2OyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg3ICBJQ0RJU0VSNzsgICAgICAgICAgICAgICAgIC8qIElDRElTRVI3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OCAgSUNESVNFUjg7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDkgIElDRElTRVI5OyAgICAgICAgICAgICAgICAgLyogSUNESVNFUjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMCBJQ0RJU0VSMTA7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTEgSUNESVNFUjExOyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEyIElDRElTRVIxMjsgICAgICAgICAgICAgICAgLyogSUNESVNFUjEyICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMyBJQ0RJU0VSMTM7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTQgSUNESVNFUjE0OyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE1IElDRElTRVIxNTsgICAgICAgICAgICAgICAgLyogSUNESVNFUjE1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNiBJQ0RJU0VSMTY7ICAgICAgICAgICAgICAgIC8qIElDRElTRVIxNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTcgSUNESVNFUjE3OyAgICAgICAgICAgICAgICAvKiBJQ0RJU0VSMTcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE4IElDRElTRVIxODsgICAgICAgICAgICAgICAgLyogSUNESVNFUjE4ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElTRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMls1Ml07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRVIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkdbMTldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIElDRElDRVJuICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgwICBJQ0RJQ0VSMDsgICAgICAgICAgICAgICAgIC8qIElDRElDRVIwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MSAgSUNESUNFUjE7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDIgIElDRElDRVIyOyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgzICBJQ0RJQ0VSMzsgICAgICAgICAgICAgICAgIC8qIElDRElDRVIzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NCAgSUNESUNFUjQ7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDUgIElDRElDRVI1OyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg2ICBJQ0RJQ0VSNjsgICAgICAgICAgICAgICAgIC8qIElDRElDRVI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NyAgSUNESUNFUjc7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDggIElDRElDRVI4OyAgICAgICAgICAgICAgICAgLyogSUNESUNFUjggICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg5ICBJQ0RJQ0VSOTsgICAgICAgICAgICAgICAgIC8qIElDRElDRVI5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTAgSUNESUNFUjEwOyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDExIElDRElDRVIxMTsgICAgICAgICAgICAgICAgLyogSUNESUNFUjExICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMiBJQ0RJQ0VSMTI7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTMgSUNESUNFUjEzOyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE0IElDRElDRVIxNDsgICAgICAgICAgICAgICAgLyogSUNESUNFUjE0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNSBJQ0RJQ0VSMTU7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTYgSUNESUNFUjE2OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ0VSMTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE3IElDRElDRVIxNzsgICAgICAgICAgICAgICAgLyogSUNESUNFUjE3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxOCBJQ0RJQ0VSMTg7ICAgICAgICAgICAgICAgIC8qIElDRElDRVIxOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJQ0VSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azNbNTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HWzE5XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBJQ0RJU1BSbiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MCAgSUNESVNQUjA7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEgIElDRElTUFIxOyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgyICBJQ0RJU1BSMjsgICAgICAgICAgICAgICAgIC8qIElDRElTUFIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MyAgSUNESVNQUjM7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDQgIElDRElTUFI0OyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg1ICBJQ0RJU1BSNTsgICAgICAgICAgICAgICAgIC8qIElDRElTUFI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NiAgSUNESVNQUjY7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDcgIElDRElTUFI3OyAgICAgICAgICAgICAgICAgLyogSUNESVNQUjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg4ICBJQ0RJU1BSODsgICAgICAgICAgICAgICAgIC8qIElDRElTUFI4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OSAgSUNESVNQUjk7ICAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEwIElDRElTUFIxMDsgICAgICAgICAgICAgICAgLyogSUNESVNQUjEwICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMSBJQ0RJU1BSMTE7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTIgSUNESVNQUjEyOyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEzIElDRElTUFIxMzsgICAgICAgICAgICAgICAgLyogSUNESVNQUjEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNCBJQ0RJU1BSMTQ7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTUgSUNESVNQUjE1OyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE2IElDRElTUFIxNjsgICAgICAgICAgICAgICAgLyogSUNESVNQUjE2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNyBJQ0RJU1BSMTc7ICAgICAgICAgICAgICAgIC8qIElDRElTUFIxNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTggSUNESVNQUjE4OyAgICAgICAgICAgICAgICAvKiBJQ0RJU1BSMTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVNQUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzUyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNQUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9OR1sxOV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgSUNESUNQUm4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDAgIElDRElDUFIwOyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxICBJQ0RJQ1BSMTsgICAgICAgICAgICAgICAgIC8qIElDRElDUFIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MiAgSUNESUNQUjI7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDMgIElDRElDUFIzOyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg0ICBJQ0RJQ1BSNDsgICAgICAgICAgICAgICAgIC8qIElDRElDUFI0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NSAgSUNESUNQUjU7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDYgIElDRElDUFI2OyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg3ICBJQ0RJQ1BSNzsgICAgICAgICAgICAgICAgIC8qIElDRElDUFI3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4OCAgSUNESUNQUjg7ICAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDkgIElDRElDUFI5OyAgICAgICAgICAgICAgICAgLyogSUNESUNQUjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMCBJQ0RJQ1BSMTA7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTEgSUNESUNQUjExOyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDEyIElDRElDUFIxMjsgICAgICAgICAgICAgICAgLyogSUNESUNQUjEyICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMyBJQ0RJQ1BSMTM7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTQgSUNESUNQUjE0OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE1IElDRElDUFIxNTsgICAgICAgICAgICAgICAgLyogSUNESUNQUjE1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNiBJQ0RJQ1BSMTY7ICAgICAgICAgICAgICAgIC8qIElDRElDUFIxNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTcgSUNESUNQUjE3OyAgICAgICAgICAgICAgICAvKiBJQ0RJQ1BSMTcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE4IElDRElDUFIxODsgICAgICAgICAgICAgICAgLyogSUNESUNQUjE4ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IG47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElDUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVs1Ml07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDREFCUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkdbMTldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIElDREFCUm4gICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgwICBJQ0RBQlIwOyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MSAgSUNEQUJSMTsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDIgIElDREFCUjI7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgzICBJQ0RBQlIzOyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NCAgSUNEQUJSNDsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlI0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDUgIElDREFCUjU7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg2ICBJQ0RBQlI2OyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4NyAgSUNEQUJSNzsgICAgICAgICAgICAgICAgICAvKiBJQ0RBQlI3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDggIElDREFCUjg7ICAgICAgICAgICAgICAgICAgLyogSUNEQUJSOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHg5ICBJQ0RBQlI5OyAgICAgICAgICAgICAgICAgIC8qIElDREFCUjkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTAgSUNEQUJSMTA7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDExIElDREFCUjExOyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxMiBJQ0RBQlIxMjsgICAgICAgICAgICAgICAgIC8qIElDREFCUjEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTMgSUNEQUJSMTM7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE0IElDREFCUjE0OyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxNSBJQ0RBQlIxNTsgICAgICAgICAgICAgICAgIC8qIElDREFCUjE1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgSUNEeHh4MTYgSUNEQUJSMTY7ICAgICAgICAgICAgICAgICAvKiBJQ0RBQlIxNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIElDRHh4eDE3IElDREFCUjE3OyAgICAgICAgICAgICAgICAgLyogSUNEQUJSMTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBJQ0R4eHgxOCBJQ0RBQlIxODsgICAgICAgICAgICAgICAgIC8qIElDREFCUjE4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RBQlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azZbMTgwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzM6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c1Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c2ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzc6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzg6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXOCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c5Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzExOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVVJUlEwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFBNVUlSUTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVJYMDo4OyAgICAgICAgICAgICAgICAgLyogICBDT01NUlgwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTU1UWDA6ODsgICAgICAgICAgICAgICAgIC8qICAgQ09NTVRYMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVElJUlEwOjg7ICAgICAgICAgICAgICAgICAvKiAgIENUSUlSUTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOCAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlEzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOSAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEwzMTBFUlI6ODsgICAgICAgICAgICAgICAgLyogICBQTDMxMEVSUiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDA6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMjo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMzo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNjo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ2ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTIgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNzo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDg6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTA6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTE6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEyOjg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTIgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMzo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEzICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTQ6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxNCAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTU6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxNSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUVSUjo4OyAgICAgICAgICAgICAgICAgIC8qICAgRE1BRVJSICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTggICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVVNCSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVU0JJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFVTQkkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMwOjg7ICAgICAgICAgICAgLyogICBTMF9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIxOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMwX0xPX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjA6ODsgICAgICAgICAgICAvKiAgIFMwX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUwOjg7ICAgICAgICAgICAgICAvKiAgIEdSM19WTElORTAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMDo4OyAgICAgICAgICAgICAgLyogICBTMF9WRklFTEQwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYxX1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjFfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYzX1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjNfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY1X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjVfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY2X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjZfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTA6ODsgICAgICAgICAgICAgICAvKiAgIFMwX1dMSU5FMCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMwOjg7ICAgICAgICAgICAgLyogICBTMV9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMwOjg7ICAgICAgICAgICAgLyogICBTMV9MT19WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIwOjg7ICAgICAgICAgICAgLyogICBTMV9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQwOjg7ICAgICAgICAgICAgICAvKiAgIFMxX1ZGSUVMRDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYyX1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjJfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY0X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjRfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfV0xJTkUwOjg7ICAgICAgICAgICAgICAgLyogICBTMV9XTElORTAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMjMgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMDo4OyAgICAgICAgICAgLyogICBPSVJfVklfVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzA6ODsgICAgICAgICAgIC8qICAgT0lSX0xPX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVlNZTkNFUlIwOjg7ICAgICAgICAgICAvKiAgIE9JUl9WU1lOQ0VSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZGSUVMRDA6ODsgICAgICAgICAgICAgLyogICBPSVJfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVY3X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMDo4OyAgICAgICAgICAgIC8qICAgSVY4X1ZCVUZFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTA6ODsgICAgICAgICAgICAgIC8qICAgT0lSX1dMSU5FMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzE6ODsgICAgICAgICAgICAvKiAgIFMwX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzBfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMTo4OyAgICAgICAgICAgIC8qICAgUzBfVlNZTkNFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTE6ODsgICAgICAgICAgICAgIC8qICAgR1IzX1ZMSU5FMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQxOjg7ICAgICAgICAgICAgICAvKiAgIFMwX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWMV9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWM19WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWNV9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWNl9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMTo4OyAgICAgICAgICAgICAgIC8qICAgUzBfV0xJTkUxICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzE6ODsgICAgICAgICAgICAvKiAgIFMxX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzE6ODsgICAgICAgICAgICAvKiAgIFMxX0xPX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjE6ODsgICAgICAgICAgICAvKiAgIFMxX1ZTWU5DRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIyNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjI4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDE6ODsgICAgICAgICAgICAgIC8qICAgUzFfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWMl9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWNF9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTE6ODsgICAgICAgICAgICAgICAvKiAgIFMxX1dMSU5FMSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSMjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFIyOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMxOjg7ICAgICAgICAgICAvKiAgIE9JUl9WSV9WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMTo4OyAgICAgICAgICAgLyogICBPSVJfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WTElORTE6ODsgICAgICAgICAgICAgIC8qICAgT0lSX1ZMSU5FMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMTo4OyAgICAgICAgICAgICAvKiAgIE9JUl9WRklFTEQxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMzAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjdfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIxOjg7ICAgICAgICAgICAgLyogICBJVjhfVkJVRkVSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMTo4OyAgICAgICAgICAgICAgLyogICBPSVJfV0xJTkUxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRJOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgSU1SREkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjMxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgSU1SMkkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIySTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIElNUjJJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkVESTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBKRURJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpEVEk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSkRUSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjMyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01QMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVAxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENNUDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjMzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBPU1RNSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgT1NUTUkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVE9VVDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFdUT1VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRJOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBJVEkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBBOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBCOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBWOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMFYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBFOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFCOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFWOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxVTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJCOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMkIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJWOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyVTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0E6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNCOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0IgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjM5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNDOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0MgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzRDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM1Y6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRBOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFIzOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRCOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Qzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTRDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0RCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRWOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNFYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENNSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURJOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBBREkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFEV0FSOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQURXQVIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMDo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lUWEkwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJUSTI6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlRJMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lUWEkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJUSTQ6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlRJNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJNTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUk1ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJNTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSWEk1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTU6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRElGSTo4OyAgICAgICAgICAgICAgICAgIC8qICAgU1BESUZJICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkwOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBSSTAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjQ5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkxOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBSSTEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkxICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI0OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjUwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjUxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkyOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBSSTIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMjo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkyICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjUyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjUzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkzOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBSSTMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgVEkzICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1BJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNUSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBOQUtJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQUxJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVE1PSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjU5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI1OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjYwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjYxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjYyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEJSSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjYzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHRVJJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEdFUkkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkZJOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBSRkkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEk0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjY5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI2OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjcwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjcxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVEQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIElFQkJURCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRFUlI6ODsgICAgICAgICAgICAgICAgLyogICBJRUJCVEVSUiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJUU1RBOjg7ICAgICAgICAgICAgICAgIC8qICAgSUVCQlRTVEEgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjcyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJUVjo4OyAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlRWICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJU1k6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIElTWSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVSUjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJRVJSICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUQVJHOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgSVRBUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjczICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElTRUM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVNFQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJQlVGOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElCVUYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJFQURZOjg7ICAgICAgICAgICAgICAgICAgLyogICBJUkVBRFkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMU1RFOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgRkxTVEUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVEVOREk6ODsgICAgICAgICAgICAgICAgIC8qICAgRkxURU5ESSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRSRVEwSTo4OyAgICAgICAgICAgICAgICAvKiAgIEZMVFJFUTBJICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMUk6ODsgICAgICAgICAgICAgICAgLyogICBGTFRSRVExSSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIE1NQzIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMzo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMF8zICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTBfMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc2ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzE6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTBfMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8zOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMDo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMV8wICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzE6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFSTTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgQVJNICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUkQ6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFBSRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1VQOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBDVVAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0NVQUkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0NVQUkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTI6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjc5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTI6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI3OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjgwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTI6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjgxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJDSTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE1MQkNJICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUxCU0k6ODsgICAgICAgICAgICAgICAgICAgLyogICBNTEJTSSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSQzA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRFJDMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjgyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSQzE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRFJDMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1Q6ODsgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjgzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9SOjg7ICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1M6ODsgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfTTo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9NICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9UOjg7ICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1QgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSODM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI4NCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUjo4OyAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9SICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9TOjg7ICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX006ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfTSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSODQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSODYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjg3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgRVJJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjg4ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgUlhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRYSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBURUkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI4ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjg5ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhFUkk6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVUSEVSSSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSODk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMFs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTEgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVSTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDRVVJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMFRJUjo4OyAgICAgICAgICAgIC8qICAgSU5UX0NTSUgwVElSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMFRJUkU6ODsgICAgICAgICAgIC8qICAgSU5UX0NTSUgwVElSRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDFUSUM6ODsgICAgICAgICAgICAvKiAgIElOVF9DU0lIMVRJQyAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjkyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJSkM6ODsgICAgICAgICAgIC8qICAgSU5UX0NTSUgxVElKQyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIwOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjA6ODsgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjkzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjE6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UyMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMTo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTEyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjk0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYyOjg7ICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEzOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjk1ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjM6ODsgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIMlhNTEJfRVJSSU5UOjg7ICAgICAgICAgICAvKiAgIEgyWE1MQl9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSDJYSUMxX0VSUklOVDo4OyAgICAgICAgICAgLyogICBIMlhJQzFfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkxX0VSUklOVDo4OyAgICAgICAgIC8qICAgWDJIUEVSSTFfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjk1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSOTYgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTJfRVJSSU5UOjg7ICAgICAgICAgLyogICBYMkhQRVJJMl9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTM0X0VSUklOVDo4OyAgICAgICAgLyogICBYMkhQRVJJMzRfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkk1X0VSUklOVDo4OyAgICAgICAgIC8qICAgWDJIUEVSSTVfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkk2N19FUlJJTlQ6ODsgICAgICAgIC8qICAgWDJIUEVSSTY3X0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFI5NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQUjk3ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySERCR1JfRVJSSU5UOjg7ICAgICAgICAgIC8qICAgWDJIREJHUl9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFJSSTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBQUlJJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElGRUkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgSUZFSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPRkZJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE9GRkkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSOTc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFI5OCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQRlZFSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFBGVkVJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUZFSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBJRkVJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgT0ZGSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQRlZFSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFBGVkVJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBSOTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxMVsyMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDA6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTA5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEwOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTEwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTExICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTEyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTEzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTE5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjExOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTIwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTIxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTIyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDczICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTIzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgwOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODQgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg1ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODcgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg4Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4OTo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg5ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkyOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Mzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTUgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk2Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Nzo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk3ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTkgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTI5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAzICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEyOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTMwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA3ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTMxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTExICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTMyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTMzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE5ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIzICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI3ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMxICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM5ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTM5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Mzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQzICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjEzOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDU6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Nzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ3ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0ODo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDk6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0OSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUxICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE0MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Mjo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUyICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTM6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE0MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Njo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU2ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTc6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1OTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU5ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBSMTQ0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MDo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjE6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQUjE0NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbNDQ0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIwICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1cwICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cyOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1czICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c0ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzU6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXNSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c2Ojg7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVzYgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNzo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c3ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXODo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgU1c4ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFNXOSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzEwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIzICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNXMTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTVzE0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1cxNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI0ICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNVUlSUTA6ODsgICAgICAgICAgICAgICAgIC8qICAgUE1VSVJRMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDT01NUlgwOjg7ICAgICAgICAgICAgICAgICAvKiAgIENPTU1SWDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVRYMDo4OyAgICAgICAgICAgICAgICAgLyogICBDT01NVFgwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUSUlSUTA6ODsgICAgICAgICAgICAgICAgIC8qICAgQ1RJSVJRMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlExICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTDMxMEVSUjo4OyAgICAgICAgICAgICAgICAvKiAgIFBMMzEwRVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMDo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQwICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQyOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQzOjg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNDo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDU6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTIgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UODo4OyAgICAgICAgICAgICAgICAgLyogICBETUFJTlQ4ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDk6ODsgICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMDo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDEwICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMTo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDExICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTI6ODsgICAgICAgICAgICAgICAgLyogICBETUFJTlQxMiAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEzOjg7ICAgICAgICAgICAgICAgIC8qICAgRE1BSU5UMTMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNDo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDE0ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNTo4OyAgICAgICAgICAgICAgICAvKiAgIERNQUlOVDE1ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BRVJSOjg7ICAgICAgICAgICAgICAgICAgLyogICBETUFFUlIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE0WzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTggICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBVU0JJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVVNCSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMwX1ZJX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIxOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX0xPX1ZTWU5DMDo4OyAgICAgICAgICAgIC8qICAgUzBfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZTWU5DRVJSMDo4OyAgICAgICAgICAgIC8qICAgUzBfVlNZTkNFUlIwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTA6ODsgICAgICAgICAgICAgIC8qICAgR1IzX1ZMSU5FMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQwOjg7ICAgICAgICAgICAgICAvKiAgIFMwX1ZGSUVMRDAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWMV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWM19WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNV9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyMSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1dMSU5FMDo4OyAgICAgICAgICAgICAgIC8qICAgUzBfV0xJTkUwICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMxX1ZJX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzA6ODsgICAgICAgICAgICAvKiAgIFMxX0xPX1ZTWU5DMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjA6ODsgICAgICAgICAgICAvKiAgIFMxX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyMiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDA6ODsgICAgICAgICAgICAgIC8qICAgUzFfVkZJRUxEMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWMl9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjA6ODsgICAgICAgICAgICAvKiAgIElWNF9WQlVGRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTA6ODsgICAgICAgICAgICAgICAvKiAgIFMxX1dMSU5FMCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjIyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMjMgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMwOjg7ICAgICAgICAgICAvKiAgIE9JUl9WSV9WU1lOQzAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMDo4OyAgICAgICAgICAgLyogICBPSVJfTE9fVlNZTkMwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WU1lOQ0VSUjA6ODsgICAgICAgICAgIC8qICAgT0lSX1ZTWU5DRVJSMCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMDo4OyAgICAgICAgICAgICAvKiAgIE9JUl9WRklFTEQwICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY3X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjdfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY4X1ZCVUZFUlIwOjg7ICAgICAgICAgICAgLyogICBJVjhfVkJVRkVSUjAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMDo4OyAgICAgICAgICAgICAgLyogICBPSVJfV0xJTkUwICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZJX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzBfVklfVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMxOjg7ICAgICAgICAgICAgLyogICBTMF9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIxOjg7ICAgICAgICAgICAgLyogICBTMF9WU1lOQ0VSUjEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMTo4OyAgICAgICAgICAgICAgLyogICBHUjNfVkxJTkUxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDE6ODsgICAgICAgICAgICAgIC8qICAgUzBfVkZJRUxEMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyNiAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMV9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYxX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWM19WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYzX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNV9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY1X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNl9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY2X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUxOjg7ICAgICAgICAgICAgICAgLyogICBTMF9XTElORTEgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZJX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzFfVklfVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX0xPX1ZTWU5DMTo4OyAgICAgICAgICAgIC8qICAgUzFfTE9fVlNZTkMxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZTWU5DRVJSMTo4OyAgICAgICAgICAgIC8qICAgUzFfVlNZTkNFUlIxICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIyNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjI4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMTo4OyAgICAgICAgICAgICAgLyogICBTMV9WRklFTEQxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVYyX1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMTo4OyAgICAgICAgICAgIC8qICAgSVY0X1ZCVUZFUlIxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMTo4OyAgICAgICAgICAgICAgIC8qICAgUzFfV0xJTkUxICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSMjg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFIyOSAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzE6ODsgICAgICAgICAgIC8qICAgT0lSX1ZJX1ZTWU5DMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMxOjg7ICAgICAgICAgICAvKiAgIE9JUl9MT19WU1lOQzEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZMSU5FMTo4OyAgICAgICAgICAgICAgLyogICBPSVJfVkxJTkUxICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQxOjg7ICAgICAgICAgICAgIC8qICAgT0lSX1ZGSUVMRDEgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjI5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMzAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWN19WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjE6ODsgICAgICAgICAgICAvKiAgIElWOF9WQlVGRVJSMSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUxOjg7ICAgICAgICAgICAgICAvKiAgIE9JUl9XTElORTEgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SREk6ODsgICAgICAgICAgICAgICAgICAgLyogICBJTVJESSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjMxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBJTVIySTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgSU1SMkkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRURJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEpFREkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkRUSTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBKRFRJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjMyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTVAwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01QMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElOVDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjMzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJTlQyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSU5UMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIE9TVE1JMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBPU1RNSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBDTUkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdUT1VUOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgV1RPVVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVEk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIElUSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBDOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTBEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMFY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kwRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBGOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTFBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kxViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFVOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMVUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTJBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kyViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJVOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJMlUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0I6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjM5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0M6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0kzQyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNEOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJM0QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzVjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTNWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFIzOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0QiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRDOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVEdJNEMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0RDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRHSTREICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNFY6ODsgICAgICAgICAgICAgICAgICAgLyogICBUR0k0ViAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBDTUkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQ01JMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFNHREVJMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkyOjg7ICAgICAgICAgICAgICAgICAgLyogICBTR0RFSTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMzo4OyAgICAgICAgICAgICAgICAgIC8qICAgU0dERUkzICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIEFESSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURXQVI6ODsgICAgICAgICAgICAgICAgICAgLyogICBBRFdBUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSWEkxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTE6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJVFhJMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNTSUkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSVEkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTM6ODsgICAgICAgICAgICAgICAgIC8qICAgU1NJUlhJMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVRYSTMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTU0lJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJNDo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lSVEk0ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk1Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1NJSTUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEk1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFNTSVJYSTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJNTo4OyAgICAgICAgICAgICAgICAgLyogICBTU0lUWEk1ICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BESUZJOjg7ICAgICAgICAgICAgICAgICAgLyogICBTUERJRkkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkwOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjQ5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTE6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkxOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTEgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI0OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjUwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjUxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTI6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkyOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTIgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjUyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjUzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVEVJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTM6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJJMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkzOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBUSTMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBTUEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgU1RJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE5BS0kzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBBTEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBUTU9JMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkyOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTM6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkzOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjU5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEkzICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTQ6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk0Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI1OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjYwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk0ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTU6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk1Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjYxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk1ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk2Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjYyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNjo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk2ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTc6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgQlJJNyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk3Ojg7ICAgICAgICAgICAgICAgICAgICAvKiAgIEVSSTcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjYzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBUWEk3ICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdFUkk6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgR0VSSSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRkk6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIFJGSSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIENGUlhJMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgQ0ZSWEkyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENFUkkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBDVFhJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkzOjg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ0VSSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVFhJMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIENUWEkzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEk0Ojg7ICAgICAgICAgICAgICAgICAgLyogICBDRlJYSTQgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VSSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBDRVJJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEk0Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgQ1RYSTQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUkwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkxOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BFSTEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQUkkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjY5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTI6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BSSTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMjo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQVEkyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUEVJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI2OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjcwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTM6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJMyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQVEkzOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgU1BUSTMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFNQRUk0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFJJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjcxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTQ6ODsgICAgICAgICAgICAgICAgICAgLyogICBTUFRJNCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURDo4OyAgICAgICAgICAgICAgICAgIC8qICAgSUVCQlREICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVEVSUjo4OyAgICAgICAgICAgICAgICAvKiAgIElFQkJURVJSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRTVEE6ODsgICAgICAgICAgICAgICAgLyogICBJRUJCVFNUQSAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjcyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRWOjg7ICAgICAgICAgICAgICAgICAgLyogICBJRUJCVFYgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElTWTo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgSVNZICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVJSOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIElFUlIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVRBUkc6ODsgICAgICAgICAgICAgICAgICAgLyogICBJVEFSRyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjczICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNFQzo4OyAgICAgICAgICAgICAgICAgICAgLyogICBJU0VDICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElCVUY6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgSUJVRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUkVBRFk6ODsgICAgICAgICAgICAgICAgICAvKiAgIElSRUFEWSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxTVEU6ODsgICAgICAgICAgICAgICAgICAgLyogICBGTFNURSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxURU5ESTo4OyAgICAgICAgICAgICAgICAgLyogICBGTFRFTkRJICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTBJOjg7ICAgICAgICAgICAgICAgIC8qICAgRkxUUkVRMEkgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRSRVExSTo4OyAgICAgICAgICAgICAgICAvKiAgIEZMVFJFUTFJICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBNTUMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBNTUMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzI6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgTU1DMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8zOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkwXzMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMDo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMF8wICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3NTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc2ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMTo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMF8xICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzM6ODsgICAgICAgICAgICAgICAgIC8qICAgU0RISTFfMyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8wOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNESEkxXzAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMTo4OyAgICAgICAgICAgICAgICAgLyogICBTREhJMV8xICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVJNOjg7ICAgICAgICAgICAgICAgICAgICAgLyogICBBUk0gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRDo4OyAgICAgICAgICAgICAgICAgICAgIC8qICAgUFJEICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVVA6ODsgICAgICAgICAgICAgICAgICAgICAvKiAgIENVUCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkwOjg7ICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkxOjg7ICAgICAgICAgICAgICAgICAgLyogICBTQ1VBSTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRkRJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZESTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjc5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGREkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRlVJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVUZVSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI3OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjgwICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VGVUkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTA6ODsgICAgICAgICAgICAgICAgIC8qICAgU0NVRFZJMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFNDVURWSTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMjo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkyICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjgxICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMzo4OyAgICAgICAgICAgICAgICAgLyogICBTQ1VEVkkzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQkNJOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgTUxCQ0kgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJTSTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIE1MQlNJICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBEUkMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjgyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBEUkMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNjsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfVDo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjgzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1I6ODsgICAgICAgICAgICAgLyogICBMSU5JMF9JTlRfUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfUzo4OyAgICAgICAgICAgICAvKiAgIExJTkkwX0lOVF9TICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9NOjg7ICAgICAgICAgICAgIC8qICAgTElOSTBfSU5UX00gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1Q6ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSODM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI4NCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9SOjg7ICAgICAgICAgICAgIC8qICAgTElOSTFfSU5UX1IgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1M6ODsgICAgICAgICAgICAgLyogICBMSU5JMV9JTlRfUyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfTTo4OyAgICAgICAgICAgICAvKiAgIExJTkkxX0lOVF9NICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSODQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE1WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSODYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjg3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMDo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTA6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkwOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBFUkkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4NzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjg4ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMTo4OyAgICAgICAgICAgICAgICAgICAgLyogICBSWEkxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTE6ODsgICAgICAgICAgICAgICAgICAgIC8qICAgVFhJMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkxOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFRFSTEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI4ODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjg5ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEVSSTo4OyAgICAgICAgICAgICAgICAgIC8qICAgRVRIRVJJICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSODk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE2WzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTEgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIENFVUkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSOjg7ICAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSRTo4OyAgICAgICAgICAgLyogICBJTlRfQ1NJSDBUSVJFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJQzo4OyAgICAgICAgICAgIC8qICAgSU5UX0NTSUgxVElDICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjkyICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElKQzo4OyAgICAgICAgICAgLyogICBJTlRfQ1NJSDFUSUpDICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMDo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYwICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjkzICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTExOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgRUNDRTIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYxOjg7ICAgICAgICAgICAgICAgICAvKiAgIEVDQ09WRjEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTEyOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMTIgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjk0ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIyOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ09WRjI6ODsgICAgICAgICAgICAgICAgIC8qICAgRUNDT1ZGMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTM6ODsgICAgICAgICAgICAgICAgICAvKiAgIEVDQ0UxMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIzOjg7ICAgICAgICAgICAgICAgICAgLyogICBFQ0NFMjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjk1ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMzo4OyAgICAgICAgICAgICAgICAgLyogICBFQ0NPVkYzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWE1MQl9FUlJJTlQ6ODsgICAgICAgICAgIC8qICAgSDJYTUxCX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIMlhJQzFfRVJSSU5UOjg7ICAgICAgICAgICAvKiAgIEgyWElDMV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTFfRVJSSU5UOjg7ICAgICAgICAgLyogICBYMkhQRVJJMV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjk1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSOTYgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMl9FUlJJTlQ6ODsgICAgICAgICAvKiAgIFgySFBFUkkyX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMzRfRVJSSU5UOjg7ICAgICAgICAvKiAgIFgySFBFUkkzNF9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTVfRVJSSU5UOjg7ICAgICAgICAgLyogICBYMkhQRVJJNV9FUlJJTlQgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTY3X0VSUklOVDo4OyAgICAgICAgLyogICBYMkhQRVJJNjdfRVJSSU5UICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDRElQVFI5NjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESVBUUjk3ICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIREJHUl9FUlJJTlQ6ODsgICAgICAgICAgLyogICBYMkhEQkdSX0VSUklOVCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUlJJOjg7ICAgICAgICAgICAgICAgICAgICAvKiAgIFBSUkkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUZFSTA6ODsgICAgICAgICAgICAgICAgICAgLyogICBJRkVJMCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkwOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgT0ZGSTAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSOTc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElQVFI5OCAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMTo4OyAgICAgICAgICAgICAgICAgICAvKiAgIElGRUkxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0ZGSTE6ODsgICAgICAgICAgICAgICAgICAgLyogICBPRkZJMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMTo4OyAgICAgICAgICAgICAgICAgIC8qICAgUEZWRUkxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0RJUFRSOTg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azE3WzIwXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UMSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOjg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UNSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Ojg7ICAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODo4OyAgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk6ODsgICAgICAgICAgICAgICAgICAgLyogICBUSU5UOSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDE4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTA5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDIyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyMyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEwOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTEwICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyNyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTExICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQyOCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDMwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTEyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzMiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTEzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzNiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UMzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDM4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQzOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDQ2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ0OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNDkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDUwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDU4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ1OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTE5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDYyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjExOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTIwICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDY2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTIxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ2OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNjkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDcwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTIyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDczOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTIzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDc3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UNzcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDc4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ3OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODA6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgxOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODEgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Mjo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDgyICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODM6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4MyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODQ6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg1Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODUgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Njo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDg2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODc6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4NyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODg6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ4OCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg5Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UODkgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDkwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTE6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTI6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5MiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkzOjg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NDo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk0ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTU6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTY6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5NiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk3Ojg7ICAgICAgICAgICAgICAgICAgLyogICBUSU5UOTcgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5ODo4OyAgICAgICAgICAgICAgICAgIC8qICAgVElOVDk4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTk6ODsgICAgICAgICAgICAgICAgICAvKiAgIFRJTlQ5OSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTI5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTAxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEyOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTMwICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEwNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTMxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMDggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTA5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTExOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTMyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTEzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTMzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTE3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDExOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMTkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTIxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyMiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM1ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEyNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzNTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM2ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMjggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTI5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzMCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM3ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTMzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzNzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM4ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTM3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDEzOCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxMzkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzODsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTM5ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0MiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQzOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjEzOTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQwICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ0Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ1ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDY6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE0NiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ3Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQxICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ4Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNDggICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTQ5ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTA6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1MCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUxOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTEgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE0MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQyICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUyOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Mzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTUzICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTQ6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1NCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU1Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE0MjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQzICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU2Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTYgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Nzo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTU3ICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTg6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE1OCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU5Ojg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNTkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE0MzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJUFRSMTQ0ICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYwOjg7ICAgICAgICAgICAgICAgICAvKiAgIFRJTlQxNjAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MTo4OyAgICAgICAgICAgICAgICAgLyogICBUSU5UMTYxICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjI6ODsgICAgICAgICAgICAgICAgIC8qICAgVElOVDE2MiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESVBUUjE0NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOFs0NDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9OR1szNl07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgSUNESUNGUm4gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMF8wOjE7ICAgICAgLyogICBTVzBbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzBfMToxOyAgICAgIC8qICAgU1cwWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxXzA6MTsgICAgICAvKiAgIFNXMVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMV8xOjE7ICAgICAgLyogICBTVzFbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzJfMDoxOyAgICAgIC8qICAgU1cyWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cyXzE6MTsgICAgICAvKiAgIFNXMlsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXM18wOjE7ICAgICAgLyogICBTVzNbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzNfMToxOyAgICAgIC8qICAgU1czWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c0XzA6MTsgICAgICAvKiAgIFNXNFswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNF8xOjE7ICAgICAgLyogICBTVzRbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzVfMDoxOyAgICAgIC8qICAgU1c1WzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c1XzE6MTsgICAgICAvKiAgIFNXNVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXNl8wOjE7ICAgICAgLyogICBTVzZbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzZfMToxOyAgICAgIC8qICAgU1c2WzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c3XzA6MTsgICAgICAvKiAgIFNXN1swXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXN18xOjE7ICAgICAgLyogICBTVzdbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzhfMDoxOyAgICAgIC8qICAgU1c4WzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1c4XzE6MTsgICAgICAvKiAgIFNXOFsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXOV8wOjE7ICAgICAgLyogICBTVzlbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzlfMToxOyAgICAgIC8qICAgU1c5WzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMF8wOjE7ICAgICAvKiAgIFNXMTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTBfMToxOyAgICAgLyogICBTVzEwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzExXzA6MTsgICAgIC8qICAgU1cxMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxMV8xOjE7ICAgICAvKiAgIFNXMTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTJfMDoxOyAgICAgLyogICBTVzEyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzEyXzE6MTsgICAgIC8qICAgU1cxMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxM18wOjE7ICAgICAvKiAgIFNXMTNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTNfMToxOyAgICAgLyogICBTVzEzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE0XzA6MTsgICAgIC8qICAgU1cxNFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1cxNF8xOjE7ICAgICAvKiAgIFNXMTRbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNXMTVfMDoxOyAgICAgLyogICBTVzE1WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVzE1XzE6MTsgICAgIC8qICAgU1cxNVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjA7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVVJUlEwXzA6MTsgIC8qICAgUE1VSVJRMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUE1VSVJRMF8xOjE7ICAvKiAgIFBNVUlSUTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTU1SWDBfMDoxOyAgLyogICBDT01NUlgwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDT01NUlgwXzE6MTsgIC8qICAgQ09NTVJYMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ09NTVRYMF8wOjE7ICAvKiAgIENPTU1UWDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENPTU1UWDBfMToxOyAgLyogICBDT01NVFgwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDVElJUlEwXzA6MTsgIC8qICAgQ1RJSVJRMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RJSVJRMF8xOjE7ICAvKiAgIENUSUlSUTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjIgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTBfMDoxOyAgICAgLyogICBJUlEwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEwXzE6MTsgICAgIC8qICAgSVJRMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMV8wOjE7ICAgICAvKiAgIElSUTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTFfMToxOyAgICAgLyogICBJUlExWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEyXzA6MTsgICAgIC8qICAgSVJRMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRMl8xOjE7ICAgICAvKiAgIElSUTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTNfMDoxOyAgICAgLyogICBJUlEzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlEzXzE6MTsgICAgIC8qICAgSVJRM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNF8wOjE7ICAgICAvKiAgIElSUTRbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTRfMToxOyAgICAgLyogICBJUlE0WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE1XzA6MTsgICAgIC8qICAgSVJRNVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRNV8xOjE7ICAgICAvKiAgIElSUTVbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTZfMDoxOyAgICAgLyogICBJUlE2WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUlE2XzE6MTsgICAgIC8qICAgSVJRNlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVJRN18wOjE7ICAgICAvKiAgIElSUTdbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSUTdfMToxOyAgICAgLyogICBJUlE3WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTDMxMEVSUl8wOjE7IC8qICAgUEwzMTBFUlJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBMMzEwRVJSXzE6MTsgLyogICBQTDMxMEVSUlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMF8wOjE7ICAvKiAgIERNQUlOVDBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDBfMToxOyAgLyogICBETUFJTlQwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxXzA6MTsgIC8qICAgRE1BSU5UMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMV8xOjE7ICAvKiAgIERNQUlOVDFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDJfMDoxOyAgLyogICBETUFJTlQyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQyXzE6MTsgIC8qICAgRE1BSU5UMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UM18wOjE7ICAvKiAgIERNQUlOVDNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDNfMToxOyAgLyogICBETUFJTlQzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ0XzA6MTsgIC8qICAgRE1BSU5UNFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNF8xOjE7ICAvKiAgIERNQUlOVDRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDVfMDoxOyAgLyogICBETUFJTlQ1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ1XzE6MTsgIC8qICAgRE1BSU5UNVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UNl8wOjE7ICAvKiAgIERNQUlOVDZbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDZfMToxOyAgLyogICBETUFJTlQ2WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjMgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDdfMDoxOyAgLyogICBETUFJTlQ3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ3XzE6MTsgIC8qICAgRE1BSU5UN1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UOF8wOjE7ICAvKiAgIERNQUlOVDhbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDhfMToxOyAgLyogICBETUFJTlQ4WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQ5XzA6MTsgIC8qICAgRE1BSU5UOVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UOV8xOjE7ICAvKiAgIERNQUlOVDlbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEwXzA6MTsgLyogICBETUFJTlQxMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTBfMToxOyAvKiAgIERNQUlOVDEwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMV8wOjE7IC8qICAgRE1BSU5UMTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDExXzE6MTsgLyogICBETUFJTlQxMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTJfMDoxOyAvKiAgIERNQUlOVDEyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxMl8xOjE7IC8qICAgRE1BSU5UMTJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDEzXzA6MTsgLyogICBETUFJTlQxM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTNfMToxOyAvKiAgIERNQUlOVDEzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNF8wOjE7IC8qICAgRE1BSU5UMTRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUlOVDE0XzE6MTsgLyogICBETUFJTlQxNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRE1BSU5UMTVfMDoxOyAvKiAgIERNQUlOVDE1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFJTlQxNV8xOjE7IC8qICAgRE1BSU5UMTVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQUVSUl8wOjE7ICAgLyogICBETUFFUlJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUFFUlJfMToxOyAgIC8qICAgRE1BRVJSWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSNCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE4OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkwXzA6MTsgICAgLyogICBVU0JJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBVU0JJMF8xOjE7ICAgIC8qICAgVVNCSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVVNCSTFfMDoxOyAgICAvKiAgIFVTQkkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFVTQkkxXzE6MTsgICAgLyogICBVU0JJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzBfMDoxOy8qICAgUzBfVklfVlNZTkMwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WSV9WU1lOQzBfMToxOy8qICAgUzBfVklfVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzBfMDoxOy8qICAgUzBfTE9fVlNZTkMwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9MT19WU1lOQzBfMToxOy8qICAgUzBfTE9fVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjBfMDoxOy8qICAgUzBfVlNZTkNFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WU1lOQ0VSUjBfMToxOy8qICAgUzBfVlNZTkNFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUwXzA6MTsvKiAgIEdSM19WTElORTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdSM19WTElORTBfMToxOy8qICAgR1IzX1ZMSU5FMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMF8wOjE7LyogICBTMF9WRklFTEQwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9WRklFTEQwXzE6MTsvKiAgIFMwX1ZGSUVMRDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlI0OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSNSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYxX1ZCVUZFUlIwXzA6MTsvKiAgIElWMV9WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYxX1ZCVUZFUlIwXzE6MTsvKiAgIElWMV9WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYzX1ZCVUZFUlIwXzA6MTsvKiAgIElWM19WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVYzX1ZCVUZFUlIwXzE6MTsvKiAgIElWM19WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY1X1ZCVUZFUlIwXzA6MTsvKiAgIElWNV9WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY1X1ZCVUZFUlIwXzE6MTsvKiAgIElWNV9WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY2X1ZCVUZFUlIwXzA6MTsvKiAgIElWNl9WQlVGRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVY2X1ZCVUZFUlIwXzE6MTsvKiAgIElWNl9WQlVGRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUwXzA6MTsvKiAgIFMwX1dMSU5FMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfV0xJTkUwXzE6MTsvKiAgIFMwX1dMSU5FMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMwXzA6MTsvKiAgIFMxX1ZJX1ZTWU5DMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVklfVlNZTkMwXzE6MTsvKiAgIFMxX1ZJX1ZTWU5DMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMwXzA6MTsvKiAgIFMxX0xPX1ZTWU5DMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfTE9fVlNZTkMwXzE6MTsvKiAgIFMxX0xPX1ZTWU5DMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIwXzA6MTsvKiAgIFMxX1ZTWU5DRVJSMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVlNZTkNFUlIwXzE6MTsvKiAgIFMxX1ZTWU5DRVJSMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMF8wOjE7LyogICBTMV9WRklFTEQwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WRklFTEQwXzE6MTsvKiAgIFMxX1ZGSUVMRDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMF8wOjE7LyogICBJVjJfVkJVRkVSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWMl9WQlVGRVJSMF8xOjE7LyogICBJVjJfVkJVRkVSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMF8wOjE7LyogICBJVjRfVkJVRkVSUjBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWNF9WQlVGRVJSMF8xOjE7LyogICBJVjRfVkJVRkVSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMF8wOjE7LyogICBTMV9XTElORTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1dMSU5FMF8xOjE7LyogICBTMV9XTElORTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzBfMDoxOy8qICAgT0lSX1ZJX1ZTWU5DMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZJX1ZTWU5DMF8xOjE7LyogICBPSVJfVklfVlNZTkMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMwXzA6MTsvKiAgIE9JUl9MT19WU1lOQzBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9MT19WU1lOQzBfMToxOy8qICAgT0lSX0xPX1ZTWU5DMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZTWU5DRVJSMF8wOjE7LyogICBPSVJfVlNZTkNFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVlNZTkNFUlIwXzE6MTsvKiAgIE9JUl9WU1lOQ0VSUjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WRklFTEQwXzA6MTsvKiAgIE9JUl9WRklFTEQwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMF8xOjE7LyogICBPSVJfVkZJRUxEMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjU7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlI2ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjBfMDoxOy8qICAgSVY3X1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjdfVkJVRkVSUjBfMToxOy8qICAgSVY3X1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjBfMDoxOy8qICAgSVY4X1ZCVUZFUlIwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjhfVkJVRkVSUjBfMToxOy8qICAgSVY4X1ZCVUZFUlIwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfV0xJTkUwXzA6MTsvKiAgIE9JUl9XTElORTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTBfMToxOy8qICAgT0lSX1dMSU5FMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMxXzA6MTsvKiAgIFMwX1ZJX1ZTWU5DMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVklfVlNZTkMxXzE6MTsvKiAgIFMwX1ZJX1ZTWU5DMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMxXzA6MTsvKiAgIFMwX0xPX1ZTWU5DMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfTE9fVlNZTkMxXzE6MTsvKiAgIFMwX0xPX1ZTWU5DMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIxXzA6MTsvKiAgIFMwX1ZTWU5DRVJSMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVlNZTkNFUlIxXzE6MTsvKiAgIFMwX1ZTWU5DRVJSMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR1IzX1ZMSU5FMV8wOjE7LyogICBHUjNfVkxJTkUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHUjNfVkxJTkUxXzE6MTsvKiAgIEdSM19WTElORTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMwX1ZGSUVMRDFfMDoxOy8qICAgUzBfVkZJRUxEMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzBfVkZJRUxEMV8xOjE7LyogICBTMF9WRklFTEQxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjFfMDoxOy8qICAgSVYxX1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjFfVkJVRkVSUjFfMToxOy8qICAgSVYxX1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjFfMDoxOy8qICAgSVYzX1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjNfVkJVRkVSUjFfMToxOy8qICAgSVYzX1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjFfMDoxOy8qICAgSVY1X1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjVfVkJVRkVSUjFfMToxOy8qICAgSVY1X1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjFfMDoxOy8qICAgSVY2X1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjZfVkJVRkVSUjFfMToxOy8qICAgSVY2X1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTFfMDoxOy8qICAgUzBfV0xJTkUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMF9XTElORTFfMToxOy8qICAgUzBfV0xJTkUxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzFfMDoxOy8qICAgUzFfVklfVlNZTkMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WSV9WU1lOQzFfMToxOy8qICAgUzFfVklfVlNZTkMxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzFfMDoxOy8qICAgUzFfTE9fVlNZTkMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9MT19WU1lOQzFfMToxOy8qICAgUzFfTE9fVlNZTkMxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjFfMDoxOy8qICAgUzFfVlNZTkNFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9WU1lOQ0VSUjFfMToxOy8qICAgUzFfVlNZTkNFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSNjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjcgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFMxX1ZGSUVMRDFfMDoxOy8qICAgUzFfVkZJRUxEMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUzFfVkZJRUxEMV8xOjE7LyogICBTMV9WRklFTEQxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjFfMDoxOy8qICAgSVYyX1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjJfVkJVRkVSUjFfMToxOy8qICAgSVYyX1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjFfMDoxOy8qICAgSVY0X1ZCVUZFUlIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVjRfVkJVRkVSUjFfMToxOy8qICAgSVY0X1ZCVUZFUlIxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTFfMDoxOy8qICAgUzFfV0xJTkUxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTMV9XTElORTFfMToxOy8qICAgUzFfV0xJTkUxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVklfVlNZTkMxXzA6MTsvKiAgIE9JUl9WSV9WU1lOQzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WSV9WU1lOQzFfMToxOy8qICAgT0lSX1ZJX1ZTWU5DMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX0xPX1ZTWU5DMV8wOjE7LyogICBPSVJfTE9fVlNZTkMxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfTE9fVlNZTkMxXzE6MTsvKiAgIE9JUl9MT19WU1lOQzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9WTElORTFfMDoxOy8qICAgT0lSX1ZMSU5FMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZMSU5FMV8xOjE7LyogICBPSVJfVkxJTkUxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPSVJfVkZJRUxEMV8wOjE7LyogICBPSVJfVkZJRUxEMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1ZGSUVMRDFfMToxOy8qICAgT0lSX1ZGSUVMRDFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMV8wOjE7LyogICBJVjdfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWN19WQlVGRVJSMV8xOjE7LyogICBJVjdfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMV8wOjE7LyogICBJVjhfVkJVRkVSUjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElWOF9WQlVGRVJSMV8xOjE7LyogICBJVjhfVkJVRkVSUjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9JUl9XTElORTFfMDoxOy8qICAgT0lSX1dMSU5FMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT0lSX1dMSU5FMV8xOjE7LyogICBPSVJfV0xJTkUxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJESV8wOjE7ICAgIC8qICAgSU1SRElbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SRElfMToxOyAgICAvKiAgIElNUkRJWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMF8wOjE7ICAgLyogICBJTVIySTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIySTBfMToxOyAgIC8qICAgSU1SMkkwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMkkxXzA6MTsgICAvKiAgIElNUjJJMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjJJMV8xOjE7ICAgLyogICBJTVIySTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRURJXzA6MTsgICAgIC8qICAgSkVESVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkVESV8xOjE7ICAgICAvKiAgIEpFRElbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpEVElfMDoxOyAgICAgLyogICBKRFRJWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKRFRJXzE6MTsgICAgIC8qICAgSkRUSVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjc7ICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlI4ICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVAwXzA6MTsgICAgIC8qICAgQ01QMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01QMF8xOjE7ICAgICAvKiAgIENNUDBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNUDFfMDoxOyAgICAgLyogICBDTVAxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTVAxXzE6MTsgICAgIC8qICAgQ01QMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMF8wOjE7ICAgICAvKiAgIElOVDBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDBfMToxOyAgICAgLyogICBJTlQwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQxXzA6MTsgICAgIC8qICAgSU5UMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UMV8xOjE7ICAgICAvKiAgIElOVDFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDJfMDoxOyAgICAgLyogICBJTlQyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlQyXzE6MTsgICAgIC8qICAgSU5UMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UM18wOjE7ICAgICAvKiAgIElOVDNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVDNfMToxOyAgICAgLyogICBJTlQzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTBfMDoxOyAgIC8qICAgT1NUTUkwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1NUTUkwXzE6MTsgICAvKiAgIE9TVE1JMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9TVE1JMV8wOjE7ICAgLyogICBPU1RNSTFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPU1RNSTFfMToxOyAgIC8qICAgT1NUTUkxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JXzA6MTsgICAgICAvKiAgIENNSVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSV8xOjE7ICAgICAgLyogICBDTUlbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXVE9VVF8wOjE7ICAgIC8qICAgV1RPVVRbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgV1RPVVRfMToxOyAgICAvKiAgIFdUT1VUWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUSV8wOjE7ICAgICAgLyogICBJVElbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVElfMToxOyAgICAgIC8qICAgSVRJWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEFfMDoxOyAgICAvKiAgIFRHSTBBWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBBXzE6MTsgICAgLyogICBUR0kwQVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQl8wOjE7ICAgIC8qICAgVEdJMEJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEJfMToxOyAgICAvKiAgIFRHSTBCWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBDXzA6MTsgICAgLyogICBUR0kwQ1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwQ18xOjE7ICAgIC8qICAgVEdJMENbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMERfMDoxOyAgICAvKiAgIFRHSTBEWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBEXzE6MTsgICAgLyogICBUR0kwRFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwVl8wOjE7ICAgIC8qICAgVEdJMFZbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMFZfMToxOyAgICAvKiAgIFRHSTBWWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlI4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSOSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEVfMDoxOyAgICAvKiAgIFRHSTBFWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTBFXzE6MTsgICAgLyogICBUR0kwRVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kwRl8wOjE7ICAgIC8qICAgVEdJMEZbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMEZfMToxOyAgICAvKiAgIFRHSTBGWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFBXzA6MTsgICAgLyogICBUR0kxQVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxQV8xOjE7ICAgIC8qICAgVEdJMUFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMUJfMDoxOyAgICAvKiAgIFRHSTFCWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFCXzE6MTsgICAgLyogICBUR0kxQlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxVl8wOjE7ICAgIC8qICAgVEdJMVZbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMVZfMToxOyAgICAvKiAgIFRHSTFWWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTFVXzA6MTsgICAgLyogICBUR0kxVVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kxVV8xOjE7ICAgIC8qICAgVEdJMVVbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkFfMDoxOyAgICAvKiAgIFRHSTJBWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJBXzE6MTsgICAgLyogICBUR0kyQVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyQl8wOjE7ICAgIC8qICAgVEdJMkJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMkJfMToxOyAgICAvKiAgIFRHSTJCWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJWXzA6MTsgICAgLyogICBUR0kyVlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kyVl8xOjE7ICAgIC8qICAgVEdJMlZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJMlVfMDoxOyAgICAvKiAgIFRHSTJVWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTJVXzE6MTsgICAgLyogICBUR0kyVVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQV8wOjE7ICAgIC8qICAgVEdJM0FbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0FfMToxOyAgICAvKiAgIFRHSTNBWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNCXzA6MTsgICAgLyogICBUR0kzQlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzQl8xOjE7ICAgIC8qICAgVEdJM0JbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0NfMDoxOyAgICAvKiAgIFRHSTNDWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNDXzE6MTsgICAgLyogICBUR0kzQ1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzRF8wOjE7ICAgIC8qICAgVEdJM0RbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJM0RfMToxOyAgICAvKiAgIFRHSTNEWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTNWXzA6MTsgICAgLyogICBUR0kzVlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0kzVl8xOjE7ICAgIC8qICAgVEdJM1ZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNEFfMDoxOyAgICAvKiAgIFRHSTRBWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRBXzE6MTsgICAgLyogICBUR0k0QVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSOTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjEwICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRCXzA6MTsgICAgLyogICBUR0k0QlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Ql8xOjE7ICAgIC8qICAgVEdJNEJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNENfMDoxOyAgICAvKiAgIFRHSTRDWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRDXzE6MTsgICAgLyogICBUR0k0Q1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0RF8wOjE7ICAgIC8qICAgVEdJNERbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEdJNERfMToxOyAgICAvKiAgIFRHSTREWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRHSTRWXzA6MTsgICAgLyogICBUR0k0VlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUR0k0Vl8xOjE7ICAgIC8qICAgVEdJNFZbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMV8wOjE7ICAgICAvKiAgIENNSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENNSTFfMToxOyAgICAgLyogICBDTUkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUkyXzA6MTsgICAgIC8qICAgQ01JMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ01JMl8xOjE7ICAgICAvKiAgIENNSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMF8wOjE7ICAgLyogICBTR0RFSTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTBfMToxOyAgIC8qICAgU0dERUkwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkxXzA6MTsgICAvKiAgIFNHREVJMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJMV8xOjE7ICAgLyogICBTR0RFSTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTJfMDoxOyAgIC8qICAgU0dERUkyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dERUkyXzE6MTsgICAvKiAgIFNHREVJMlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNHREVJM18wOjE7ICAgLyogICBTR0RFSTNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTR0RFSTNfMToxOyAgIC8qICAgU0dERUkzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURJXzA6MTsgICAgICAvKiAgIEFESVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFESV8xOjE7ICAgICAgLyogICBBRElbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFdBUl8wOjE7ICAgIC8qICAgQURXQVJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQURXQVJfMToxOyAgICAvKiAgIEFEV0FSWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkwXzA6MTsgICAgLyogICBTU0lJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMF8xOjE7ICAgIC8qICAgU1NJSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMF8wOjE7ICAvKiAgIFNTSVJYSTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTBfMToxOyAgLyogICBTU0lSWEkwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkwXzA6MTsgIC8qICAgU1NJVFhJMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJMF8xOjE7ICAvKiAgIFNTSVRYSTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkxXzA6MTsgICAgLyogICBTU0lJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJMV8xOjE7ICAgIC8qICAgU1NJSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjEwOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEkxXzA6MTsgIC8qICAgU1NJUlhJMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJMV8xOjE7ICAvKiAgIFNTSVJYSTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTFfMDoxOyAgLyogICBTU0lUWEkxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkxXzE6MTsgIC8qICAgU1NJVFhJMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTJfMDoxOyAgICAvKiAgIFNTSUkyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkyXzE6MTsgICAgLyogICBTU0lJMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSVEkyXzA6MTsgIC8qICAgU1NJUlRJMlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJMl8xOjE7ICAvKiAgIFNTSVJUSTJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUkzXzA6MTsgICAgLyogICBTU0lJM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJM18xOjE7ICAgIC8qICAgU1NJSTNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlhJM18wOjE7ICAvKiAgIFNTSVJYSTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTNfMToxOyAgLyogICBTU0lSWEkzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lUWEkzXzA6MTsgIC8qICAgU1NJVFhJM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJM18xOjE7ICAvKiAgIFNTSVRYSTNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSUk0XzA6MTsgICAgLyogICBTU0lJNFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJNF8xOjE7ICAgIC8qICAgU1NJSTRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJUlRJNF8wOjE7ICAvKiAgIFNTSVJUSTRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJUSTRfMToxOyAgLyogICBTU0lSVEk0WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lJNV8wOjE7ICAgIC8qICAgU1NJSTVbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJSTVfMToxOyAgICAvKiAgIFNTSUk1WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVJYSTVfMDoxOyAgLyogICBTU0lSWEk1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0lSWEk1XzE6MTsgIC8qICAgU1NJUlhJNVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1NJVFhJNV8wOjE7ICAvKiAgIFNTSVRYSTVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNTSVRYSTVfMToxOyAgLyogICBTU0lUWEk1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUERJRklfMDoxOyAgIC8qICAgU1BESUZJWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BESUZJXzE6MTsgICAvKiAgIFNQRElGSVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTBfMDoxOyAgICAgLyogICBURUkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkwXzE6MTsgICAgIC8qICAgVEVJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkwXzA6MTsgICAgICAvKiAgIFJJMFswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMF8xOjE7ICAgICAgLyogICBSSTBbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTBfMDoxOyAgICAgIC8qICAgVEkwWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkwXzE6MTsgICAgICAvKiAgIFRJMFsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJMF8wOjE7ICAgICAvKiAgIFNQSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTBfMToxOyAgICAgLyogICBTUEkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkwXzA6MTsgICAgIC8qICAgU1RJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMF8xOjE7ICAgICAvKiAgIFNUSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kwXzA6MTsgICAgLyogICBOQUtJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMF8xOjE7ICAgIC8qICAgTkFLSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJMF8wOjE7ICAgICAvKiAgIEFMSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTBfMToxOyAgICAgLyogICBBTEkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JMF8wOjE7ICAgIC8qICAgVE1PSTBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTBfMToxOyAgICAvKiAgIFRNT0kwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTFfMDoxOyAgICAgLyogICBURUkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkxXzE6MTsgICAgIC8qICAgVEVJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkkxXzA6MTsgICAgICAvKiAgIFJJMVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMV8xOjE7ICAgICAgLyogICBSSTFbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSTFfMDoxOyAgICAgIC8qICAgVEkxWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkxXzE6MTsgICAgICAvKiAgIFRJMVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTFfMDoxOyAgICAgLyogICBTUEkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkxXzE6MTsgICAgIC8qICAgU1BJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMV8wOjE7ICAgICAvKiAgIFNUSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTFfMToxOyAgICAgLyogICBTVEkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMV8wOjE7ICAgIC8qICAgTkFLSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTFfMToxOyAgICAvKiAgIE5BS0kxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTFfMDoxOyAgICAgLyogICBBTEkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkxXzE6MTsgICAgIC8qICAgQUxJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTFfMDoxOyAgICAvKiAgIFRNT0kxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kxXzE6MTsgICAgLyogICBUTU9JMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkyXzA6MTsgICAgIC8qICAgVEVJMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMl8xOjE7ICAgICAvKiAgIFRFSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJMl8wOjE7ICAgICAgLyogICBSSTJbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTJfMToxOyAgICAgIC8qICAgUkkyWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkyXzA6MTsgICAgICAvKiAgIFRJMlswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJMl8xOjE7ICAgICAgLyogICBUSTJbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjEzICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSTJfMDoxOyAgICAgLyogICBTUEkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkyXzE6MTsgICAgIC8qICAgU1BJMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1RJMl8wOjE7ICAgICAvKiAgIFNUSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTJfMToxOyAgICAgLyogICBTVEkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBOQUtJMl8wOjE7ICAgIC8qICAgTkFLSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTJfMToxOyAgICAvKiAgIE5BS0kyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSTJfMDoxOyAgICAgLyogICBBTEkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkyXzE6MTsgICAgIC8qICAgQUxJMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVE1PSTJfMDoxOyAgICAvKiAgIFRNT0kyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kyXzE6MTsgICAgLyogICBUTU9JMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkzXzA6MTsgICAgIC8qICAgVEVJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJM18xOjE7ICAgICAvKiAgIFRFSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJM18wOjE7ICAgICAgLyogICBSSTNbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSSTNfMToxOyAgICAgIC8qICAgUkkzWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEkzXzA6MTsgICAgICAvKiAgIFRJM1swXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJM18xOjE7ICAgICAgLyogICBUSTNbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEkzXzA6MTsgICAgIC8qICAgU1BJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BJM18xOjE7ICAgICAvKiAgIFNQSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSTNfMDoxOyAgICAgLyogICBTVEkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTVEkzXzE6MTsgICAgIC8qICAgU1RJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTkFLSTNfMDoxOyAgICAvKiAgIE5BS0kzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0kzXzE6MTsgICAgLyogICBOQUtJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBTEkzXzA6MTsgICAgIC8qICAgQUxJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQUxJM18xOjE7ICAgICAvKiAgIEFMSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0kzXzA6MTsgICAgLyogICBUTU9JM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUTU9JM18xOjE7ICAgIC8qICAgVE1PSTNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMF8wOjE7ICAgICAvKiAgIEJSSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTBfMToxOyAgICAgLyogICBCUkkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkwXzA6MTsgICAgIC8qICAgRVJJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMF8xOjE7ICAgICAvKiAgIEVSSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTBfMDoxOyAgICAgLyogICBSWEkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkwXzE6MTsgICAgIC8qICAgUlhJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjEzOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkwXzA6MTsgICAgIC8qICAgVFhJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMF8xOjE7ICAgICAvKiAgIFRYSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTFfMDoxOyAgICAgLyogICBCUkkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkxXzE6MTsgICAgIC8qICAgQlJJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMV8wOjE7ICAgICAvKiAgIEVSSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTFfMToxOyAgICAgLyogICBFUkkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkxXzA6MTsgICAgIC8qICAgUlhJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMV8xOjE7ICAgICAvKiAgIFJYSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTFfMDoxOyAgICAgLyogICBUWEkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkxXzE6MTsgICAgIC8qICAgVFhJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJMl8wOjE7ICAgICAvKiAgIEJSSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTJfMToxOyAgICAgLyogICBCUkkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkyXzA6MTsgICAgIC8qICAgRVJJMlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMl8xOjE7ICAgICAvKiAgIEVSSTJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTJfMDoxOyAgICAgLyogICBSWEkyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkyXzE6MTsgICAgIC8qICAgUlhJMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMl8wOjE7ICAgICAvKiAgIFRYSTJbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTJfMToxOyAgICAgLyogICBUWEkyWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkkzXzA6MTsgICAgIC8qICAgQlJJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJM18xOjE7ICAgICAvKiAgIEJSSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTNfMDoxOyAgICAgLyogICBFUkkzWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkzXzE6MTsgICAgIC8qICAgRVJJM1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJM18wOjE7ICAgICAvKiAgIFJYSTNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTNfMToxOyAgICAgLyogICBSWEkzWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkzXzA6MTsgICAgIC8qICAgVFhJM1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJM18xOjE7ICAgICAvKiAgIFRYSTNbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTRfMDoxOyAgICAgLyogICBCUkk0WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk0XzE6MTsgICAgIC8qICAgQlJJNFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNF8wOjE7ICAgICAvKiAgIEVSSTRbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTRfMToxOyAgICAgLyogICBFUkk0WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk0XzA6MTsgICAgIC8qICAgUlhJNFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNF8xOjE7ICAgICAvKiAgIFJYSTRbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNF8wOjE7ICAgICAvKiAgIFRYSTRbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTRfMToxOyAgICAgLyogICBUWEk0WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk1XzA6MTsgICAgIC8qICAgQlJJNVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJNV8xOjE7ICAgICAvKiAgIEJSSTVbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTVfMDoxOyAgICAgLyogICBFUkk1WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk1XzE6MTsgICAgIC8qICAgRVJJNVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNV8wOjE7ICAgICAvKiAgIFJYSTVbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTVfMToxOyAgICAgLyogICBSWEk1WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk1XzA6MTsgICAgIC8qICAgVFhJNVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJNV8xOjE7ICAgICAvKiAgIFRYSTVbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTZfMDoxOyAgICAgLyogICBCUkk2WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkk2XzE6MTsgICAgIC8qICAgQlJJNlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJNl8wOjE7ICAgICAvKiAgIEVSSTZbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTZfMToxOyAgICAgLyogICBFUkk2WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk2XzA6MTsgICAgIC8qICAgUlhJNlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJNl8xOjE7ICAgICAvKiAgIFJYSTZbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTZfMDoxOyAgICAgLyogICBUWEk2WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEk2XzE6MTsgICAgIC8qICAgVFhJNlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQlJJN18wOjE7ICAgICAvKiAgIEJSSTdbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSTdfMToxOyAgICAgLyogICBCUkk3WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkk3XzA6MTsgICAgIC8qICAgRVJJN1swXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJN18xOjE7ICAgICAvKiAgIEVSSTdbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTdfMDoxOyAgICAgLyogICBSWEk3WzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEk3XzE6MTsgICAgIC8qICAgUlhJN1sxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJN18wOjE7ICAgICAvKiAgIFRYSTdbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTdfMToxOyAgICAgLyogICBUWEk3WzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBHRVJJXzA6MTsgICAgIC8qICAgR0VSSVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgR0VSSV8xOjE7ICAgICAvKiAgIEdFUklbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJGSV8wOjE7ICAgICAgLyogICBSRklbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSRklfMToxOyAgICAgIC8qICAgUkZJWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkwXzA6MTsgICAvKiAgIENGUlhJMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENGUlhJMF8xOjE7ICAgLyogICBDRlJYSTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTU7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjE2ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkwXzA6MTsgICAgLyogICBDRVJJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMF8xOjE7ICAgIC8qICAgQ0VSSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTBfMDoxOyAgICAvKiAgIENUWEkwWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkwXzE6MTsgICAgLyogICBDVFhJMFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTFfMDoxOyAgIC8qICAgQ0ZSWEkxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkxXzE6MTsgICAvKiAgIENGUlhJMVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkxXzA6MTsgICAgLyogICBDRVJJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMV8xOjE7ICAgIC8qICAgQ0VSSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTFfMDoxOyAgICAvKiAgIENUWEkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkxXzE6MTsgICAgLyogICBDVFhJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTJfMDoxOyAgIC8qICAgQ0ZSWEkyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkyXzE6MTsgICAvKiAgIENGUlhJMlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkyXzA6MTsgICAgLyogICBDRVJJMlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJMl8xOjE7ICAgIC8qICAgQ0VSSTJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTJfMDoxOyAgICAvKiAgIENUWEkyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkyXzE6MTsgICAgLyogICBDVFhJMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTNfMDoxOyAgIC8qICAgQ0ZSWEkzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEkzXzE6MTsgICAvKiAgIENGUlhJM1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkkzXzA6MTsgICAgLyogICBDRVJJM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJM18xOjE7ICAgIC8qICAgQ0VSSTNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTNfMDoxOyAgICAvKiAgIENUWEkzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEkzXzE6MTsgICAgLyogICBDVFhJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRlJYSTRfMDoxOyAgIC8qICAgQ0ZSWEk0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0ZSWEk0XzE6MTsgICAvKiAgIENGUlhJNFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFUkk0XzA6MTsgICAgLyogICBDRVJJNFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVJJNF8xOjE7ICAgIC8qICAgQ0VSSTRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1RYSTRfMDoxOyAgICAvKiAgIENUWEk0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENUWEk0XzE6MTsgICAgLyogICBDVFhJNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMF8wOjE7ICAgIC8qICAgU1BFSTBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BFSTBfMToxOyAgICAvKiAgIFNQRUkwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkwXzA6MTsgICAgLyogICBTUFJJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFJJMF8xOjE7ICAgIC8qICAgU1BSSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjE2OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIxNyAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMF8wOjE7ICAgIC8qICAgU1BUSTBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTBfMToxOyAgICAvKiAgIFNQVEkwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkxXzA6MTsgICAgLyogICBTUEVJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMV8xOjE7ICAgIC8qICAgU1BFSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTFfMDoxOyAgICAvKiAgIFNQUkkxWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkxXzE6MTsgICAgLyogICBTUFJJMVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMV8wOjE7ICAgIC8qICAgU1BUSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTFfMToxOyAgICAvKiAgIFNQVEkxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkyXzA6MTsgICAgLyogICBTUEVJMlswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJMl8xOjE7ICAgIC8qICAgU1BFSTJbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTJfMDoxOyAgICAvKiAgIFNQUkkyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkyXzE6MTsgICAgLyogICBTUFJJMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJMl8wOjE7ICAgIC8qICAgU1BUSTJbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTJfMToxOyAgICAvKiAgIFNQVEkyWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUkzXzA6MTsgICAgLyogICBTUEVJM1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJM18xOjE7ICAgIC8qICAgU1BFSTNbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTNfMDoxOyAgICAvKiAgIFNQUkkzWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkkzXzE6MTsgICAgLyogICBTUFJJM1sxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJM18wOjE7ICAgIC8qICAgU1BUSTNbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTNfMToxOyAgICAvKiAgIFNQVEkzWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQRUk0XzA6MTsgICAgLyogICBTUEVJNFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEVJNF8xOjE7ICAgIC8qICAgU1BFSTRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BSSTRfMDoxOyAgICAvKiAgIFNQUkk0WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQUkk0XzE6MTsgICAgLyogICBTUFJJNFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUFRJNF8wOjE7ICAgIC8qICAgU1BUSTRbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU1BUSTRfMToxOyAgICAvKiAgIFNQVEk0WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJURF8wOjE7ICAgLyogICBJRUJCVERbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVERfMToxOyAgIC8qICAgSUVCQlREWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRFUlJfMDoxOyAvKiAgIElFQkJURVJSWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVEVSUl8xOjE7IC8qICAgSUVCQlRFUlJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJUU1RBXzA6MTsgLyogICBJRUJCVFNUQVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVCQlRTVEFfMToxOyAvKiAgIElFQkJUU1RBWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjE4ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElFQkJUVl8wOjE7ICAgLyogICBJRUJCVFZbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRUJCVFZfMToxOyAgIC8qICAgSUVCQlRWWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNZXzA6MTsgICAgICAvKiAgIElTWVswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElTWV8xOjE7ICAgICAgLyogICBJU1lbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRVJSXzA6MTsgICAgIC8qICAgSUVSUlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUVSUl8xOjE7ICAgICAvKiAgIElFUlJbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElUQVJHXzA6MTsgICAgLyogICBJVEFSR1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJVEFSR18xOjE7ICAgIC8qICAgSVRBUkdbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSVNFQ18wOjE7ICAgICAvKiAgIElTRUNbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElTRUNfMToxOyAgICAgLyogICBJU0VDWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJQlVGXzA6MTsgICAgIC8qICAgSUJVRlswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUJVRl8xOjE7ICAgICAvKiAgIElCVUZbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElSRUFEWV8wOjE7ICAgLyogICBJUkVBRFlbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJUkVBRFlfMToxOyAgIC8qICAgSVJFQURZWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxTVEVfMDoxOyAgICAvKiAgIEZMU1RFWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMU1RFXzE6MTsgICAgLyogICBGTFNURVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRFTkRJXzA6MTsgIC8qICAgRkxURU5ESVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxURU5ESV8xOjE7ICAvKiAgIEZMVEVORElbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTBJXzA6MTsgLyogICBGTFRSRVEwSVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRkxUUkVRMElfMToxOyAvKiAgIEZMVFJFUTBJWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBGTFRSRVExSV8wOjE7IC8qICAgRkxUUkVRMUlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZMVFJFUTFJXzE6MTsgLyogICBGTFRSRVExSVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMF8wOjE7ICAgICAvKiAgIE1NQzBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzBfMToxOyAgICAgLyogICBNTUMwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMxXzA6MTsgICAgIC8qICAgTU1DMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTU1DMV8xOjE7ICAgICAvKiAgIE1NQzFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1NQzJfMDoxOyAgICAgLyogICBNTUMyWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTUMyXzE6MTsgICAgIC8qICAgTU1DMlsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfM18wOjE7ICAvKiAgIFNESEkwXzNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzNfMToxOyAgLyogICBTREhJMF8zWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMF8wXzA6MTsgIC8qICAgU0RISTBfMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMF8xOjE7ICAvKiAgIFNESEkwXzBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIxODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMTkgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTBfMV8wOjE7ICAvKiAgIFNESEkwXzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkwXzFfMToxOyAgLyogICBTREhJMF8xWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8zXzA6MTsgIC8qICAgU0RISTFfM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfM18xOjE7ICAvKiAgIFNESEkxXzNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzBfMDoxOyAgLyogICBTREhJMV8wWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTREhJMV8wXzE6MTsgIC8qICAgU0RISTFfMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0RISTFfMV8wOjE7ICAvKiAgIFNESEkxXzFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNESEkxXzFfMToxOyAgLyogICBTREhJMV8xWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBUk1fMDoxOyAgICAgIC8qICAgQVJNWzBdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQVJNXzE6MTsgICAgICAvKiAgIEFSTVsxXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSRF8wOjE7ICAgICAgLyogICBQUkRbMF0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQUkRfMToxOyAgICAgIC8qICAgUFJEWzFdICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1VQXzA6MTsgICAgICAvKiAgIENVUFswXSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENVUF8xOjE7ICAgICAgLyogICBDVVBbMV0gICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTBfMDoxOyAgIC8qICAgU0NVQUkwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVQUkwXzE6MTsgICAvKiAgIFNDVUFJMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUFJMV8wOjE7ICAgLyogICBTQ1VBSTFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VBSTFfMToxOyAgIC8qICAgU0NVQUkxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMF8wOjE7ICAvKiAgIFNDVUZESTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTBfMToxOyAgLyogICBTQ1VGREkwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkxXzA6MTsgIC8qICAgU0NVRkRJMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJMV8xOjE7ICAvKiAgIFNDVUZESTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTJfMDoxOyAgLyogICBTQ1VGREkyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGREkyXzE6MTsgIC8qICAgU0NVRkRJMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRkRJM18wOjE7ICAvKiAgIFNDVUZESTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZESTNfMToxOyAgLyogICBTQ1VGREkzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkwXzA6MTsgIC8qICAgU0NVRlVJMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMF8xOjE7ICAvKiAgIFNDVUZVSTBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTFfMDoxOyAgLyogICBTQ1VGVUkxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkxXzE6MTsgIC8qICAgU0NVRlVJMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRlVJMl8wOjE7ICAvKiAgIFNDVUZVSTJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTJfMToxOyAgLyogICBTQ1VGVUkyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMTk7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjIwICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVUZVSTNfMDoxOyAgLyogICBTQ1VGVUkzWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VGVUkzXzE6MTsgIC8qICAgU0NVRlVJM1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMF8wOjE7ICAvKiAgIFNDVURWSTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTBfMToxOyAgLyogICBTQ1VEVkkwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkxXzA6MTsgIC8qICAgU0NVRFZJMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJMV8xOjE7ICAvKiAgIFNDVURWSTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTJfMDoxOyAgLyogICBTQ1VEVkkyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ1VEVkkyXzE6MTsgIC8qICAgU0NVRFZJMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0NVRFZJM18wOjE7ICAvKiAgIFNDVURWSTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDVURWSTNfMToxOyAgLyogICBTQ1VEVkkzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJDSV8wOjE7ICAgIC8qICAgTUxCQ0lbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTUxCQ0lfMToxOyAgICAvKiAgIE1MQkNJWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQlNJXzA6MTsgICAgLyogICBNTEJTSVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNTEJTSV8xOjE7ICAgIC8qICAgTUxCU0lbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMF8wOjE7ICAgICAvKiAgIERSQzBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERSQzBfMToxOyAgICAgLyogICBEUkMwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkMxXzA6MTsgICAgIC8qICAgRFJDMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJDMV8xOjE7ICAgICAvKiAgIERSQzFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfVF8wOjE7LyogICBMSU5JMF9JTlRfVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1RfMToxOy8qICAgTElOSTBfSU5UX1RbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9SXzA6MTsvKiAgIExJTkkwX0lOVF9SWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfUl8xOjE7LyogICBMSU5JMF9JTlRfUlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX1NfMDoxOy8qICAgTElOSTBfSU5UX1NbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkwX0lOVF9TXzE6MTsvKiAgIExJTkkwX0lOVF9TWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMF9JTlRfTV8wOjE7LyogICBMSU5JMF9JTlRfTVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTBfSU5UX01fMToxOy8qICAgTElOSTBfSU5UX01bMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9UXzA6MTsvKiAgIExJTkkxX0lOVF9UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfVF8xOjE7LyogICBMSU5JMV9JTlRfVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjIwOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfUl8wOjE7LyogICBMSU5JMV9JTlRfUlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX1JfMToxOy8qICAgTElOSTFfSU5UX1JbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9TXzA6MTsvKiAgIExJTkkxX0lOVF9TWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMSU5JMV9JTlRfU18xOjE7LyogICBMSU5JMV9JTlRfU1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTElOSTFfSU5UX01fMDoxOy8qICAgTElOSTFfSU5UX01bMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExJTkkxX0lOVF9NXzE6MTsvKiAgIExJTkkxX0lOVF9NWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMF8wOjE7ICAgICAvKiAgIEVSSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVSSTBfMToxOyAgICAgLyogICBFUkkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSWEkwXzA6MTsgICAgIC8qICAgUlhJMFswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMF8xOjE7ICAgICAvKiAgIFJYSTBbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRYSTBfMDoxOyAgICAgLyogICBUWEkwWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkwXzE6MTsgICAgIC8qICAgVFhJMFsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVEVJMF8wOjE7ICAgICAvKiAgIFRFSTBbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTBfMToxOyAgICAgLyogICBURUkwWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFUkkxXzA6MTsgICAgIC8qICAgRVJJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVJJMV8xOjE7ICAgICAvKiAgIEVSSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUlhJMV8wOjE7ICAgICAvKiAgIFJYSTFbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJYSTFfMToxOyAgICAgLyogICBSWEkxWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUWEkxXzA6MTsgICAgIC8qICAgVFhJMVswXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVFhJMV8xOjE7ICAgICAvKiAgIFRYSTFbMV0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSTFfMDoxOyAgICAgLyogICBURUkxWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURUkxXzE6MTsgICAgIC8qICAgVEVJMVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEVSSV8wOjE7ICAgLyogICBFVEhFUklbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhFUklfMToxOyAgIC8qICAgRVRIRVJJWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVUlfMDoxOyAgICAgLyogICBDRVVJWzBdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVJXzE6MTsgICAgIC8qICAgQ0VVSVsxXSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSXzA6MTsvKiAgIElOVF9DU0lIMFRJUlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSXzE6MTsvKiAgIElOVF9DU0lIMFRJUlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgwVElSRV8wOjE7LyogICBJTlRfQ1NJSDBUSVJFWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDBUSVJFXzE6MTsvKiAgIElOVF9DU0lIMFRJUkVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJQ18wOjE7LyogICBJTlRfQ1NJSDFUSUNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElOVF9DU0lIMVRJQ18xOjE7LyogICBJTlRfQ1NJSDFUSUNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyMjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU5UX0NTSUgxVElKQ18wOjE7LyogICBJTlRfQ1NJSDFUSUpDWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTlRfQ1NJSDFUSUpDXzE6MTsvKiAgIElOVF9DU0lIMVRJSkNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMF8wOjE7ICAgLyogICBFQ0NFMTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTBfMToxOyAgIC8qICAgRUNDRTEwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIwXzA6MTsgICAvKiAgIEVDQ0UyMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMF8xOjE7ICAgLyogICBFQ0NFMjBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYwXzA6MTsgIC8qICAgRUNDT1ZGMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMF8xOjE7ICAvKiAgIEVDQ09WRjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMV8wOjE7ICAgLyogICBFQ0NFMTFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTFfMToxOyAgIC8qICAgRUNDRTExWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIxXzA6MTsgICAvKiAgIEVDQ0UyMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMV8xOjE7ICAgLyogICBFQ0NFMjFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYxXzA6MTsgIC8qICAgRUNDT1ZGMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMV8xOjE7ICAvKiAgIEVDQ09WRjFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxMl8wOjE7ICAgLyogICBFQ0NFMTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTJfMToxOyAgIC8qICAgRUNDRTEyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIyXzA6MTsgICAvKiAgIEVDQ0UyMlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyMl8xOjE7ICAgLyogICBFQ0NFMjJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYyXzA6MTsgIC8qICAgRUNDT1ZGMlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGMl8xOjE7ICAvKiAgIEVDQ09WRjJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UxM18wOjE7ICAgLyogICBFQ0NFMTNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NFMTNfMToxOyAgIC8qICAgRUNDRTEzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDRTIzXzA6MTsgICAvKiAgIEVDQ0UyM1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0UyM18xOjE7ICAgLyogICBFQ0NFMjNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQ0NPVkYzXzA6MTsgIC8qICAgRUNDT1ZGM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRUNDT1ZGM18xOjE7ICAvKiAgIEVDQ09WRjNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWE1MQl9FUlJJTlRfMDoxOy8qICAgSDJYTUxCX0VSUklOVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSDJYTUxCX0VSUklOVF8xOjE7LyogICBIMlhNTEJfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBIMlhJQzFfRVJSSU5UXzA6MTsvKiAgIEgyWElDMV9FUlJJTlRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEgyWElDMV9FUlJJTlRfMToxOy8qICAgSDJYSUMxX0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTFfRVJSSU5UXzA6MTsvKiAgIFgySFBFUkkxX0VSUklOVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTFfRVJSSU5UXzE6MTsvKiAgIFgySFBFUkkxX0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjIzOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMl9FUlJJTlRfMDoxOy8qICAgWDJIUEVSSTJfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMl9FUlJJTlRfMToxOy8qICAgWDJIUEVSSTJfRVJSSU5UWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJMzRfRVJSSU5UXzA6MTsvKiAgIFgySFBFUkkzNF9FUlJJTlRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySFBFUkkzNF9FUlJJTlRfMToxOy8qICAgWDJIUEVSSTM0X0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTVfRVJSSU5UXzA6MTsvKiAgIFgySFBFUkk1X0VSUklOVFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTVfRVJSSU5UXzE6MTsvKiAgIFgySFBFUkk1X0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgWDJIUEVSSTY3X0VSUklOVF8wOjE7LyogICBYMkhQRVJJNjdfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhQRVJJNjdfRVJSSU5UXzE6MTsvKiAgIFgySFBFUkk2N19FUlJJTlRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFgySERCR1JfRVJSSU5UXzA6MTsvKiAgIFgySERCR1JfRVJSSU5UWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBYMkhEQkdSX0VSUklOVF8xOjE7LyogICBYMkhEQkdSX0VSUklOVFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUFJSSV8wOjE7ICAgICAvKiAgIFBSUklbMF0gICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBSUklfMToxOyAgICAgLyogICBQUlJJWzFdICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMF8wOjE7ICAgIC8qICAgSUZFSTBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUZFSTBfMToxOyAgICAvKiAgIElGRUkwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkwXzA6MTsgICAgLyogICBPRkZJMFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPRkZJMF8xOjE7ICAgIC8qICAgT0ZGSTBbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkwXzA6MTsgICAvKiAgIFBGVkVJMFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMF8xOjE7ICAgLyogICBQRlZFSTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJRkVJMV8wOjE7ICAgIC8qICAgSUZFSTFbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSUZFSTFfMToxOyAgICAvKiAgIElGRUkxWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9GRkkxXzA6MTsgICAgLyogICBPRkZJMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPRkZJMV8xOjE7ICAgIC8qICAgT0ZGSTFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUEZWRUkxXzA6MTsgICAvKiAgIFBGVkVJMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBGVkVJMV8xOjE7ICAgLyogICBQRlZFSTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjI0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyNSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBkdW1teTozMjsgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjI1OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyNiAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMF8wOjE7ICAgIC8qICAgVElOVDBbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDBfMToxOyAgICAvKiAgIFRJTlQwWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxXzA6MTsgICAgLyogICBUSU5UMVswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMV8xOjE7ICAgIC8qICAgVElOVDFbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDJfMDoxOyAgICAvKiAgIFRJTlQyWzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyXzE6MTsgICAgLyogICBUSU5UMlsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UM18wOjE7ICAgIC8qICAgVElOVDNbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDNfMToxOyAgICAvKiAgIFRJTlQzWzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0XzA6MTsgICAgLyogICBUSU5UNFswXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNF8xOjE7ICAgIC8qICAgVElOVDRbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDVfMDoxOyAgICAvKiAgIFRJTlQ1WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1XzE6MTsgICAgLyogICBUSU5UNVsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNl8wOjE7ICAgIC8qICAgVElOVDZbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDZfMToxOyAgICAvKiAgIFRJTlQ2WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3XzA6MTsgICAgLyogICBUSU5UN1swXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UN18xOjE7ICAgIC8qICAgVElOVDdbMV0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDhfMDoxOyAgICAvKiAgIFRJTlQ4WzBdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4XzE6MTsgICAgLyogICBUSU5UOFsxXSAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOV8wOjE7ICAgIC8qICAgVElOVDlbMF0gICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDlfMToxOyAgICAvKiAgIFRJTlQ5WzFdICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMF8wOjE7ICAgLyogICBUSU5UMTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTBfMToxOyAgIC8qICAgVElOVDEwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExXzA6MTsgICAvKiAgIFRJTlQxMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMV8xOjE7ICAgLyogICBUSU5UMTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTJfMDoxOyAgIC8qICAgVElOVDEyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyXzE6MTsgICAvKiAgIFRJTlQxMlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxM18wOjE7ICAgLyogICBUSU5UMTNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTNfMToxOyAgIC8qICAgVElOVDEzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0XzA6MTsgICAvKiAgIFRJTlQxNFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNF8xOjE7ICAgLyogICBUSU5UMTRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTVfMDoxOyAgIC8qICAgVElOVDE1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1XzE6MTsgICAvKiAgIFRJTlQxNVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyNjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMjcgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2XzA6MTsgICAvKiAgIFRJTlQxNlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNl8xOjE7ICAgLyogICBUSU5UMTZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTdfMDoxOyAgIC8qICAgVElOVDE3WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE3XzE6MTsgICAvKiAgIFRJTlQxN1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxOF8wOjE7ICAgLyogICBUSU5UMThbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMThfMToxOyAgIC8qICAgVElOVDE4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE5XzA6MTsgICAvKiAgIFRJTlQxOVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxOV8xOjE7ICAgLyogICBUSU5UMTlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjBfMDoxOyAgIC8qICAgVElOVDIwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIwXzE6MTsgICAvKiAgIFRJTlQyMFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMV8wOjE7ICAgLyogICBUSU5UMjFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjFfMToxOyAgIC8qICAgVElOVDIxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIyXzA6MTsgICAvKiAgIFRJTlQyMlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyMl8xOjE7ICAgLyogICBUSU5UMjJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjNfMDoxOyAgIC8qICAgVElOVDIzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDIzXzE6MTsgICAvKiAgIFRJTlQyM1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNF8wOjE7ICAgLyogICBUSU5UMjRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjRfMToxOyAgIC8qICAgVElOVDI0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI1XzA6MTsgICAvKiAgIFRJTlQyNVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyNV8xOjE7ICAgLyogICBUSU5UMjVbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjZfMDoxOyAgIC8qICAgVElOVDI2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI2XzE6MTsgICAvKiAgIFRJTlQyNlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyN18wOjE7ICAgLyogICBUSU5UMjdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjdfMToxOyAgIC8qICAgVElOVDI3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI4XzA6MTsgICAvKiAgIFRJTlQyOFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQyOF8xOjE7ICAgLyogICBUSU5UMjhbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMjlfMDoxOyAgIC8qICAgVElOVDI5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDI5XzE6MTsgICAvKiAgIFRJTlQyOVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMF8wOjE7ICAgLyogICBUSU5UMzBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzBfMToxOyAgIC8qICAgVElOVDMwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMxXzA6MTsgICAvKiAgIFRJTlQzMVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMV8xOjE7ICAgLyogICBUSU5UMzFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMjc7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjI4ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzMl8wOjE7ICAgLyogICBUSU5UMzJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzJfMToxOyAgIC8qICAgVElOVDMyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDMzXzA6MTsgICAvKiAgIFRJTlQzM1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzM18xOjE7ICAgLyogICBUSU5UMzNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzRfMDoxOyAgIC8qICAgVElOVDM0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM0XzE6MTsgICAvKiAgIFRJTlQzNFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNV8wOjE7ICAgLyogICBUSU5UMzVbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzVfMToxOyAgIC8qICAgVElOVDM1WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM2XzA6MTsgICAvKiAgIFRJTlQzNlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzNl8xOjE7ICAgLyogICBUSU5UMzZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzdfMDoxOyAgIC8qICAgVElOVDM3WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM3XzE6MTsgICAvKiAgIFRJTlQzN1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOF8wOjE7ICAgLyogICBUSU5UMzhbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMzhfMToxOyAgIC8qICAgVElOVDM4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDM5XzA6MTsgICAvKiAgIFRJTlQzOVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQzOV8xOjE7ICAgLyogICBUSU5UMzlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDBfMDoxOyAgIC8qICAgVElOVDQwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQwXzE6MTsgICAvKiAgIFRJTlQ0MFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0MV8wOjE7ICAgLyogICBUSU5UNDFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDFfMToxOyAgIC8qICAgVElOVDQxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQyXzA6MTsgICAvKiAgIFRJTlQ0MlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0Ml8xOjE7ICAgLyogICBUSU5UNDJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDNfMDoxOyAgIC8qICAgVElOVDQzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQzXzE6MTsgICAvKiAgIFRJTlQ0M1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NF8wOjE7ICAgLyogICBUSU5UNDRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDRfMToxOyAgIC8qICAgVElOVDQ0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ1XzA6MTsgICAvKiAgIFRJTlQ0NVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0NV8xOjE7ICAgLyogICBUSU5UNDVbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDZfMDoxOyAgIC8qICAgVElOVDQ2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ2XzE6MTsgICAvKiAgIFRJTlQ0NlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0N18wOjE7ICAgLyogICBUSU5UNDdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDdfMToxOyAgIC8qICAgVElOVDQ3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjI4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIyOSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDhfMDoxOyAgIC8qICAgVElOVDQ4WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDQ4XzE6MTsgICAvKiAgIFRJTlQ0OFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ0OV8wOjE7ICAgLyogICBUSU5UNDlbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNDlfMToxOyAgIC8qICAgVElOVDQ5WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUwXzA6MTsgICAvKiAgIFRJTlQ1MFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1MF8xOjE7ICAgLyogICBUSU5UNTBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTFfMDoxOyAgIC8qICAgVElOVDUxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUxXzE6MTsgICAvKiAgIFRJTlQ1MVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Ml8wOjE7ICAgLyogICBUSU5UNTJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTJfMToxOyAgIC8qICAgVElOVDUyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDUzXzA6MTsgICAvKiAgIFRJTlQ1M1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1M18xOjE7ICAgLyogICBUSU5UNTNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTRfMDoxOyAgIC8qICAgVElOVDU0WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU0XzE6MTsgICAvKiAgIFRJTlQ1NFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1NV8wOjE7ICAgLyogICBUSU5UNTVbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTVfMToxOyAgIC8qICAgVElOVDU1WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU2XzA6MTsgICAvKiAgIFRJTlQ1NlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1Nl8xOjE7ICAgLyogICBUSU5UNTZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNTdfMDoxOyAgIC8qICAgVElOVDU3WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU3XzE6MTsgICAvKiAgIFRJTlQ1N1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1OF8wOjE7ICAgLyogICBUSU5UNThbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNThfMToxOyAgIC8qICAgVElOVDU4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDU5XzA6MTsgICAvKiAgIFRJTlQ1OVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ1OV8xOjE7ICAgLyogICBUSU5UNTlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjBfMDoxOyAgIC8qICAgVElOVDYwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYwXzE6MTsgICAvKiAgIFRJTlQ2MFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2MV8wOjE7ICAgLyogICBUSU5UNjFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjFfMToxOyAgIC8qICAgVElOVDYxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYyXzA6MTsgICAvKiAgIFRJTlQ2MlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Ml8xOjE7ICAgLyogICBUSU5UNjJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjNfMDoxOyAgIC8qICAgVElOVDYzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDYzXzE6MTsgICAvKiAgIFRJTlQ2M1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIyOTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY0XzA6MTsgICAvKiAgIFRJTlQ2NFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2NF8xOjE7ICAgLyogICBUSU5UNjRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjVfMDoxOyAgIC8qICAgVElOVDY1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY1XzE6MTsgICAvKiAgIFRJTlQ2NVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2Nl8wOjE7ICAgLyogICBUSU5UNjZbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjZfMToxOyAgIC8qICAgVElOVDY2WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY3XzA6MTsgICAvKiAgIFRJTlQ2N1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2N18xOjE7ICAgLyogICBUSU5UNjdbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjhfMDoxOyAgIC8qICAgVElOVDY4WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDY4XzE6MTsgICAvKiAgIFRJTlQ2OFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ2OV8wOjE7ICAgLyogICBUSU5UNjlbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNjlfMToxOyAgIC8qICAgVElOVDY5WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcwXzA6MTsgICAvKiAgIFRJTlQ3MFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3MF8xOjE7ICAgLyogICBUSU5UNzBbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzFfMDoxOyAgIC8qICAgVElOVDcxWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDcxXzE6MTsgICAvKiAgIFRJTlQ3MVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3Ml8wOjE7ICAgLyogICBUSU5UNzJbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UNzJfMToxOyAgIC8qICAgVElOVDcyWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDczXzA6MTsgICAvKiAgIFRJTlQ3M1swXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ3M18xOjE7ICAgLyogICBUSU5UNzNbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjMwOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIzMSAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODBfMDoxOyAgIC8qICAgVElOVDgwWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgwXzE6MTsgICAvKiAgIFRJTlQ4MFsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4MV8wOjE7ICAgLyogICBUSU5UODFbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODFfMToxOyAgIC8qICAgVElOVDgxWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgyXzA6MTsgICAvKiAgIFRJTlQ4MlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4Ml8xOjE7ICAgLyogICBUSU5UODJbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODNfMDoxOyAgIC8qICAgVElOVDgzWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDgzXzE6MTsgICAvKiAgIFRJTlQ4M1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NF8wOjE7ICAgLyogICBUSU5UODRbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODRfMToxOyAgIC8qICAgVElOVDg0WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg1XzA6MTsgICAvKiAgIFRJTlQ4NVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4NV8xOjE7ICAgLyogICBUSU5UODVbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODZfMDoxOyAgIC8qICAgVElOVDg2WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg2XzE6MTsgICAvKiAgIFRJTlQ4NlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4N18wOjE7ICAgLyogICBUSU5UODdbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODdfMToxOyAgIC8qICAgVElOVDg3WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg4XzA6MTsgICAvKiAgIFRJTlQ4OFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ4OF8xOjE7ICAgLyogICBUSU5UODhbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UODlfMDoxOyAgIC8qICAgVElOVDg5WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDg5XzE6MTsgICAvKiAgIFRJTlQ4OVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MF8wOjE7ICAgLyogICBUSU5UOTBbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTBfMToxOyAgIC8qICAgVElOVDkwWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkxXzA6MTsgICAvKiAgIFRJTlQ5MVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5MV8xOjE7ICAgLyogICBUSU5UOTFbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTJfMDoxOyAgIC8qICAgVElOVDkyWzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDkyXzE6MTsgICAvKiAgIFRJTlQ5MlsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5M18wOjE7ICAgLyogICBUSU5UOTNbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTNfMToxOyAgIC8qICAgVElOVDkzWzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk0XzA6MTsgICAvKiAgIFRJTlQ5NFswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5NF8xOjE7ICAgLyogICBUSU5UOTRbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTVfMDoxOyAgIC8qICAgVElOVDk1WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk1XzE6MTsgICAvKiAgIFRJTlQ5NVsxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzMTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk2XzA6MTsgICAvKiAgIFRJTlQ5NlswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5Nl8xOjE7ICAgLyogICBUSU5UOTZbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOTdfMDoxOyAgIC8qICAgVElOVDk3WzBdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk3XzE6MTsgICAvKiAgIFRJTlQ5N1sxXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OF8wOjE7ICAgLyogICBUSU5UOThbMF0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UOThfMToxOyAgIC8qICAgVElOVDk4WzFdICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDk5XzA6MTsgICAvKiAgIFRJTlQ5OVswXSAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQ5OV8xOjE7ICAgLyogICBUSU5UOTlbMV0gICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAwXzA6MTsgIC8qICAgVElOVDEwMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMF8xOjE7ICAvKiAgIFRJTlQxMDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDFfMDoxOyAgLyogICBUSU5UMTAxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAxXzE6MTsgIC8qICAgVElOVDEwMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwMl8wOjE7ICAvKiAgIFRJTlQxMDJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDJfMToxOyAgLyogICBUSU5UMTAyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTAzXzA6MTsgIC8qICAgVElOVDEwM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwM18xOjE7ICAvKiAgIFRJTlQxMDNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDRfMDoxOyAgLyogICBUSU5UMTA0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA0XzE6MTsgIC8qICAgVElOVDEwNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNV8wOjE7ICAvKiAgIFRJTlQxMDVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDVfMToxOyAgLyogICBUSU5UMTA1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA2XzA6MTsgIC8qICAgVElOVDEwNlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwNl8xOjE7ICAvKiAgIFRJTlQxMDZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDdfMDoxOyAgLyogICBUSU5UMTA3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA3XzE6MTsgIC8qICAgVElOVDEwN1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOF8wOjE7ICAvKiAgIFRJTlQxMDhbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMDhfMToxOyAgLyogICBUSU5UMTA4WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTA5XzA6MTsgIC8qICAgVElOVDEwOVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEwOV8xOjE7ICAvKiAgIFRJTlQxMDlbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTBfMDoxOyAgLyogICBUSU5UMTEwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEwXzE6MTsgIC8qICAgVElOVDExMFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExMV8wOjE7ICAvKiAgIFRJTlQxMTFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTFfMToxOyAgLyogICBUSU5UMTExWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMzI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjMzICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTJfMDoxOyAgLyogICBUSU5UMTEyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTEyXzE6MTsgIC8qICAgVElOVDExMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExM18wOjE7ICAvKiAgIFRJTlQxMTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTNfMToxOyAgLyogICBUSU5UMTEzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE0XzA6MTsgIC8qICAgVElOVDExNFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNF8xOjE7ICAvKiAgIFRJTlQxMTRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTVfMDoxOyAgLyogICBUSU5UMTE1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE1XzE6MTsgIC8qICAgVElOVDExNVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExNl8wOjE7ICAvKiAgIFRJTlQxMTZbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTZfMToxOyAgLyogICBUSU5UMTE2WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE3XzA6MTsgIC8qICAgVElOVDExN1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExN18xOjE7ICAvKiAgIFRJTlQxMTdbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMThfMDoxOyAgLyogICBUSU5UMTE4WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTE4XzE6MTsgIC8qICAgVElOVDExOFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDExOV8wOjE7ICAvKiAgIFRJTlQxMTlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMTlfMToxOyAgLyogICBUSU5UMTE5WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIwXzA6MTsgIC8qICAgVElOVDEyMFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMF8xOjE7ICAvKiAgIFRJTlQxMjBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjFfMDoxOyAgLyogICBUSU5UMTIxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIxXzE6MTsgIC8qICAgVElOVDEyMVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyMl8wOjE7ICAvKiAgIFRJTlQxMjJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjJfMToxOyAgLyogICBUSU5UMTIyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTIzXzA6MTsgIC8qICAgVElOVDEyM1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyM18xOjE7ICAvKiAgIFRJTlQxMjNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjRfMDoxOyAgLyogICBUSU5UMTI0WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI0XzE6MTsgIC8qICAgVElOVDEyNFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNV8wOjE7ICAvKiAgIFRJTlQxMjVbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjVfMToxOyAgLyogICBUSU5UMTI1WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI2XzA6MTsgIC8qICAgVElOVDEyNlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyNl8xOjE7ICAvKiAgIFRJTlQxMjZbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjdfMDoxOyAgLyogICBUSU5UMTI3WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI3XzE6MTsgIC8qICAgVElOVDEyN1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIH0gSUNESUNGUjMzOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDRElDRlIzNCAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI4XzA6MTsgIC8qICAgVElOVDEyOFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEyOF8xOjE7ICAvKiAgIFRJTlQxMjhbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMjlfMDoxOyAgLyogICBUSU5UMTI5WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTI5XzE6MTsgIC8qICAgVElOVDEyOVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMF8wOjE7ICAvKiAgIFRJTlQxMzBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzBfMToxOyAgLyogICBUSU5UMTMwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMxXzA6MTsgIC8qICAgVElOVDEzMVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzMV8xOjE7ICAvKiAgIFRJTlQxMzFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzJfMDoxOyAgLyogICBUSU5UMTMyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTMyXzE6MTsgIC8qICAgVElOVDEzMlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzM18wOjE7ICAvKiAgIFRJTlQxMzNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzNfMToxOyAgLyogICBUSU5UMTMzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM0XzA6MTsgIC8qICAgVElOVDEzNFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNF8xOjE7ICAvKiAgIFRJTlQxMzRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzVfMDoxOyAgLyogICBUSU5UMTM1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM1XzE6MTsgIC8qICAgVElOVDEzNVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzNl8wOjE7ICAvKiAgIFRJTlQxMzZbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzZfMToxOyAgLyogICBUSU5UMTM2WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM3XzA6MTsgIC8qICAgVElOVDEzN1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzN18xOjE7ICAvKiAgIFRJTlQxMzdbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzhfMDoxOyAgLyogICBUSU5UMTM4WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTM4XzE6MTsgIC8qICAgVElOVDEzOFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDEzOV8wOjE7ICAvKiAgIFRJTlQxMzlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxMzlfMToxOyAgLyogICBUSU5UMTM5WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQwXzA6MTsgIC8qICAgVElOVDE0MFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0MF8xOjE7ICAvKiAgIFRJTlQxNDBbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDFfMDoxOyAgLyogICBUSU5UMTQxWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQxXzE6MTsgIC8qICAgVElOVDE0MVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0Ml8wOjE7ICAvKiAgIFRJTlQxNDJbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDJfMToxOyAgLyogICBUSU5UMTQyWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQzXzA6MTsgIC8qICAgVElOVDE0M1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0M18xOjE7ICAvKiAgIFRJTlQxNDNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICB9IElDRElDRlIzNDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0RJQ0ZSMzUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NF8wOjE7ICAvKiAgIFRJTlQxNDRbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDRfMToxOyAgLyogICBUSU5UMTQ0WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ1XzA6MTsgIC8qICAgVElOVDE0NVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0NV8xOjE7ICAvKiAgIFRJTlQxNDVbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDZfMDoxOyAgLyogICBUSU5UMTQ2WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ2XzE6MTsgIC8qICAgVElOVDE0NlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0N18wOjE7ICAvKiAgIFRJTlQxNDdbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDdfMToxOyAgLyogICBUSU5UMTQ3WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ4XzA6MTsgIC8qICAgVElOVDE0OFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE0OF8xOjE7ICAvKiAgIFRJTlQxNDhbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNDlfMDoxOyAgLyogICBUSU5UMTQ5WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTQ5XzE6MTsgIC8qICAgVElOVDE0OVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MF8wOjE7ICAvKiAgIFRJTlQxNTBbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTBfMToxOyAgLyogICBUSU5UMTUwWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUxXzA6MTsgIC8qICAgVElOVDE1MVswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1MV8xOjE7ICAvKiAgIFRJTlQxNTFbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTJfMDoxOyAgLyogICBUSU5UMTUyWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTUyXzE6MTsgIC8qICAgVElOVDE1MlsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1M18wOjE7ICAvKiAgIFRJTlQxNTNbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTNfMToxOyAgLyogICBUSU5UMTUzWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU0XzA6MTsgIC8qICAgVElOVDE1NFswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1NF8xOjE7ICAvKiAgIFRJTlQxNTRbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTVfMDoxOyAgLyogICBUSU5UMTU1WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU1XzE6MTsgIC8qICAgVElOVDE1NVsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1Nl8wOjE7ICAvKiAgIFRJTlQxNTZbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTZfMToxOyAgLyogICBUSU5UMTU2WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU3XzA6MTsgIC8qICAgVElOVDE1N1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1N18xOjE7ICAvKiAgIFRJTlQxNTdbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNThfMDoxOyAgLyogICBUSU5UMTU4WzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTU4XzE6MTsgIC8qICAgVElOVDE1OFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE1OV8wOjE7ICAvKiAgIFRJTlQxNTlbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNTlfMToxOyAgLyogICBUSU5UMTU5WzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMzU7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNESUNGUjM2ICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjBfMDoxOyAgLyogICBUSU5UMTYwWzBdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYwXzE6MTsgIC8qICAgVElOVDE2MFsxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2MV8wOjE7ICAvKiAgIFRJTlQxNjFbMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJTlQxNjFfMToxOyAgLyogICBUSU5UMTYxWzFdICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBUSU5UMTYyXzA6MTsgIC8qICAgVElOVDE2MlswXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVElOVDE2Ml8xOjE7ICAvKiAgIFRJTlQxNjJbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNjsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgfSBJQ0RJQ0ZSMzY7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNESUNGUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxOVsxMDhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcHBpX3N0YXR1cyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjExOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHBwaV9zdGF0dXMwOjE7ICAgICAgICAgICAgIC8qICAgcHBpX3N0YXR1c1swXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBwcGlfc3RhdHVzMToxOyAgICAgICAgICAgICAvKiAgIHBwaV9zdGF0dXNbMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgcHBpX3N0YXR1czI6MTsgICAgICAgICAgICAgLyogICBwcGlfc3RhdHVzWzJdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHBwaV9zdGF0dXMzOjE7ICAgICAgICAgICAgIC8qICAgcHBpX3N0YXR1c1szXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBwcGlfc3RhdHVzNDoxOyAgICAgICAgICAgICAvKiAgIHBwaV9zdGF0dXNbNF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IHBwaV9zdGF0dXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3BpX3N0YXR1cyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czA6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzBdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxOjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjoxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czM6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzNdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXM0OjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1s0XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzNToxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbNV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czY6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzZdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXM3OjE7ICAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1s3XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzODoxOyAgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbOF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czk6MTsgICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzldICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxMDoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxMF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czExOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzExXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTI6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMTJdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxMzoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxM10gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czE0OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzE0XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTU6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMTVdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxNjoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxNl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czE3OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzE3XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMTg6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMThdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMxOToxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1sxOV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czIwOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzIwXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjE6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjFdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyMjoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syMl0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czIzOjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzIzXSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjQ6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjRdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyNToxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syNV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czI2OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzI2XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMjc6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMjddICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMyODoxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1syOF0gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgc3BpX3N0YXR1czI5OjE7ICAgICAgICAgICAgLyogICBzcGlfc3RhdHVzWzI5XSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBzcGlfc3RhdHVzMzA6MTsgICAgICAgICAgICAvKiAgIHNwaV9zdGF0dXNbMzBdICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIHNwaV9zdGF0dXMzMToxOyAgICAgICAgICAgIC8qICAgc3BpX3N0YXR1c1szMV0gKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gc3BpX3N0YXR1c1sxN107ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMFs0NDBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNEU0dJUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0dJSU5USUQ6NDsgICAgICAgICAgICAgICAgLyogICBTR0lJTlRJRCAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQVRUOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIFNBVFQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1BVVGFyZ2V0TGlzdDo4OyAgICAgICAgICAgLyogICBDUFVUYXJnZXRMaXN0ICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRhcmdldExpc3RGaWx0ZXI6MjsgICAgICAgIC8qICAgVGFyZ2V0TGlzdEZpbHRlciAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNEU0dJUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMVsyNTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDSUNSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRW5hYmxlUzoxOyAgICAgICAgICAgICAgICAgLyogICBFbmFibGVTICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVuYWJsZU5TOjE7ICAgICAgICAgICAgICAgIC8qICAgRW5hYmxlTlMgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBY2tDdGw6MTsgICAgICAgICAgICAgICAgICAvKiAgIEFja0N0bCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklRRW46MTsgICAgICAgICAgICAgICAgICAgLyogICBGSVFFbiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNCUFI6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgU0JQUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjc7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDSUNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NQTVIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQcmlvcml0eTo4OyAgICAgICAgICAgICAgICAvKiAgIFByaW9yaXR5ICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjI0OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ1BNUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDQlBSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQmluYXJ5cG9pbnQ6MzsgICAgICAgICAgICAgLyogICBCaW5hcnlwb2ludCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDQlBSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ0NJQVIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBQ0tJTlRJRDoxMDsgICAgICAgICAgICAgICAvKiAgIEFDS0lOVElEICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ1BVSUQ6MzsgICAgICAgICAgICAgICAgICAgLyogICBDUFVJRCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOTsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NJQVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ0VPSVIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVPSUlOVElEOjEwOyAgICAgICAgICAgICAgIC8qICAgRU9JSU5USUQgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUFVJRDozOyAgICAgICAgICAgICAgICAgICAvKiAgIENQVUlEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ0VPSVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDUlBSICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUHJpb3JpdHk6ODsgICAgICAgICAgICAgICAgLyogICBQcmlvcml0eSAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJQ0NSUFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElDQ0hQSVIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBFTkRJTlRJRDoxMDsgICAgICAgICAgICAgIC8qICAgUEVORElOVElEICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUFVJRDozOyAgICAgICAgICAgICAgICAgICAvKiAgIENQVUlEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE5OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IElDQ0hQSVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDQUJQUiAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQmluYXJ5cG9pbnQ6MzsgICAgICAgICAgICAgLyogICBCaW5hcnlwb2ludCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6Mjk7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNDQUJQUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syMlsyMjBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VEV09SRCBJQ0NJRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNDSURSICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLXN0cnVjdCBzdF9pbnRjXzIgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgSU5UQzIgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSUNSMCAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTk1JRjoxOyAgICAgICAgICAgICAgICAgICAgIC8qICAgTk1JRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOTUlFOjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBOTUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjY7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE5NSUw6MTsgICAgICAgICAgICAgICAgICAgICAvKiAgIE5NSUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJQ1IxICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTAwUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTAwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEwMVM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlEwMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMTBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMTBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTExUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTExUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEyMFM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlEyMFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMjFTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMjFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTMwUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTMwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEzMVM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlEzMVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNDBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNDBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTQxUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTQxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE1MFM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlE1MFMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNTFTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNTFTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTYwUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTYwUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE2MVM6MTsgICAgICAgICAgICAgICAgICAgLyogICBJUlE2MVMgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNzBTOjE7ICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNzBTICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTcxUzoxOyAgICAgICAgICAgICAgICAgICAvKiAgIElSUTcxUyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSUNSMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVJRUlIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEwRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlEwRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRMUY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRMUYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTJGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTJGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlEzRjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlEzRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRNEY6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRNEYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIElSUTVGOjE7ICAgICAgICAgICAgICAgICAgICAvKiAgIElSUTVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJUlE2RjoxOyAgICAgICAgICAgICAgICAgICAgLyogICBJUlE2RiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgSVJRN0Y6MTsgICAgICAgICAgICAgICAgICAgIC8qICAgSVJRN0YgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gSVJRUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzE2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTVhJUjAgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWEk6MTsgICAgICAgICAgICAgICAgICAgICAgLyogICBNWEkgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgOjE1OyAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBNWElSMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1YSVIxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgTVhJOjE7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgTVhJICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTVhJUjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jaWZuZGVmIEFSTV9TSU0NCi0jZGVmaW5lIElOVEMgICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9pbnRjICopICAweEU4MjAxMDAwKSAgLyogSU5UQyAgQWRkcmVzcyAqLw0KLSNkZWZpbmUgSU5UQzIgKCoodm9sYXRpbGUgc3RydWN0IHN0X2ludGNfMiAqKTB4RkNGRUY4MDApICAvKiBJTlRDMiBBZGRyZXNzICovDQotI2Vsc2UJLyogQVJNX1NJTSAqLw0KLSNkZWZpbmUgSU5UQyAgKCoodm9sYXRpbGUgc3RydWN0IHN0X2ludGMgKikgIDB4NDUyMDEwMDApICAvKiBJTlRDICBBZGRyZXNzICovDQotI2RlZmluZSBJTlRDMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfaW50Y18yICopMHg0OUZFRjgwMCkgIC8qIElOVEMyIEFkZHJlc3MgKi8NCi0jZW5kaWYJLyogQVJNX1NJTSAqLw0KLQ0KLSNlbmRpZiAvKiBfX0lOVENfSU9ERUZJTkVfSF9fICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL210dTJfaW9kZWZpbmUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvbXR1Ml9pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWNjNGRiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvbXR1Ml9pb2RlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzE1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgRElTQ0xBSU1FUg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5IA0KLSogICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4NCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyIA0KLSogICBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKg0KLSogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyANCi0qICAgUkVHQVJESU5HIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIA0KLSogICBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIA0KLSogICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgDQotKiAgIERJU0NMQUlNRUQuDQotKg0KLSogICBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTIA0KLSogICBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUgDQotKiAgIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgDQotKiAgIEZPUiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUw0KLSogICBBRkZJTElBVEVTIEhBVkUgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKg0KLSogICBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIA0KLSogICBzb2Z0d2FyZSBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLg0KLSogICBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLCB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIA0KLSogICBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUgZm9sbG93aW5nIGxpbms6IA0KLSogICBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRlY2huaWNhbCByZWZlcmVuY2UgZGF0YSAqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBTeXN0ZW0gTmFtZSA6IA0KLSogICBGaWxlIE5hbWUgICA6IG10dTJfaW9kZWZpbmUuaA0KLSogICBBYnN0cmFjdCAgICA6IA0KLSogICBWZXJzaW9uICAgICA6IDEuMDAuMDANCi0qICAgRGV2aWNlICAgICAgOiBBUk0NCi0qICAgVG9vbC1DaGFpbiAgOiANCi0qICAgT1MgICAgICAgICAgOiBOb25lDQotKiAgIEgvVyBQbGF0Zm9ybTogDQotKiAgIERlc2NyaXB0aW9uIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgSGlzdG9yeSAgICAgOiBKYW4uMTEsMjAxMyBWZXIuMS4wMC4wMA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX01UVTJfSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX01UVTJfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfbXR1MnsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgTVRVMiAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ1JfMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUFNDOjM7ICAgICAgICAgICAgICAvKiAgIFRQU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDS0VHOjI7ICAgICAgICAgICAgICAvKiAgIENLRUcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQ0xSOjI7ICAgICAgICAgICAgICAvKiAgIENDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsNCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ1JfMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUTURSXzIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRDo0OyAgICAgICAgICAgICAgICAvKiAgIE1EICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUTURSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSU9SXzIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0E6NDsgICAgICAgICAgICAgICAvKiAgIElPQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0I6NDsgICAgICAgICAgICAgICAvKiAgIElPQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSU9SXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSUVSXzIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQToxOyAgICAgICAgICAgICAvKiAgIFRHSUVBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQjoxOyAgICAgICAgICAgICAvKiAgIFRHSUVCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0lFVjoxOyAgICAgICAgICAgICAvKiAgIFRDSUVWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0lFVToxOyAgICAgICAgICAgICAvKiAgIFRDSUVVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVEdFOjE7ICAgICAgICAgICAgICAvKiAgIFRUR0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSUVSXzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1JfMiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZBOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZCOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlY6MTsgICAgICAgICAgICAgIC8qICAgVENGViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRlU6MTsgICAgICAgICAgICAgIC8qICAgVENGVSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDRkQ6MTsgICAgICAgICAgICAgIC8qICAgVENGRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRTUl8yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkFfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkFfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHUkJfMiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHUkJfMjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzUwMF07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl8zICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl8zOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDUl80ICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRQU0M6MzsgICAgICAgICAgICAgIC8qICAgVFBTQyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENLRUc6MjsgICAgICAgICAgICAgIC8qICAgQ0tFRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIENDTFI6MzsgICAgICAgICAgICAgIC8qICAgQ0NMUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDUl80OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRNRFJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE1EOjQ7ICAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQToxOyAgICAgICAgICAgICAgIC8qICAgQkZBICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGQjoxOyAgICAgICAgICAgICAgIC8qICAgQkZCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRNRFJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzMgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzM7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JIXzQgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQTo0OyAgICAgICAgICAgICAgIC8qICAgSU9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQjo0OyAgICAgICAgICAgICAgIC8qICAgSU9CICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JIXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJT1JMXzQgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPQzo0OyAgICAgICAgICAgICAgIC8qICAgSU9DICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIElPRDo0OyAgICAgICAgICAgICAgIC8qICAgSU9EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJT1JMXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRJRVJfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVBOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUEgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVCOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVDOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUMgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRHSUVEOjE7ICAgICAgICAgICAgIC8qICAgVEdJRUQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRDSUVWOjE7ICAgICAgICAgICAgIC8qICAgVENJRVYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0UyOjE7ICAgICAgICAgICAgIC8qICAgVFRHRTIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRUR0U6MTsgICAgICAgICAgICAgIC8qICAgVFRHRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRJRVJfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FM0I6MTsgICAgICAgICAgICAgIC8qICAgT0UzQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEE6MTsgICAgICAgICAgICAgIC8qICAgT0U0QSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEI6MTsgICAgICAgICAgICAgIC8qICAgT0U0QiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FM0Q6MTsgICAgICAgICAgICAgIC8qICAgT0UzRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEM6MTsgICAgICAgICAgICAgIC8qICAgT0U0QyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9FNEQ6MTsgICAgICAgICAgICAgIC8qICAgT0U0RCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPRVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRHQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFVGOjE7ICAgICAgICAgICAgICAgIC8qICAgVUYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFZGOjE7ICAgICAgICAgICAgICAgIC8qICAgVkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFdGOjE7ICAgICAgICAgICAgICAgIC8qICAgV0YgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEZCOjE7ICAgICAgICAgICAgICAgIC8qICAgRkIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFA6MTsgICAgICAgICAgICAgICAgIC8qICAgUCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE46MTsgICAgICAgICAgICAgICAgIC8qICAgTiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJEQzoxOyAgICAgICAgICAgICAgIC8qICAgQkRDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRHQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPQ1IxICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MU1A6MTsgICAgICAgICAgICAgIC8qICAgT0xTUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MU046MTsgICAgICAgICAgICAgIC8qICAgT0xTTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPQ1M6MTsgICAgICAgICAgICAgIC8qICAgVE9DUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFRPQ0w6MTsgICAgICAgICAgICAgIC8qICAgVE9DTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoyOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIFBTWUU6MTsgICAgICAgICAgICAgIC8qICAgUFNZRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPQ1IxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPQ1IyICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMVAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzFOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMU4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJQOjE7ICAgICAgICAgICAgIC8qICAgT0xTMlAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzJOOjE7ICAgICAgICAgICAgIC8qICAgT0xTMk4gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNQOjE7ICAgICAgICAgICAgIC8qICAgT0xTM1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIE9MUzNOOjE7ICAgICAgICAgICAgIC8qICAgT0xTM04gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEJGOjI7ICAgICAgICAgICAgICAgIC8qICAgQkYgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRPQ1IyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfMyAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDTlRfNCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEQ6MTY7ICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFRDTlRfNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRDRFIgICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgRDoxNjsgICAgICAgICAgICAgICAgLyogICBEICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gVENEUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVEREUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBURERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ05UUyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ05UUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ0JSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ0JSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JDXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JDXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JEXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JEXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JDXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JDXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JEXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JEXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1JfMyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZBOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZCOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZDOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZWOjE7ICAgICAgICAgICAgICAvKiAgIFRDRlYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRDRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1JfMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1JfNCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZBOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZCOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZDOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZWOjE7ICAgICAgICAgICAgICAvKiAgIFRDRlYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRDRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1JfNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSVRDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBfNFZDT1I6MzsgICAgICAgICAgICAvKiAgIF80VkNPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUNFZFTjoxOyAgICAgICAgICAgICAvKiAgIFQ0VkVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBfM0FDT1I6MzsgICAgICAgICAgICAvKiAgIF8zQUNPUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUM0FFTjoxOyAgICAgICAgICAgICAvKiAgIFQzQUVOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSVRDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSVRDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBfNFZDTlQ6MzsgICAgICAgICAgICAvKiAgIF80VkNOVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBfM0FDTlQ6MzsgICAgICAgICAgICAvKiAgIF8zQUNOVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSVRDTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQlRFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCVEU6MjsgICAgICAgICAgICAgICAvKiAgIEJURSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQlRFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUREVSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUREVSOjE7ICAgICAgICAgICAgICAvKiAgIFRERVIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUREVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUT0xCUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMxUDoxOyAgICAgICAgICAgICAvKiAgIE9MUzFQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMxTjoxOyAgICAgICAgICAgICAvKiAgIE9MUzFOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMyUDoxOyAgICAgICAgICAgICAvKiAgIE9MUzJQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMyTjoxOyAgICAgICAgICAgICAvKiAgIE9MUzJOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMzUDoxOyAgICAgICAgICAgICAvKiAgIE9MUzNQICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPTFMzTjoxOyAgICAgICAgICAgICAvKiAgIE9MUzNOICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUT0xCUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQlRNXzMgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNBOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNCOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0IgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQlRNXzM7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQlRNXzQgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNBOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNCOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0IgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQlRNXzQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1s2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQURDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJVEI0VkU6MTsgICAgICAgICAgICAvKiAgIElUQjRWRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJVEIzQUU6MTsgICAgICAgICAgICAvKiAgIElUQjNBRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJVEE0VkU6MTsgICAgICAgICAgICAvKiAgIElUQTRWRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJVEEzQUU6MTsgICAgICAgICAgICAvKiAgIElUQTNBRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVDRCRToxOyAgICAgICAgICAgICAvKiAgIERUNEJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVVDRCRToxOyAgICAgICAgICAgICAvKiAgIFVUNEJFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVDRBRToxOyAgICAgICAgICAgICAvKiAgIERUNEFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVVDRBRToxOyAgICAgICAgICAgICAvKiAgIFVUNEFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRjoyOyAgICAgICAgICAgICAgICAvKiAgIEJGICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQURDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQURDT1JBXzQgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQURDT1JBXzQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQURDT1JCXzQgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQURDT1JCXzQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQURDT0JSQV80ICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQURDT0JSQV80OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQURDT0JSQl80ICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQURDT0JSQl80OyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsyMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUV0NSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBXUkU6MTsgICAgICAgICAgICAgICAvKiAgIFdSRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQ0U6MTsgICAgICAgICAgICAgICAvKiAgIENDRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUV0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbMzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1RSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDU1QwOjE7ICAgICAgICAgICAgICAvKiAgIENTVDAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDU1QxOjE7ICAgICAgICAgICAgICAvKiAgIENTVDEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDU1QyOjE7ICAgICAgICAgICAgICAvKiAgIENTVDIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDU1QzOjE7ICAgICAgICAgICAgICAvKiAgIENTVDMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDU1Q0OjE7ICAgICAgICAgICAgICAvKiAgIENTVDQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1RSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1lSICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWU5DMDoxOyAgICAgICAgICAgICAvKiAgIFNZTkMwICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWU5DMToxOyAgICAgICAgICAgICAvKiAgIFNZTkMxICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWU5DMjoxOyAgICAgICAgICAgICAvKiAgIFNZTkMyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWU5DMzoxOyAgICAgICAgICAgICAvKiAgIFNZTkMzICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBTWU5DNDoxOyAgICAgICAgICAgICAvKiAgIFNZTkM0ICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1lSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUUldFUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBSV0U6MTsgICAgICAgICAgICAgICAvKiAgIFJXRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUUldFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbMTIzXTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ1JfMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUFNDOjM7ICAgICAgICAgICAgICAvKiAgIFRQU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDS0VHOjI7ICAgICAgICAgICAgICAvKiAgIENLRUcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQ0xSOjM7ICAgICAgICAgICAgICAvKiAgIENDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ1JfMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUTURSXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRDo0OyAgICAgICAgICAgICAgICAvKiAgIE1EICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCRkE6MTsgICAgICAgICAgICAgICAvKiAgIEJGQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCRkI6MTsgICAgICAgICAgICAgICAvKiAgIEJGQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBCRkU6MTsgICAgICAgICAgICAgICAvKiAgIEJGRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUTURSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSU9SSF8wICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0E6NDsgICAgICAgICAgICAgICAvKiAgIElPQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0I6NDsgICAgICAgICAgICAgICAvKiAgIElPQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSU9SSF8wOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSU9STF8wICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0M6NDsgICAgICAgICAgICAgICAvKiAgIElPQyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0Q6NDsgICAgICAgICAgICAgICAvKiAgIElPRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSU9STF8wOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSUVSXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQToxOyAgICAgICAgICAgICAvKiAgIFRHSUVBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQjoxOyAgICAgICAgICAgICAvKiAgIFRHSUVCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQzoxOyAgICAgICAgICAgICAvKiAgIFRHSUVDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFRDoxOyAgICAgICAgICAgICAvKiAgIFRHSUVEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0lFVjoxOyAgICAgICAgICAgICAvKiAgIFRDSUVWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVEdFOjE7ICAgICAgICAgICAgICAvKiAgIFRUR0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSUVSXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1JfMCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZBOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZCOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZDOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZWOjE7ICAgICAgICAgICAgICAvKiAgIFRDRlYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1JfMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ05UXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ05UXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JDXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JDXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JEXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JEXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JFXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JFXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JGXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JGXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSUVSMl8wICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFRToxOyAgICAgICAgICAgICAvKiAgIFRHSUVFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFRjoxOyAgICAgICAgICAgICAvKiAgIFRHSUVGICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVEdFMjoxOyAgICAgICAgICAgICAvKiAgIFRUR0UyICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSUVSMl8wOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1IyXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZFOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZGOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1IyXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQlRNXzAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNBOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNCOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0IgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVFNFOjE7ICAgICAgICAgICAgICAvKiAgIFRUU0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQlRNXzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTRbODldOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ1JfMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUUFNDOjM7ICAgICAgICAgICAgICAvKiAgIFRQU0MgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDS0VHOjI7ICAgICAgICAgICAgICAvKiAgIENLRUcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBDQ0xSOjI7ICAgICAgICAgICAgICAvKiAgIENDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsNCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ1JfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUTURSXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBNRDo0OyAgICAgICAgICAgICAgICAvKiAgIE1EICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUTURSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSU9SXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0E6NDsgICAgICAgICAgICAgICAvKiAgIElPQSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJT0I6NDsgICAgICAgICAgICAgICAvKiAgIElPQiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSU9SXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSUVSXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQToxOyAgICAgICAgICAgICAvKiAgIFRHSUVBICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0lFQjoxOyAgICAgICAgICAgICAvKiAgIFRHSUVCICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0lFVjoxOyAgICAgICAgICAgICAvKiAgIFRDSUVWICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0lFVToxOyAgICAgICAgICAgICAvKiAgIFRDSUVVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUVEdFOjE7ICAgICAgICAgICAgICAvKiAgIFRUR0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSUVSXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUU1JfMSAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZBOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkEgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUR0ZCOjE7ICAgICAgICAgICAgICAvKiAgIFRHRkIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZWOjE7ICAgICAgICAgICAgICAvKiAgIFRDRlYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZVOjE7ICAgICAgICAgICAgICAvKiAgIFRDRlUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBUQ0ZEOjE7ICAgICAgICAgICAgICAvKiAgIFRDRkQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUU1JfMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQ05UXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUQ05UXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JBXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JBXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUR1JCXzEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEOjE2OyAgICAgICAgICAgICAgICAvKiAgIEQgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUR1JCXzE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTZbNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBUSUNDUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJMUFFOjE7ICAgICAgICAgICAgICAvKiAgIEkxQUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJMUJFOjE7ICAgICAgICAgICAgICAvKiAgIEkxQkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJMkFFOjE7ICAgICAgICAgICAgICAvKiAgIEkyQUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBJMkJFOjE7ICAgICAgICAgICAgICAvKiAgIEkyQkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBUSUNDUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0NCi0jZGVmaW5lIE1UVTIgKCoodm9sYXRpbGUgc3RydWN0IHN0X210dTIgKikweEZDRkYwMDAwKSAgLyogTVRVMiBBZGRyZXNzICovDQotDQotI2VuZGlmIC8qIF9fTVRVMl9JT0RFRklORV9IX18gKi8NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvb3N0bV9pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9vc3RtX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjM2VjZjQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9vc3RtX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgIDogb3N0bV9pb2RlZmluZS5oDQotKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLSogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi0qICAgICAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLSogICAgICAgICA6IDI3LjA3LjIwMTIgMC4wMQkJjlGNbI6Rl7+BRnNlYzExX09TVE1fMTIwNjAxLnBkZg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX09TVE1fSU9ERUZJTkVfSF9fDQotI2RlZmluZSBfX09TVE1fSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3Rfb3N0bV9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgT1NUTSAgKi8NCi0gICAgICAgX1VEV09SRCBPU1RNbkNNUDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNbkNNUCAgICAgKi8NCi0gICAgICAgX1VEV09SRCBPU1RNbkNOVDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNbkNOVCAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFs4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNblRFICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNblRFOjE7ICAgICAgICAgICAvKiAgIE9TVE1uVEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPU1RNblRFOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNblRTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNblRTOjE7ICAgICAgICAgICAvKiAgIE9TVE1uVFMgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPU1RNblRTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNblRUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNblRUOjE7ICAgICAgICAgICAvKiAgIE9TVE1uVFQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPU1RNblRUOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s3XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBPU1RNbkNUTCAgICAgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEU7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNbk1EMDoxOyAgICAgICAgICAvKiAgIE9TVE1uTUQwICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSBPU1RNbk1EMToxOyAgICAgICAgICAvKiAgIE9TVE1uTUQxICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VQllURSA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBPU1RNbkNUTDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lCU9TVE0wCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfb3N0bV9uICopMHhGQ0ZFQzAwMCkgICAvKiBPU1RNMCBBZGRyZXNzICovDQotI2RlZmluZQlPU1RNMQkJKCoodm9sYXRpbGUgc3RydWN0IHN0X29zdG1fbiAqKTB4RkNGRUM0MDApICAgLyogT1NUTTEgQWRkcmVzcyAqLw0KLQ0KLQ0KLSNlbmRpZiAvKiBfX09TVE1fSU9ERUZJTkVfSF9fICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3BmY19pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9wZmNfaW9kZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU2NmExNy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3BmY19pb2RlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNDM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgRElTQ0xBSU1FUg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5IA0KLSogICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4NCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyIA0KLSogICBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKg0KLSogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyANCi0qICAgUkVHQVJESU5HIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIA0KLSogICBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIA0KLSogICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgDQotKiAgIERJU0NMQUlNRUQuDQotKg0KLSogICBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTIA0KLSogICBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUgDQotKiAgIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgDQotKiAgIEZPUiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUw0KLSogICBBRkZJTElBVEVTIEhBVkUgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKg0KLSogICBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIA0KLSogICBzb2Z0d2FyZSBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLg0KLSogICBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLCB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIA0KLSogICBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUgZm9sbG93aW5nIGxpbms6IA0KLSogICBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRlY2huaWNhbCByZWZlcmVuY2UgZGF0YSAqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBTeXN0ZW0gTmFtZSA6IA0KLSogICBGaWxlIE5hbWUgICA6IHBmY19pb2RlZmluZS5oDQotKiAgIEFic3RyYWN0ICAgIDogDQotKiAgIFZlcnNpb24gICAgIDogMS4wMC4wMA0KLSogICBEZXZpY2UgICAgICA6IEFSTQ0KLSogICBUb29sLUNoYWluICA6IA0KLSogICBPUyAgICAgICAgICA6IE5vbmUNCi0qICAgSC9XIFBsYXRmb3JtOiANCi0qICAgRGVzY3JpcHRpb24gOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBIaXN0b3J5ICAgICA6IE1hci4wNiwyMDEyIFZlci4xLjAwLjAwDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fUEZDX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19QRkNfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfcGZjX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBQRkMgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQbiAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjA6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjE6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjI6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjM6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjQ6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjU6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjY6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjc6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjg6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjk6MTsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjEwOjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjExOjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjEyOjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjEzOjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjE0OjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQbjE1OjE7ICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsweDEwMC0yXTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQU1JuICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV09SRCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5BQkxFOjE2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VUOjE2OyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gU0VUOw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuNjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuNzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuODoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuOToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTI6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTM6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTQ6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTY6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTc6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTg6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMTk6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjI6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjM6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjQ6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjY6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjc6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjg6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMjk6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMzA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQU1JuMzE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBTUm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzB4MTAwLTRdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBQUm4gICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4wOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4yOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4zOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm40OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm41OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm42OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm43OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm44OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm45OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBQUm4xNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBQUm47ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBNbiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjA6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjE6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjI6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjM6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjQ6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjU6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjY6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjc6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjg6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjk6MTsgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjEwOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjExOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjEyOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjEzOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjE0OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNbjE1OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBNbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBNQ24gICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24wOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24yOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24zOjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ240OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ241OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ242OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ243OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ244OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ245OjE7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xMDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xMToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xMjoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xMzoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xNDoxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBNQ24xNToxOyAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQTUNuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsweDEwMC0yXTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNuICAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMDoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMToxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMjoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMzoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuNDoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuNToxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuNjoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuNzoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuODoxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuOToxOyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNuMTU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVsweDEwMC0yXTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQRkNFbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjY6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjc6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjg6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjk6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjEwOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjExOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjEyOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjEzOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjE0OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQRkNFbjE1OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQRkNFbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsweDEwMC0yXTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQTk9UbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjA6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjE6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjI6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjM6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjQ6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjU6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjY6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9Ubjc6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9Ubjg6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9Ubjk6MTsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjEwOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjExOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjEyOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjEzOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjE0OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQTk9UbjE1OjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQTk9UbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1sweDEwMC0yXTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQTVNSbiAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgV09SRCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRU5BQkxFOjE2OyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgU0VUOjE2OyAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gU0VUOw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjA6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjM6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjQ6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjY6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjc6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjg6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjk6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjEwOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjExOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjEyOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjEzOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE0OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE1OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE2OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE3OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE4OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjE5OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjIwOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjIxOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjIyOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjIzOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI0OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI1OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI2OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI3OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI4OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjI5OjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjMwOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBQTVNSbjMxOjE7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFBNU1JuOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzB4MTAwLTRdOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFBNQ1NSbiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXT1JEIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFTkFCTEU6MTY7ICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTRVQ6MTY7ICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBTRVQ7DQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjM6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjQ6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjU6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjY6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjc6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjg6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjk6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjEwOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjExOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjEyOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjEzOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE0OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE1OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE2OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE3OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE4OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjE5OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjIwOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjIxOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjIyOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjIzOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI0OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI1OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI2OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI3OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI4OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjI5OjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjMwOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFBNQ1NSbjMxOjE7ICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUE1DU1JuOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azlbMHgxMDAtNF07ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEZBQ0VuICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuNjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuNzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuODoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuOToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTA6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTE6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTI6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTM6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTQ6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEZDQUVuMTU6MTsgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEZDQUVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEwWzB4NDAwMC0weGEwMC0yXTsgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElCQ24gICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24wOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24yOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24zOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ240OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ241OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ242OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ243OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ244OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ245OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElCQ24xNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElCQ247ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azExWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUEJEQ24gICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24wOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24yOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24zOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ240OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ241OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ242OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ243OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ244OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ245OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUEJEQ24xNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUEJEQ247ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEyWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUElQQ24gICAgICAgICovDQotICAgICAgICAgICAgIF9VV09SRCBXT1JEOyAgICAgICAgICAgICAgICAgICAgICAgLyogIFdvcmQgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24wOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24yOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24zOjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ240OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ241OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ242OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ243OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ244OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ245OjE7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xMDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xMToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xMjoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xMzoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xNDoxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVVdPUkQgUElQQ24xNToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUElQQ247ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azEzWzB4MTAwLTJdOyAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZSBQT1JUbl9CQVNFCTB4RkNGRTMwMDANCi0NCi0jZGVmaW5lCVBPUlQwCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDApKSkgICAvKiBQT1JUICAwIEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQxCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDEpKSkgICAvKiBQT1JUICAxIEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQyCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDIpKSkgICAvKiBQT1JUICAyIEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQzCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDMpKSkgICAvKiBQT1JUICAzIEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ0CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDQpKSkgICAvKiBQT1JUICA0IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ1CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDUpKSkgICAvKiBQT1JUICA1IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ2CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDYpKSkgICAvKiBQT1JUICA2IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ3CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDcpKSkgICAvKiBQT1JUICA3IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ4CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDgpKSkgICAvKiBQT1JUICA4IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQ5CQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcGZjX24gKikoUE9SVG5fQkFTRSArICg0ICogIDkpKSkgICAvKiBQT1JUICA5IEFkZHJlc3MgKi8NCi0jZGVmaW5lCVBPUlQxMAkJKCoodm9sYXRpbGUgc3RydWN0IHN0X3BmY19uICopKFBPUlRuX0JBU0UgKyAoNCAqIDEwKSkpICAgLyogUE9SVCAxMCBBZGRyZXNzICovDQotI2RlZmluZQlQT1JUMTEJCSgqKHZvbGF0aWxlIHN0cnVjdCBzdF9wZmNfbiAqKShQT1JUbl9CQVNFICsgKDQgKiAxMSkpKSAgIC8qIFBPUlQgMTEgQWRkcmVzcyAqLw0KLQ0KLQ0KLSNlbmRpZiAvKiBfX1BGQ19JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcHJyX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3Bycl9pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYmNkOTA2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcHJyX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgICA6IHBycl9pb2RlZmluZS5oDQotKiBWZXJzaW9uICAgICAgIDogMC4wMQ0KLSogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLSogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLSogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi0qICAgICAgICAgICAgICAgOiANCi0qIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIHZlY290ci5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLSogICAgICAgICA6IDI3LjA3LjIwMTIgMC4wMQkJjlGNbI6Rl7+BRkFyYWdvbl9QUlIxMjA2MTQueGxzCSEhIUJTSUSCzJPgl2WCqo5kl2yPkYLJgsiCoiEhIQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfX1BSUl9JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fUFJSX0lPREVGSU5FX0hfXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotc3RydWN0IHN0X3ByciB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFBSUiAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTURSICAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJUTUQ6MzsgICAgICAgICAgICAgLyogICBCVE1EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJUVEVTVDoxOyAgICAgICAgICAgLyogICBCVFRFU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFQzoxOyAgICAgICAgICAgICAgLyogICBTRUMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFTEZFV1A6MTsgICAgICAgICAgLyogICBTRUxGRVdQICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJBTUJPT1Q6MTsgICAgICAgICAgLyogICBSQU1CT09UICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gTURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQlNJRCAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIGR1bW15OjMyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8JLyogISEhg3KDYoNnjIiS6I6fkeaBQZLoi2CCt4LpISEhICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQlNJRDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRUNDUlIgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVDQ0VOOjE7ICAgICAgICAgICAgLyogICBFQ0NFTiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gRUNDUlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azBbMjc2XTsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0VNUm4gICAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNFTUY6MTsgICAgICAgICAgICAgLyogICBTRU1GICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMTsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU0VNUm5bMzJdOyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIF9VQllURSB3azFbOTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUk1QUiAgICAgICAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFYSTY0OjE7ICAgICAgICAgICAgLyogICBBWEk2NCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFYSTEyODoxOyAgICAgICAgICAgLyogICBBWEkxMjggICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozMDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUk1QUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMMCAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEFXQ0FDSEU6NDsgICAgICAgLyogICBFVEhBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSEFSQ0FDSEU6NDsgICAgICAgLyogICBFVEhBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpDVUFXQ0FDSEU6NDsgICAgICAgLyogICBKQ1VBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEpDVUFSQ0FDSEU6NDsgICAgICAgLyogICBKQ1VBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMMDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMMSAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIxQVdDQUNIRTo0OyAgICAgLyogICBJTVIyMUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjFBUkNBQ0hFOjQ7ICAgICAvKiAgIElNUjIxQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMEFXQ0FDSEU6NDsgICAgIC8qICAgSU1SMjBBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIwQVJDQUNIRTo0OyAgICAgLyogICBJTVIyMEFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElCVVNDVEwxOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElCVVNDVEwyICAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVQVdDQUNIRTo0OyAgICAgICAvKiAgIENFVUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVQVJDQUNIRTo0OyAgICAgICAvKiAgIENFVUFSQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SREFXQ0FDSEU6NDsgICAgICAvKiAgIElNUkRBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRBUkNBQ0hFOjQ7ICAgICAgLyogICBJTVJEQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSUJVU0NUTDI7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSUJVU0NUTDMgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFBV0NBQ0hFOjQ7ICAgIC8qICAgUkdQNjQxQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFBUkNBQ0hFOjQ7ICAgIC8qICAgUkdQNjQxQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDBBV0NBQ0hFOjQ7ICAgIC8qICAgUkdQNjQwQVdDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDBBUkNBQ0hFOjQ7ICAgIC8qICAgUkdQNjQwQVJDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSUJVU0NUTDM7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSUJVU0NUTDQgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwQVdDQUNIRTo0OyAgIC8qICAgUkdQMTI4MEFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MEFSQ0FDSEU6NDsgICAvKiAgIFJHUDEyODBBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MkFXQ0FDSEU6NDsgICAgLyogICBSR1A2NDJBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MkFSQ0FDSEU6NDsgICAgLyogICBSR1A2NDJBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMNDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMNSAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1MQl9BeENBQ0hFOjI7ICAgICAgLyogICBNTEJfQXhDQUNIRSAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTQ7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgxQVdDQUNIRTo0OyAgIC8qICAgUkdQMTI4MUFXQ0FDSEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MUFSQ0FDSEU6NDsgICAvKiAgIFJHUDEyODFBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMNTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMNiAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMkFSQ0FDSEU6NDsgICAgLyogICBWREM1MDJBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMUFXQ0FDSEU6NDsgICAgLyogICBWREM1MDFBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMUFSQ0FDSEU6NDsgICAgLyogICBWREM1MDFBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMNjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMNyAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNEFSQ0FDSEU6NDsgICAgLyogICBWREM1MDRBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM0FXQ0FDSEU6NDsgICAgLyogICBWREM1MDNBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM0FSQ0FDSEU6NDsgICAgLyogICBWREM1MDNBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMNzsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMOCAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMUFXQ0FDSEU6NDsgICAgLyogICBWREM1MTFBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMUFSQ0FDSEU6NDsgICAgLyogICBWREM1MTFBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNUFXQ0FDSEU6NDsgICAgLyogICBWREM1MDVBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNUFSQ0FDSEU6NDsgICAgLyogICBWREM1MDVBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMODsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMOSAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxM0FXQ0FDSEU6NDsgICAgLyogICBWREM1MTNBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxM0FSQ0FDSEU6NDsgICAgLyogICBWREM1MTNBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMkFSQ0FDSEU6NDsgICAgLyogICBWREM1MTJBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMOTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJQlVTQ1RMMTAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNUFXQ0FDSEU6NDsgICAgLyogICBWREM1MTVBV0NBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNUFSQ0FDSEU6NDsgICAgLyogICBWREM1MTVBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNEFSQ0FDSEU6NDsgICAgLyogICBWREM1MTRBUkNBQ0hFICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo0OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJQlVTQ1RMMTA7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUkNUTDAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDo4OyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVVJFUlJFTjoxOyAgICAgICAgLyogICBDRVVSRVJSRU4gICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRSRVJSRU46MTsgICAgICAgLyogICBJTVJEUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUjIxUkVSUkVOOjE7ICAgICAgLyogICBJTVIyMVJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMFJFUlJFTjoxOyAgICAgIC8qICAgSU1SMjBSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIUkVSUkVOOjE7ICAgICAgICAvKiAgIEVUSFJFUlJFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkNVUkVSUkVOOjE7ICAgICAgICAvKiAgIEpDVVJFUlJFTiAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ1RMMDsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ1RMMSAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MVJFUlJFTjoxOyAgICAvKiAgIFJHUDEyODFSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MFJFUlJFTjoxOyAgICAvKiAgIFJHUDEyODBSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyUkVSUkVOOjE7ICAgICAvKiAgIFJHUDY0MlJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFSRVJSRU46MTsgICAgIC8qICAgUkdQNjQxUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MFJFUlJFTjoxOyAgICAgLyogICBSR1A2NDBSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ1RMMTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ1RMMiAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1UkVSUkVOOjE7ICAgICAvKiAgIFZEQzUwNVJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDRSRVJSRU46MTsgICAgIC8qICAgVkRDNTA0UkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM1JFUlJFTjoxOyAgICAgLyogICBWREM1MDNSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAyUkVSUkVOOjE7ICAgICAvKiAgIFZEQzUwMlJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDFSRVJSRU46MTsgICAgIC8qICAgVkRDNTAxUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUkNUTDI7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUkNUTDMgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNVJFUlJFTjoxOyAgICAgLyogICBWREM1MTVSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE0UkVSUkVOOjE7ICAgICAvKiAgIFZEQzUxNFJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTNSRVJSRU46MTsgICAgIC8qICAgVkRDNTEzUkVSUkVOICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMlJFUlJFTjoxOyAgICAgLyogICBWREM1MTJSRVJSRU4gKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExUkVSUkVOOjE7ICAgICAvKiAgIFZEQzUxMVJFUlJFTiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJDVEwzOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJTVDAgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVCUkVTUDoyOyAgICAgICAgIC8qICAgQ0VVQlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDRVVSUkVTUDoyOyAgICAgICAgIC8qICAgQ0VVUlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJEQlJFU1A6MjsgICAgICAgIC8qICAgSU1SREJSRVNQICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJEUlJFU1A6MjsgICAgICAgIC8qICAgSU1SRFJSRVNQICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMUJSRVNQOjI7ICAgICAgIC8qICAgSU1SMjFCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMVJSRVNQOjI7ICAgICAgIC8qICAgSU1SMjFSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMEJSRVNQOjI7ICAgICAgIC8qICAgSU1SMjBCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVIyMFJSRVNQOjI7ICAgICAgIC8qICAgSU1SMjBSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhCUkVTUDoyOyAgICAgICAgIC8qICAgRVRIQlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFVEhSUkVTUDoyOyAgICAgICAgIC8qICAgRVRIUlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKQ1VCUkVTUDoyOyAgICAgICAgIC8qICAgSkNVQlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKQ1VSUkVTUDoyOyAgICAgICAgIC8qICAgSkNVUlJFU1AgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJTVDA7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJTVDEgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgxQlJFU1A6MjsgICAgIC8qICAgUkdQMTI4MUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODFSUkVTUDoyOyAgICAgLyogICBSR1AxMjgxUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MEJSRVNQOjI7ICAgICAvKiAgIFJHUDEyODBCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwUlJFU1A6MjsgICAgIC8qICAgUkdQMTI4MFJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MkJSRVNQOjI7ICAgICAgLyogICBSR1A2NDJCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDJSUkVTUDoyOyAgICAgIC8qICAgUkdQNjQyUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQxQlJFU1A6MjsgICAgICAvKiAgIFJHUDY0MUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MVJSRVNQOjI7ICAgICAgLyogICBSR1A2NDFSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDBCUkVTUDoyOyAgICAgIC8qICAgUkdQNjQwQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQwUlJFU1A6MjsgICAgICAvKiAgIFJHUDY0MFJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUlNUMTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUlNUMiAgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNUJSRVNQOjI7ICAgICAgLyogICBWREM1MDVCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDVSUkVTUDoyOyAgICAgIC8qICAgVkRDNTA1UlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA0QlJFU1A6MjsgICAgICAvKiAgIFZEQzUwNEJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNFJSRVNQOjI7ICAgICAgLyogICBWREM1MDRSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDNCUkVTUDoyOyAgICAgIC8qICAgVkRDNTAzQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAzUlJFU1A6MjsgICAgICAvKiAgIFZEQzUwM1JSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMkJSRVNQOjI7ICAgICAgLyogICBWREM1MDJCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDJSUkVTUDoyOyAgICAgIC8qICAgVkRDNTAyUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAxQlJFU1A6MjsgICAgICAvKiAgIFZEQzUwMUJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMVJSRVNQOjI7ICAgICAgLyogICBWREM1MDFSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJTVDI7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFYSVJFUlJTVDMgICAqLw0KLSAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTI7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTVCUkVTUDoyOyAgICAgIC8qICAgVkRDNTE1QlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE1UlJFU1A6MjsgICAgICAvKiAgIFZEQzUxNVJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNEJSRVNQOjI7ICAgICAgLyogICBWREM1MTRCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTRSUkVTUDoyOyAgICAgIC8qICAgVkRDNTE0UlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEzQlJFU1A6MjsgICAgICAvKiAgIFZEQzUxM0JSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxM1JSRVNQOjI7ICAgICAgLyogICBWREM1MTNSUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTJCUkVTUDoyOyAgICAgIC8qICAgVkRDNTEyQlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEyUlJFU1A6MjsgICAgICAvKiAgIFZEQzUxMlJSRVNQICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMUJSRVNQOjI7ICAgICAgLyogICBWREM1MTFCUkVTUCAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTFSUkVTUDoyOyAgICAgIC8qICAgVkRDNTExUlJFU1AgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSU1QzOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ0xSMCAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjg7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgQ0VVQlJFU1BDTFI6MTsgICAgICAvKiAgIENFVUJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENFVVJSRVNQQ0xSOjE7ICAgICAgLyogICBDRVVSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTVJEQlJFU1BDTFI6MTsgICAgIC8qICAgSU1SREJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElNUkRSUkVTUENMUjoxOyAgICAgLyogICBJTVJEUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjFCUkVTUENMUjoxOyAgICAvKiAgIElNUjIxQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjFSUkVTUENMUjoxOyAgICAvKiAgIElNUjIxUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjBCUkVTUENMUjoxOyAgICAvKiAgIElNUjIwQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSU1SMjBSUkVTUENMUjoxOyAgICAvKiAgIElNUjIwUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRVRIQlJFU1BDTFI6MTsgICAgICAvKiAgIEVUSEJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEVUSFJSRVNQQ0xSOjE7ICAgICAgLyogICBFVEhSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBKQ1VCUkVTUENMUjoxOyAgICAgIC8qICAgSkNVQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgSkNVUlJFU1BDTFI6MTsgICAgICAvKiAgIEpDVVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUkNMUjA7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUkNMUjEgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODFCUkVTUENMUjoxOyAgLyogICBSR1AxMjgxQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQMTI4MVJSRVNQQ0xSOjE7ICAvKiAgIFJHUDEyODFSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1AxMjgwQlJFU1BDTFI6MTsgIC8qICAgUkdQMTI4MEJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDEyODBSUkVTUENMUjoxOyAgLyogICBSR1AxMjgwUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQyQlJFU1BDTFI6MTsgICAvKiAgIFJHUDY0MkJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MlJSRVNQQ0xSOjE7ICAgLyogICBSR1A2NDJSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDFCUkVTUENMUjoxOyAgIC8qICAgUkdQNjQxQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgUkdQNjQxUlJFU1BDTFI6MTsgICAvKiAgIFJHUDY0MVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJHUDY0MEJSRVNQQ0xSOjE7ICAgLyogICBSR1A2NDBCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSR1A2NDBSUkVTUENMUjoxOyAgIC8qICAgUkdQNjQwUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBBWElSRVJSQ0xSMTsgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBWElSRVJSQ0xSMiAgKi8NCi0gICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjEyOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA1QlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwNUJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwNVJSRVNQQ0xSOjE7ICAgLyogICBWREM1MDVSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDRCUkVTUENMUjoxOyAgIC8qICAgVkRDNTA0QlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTA0UlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwNFJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwM0JSRVNQQ0xSOjE7ICAgLyogICBWREM1MDNCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDNSUkVTUENMUjoxOyAgIC8qICAgVkRDNTAzUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAyQlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwMkJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUwMlJSRVNQQ0xSOjE7ICAgLyogICBWREM1MDJSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MDFCUkVTUENMUjoxOyAgIC8qICAgVkRDNTAxQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTAxUlJFU1BDTFI6MTsgICAvKiAgIFZEQzUwMVJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQVhJUkVSUkNMUjI7ICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQVhJUkVSUkNMUjMgICovDQotICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMjsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNUJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTVCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTVSUkVTUENMUjoxOyAgIC8qICAgVkRDNTE1UlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTE0QlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxNEJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxNFJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTRSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTNCUkVTUENMUjoxOyAgIC8qICAgVkRDNTEzQlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTEzUlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxM1JSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMkJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTJCUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBWREM1MTJSUkVTUENMUjoxOyAgIC8qICAgVkRDNTEyUlJFU1BDTFIgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgVkRDNTExQlJFU1BDTFI6MTsgICAvKiAgIFZEQzUxMUJSRVNQQ0xSICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFZEQzUxMVJSRVNQQ0xSOjE7ICAgLyogICBWREM1MTFSUkVTUENMUiAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IEFYSVJFUlJDTFIzOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUJUFJSCQkoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfcHJyICopMHhGQ0ZFMTgwMCkgICAvKiBQUlIgQWRkcmVzcyAqLw0KLQ0KLQ0KLSNlbmRpZiAvKiBfX1BSUl9JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvcmlpY19pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9yaWljX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2YTg0MDAuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9yaWljX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgICA6IHJpaWNfaW9kZWZpbmUuaA0KLSogVmVyc2lvbiAgICAgICA6IDAuMDENCi0qIERldmljZShzKSAgICAgOiBBcmFnb24NCi0qIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotKiAgICAgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLSogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSB2ZWNvdHIucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEhpc3RvcnkgOiBERC5NTS5ZWVlZIFZlcnNpb24gRGVzY3JpcHRpb24NCi0qICAgICAgICAgOiAyNy4wNy4yMDEyIDAuMDEJCY5RjWyOkZe/gUZSWl9BMUhfMDVKXzEyMTAxMF8xMS5wZGYNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX19SSUlDX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19SSUlDX0lPREVGSU5FX0hfXw0KLQ0KLSNpbmNsdWRlICJ0eXBlZGVmaW5lLmgiDQotDQotdHlwZWRlZiB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NBUnkgICovDQotICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1ZBMDoxOyAgICAgICAgICAgICAgICAgICAgLyogICBTVkEwICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgU1ZBOjk7ICAgICAgICAgICAgICAgICAgICAgLyogICBTVkEgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgRlN5OjE7ICAgICAgICAgICAgICAgICAgICAgLyogICBGU3kgICAgICAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgOjE2OyAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfSBSSUlDbklDU0FSeTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotc3RydWN0IHN0X3JpaWNfbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RydWN0IFJJSUMgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0NSMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEQUk6MTsgICAgICAgICAgICAgLyogICBTREFJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTEk6MTsgICAgICAgICAgICAgLyogICBTQ0xJICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEQU86MTsgICAgICAgICAgICAgLyogICBTREFPICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTE86MTsgICAgICAgICAgICAgLyogICBTQ0xPICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNPV1A6MTsgICAgICAgICAgICAgLyogICBTT1dQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENMTzoxOyAgICAgICAgICAgICAgLyogICBDTE8gICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElJQ1JTVDoxOyAgICAgICAgICAgLyogICBJSUNSU1QgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRToxOyAgICAgICAgICAgICAgLyogICBJQ0UgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0NSMTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0NSMiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUOjE7ICAgICAgICAgICAgICAgLyogICBTVCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJTOjE7ICAgICAgICAgICAgICAgLyogICBSUyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQOjE7ICAgICAgICAgICAgICAgLyogICBTUCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRSUzoxOyAgICAgICAgICAgICAgLyogICBUUlMgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1TVDoxOyAgICAgICAgICAgICAgLyogICBNU1QgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJCU1k6MTsgICAgICAgICAgICAgLyogICBCQlNZICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0NSMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ01SMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJDOjM7ICAgICAgICAgICAgICAgLyogICBCQyAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJDV1A6MTsgICAgICAgICAgICAgLyogICBCQ1dQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIENLUzozOyAgICAgICAgICAgICAgLyogICBDS1MgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1UV1A6MTsgICAgICAgICAgICAgLyogICBNVFdQICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ01SMTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ01SMiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT1M6MTsgICAgICAgICAgICAgLyogICBUTU9TICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0w6MTsgICAgICAgICAgICAgLyogICBUTU9MICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0g6MTsgICAgICAgICAgICAgLyogICBUTU9IICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNEREw6MzsgICAgICAgICAgICAgLyogICBTRERMICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERMQ1M6MTsgICAgICAgICAgICAgLyogICBETENTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ01SMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ01SMyAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5GOjI7ICAgICAgICAgICAgICAgLyogICBORiAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDS0JSOjE7ICAgICAgICAgICAgLyogICBBQ0tCUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDS0JUOjE7ICAgICAgICAgICAgLyogICBBQ0tCVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFDS1dQOjE7ICAgICAgICAgICAgLyogICBBQ0tXUCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEUkZTOjE7ICAgICAgICAgICAgLyogICBSRFJGUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFdBSVQ6MTsgICAgICAgICAgICAgLyogICBXQUlUICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNNQlM6MTsgICAgICAgICAgICAgLyogICBTTUJTICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ01SMzsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0ZFUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0U6MTsgICAgICAgICAgICAgLyogICBUTU9FICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE1BTEU6MTsgICAgICAgICAgICAgLyogICBNQUxFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BTEU6MTsgICAgICAgICAgICAgLyogICBOQUxFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBTEU6MTsgICAgICAgICAgICAgLyogICBTQUxFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BQ0tFOjE7ICAgICAgICAgICAgLyogICBOQUNLRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5GRToxOyAgICAgICAgICAgICAgLyogICBORkUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNDTEU6MTsgICAgICAgICAgICAgLyogICBTQ0xFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEZNUEU6MTsgICAgICAgICAgICAgLyogICBGTVBFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0ZFUjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NFUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBUjBFOjE7ICAgICAgICAgICAgLyogICBTQVIwRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBUjFFOjE7ICAgICAgICAgICAgLyogICBTQVIxRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNBUjJFOjE7ICAgICAgICAgICAgLyogICBTQVIyRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdDQUU6MTsgICAgICAgICAgICAgLyogICBHQ0FFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJREU6MTsgICAgICAgICAgICAgLyogICBESURFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhPQUU6MTsgICAgICAgICAgICAgLyogICBIT0FFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ1NFUjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0lFUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0lFOjE7ICAgICAgICAgICAgLyogICBUTU9JRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMSUU6MTsgICAgICAgICAgICAgLyogICBBTElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUSUU6MTsgICAgICAgICAgICAgLyogICBTVElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSUU6MTsgICAgICAgICAgICAgLyogICBTUElFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BS0lFOjE7ICAgICAgICAgICAgLyogICBOQUtJRSAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJJRToxOyAgICAgICAgICAgICAgLyogICBSSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFSUU6MTsgICAgICAgICAgICAgLyogICBURUlFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRJRToxOyAgICAgICAgICAgICAgLyogICBUSUUgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0lFUjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NSMSAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFBUzA6MTsgICAgICAgICAgICAgLyogICBBQVMwICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFBUzE6MTsgICAgICAgICAgICAgLyogICBBQVMxICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFBUzI6MTsgICAgICAgICAgICAgLyogICBBQVMyICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEdDQToxOyAgICAgICAgICAgICAgLyogICBHQ0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERJRDoxOyAgICAgICAgICAgICAgLyogICBESUQgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxOyAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEhPQToxOyAgICAgICAgICAgICAgLyogICBIT0EgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ1NSMTsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ1NSMiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRNT0Y6MTsgICAgICAgICAgICAgLyogICBUTU9GICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFMOjE7ICAgICAgICAgICAgICAgLyogICBBTCAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUQVJUOjE7ICAgICAgICAgICAgLyogICBTVEFSVCAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNUT1A6MTsgICAgICAgICAgICAgLyogICBTVE9QICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE5BQ0tGOjE7ICAgICAgICAgICAgLyogICBOQUNLRiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFJEUkY6MTsgICAgICAgICAgICAgLyogICBSRFJGICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgLyogICBURU5EICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFREUkU6MTsgICAgICAgICAgICAgLyogICBURFJFICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ1NSMjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotCQlSSUlDbklDU0FSeSBSSUlDbklDU0FSMDsJCQkJLyogUklJQ25JQ1NBUjAgICovDQotCQlSSUlDbklDU0FSeSBSSUlDbklDU0FSMTsJCQkJLyogUklJQ25JQ1NBUjEgICovDQotCQlSSUlDbklDU0FSeSBSSUlDbklDU0FSMjsJCQkJLyogUklJQ25JQ1NBUjIgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0JSTCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSTDo1OyAgICAgICAgICAgICAgLyogICBCUkwgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0JSTDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0JSSCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEJSSDo1OyAgICAgICAgICAgICAgLyogICBCUkggICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0JSSDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0RSVCAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRFJTOjg7ICAgICAgICAgICAgLyogICBJQ0RSUyAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0RSVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUklJQ25JQ0RSUiAgICovDQotICAgICAgICAgICAgIF9VRFdPUkQgTE9ORzsgICAgICAgICAgICAgICAgICAgICAgLyogIExvbmcgQWNjZXNzICovDQotICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogIEJpdCBBY2Nlc3MgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIElDRFJSOjg7ICAgICAgICAgICAgLyogICBJQ0RSUiAgICAgICovDQotICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyNDsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gUklJQ25JQ0RSUjsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZSBSSUlDXzAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JpaWNfbiAqKTB4RkNGRUUwMDApICAgIC8qIFJJSUNfMCBBZGRyZXNzICovDQotI2RlZmluZSBSSUlDXzEgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JpaWNfbiAqKTB4RkNGRUU0MDApICAgIC8qIFJJSUNfMSBBZGRyZXNzICovDQotI2RlZmluZSBSSUlDXzIgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JpaWNfbiAqKTB4RkNGRUU4MDApICAgIC8qIFJJSUNfMiBBZGRyZXNzICovDQotI2RlZmluZSBSSUlDXzMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3JpaWNfbiAqKTB4RkNGRUVDMDApICAgIC8qIFJJSUNfMyBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fUklJQ19JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvc2NpZl9pb2RlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9zY2lmX2lvZGVmaW5lLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmZGRiMWIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL2lvZGVmaW5lcy9zY2lmX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBESVNDTEFJTUVSDQotKg0KLSogICBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkgDQotKiAgIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXIgDQotKiAgIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qDQotKiAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIA0KLSogICBSRUdBUkRJTkcgVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgDQotKiAgIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgDQotKiAgIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSANCi0qICAgRElTQ0xBSU1FRC4NCi0qDQotKiAgIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMgDQotKiAgIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRSANCi0qICAgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyANCi0qICAgRk9SIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTDQotKiAgIEFGRklMSUFURVMgSEFWRSBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qDQotKiAgIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgDQotKiAgIHNvZnR3YXJlIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuDQotKiAgIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgDQotKiAgIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZSBmb2xsb3dpbmcgbGluazogDQotKiAgIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKiogVGVjaG5pY2FsIHJlZmVyZW5jZSBkYXRhICoqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiAgIFN5c3RlbSBOYW1lIDogDQotKiAgIEZpbGUgTmFtZSAgIDogc2NpZl9pb2RlZmluZS5oDQotKiAgIEFic3RyYWN0ICAgIDogDQotKiAgIFZlcnNpb24gICAgIDogMS4wMC4wMA0KLSogICBEZXZpY2UgICAgICA6IEFSTQ0KLSogICBUb29sLUNoYWluICA6IA0KLSogICBPUyAgICAgICAgICA6IE5vbmUNCi0qICAgSC9XIFBsYXRmb3JtOiANCi0qICAgRGVzY3JpcHRpb24gOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBIaXN0b3J5ICAgICA6IE1hci4wNiwyMDEyIFZlci4xLjAwLjAwDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fU0NJRl9JT0RFRklORV9IX18NCi0jZGVmaW5lIF9fU0NJRl9JT0RFRklORV9IX18NCi0NCi0jaW5jbHVkZSAidHlwZWRlZmluZS5oIg0KLQ0KLXN0cnVjdCBzdF9zY2lmX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTQ0lGICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU01SXzAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLUzoyOyAgICAgICAgICAgICAgIC8qICAgQ0tTICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNUT1A6MTsgICAgICAgICAgICAgIC8qICAgU1RPUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9FOjE7ICAgICAgICAgICAgICAgIC8qICAgTy9FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFOjE7ICAgICAgICAgICAgICAgIC8qICAgUEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENIUjoxOyAgICAgICAgICAgICAgIC8qICAgQ0hSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENBOjE7ICAgICAgICAgICAgICAgIC8qICAgQy9BICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDQlJSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDQlJSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU0NSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENLRToyOyAgICAgICAgICAgICAgIC8qICAgQ0tFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFSUU6MTsgICAgICAgICAgICAgIC8qICAgUkVJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJFOjE7ICAgICAgICAgICAgICAgIC8qICAgUkUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFOjE7ICAgICAgICAgICAgICAgIC8qICAgVEUgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJJRToxOyAgICAgICAgICAgICAgIC8qICAgUklFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRJRToxOyAgICAgICAgICAgICAgIC8qICAgVElFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2syWzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlREUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlREUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2szWzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIERSOjE7ICAgICAgICAgICAgICAgIC8qICAgRFIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJERjoxOyAgICAgICAgICAgICAgIC8qICAgUkRGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUjoxOyAgICAgICAgICAgICAgIC8qICAgUEVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUjoxOyAgICAgICAgICAgICAgIC8qICAgRkVSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJSSzoxOyAgICAgICAgICAgICAgIC8qICAgQlJLICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRERkU6MTsgICAgICAgICAgICAgIC8qICAgVERGRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRFTkQ6MTsgICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEVSOjE7ICAgICAgICAgICAgICAgIC8qICAgRVIgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEZFUk46NDsgICAgICAgICAgICAgIC8qICAgRkVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFBFUk46NDsgICAgICAgICAgICAgIC8qICAgUEVSTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s0WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRlJEUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVUJZVEUgQllURTsgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEQ6ODsgICAgICAgICAgICAgICAgIC8qICAgRCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRlJEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s1WzNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIExPT1A6MTsgICAgICAgICAgICAgIC8qICAgTE9PUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJGUlNUOjE7ICAgICAgICAgICAgIC8qICAgUkZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRGUlNUOjE7ICAgICAgICAgICAgIC8qICAgVEZSU1QgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE1DRToxOyAgICAgICAgICAgICAgIC8qICAgTUNFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFRUUkc6MjsgICAgICAgICAgICAgIC8qICAgVFRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUUkc6MjsgICAgICAgICAgICAgIC8qICAgUlRSRyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJTVFJHOjM7ICAgICAgICAgICAgIC8qICAgUlNUUkcgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo1OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s2WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRkRSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFI6NTsgICAgICAgICAgICAgICAgIC8qICAgUiAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFQ6NTsgICAgICAgICAgICAgICAgIC8qICAgVCAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDozOyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRkRSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s3WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDU1BUUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJEVDoxOyAgICAgICAgICAgIC8qICAgU1BCMkRUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNQQjJJTzoxOyAgICAgICAgICAgIC8qICAgU1BCMklPICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0RUOjE7ICAgICAgICAgICAgIC8qICAgU0NLRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFNDS0lPOjE7ICAgICAgICAgICAgIC8qICAgU0NLSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUU0RUOjE7ICAgICAgICAgICAgIC8qICAgQ1RTRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIENUU0lPOjE7ICAgICAgICAgICAgIC8qICAgQ1RTSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUU0RUOjE7ICAgICAgICAgICAgIC8qICAgUlRTRFQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIFJUU0lPOjE7ICAgICAgICAgICAgIC8qICAgUlRTSU8gICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDU1BUUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDTFNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIE9SRVI6MTsgICAgICAgICAgICAgIC8qICAgT1JFUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDoxNTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDTFNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2s5WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNDRU1SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVVdPUkQgV09SRDsgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEFCQ1M6MTsgICAgICAgICAgICAgIC8qICAgQUJDUyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo2OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEJHRE06MTsgICAgICAgICAgICAgIC8qICAgQkdETSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIDo4OyAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNDRU1SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLX07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLQ0KLSNkZWZpbmUgU0NJRjAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMDcwMDApCS8qIFNDSUYwIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUYxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmX24gKikweEU4MDA3ODAwKQkvKiBTQ0lGMSBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGMiAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICopMHhFODAwODAwMCkJLyogU0NJRjIgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjMgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMDg4MDApCS8qIFNDSUYzIEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY0ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmX24gKikweEU4MDA5MDAwKQkvKiBTQ0lGNCBBZGRyZXNzICovDQotI2RlZmluZSBTQ0lGNSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3Rfc2NpZl9uICopMHhFODAwOTgwMCkJLyogU0NJRjUgQWRkcmVzcyAqLw0KLSNkZWZpbmUgU0NJRjYgKCoodm9sYXRpbGUgc3RydWN0IHN0X3NjaWZfbiAqKTB4RTgwMEEwMDApCS8qIFNDSUY2IEFkZHJlc3MgKi8NCi0jZGVmaW5lIFNDSUY3ICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zY2lmX24gKikweEU4MDBBODAwKQkvKiBTQ0lGNyBBZGRyZXNzICovDQotDQotDQotI2VuZGlmIC8qIF9fU0NJRl9JT0RFRklORV9IX18gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvc3BpYnNjX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3NwaWJzY19pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwN2JhZjFjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvc3BpYnNjX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMjYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgICA6IHNwaWJzY19pb2RlZmluZS5oIA0KLSogVmVyc2lvbiAgICAgICA6IDAuMDENCi0qIERldmljZShzKSAgICAgOiANCi0qIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjgNCi0qICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotKiAgICAgICAgICAgICAgIDogDQotKiBIL1cgUGxhdGZvcm0gIDogQ1BVIEJvYXJkDQotKiBEZXNjcmlwdGlvbiAgIDogDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IDA1LjExLjIwMTIgMC4wMSBWZXJzaW9uIERlc2NyaXB0aW9uDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fU1BJQlNDX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19TUElCU0NfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiAgICAgICBTUElCU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi1zdHJ1Y3Qgc3Rfc3BpYnNjX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0cnVjdCBTUElCU0MqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNTkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCU1o6MjsgICAgICAgICAgICAgIC8qICAgQlNaICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUE9MOjE7ICAgICAgICAgICAgIC8qICAgQ1BPTCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xQOjE7ICAgICAgICAgICAgIC8qICAgU1NMUCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUEhBUjoxOyAgICAgICAgICAgIC8qICAgQ1BIQVIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDUEhBVDoxOyAgICAgICAgICAgIC8qICAgQ1BIQVQgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTzBGVjoyOyAgICAgICAgICAgIC8qICAgSU8wRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTzJGVjoyOyAgICAgICAgICAgIC8qICAgSU8yRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBJTzNGVjoyOyAgICAgICAgICAgIC8qICAgSU8zRlYgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzA6MjsgICAgICAgICAgIC8qICAgTU9JSU8wICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzE6MjsgICAgICAgICAgIC8qICAgTU9JSU8xICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzI6MjsgICAgICAgICAgIC8qICAgTU9JSU8yICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNT0lJTzM6MjsgICAgICAgICAgIC8qICAgTU9JSU8zICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBNRDoxOyAgICAgICAgICAgICAgIC8qICAgTUQgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNTkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNTTERSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTQ0tETDozOyAgICAgICAgICAgIC8qICAgU0NLREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTTE5ETDozOyAgICAgICAgICAgIC8qICAgU0xOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUE5ETDozOyAgICAgICAgICAgIC8qICAgU1BOREwgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNTTERSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNQQkNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBCUkRWOjI7ICAgICAgICAgICAgIC8qICAgQlJEViAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUEJSOjg7ICAgICAgICAgICAgIC8qICAgU1BCUiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTY7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNQQkNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xFOjE7ICAgICAgICAgICAgIC8qICAgU1NMRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQkU6MTsgICAgICAgICAgICAgIC8qICAgUkJFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQ0Y6MTsgICAgICAgICAgICAgIC8qICAgUkNGICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSQlVSU1Q6NDsgICAgICAgICAgIC8qICAgUkJVUlNUICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xOOjE7ICAgICAgICAgICAgIC8qICAgU1NMTiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NzsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSQ01SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ01EOjg7ICAgICAgICAgICAgIC8qICAgT0NNRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQ6ODsgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSRUFSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQUM6MzsgICAgICAgICAgICAgIC8qICAgRUFDICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBFQVY6ODsgICAgICAgICAgICAgIC8qICAgRUFWICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSRUFSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERST1BSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQwOjg7ICAgICAgICAgICAgIC8qICAgT1BEMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQxOjg7ICAgICAgICAgICAgIC8qICAgT1BEMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQyOjg7ICAgICAgICAgICAgIC8qICAgT1BEMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQzOjg7ICAgICAgICAgICAgIC8qICAgT1BEMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERST1BSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSRU5SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NDsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERFOjQ7ICAgICAgICAgICAgIC8qICAgT1BERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREU6NDsgICAgICAgICAgICAgIC8qICAgQURFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RFOjE7ICAgICAgICAgICAgIC8qICAgT0NERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREU6MTsgICAgICAgICAgICAgIC8qICAgQ0RFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUU6MTsgICAgICAgICAgICAgIC8qICAgRE1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBEUkRCOjI7ICAgICAgICAgICAgIC8qICAgRFJEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERCOjI7ICAgICAgICAgICAgIC8qICAgT1BEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREI6MjsgICAgICAgICAgICAgIC8qICAgQURCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RCOjI7ICAgICAgICAgICAgIC8qICAgT0NEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREI6MjsgICAgICAgICAgICAgIC8qICAgQ0RCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQ1IgICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElFOjE7ICAgICAgICAgICAgIC8qICAgU1BJRSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElXRToxOyAgICAgICAgICAgIC8qICAgU1BJV0UgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElSRToxOyAgICAgICAgICAgIC8qICAgU1BJUkUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6NTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xLUDoxOyAgICAgICAgICAgIC8qICAgU1NMS1AgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQ01SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ01EOjg7ICAgICAgICAgICAgIC8qICAgT0NNRCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDTUQ6ODsgICAgICAgICAgICAgIC8qICAgQ01EICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6ODsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQ01SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNQURSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRFI6MzI7ICAgICAgICAgICAgIC8qICAgQURSICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNT1BSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQwOjg7ICAgICAgICAgICAgIC8qICAgT1BEMCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQxOjg7ICAgICAgICAgICAgIC8qICAgT1BEMSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQyOjg7ICAgICAgICAgICAgIC8qICAgT1BEMiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUEQzOjg7ICAgICAgICAgICAgIC8qICAgT1BEMyAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNT1BSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNRU5SICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElERTo0OyAgICAgICAgICAgIC8qICAgU1BJREUgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERFOjQ7ICAgICAgICAgICAgIC8qICAgT1BERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREU6NDsgICAgICAgICAgICAgIC8qICAgQURFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RFOjE7ICAgICAgICAgICAgIC8qICAgT0NERSAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MTsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREU6MTsgICAgICAgICAgICAgIC8qICAgQ0RFICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBETUU6MTsgICAgICAgICAgICAgIC8qICAgRE1FICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTUElEQjoyOyAgICAgICAgICAgIC8qICAgU1BJREIgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPUERCOjI7ICAgICAgICAgICAgIC8qICAgT1BEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBREI6MjsgICAgICAgICAgICAgIC8qICAgQURCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjsgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBPQ0RCOjI7ICAgICAgICAgICAgIC8qICAgT0NEQiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBDREI6MjsgICAgICAgICAgICAgIC8qICAgQ0RCICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2swWzRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNUkRSMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSREFUQTA6MzI7ICAgICAgICAgIC8qICAgUkRBVEEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNUkRSMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNUkRSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBSREFUQTE6MzI7ICAgICAgICAgIC8qICAgUkRBVEExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNUkRSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNV0RSMCAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXREFUQTA6MzI7ICAgICAgICAgIC8qICAgV0RBVEEwICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNV0RSMDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNNV0RSMSAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBXb3JkIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEw7ICAgICAgICAgICAgICAgICAgIC8qICAgTG93ICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VXT1JEIEg7ICAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBXT1JEOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCeXRlIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExMOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBMb3cgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIExIOyAgICAgICAgICAgICAgICAgIC8qICAgTG93LCBIaWdoICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhMOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgTG93ICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VCWVRFIEhIOyAgICAgICAgICAgICAgICAgIC8qICAgSGlnaCwgSGlnaCAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCWVRFOyAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBXREFUQTE6MzI7ICAgICAgICAgIC8qICAgV0RBVEExICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IFNNV0RSMTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIENNTlNSICAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBURU5EOjE7ICAgICAgICAgICAgIC8qICAgVEVORCAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBTU0xGOjE7ICAgICAgICAgICAgIC8qICAgU1NMRiAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MzA7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IENNTlNSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICBfVUJZVEUgd2sxWzEyXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSRE1DUiAgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgIAkgICAgIF9VRFdPUkQgRE1DWUM6MzsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIAkgCSBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAJIAkgX1VEV09SRCBETURCOjI7ICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgCSAJIF9VRFdPUkQgOjE0OyAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgfSBCSVQ7ICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICB9IERSRE1DUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERSRFJFTlIgICAgICAqLw0KLSAgICAgICAgICAgICBfVURXT1JEIExPTkc7ICAgICAgICAgICAgICAgICAgICAgIC8qICBMb25nIEFjY2VzcyAqLw0KLSAgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICBCaXQgQWNjZXNzICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRFJEUkU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgOjM7ICAgICAgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgT1BEUkU6MTsgICAgICAgICAgIC8qICAgICAgICAgICAgICAqLw0KLSAgICAgICAgCSAJICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIEFERFJFOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoyMzsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEUkRSRU5SOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0gICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTURNQ1IgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNQ1lDOjM7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxMzsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIERNREI6MjsgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDoxNDsgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTTURNQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTTURSRU5SICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIFNQSURSRToxOyAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIDozOyAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgICBfVURXT1JEIE9QRFJFOjE7ICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgCSAJICAgICAgICAgX1VEV09SRCA6MzsgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCBBRERSRToxOyAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICAgX1VEV09SRCA6MjM7ICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgICAgICB9IEJJVDsgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotICAgICAgICAgICAgIH0gU01EUkVOUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogICAgICAgICAgICAgICovDQotDQotI2RlZmluZSBTUElCU0MwICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcGlic2NfbiAqKTB4M0ZFRkEwMDApDQotI2RlZmluZSBTUElCU0MxICgqKHZvbGF0aWxlIHN0cnVjdCBzdF9zcGlic2NfbiAqKTB4M0ZFRkIwMDApDQotDQotDQotI2VuZGlmIC8qIF9fU1BJQlNDX0lPREVGSU5FX0hfXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvdXNiX2lvZGVmaW5lLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvaW9kZWZpbmVzL3VzYl9pb2RlZmluZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTU4ZmUyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9pb2RlZmluZXMvdXNiX2lvZGVmaW5lLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTM2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qICAgRElTQ0xBSU1FUg0KLSoNCi0qICAgVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5IA0KLSogICBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4NCi0qDQotKiAgIFRoaXMgc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyIA0KLSogICBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKg0KLSogICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyANCi0qICAgUkVHQVJESU5HIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIA0KLSogICBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIA0KLSogICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuICBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgDQotKiAgIERJU0NMQUlNRUQuDQotKg0KLSogICBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTIA0KLSogICBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUgDQotKiAgIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgDQotKiAgIEZPUiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUw0KLSogICBBRkZJTElBVEVTIEhBVkUgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKg0KLSogICBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIA0KLSogICBzb2Z0d2FyZSBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLg0KLSogICBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLCB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIA0KLSogICBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUgZm9sbG93aW5nIGxpbms6IA0KLSogICBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqIFRlY2huaWNhbCByZWZlcmVuY2UgZGF0YSAqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBTeXN0ZW0gTmFtZSA6IA0KLSogICBGaWxlIE5hbWUgICA6IHVzYl9pb2RlZmluZS5oDQotKiAgIEFic3RyYWN0ICAgIDogDQotKiAgIFZlcnNpb24gICAgIDogMS4wMC4wMA0KLSogICBEZXZpY2UgICAgICA6IEFSTQ0KLSogICBUb29sLUNoYWluICA6IA0KLSogICBPUyAgICAgICAgICA6IE5vbmUNCi0qICAgSC9XIFBsYXRmb3JtOiANCi0qICAgRGVzY3JpcHRpb24gOiANCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogICBIaXN0b3J5ICAgICA6IE1hci4wNiwyMDEyIFZlci4xLjAwLjAwDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9fVVNCX0lPREVGSU5FX0hfXw0KLSNkZWZpbmUgX19VU0JfSU9ERUZJTkVfSF9fDQotDQotI2luY2x1ZGUgInR5cGVkZWZpbmUuaCINCi0NCi1zdHJ1Y3Qgc3RfdXNiX24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdHJ1Y3QgVVNCICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JFOjE7ICAgICAgICAgICAgICAvKiAgIFVTQkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUExMRToxOyAgICAgICAgICAgICAvKiAgIFVQTExFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQ0tTRUw6MTsgICAgICAgICAgICAvKiAgIFVDS1NFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUFJQVToxOyAgICAgICAgICAgICAvKiAgIERQUlBVICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUlBEOjE7ICAgICAgICAgICAgICAvKiAgIERSUEQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0ZNOjE7ICAgICAgICAgICAgICAvKiAgIERDRk0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIU0U6MTsgICAgICAgICAgICAgICAvKiAgIEhTRSAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCVVNXQUlUICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCV0FJVDo2OyAgICAgICAgICAgICAvKiAgIEJXQUlUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTA7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCVVNXQUlUOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTWVNTVFMwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBMTlNUOjI7ICAgICAgICAgICAgICAvKiAgIExOU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTWVNTVFMwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEVlNUQ1RSMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSSFNUOjM7ICAgICAgICAgICAgICAvKiAgIFJIU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVQUNUOjE7ICAgICAgICAgICAgICAvKiAgIFVBQ1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNVTUU6MTsgICAgICAgICAgICAvKiAgIFJFU1VNRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JSU1Q6MTsgICAgICAgICAgICAvKiAgIFVTQlJTVCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSV1VQRToxOyAgICAgICAgICAgICAvKiAgIFJXVVBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBXS1VQOjE7ICAgICAgICAgICAgICAvKiAgIFdLVVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEVlNUQ1RSMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVVEVTVCAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVVFNUOjQ7ICAgICAgICAgICAgICAvKiAgIFVUU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVVEVTVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZCQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURU5ERToxOyAgICAgICAgICAgICAvKiAgIFRFTkRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERkFDQzoyOyAgICAgICAgICAgICAvKiAgIERGQUNDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZCQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZCQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBURU5ERToxOyAgICAgICAgICAgICAvKiAgIFRFTkRFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERkFDQzoyOyAgICAgICAgICAgICAvKiAgIERGQUNDICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZCQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGTyAgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkRbMl07ICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEVbNF07ICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGTzsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk8gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkRbMl07ICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEVbNF07ICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk87ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk8gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkRbMl07ICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgX1VCWVRFIEJZVEVbNF07ICAgICAgICAgICAgICAgICAgICAvKiAgQnl0ZSBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk87ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGT1NFTCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJU0VMOjE7ICAgICAgICAgICAgICAvKiAgIElTRUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGT1NFTDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBDRklGT0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBDRklGT0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrM1s0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9TRUwgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUkVRRToxOyAgICAgICAgICAgICAvKiAgIERSRVFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0xSTToxOyAgICAgICAgICAgICAvKiAgIERDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9TRUw7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9DVFIgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9DVFI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9TRUwgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVVJQSVBFOjQ7ICAgICAgICAgICAvKiAgIENVUlBJUEUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCSUdFTkQ6MTsgICAgICAgICAgICAvKiAgIEJJR0VORCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNQlc6MjsgICAgICAgICAgICAgICAvKiAgIE1CVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEUkVRRToxOyAgICAgICAgICAgICAvKiAgIERSRVFFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQ0xSTToxOyAgICAgICAgICAgICAvKiAgIERDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVc6MTsgICAgICAgICAgICAgICAvKiAgIFJFVyAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSQ05UOjE7ICAgICAgICAgICAgICAvKiAgIFJDTlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9TRUw7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9DVFIgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVExOOjEyOyAgICAgICAgICAgICAvKiAgIERUTE4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEZSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0xSOjE7ICAgICAgICAgICAgICAvKiAgIEJDTFIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVkFMOjE7ICAgICAgICAgICAgICAvKiAgIEJWQUwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9DVFI7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRFTkIwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZRToxOyAgICAgICAgICAgICAvKiAgIEJSRFlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUkRZRToxOyAgICAgICAgICAgICAvKiAgIE5SRFlFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRU1QRToxOyAgICAgICAgICAgICAvKiAgIEJFTVBFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFJFOjE7ICAgICAgICAgICAgICAvKiAgIENUUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNFOjE7ICAgICAgICAgICAgICAvKiAgIERWU0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTT0ZFOjE7ICAgICAgICAgICAgICAvKiAgIFNPRkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSU01FOjE7ICAgICAgICAgICAgICAvKiAgIFJTTUUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQlNFOjE7ICAgICAgICAgICAgICAvKiAgIFZCU0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRFTkIwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRFTkIxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQUNLRToxOyAgICAgICAgICAgICAvKiAgIFNBQ0tFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSUdORToxOyAgICAgICAgICAgICAvKiAgIFNJR05FICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFT0ZFUlJFOjE7ICAgICAgICAgICAvKiAgIEVPRkVSUkUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFRDSEU6MTsgICAgICAgICAgICAvKiAgIEFUVENIRSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVENIRToxOyAgICAgICAgICAgICAvKiAgIERUQ0hFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0hHRToxOyAgICAgICAgICAgICAvKiAgIEJDSEdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRFTkIxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkRZRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUwQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUxQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUyQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JSRFlFOjE7ICAgICAgICAvKiAgIFBJUEUzQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU0QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU1QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU2QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU3QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU4QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEU5QlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVBQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVCQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ0JSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVDQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFREJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVEQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRUJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVFQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRkJSRFlFOjE7ICAgICAgICAvKiAgIFBJUEVGQlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCUkRZRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOUkRZRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFME5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUwTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUxTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUyTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM05SRFlFOjE7ICAgICAgICAvKiAgIFBJUEUzTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNE5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU0TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU1TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU2TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN05SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU3TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOE5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU4TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEU5TlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVBTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVCTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ05SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVDTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRE5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVETlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRU5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVFTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRk5SRFlFOjE7ICAgICAgICAvKiAgIFBJUEVGTlJEWUUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOUkRZRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCRU1QRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUwQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUxQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUyQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JFTVBFOjE7ICAgICAgICAvKiAgIFBJUEUzQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU0QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU1QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU2QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU3QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU4QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEU5QkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVBQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVCQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ0JFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVDQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFREJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVEQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRUJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVFQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRkJFTVBFOjE7ICAgICAgICAvKiAgIFBJUEVGQkVNUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCRU1QRU5COyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTT0ZDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZTToxOyAgICAgICAgICAgICAvKiAgIEJSRFlNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUk5FTlNFTDoxOyAgICAgICAgICAvKiAgIFRSTkVOU0VMICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTT0ZDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRTVFMwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFNROjM7ICAgICAgICAgICAgICAvKiAgIENUU1EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQUxJRDoxOyAgICAgICAgICAgICAvKiAgIFZBTElEICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNROjM7ICAgICAgICAgICAgICAvKiAgIERWU1EgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQlNUUzoxOyAgICAgICAgICAgICAvKiAgIFZCU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkRZOjE7ICAgICAgICAgICAgICAvKiAgIEJSRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBOUkRZOjE7ICAgICAgICAgICAgICAvKiAgIE5SRFkgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRU1QOjE7ICAgICAgICAgICAgICAvKiAgIEJFTVAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDVFJUOjE7ICAgICAgICAgICAgICAvKiAgIENUUlQgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVlNUOjE7ICAgICAgICAgICAgICAvKiAgIERWU1QgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTT0ZSOjE7ICAgICAgICAgICAgICAvKiAgIFNPRlIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBSRVNNOjE7ICAgICAgICAgICAgICAvKiAgIFJFU00gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBWQklOVDoxOyAgICAgICAgICAgICAvKiAgIFZCSU5UICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRTVFMwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJTlRTVFMxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTQUNLOjE7ICAgICAgICAgICAgICAvKiAgIFNBQ0sgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSUdOOjE7ICAgICAgICAgICAgICAvKiAgIFNJR04gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFT0ZFUlI6MTsgICAgICAgICAgICAvKiAgIEVPRkVSUiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFRDSDoxOyAgICAgICAgICAgICAvKiAgIEFUVENIICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEVENIOjE7ICAgICAgICAgICAgICAvKiAgIERUQ0ggICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCQ0hHOjE7ICAgICAgICAgICAgICAvKiAgIEJDSEcgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBJTlRTVFMxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrNlsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCUkRZU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUwQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUxQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEUyQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JSRFk6MTsgICAgICAgICAvKiAgIFBJUEUzQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU0QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU1QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU2QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JSRFk6MTsgICAgICAgICAvKiAgIFBJUEU3QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU4QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEU5QlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEVBQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEVCQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ0JSRFk6MTsgICAgICAgICAvKiAgIFBJUEVDQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFREJSRFk6MTsgICAgICAgICAvKiAgIFBJUEVEQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRUJSRFk6MTsgICAgICAgICAvKiAgIFBJUEVFQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRkJSRFk6MTsgICAgICAgICAvKiAgIFBJUEVGQlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCUkRZU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOUkRZU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFME5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUwTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUxTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEUyTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM05SRFk6MTsgICAgICAgICAvKiAgIFBJUEUzTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNE5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU0TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU1TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU2TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN05SRFk6MTsgICAgICAgICAvKiAgIFBJUEU3TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOE5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU4TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEU5TlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEVBTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEVCTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ05SRFk6MTsgICAgICAgICAvKiAgIFBJUEVDTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRE5SRFk6MTsgICAgICAgICAvKiAgIFBJUEVETlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRU5SRFk6MTsgICAgICAgICAvKiAgIFBJUEVFTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRk5SRFk6MTsgICAgICAgICAvKiAgIFBJUEVGTlJEWSAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBOUkRZU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBCRU1QU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUwQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUxQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFMkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEUyQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFM0JFTVA6MTsgICAgICAgICAvKiAgIFBJUEUzQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU0QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU1QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFNkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU2QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFN0JFTVA6MTsgICAgICAgICAvKiAgIFBJUEU3QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOEJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU4QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFOUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEU5QkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEVBQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEVCQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFQ0JFTVA6MTsgICAgICAgICAvKiAgIFBJUEVDQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFREJFTVA6MTsgICAgICAgICAvKiAgIFBJUEVEQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRUJFTVA6MTsgICAgICAgICAvKiAgIFBJUEVFQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFRkJFTVA6MTsgICAgICAgICAvKiAgIFBJUEVGQkVNUCAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBCRU1QU1RTOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGUk1OVU0gICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBGUk5NOjExOyAgICAgICAgICAgICAvKiAgIEZSTk0gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDUkNFOjE7ICAgICAgICAgICAgICAvKiAgIENSQ0UgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBPVlJOOjE7ICAgICAgICAgICAgICAvKiAgIE9WUk4gICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBGUk1OVU07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVRlJNTlVNICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVRlJOTTozOyAgICAgICAgICAgICAvKiAgIFVGUk5NICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTM7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVRlJNTlVNOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JBRERSICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JBRERSOjc7ICAgICAgICAgICAvKiAgIFVTQkFERFIgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVU0JBRERSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrN1syXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JSRVEgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCTVJFUVVFU1RUWVBFOjg7ICAgICAvKiAgIEJNUkVRVUVTVFRZUEUgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCUkVRVUVTVDo4OyAgICAgICAgICAvKiAgIEJSRVFVRVNUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBVU0JSRVE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQlZBTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JWQUwgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQklORFg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JJTkRYICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFVTQkxFTkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0JMRU5HICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDRkcgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NDsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBESVI6MTsgICAgICAgICAgICAgICAvKiAgIERJUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTE7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDRkc7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BNQVhQICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWFBTOjc7ICAgICAgICAgICAgICAvKiAgIE1YUFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVZTRUw6NDsgICAgICAgICAgICAvKiAgIERFVlNFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BNQVhQOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEQ1BDVFIgICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDQ1BMOjE7ICAgICAgICAgICAgICAvKiAgIENDUEwgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSU5HRToxOyAgICAgICAgICAgICAvKiAgIFBJTkdFICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVVJFUUNMUjoxOyAgICAgICAgICAvKiAgIFNVUkVRQ0xSICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVVJFUToxOyAgICAgICAgICAgICAvKiAgIFNVUkVRICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEQ1BDVFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOFsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFU0VMICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSVBFU0VMOjQ7ICAgICAgICAgICAvKiAgIFBJUEVTRUwgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTI7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFU0VMOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrOVsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQ0ZHICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBFUE5VTTo0OyAgICAgICAgICAgICAvKiAgIEVQTlVNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBESVI6MTsgICAgICAgICAgICAgICAvKiAgIERJUiAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTSFROQUs6MTsgICAgICAgICAgICAvKiAgIFNIVE5BSyAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDTlRNRDoxOyAgICAgICAgICAgICAvKiAgIENOVE1EICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBEQkxCOjE7ICAgICAgICAgICAgICAvKiAgIERCTEIgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCRlJFOjE7ICAgICAgICAgICAgICAvKiAgIEJGUkUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUWVBFOjI7ICAgICAgICAgICAgICAvKiAgIFRZUEUgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQ0ZHOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQlVGICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZOTUI6ODsgICAgICAgICAgICAvKiAgIEJVRk5NQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCVUZTSVpFOjU7ICAgICAgICAgICAvKiAgIEJVRlNJWkUgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQlVGOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFTUFYUCAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBNWFBTOjExOyAgICAgICAgICAgICAvKiAgIE1YUFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBERVZTRUw6NDsgICAgICAgICAgICAvKiAgIERFVlNFTCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFTUFYUDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFUEVSSSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJSVRWOjM7ICAgICAgICAgICAgICAvKiAgIElJVFYgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6OTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJRklTOjE7ICAgICAgICAgICAgICAvKiAgIElGSVMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFUEVSSTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFM0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNENUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNENUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFN0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFN0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOENUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFOENUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU1NUUzoxOyAgICAgICAgICAgICAvKiAgIENTU1RTICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBDU0NMUjoxOyAgICAgICAgICAgICAvKiAgIENTQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFOUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQ0NUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQ0NUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRENUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRENUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRUNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRUNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRkNUUiAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQSUQ6MjsgICAgICAgICAgICAgICAvKiAgIFBJRCAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBQQlVTWToxOyAgICAgICAgICAgICAvKiAgIFBCVVNZICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUU1PTjoxOyAgICAgICAgICAgICAvKiAgIFNRTU9OICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUVNFVDoxOyAgICAgICAgICAgICAvKiAgIFNRU0VUICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTUUNMUjoxOyAgICAgICAgICAgICAvKiAgIFNRQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBQ0xSTToxOyAgICAgICAgICAgICAvKiAgIEFDTFJNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBBVFJFUE06MTsgICAgICAgICAgICAvKiAgIEFUUkVQTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MzsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBJTkJVRk06MTsgICAgICAgICAgICAvKiAgIElOQlVGTSAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBCU1RTOjE7ICAgICAgICAgICAgICAvKiAgIEJTVFMgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRkNUUjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTBbMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUxVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMVRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMlRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFMlRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUyVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFMlRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM1RSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFM1RSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEUzVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFM1RSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNFRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNFRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEU0VFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNFRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFNVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEU1VFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFNVRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQlRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQlRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVCVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQlRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQ1RSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQ1RSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVDVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQ1RSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRFRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRFRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVEVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRFRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVFVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRVRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRlRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFRlRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVGVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFRlRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFOVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEU5VFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFOVRSTiAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQVRSRSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6ODsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkNMUjoxOyAgICAgICAgICAgICAvKiAgIFRSQ0xSICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBUUkVOQjoxOyAgICAgICAgICAgICAvKiAgIFRSRU5CICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBQSVBFQVRSRTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VXT1JEIFBJUEVBVFJOOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBQSVBFQVRSTiAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTFbMTZdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQwICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQwOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQxICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQxOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQyICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQyOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQzICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQzOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ0ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ0OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ1ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ1OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ2ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ2OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ3ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ3OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ4ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBREQ5ICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBREQ5OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBERVZBRERBICAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6NjsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVU0JTUEQ6MjsgICAgICAgICAgICAvKiAgIFVTQlNQRCAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBIVUJQT1JUOjM7ICAgICAgICAgICAvKiAgIEhVQlBPUlQgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBVUFBIVUI6NDsgICAgICAgICAgICAvKiAgIFVQUEhVQiAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBERVZBRERBOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTJbMjhdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVVNQTU9ERSAgICAgKi8NCi0gICAgICAgICAgICAgX1VXT1JEIFdPUkQ7ICAgICAgICAgICAgICAgICAgICAgICAvKiAgV29yZCBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTQ7ICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCBTVVNQTToxOyAgICAgICAgICAgICAvKiAgIFNVU1BNICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VV09SRCA6MTsgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBTVVNQTU9ERTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgX1VCWVRFIHdrMTNbOTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMEZJRk9CNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMEZJRk9CNzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CMCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CMDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CMSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CMTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CMiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CMjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CMyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CMzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CNCAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CNDsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CNSAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CNTsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CNiAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CNjsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBEMUZJRk9CNyAgICAgKi8NCi0gICAgICAgICAgICAgX1VEV09SRCBMT05HOyAgICAgICAgICAgICAgICAgICAgICAvKiAgTG9uZyBBY2Nlc3MgKi8NCi0gICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgQml0IEFjY2VzcyAgKi8NCi0gICAgICAgICAgICAgICAgICAgIF9VRFdPUkQgRklGT1BPUlQ6MzI7ICAgICAgICAvKiAgIEZJRk9QT1JUICAgKi8NCi0gICAgICAgICAgICAgICAgICAgIH0gQklUOyAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICAgfSBEMUZJRk9CNzsgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi19OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgICAgKi8NCi0NCi0jZGVmaW5lIFVTQjAgKCoodm9sYXRpbGUgc3RydWN0IHN0X3VzYl9uICopMHhFODAxMDAwMCkgICAgLyogVVNCMCBBZGRyZXNzICAqLw0KLSNkZWZpbmUgVVNCMSAoKih2b2xhdGlsZSBzdHJ1Y3Qgc3RfdXNiX24gKikweEU4MjA3MDAwKSAgICAvKiBVU0IxIEFkZHJlc3MgICovDQotDQotDQotI2VuZGlmIC8qIF9fVVNCX0lPREVGSU5FX0hfXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL21haW4uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9tYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5YjBhNWIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL21haW4uaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogbWFpbi5oDQotKiAkUmV2OiAkDQotKiAkRGF0ZTo6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gTWFpbg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9NQUlOX0hfDQotI2RlZmluZSBfTUFJTl9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50X3QgbWFpbih2b2lkKTsNCi12b2lkIFNhbXBsZV9PU1RNMF9JbnRlcnJ1cHQodm9pZCk7DQotDQotI2VuZGlmICAvKiBfTUFJTl9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3BvcnRfaW5pdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3BvcnRfaW5pdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjhlM2RlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9wb3J0X2luaXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogcG9ydF9pbml0LmgNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBTQ0lGIFVBUlQgc2FtcGxlIHByb2dyYW0NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfUE9SVF9JTklUX0hfDQotI2RlZmluZSBfUE9SVF9JTklUX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFBPUlRfSW5pdCh2b2lkKTsNCi0NCi0NCi0jZW5kaWYgIC8qIF9QT1JUX0lOSVRfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yX3R5cGVkZWZzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvcl90eXBlZGVmcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTE0OTQzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yX3R5cGVkZWZzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXIqDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgOiByX3R5cGVkZWZzLmgNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXNjcmlwdGlvbiA6IGJhc2ljIHR5cGUgZGVmaW5pdGlvbg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIFJfVFlQRURFRlNfSA0KLSNkZWZpbmUgUl9UWVBFREVGU19IDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpbmNsdWRlIDxzdGRkZWYuaD4NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZiAhZGVmaW5lZChfX2Jvb2xfdHJ1ZV9mYWxzZV9hcmVfZGVmaW5lZCkgJiYgIWRlZmluZWQoX19jcGx1c3BsdXMpDQotI2RlZmluZSBmYWxzZSAwDQotI2RlZmluZSB0cnVlICAxDQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotdHlwZWRlZiBjaGFyICAgICAgICAgICAgICAgIGNoYXJfdDsNCi10eXBlZGVmIGludCAgICAgICAgICAgICAgICAgaW50X3Q7DQotDQotI2lmZGVmIFRZUEVTX0FMUkVBRFlfREVGSU5FRF9JTl9TVERJTlQNCi0JdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgIGJvb2xfdDsNCi0JdHlwZWRlZiBzaWduZWQgY2hhciAgICAgICAgIGludDhfdDsNCi0JdHlwZWRlZiBzaWduZWQgc2hvcnQgICAgICAgIGludDE2X3Q7DQotCXR5cGVkZWYgc2lnbmVkIGxvbmcgICAgICAgICBpbnQzMl90Ow0KLQl0eXBlZGVmIHNpZ25lZCBsb25nIGxvbmcgICAgaW50NjRfdDsNCi0JdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgIHVpbnQ4X3Q7DQotCXR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICAgICB1aW50MTZfdDsNCi0JdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgICAgIHVpbnQzMl90Ow0KLQl0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyAgdWludDY0X3Q7DQotCXR5cGVkZWYgZmxvYXQgICAgICAgICAgICAgICBmbG9hdDMyX3Q7DQotCXR5cGVkZWYgZG91YmxlICAgICAgICAgICAgICBmbG9hdDY0X3Q7DQotCXR5cGVkZWYgbG9uZyBkb3VibGUgICAgICAgICBmbG9hdDEyOF90Ow0KLSNlbmRpZg0KLSNlbmRpZiAvKiBSX1RZUEVERUZTX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvcmVzZXRwcmcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yZXNldHByZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWQwYTkyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9yZXNldHByZy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBGaWxlIE5hbWUgICAgOiByZXNldHByZy5oDQotKiAkUmV2OiAxNzUzMSAkDQotKiAkRGF0ZTo6IDIwMTMtMDQtMTAgMTI6NTg6NDQgKzAxMDAjJA0KLSogRGVzY3JpcHRpb24gIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gUHJvZ3JhbSBhZnRlciByZXNldA0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9SRVNFVFBSR19IXw0KLSNkZWZpbmUgX1JFU0VUUFJHX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIGlvX2luaXRfY2FjaGUodm9pZCk7DQotaW50MzJfdCBpb19jYWNoZV93cml0ZWJhY2sodm9pZCk7DQotDQotI2VuZGlmICAvKiBfUkVTRVRQUkdfSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9zYW1wbGVfbWFpbi5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3NhbXBsZV9tYWluLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NDNiNTIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3NhbXBsZV9tYWluLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHNhbXBsZV9tYWluLmgNCi0qICRSZXY6ICQNCi0qICREYXRlOjogICAgICAgICAgICAgICAgICAgICAgICAgICAkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBSSUlDIHNhbXBsZSBwcm9ncmFtDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNpZm5kZWYgX1NBTVBMRV9NQUlOX0hfDQotI2RlZmluZSBfU0FNUExFX01BSU5fSF8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotSW5jbHVkZXMgICA8U3lzdGVtIEluY2x1ZGVzPiAsICJQcm9qZWN0IEluY2x1ZGVzIg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVHlwZWRlZiBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotTWFjcm8gZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVZhcmlhYmxlIEV4dGVybnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUZ1bmN0aW9ucyBQcm90b3R5cGVzDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXZvaWQgU2FtcGxlX01haW4odm9pZCk7DQotDQotDQotI2VuZGlmICAvKiBfU0FNUExFX01BSU5fSF8gKi8NCi0NCi0vKiBFbmQgb2YgRmlsZSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvaW5jbHVkZS9zaW9fY2hhci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3Npb19jaGFyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1M2NjM2IuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3Npb19jaGFyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRElTQ0xBSU1FUg0KLSogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotKiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLSogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotKiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi0qIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotKiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLSogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLSogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLSogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLSogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotKiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi0qIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi0qIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotKiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLSogZm9sbG93aW5nIGxpbms6DQotKiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi0qDQotKiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIEZpbGUgTmFtZSAgICA6IHNpb19jaGFyLmgNCi0qICRSZXY6IDE3NTMxICQNCi0qICREYXRlOjogMjAxMy0wNC0xMCAxMjo1ODo0NCArMDEwMCMkDQotKiBEZXNjcmlwdGlvbiAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBUZXJtaW5hbCBJL08NCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2lmbmRlZiBfU0lPX0NIQVJfSF8NCi0jZGVmaW5lIF9TSU9fQ0hBUl9IXw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1JbmNsdWRlcyAgIDxTeXN0ZW0gSW5jbHVkZXM+ICwgIlByb2plY3QgSW5jbHVkZXMiDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1NYWNybyBkZWZpbml0aW9ucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotVmFyaWFibGUgRXh0ZXJucw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotRnVuY3Rpb25zIFByb3RvdHlwZXMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotaW50MzJfdCBTaW9Xcml0ZShpbnQzMl90IGZpbGVfbm8sIGNvbnN0IGNoYXJfdCAqIGJ1ZmZlciwgdWludDMyX3Qgd3JpdGluZ19iKTsNCi1pbnQzMl90IFNpb1JlYWQoaW50MzJfdCBmaWxlX25vLCBjaGFyX3QgKiBidWZmZXIsIHVpbnQzMl90IHJlYWRpbmdfYik7DQotDQotdm9pZCAgIElvSW5pdFNjaWYyKHZvaWQpOw0KLWNoYXJfdCBJb0dldGNoYXIodm9pZCk7DQotdm9pZCAgIElvUHV0Y2hhcihjaGFyX3QgYnVmZmVyKTsNCi0NCi0jZW5kaWYgIC8qIF9TSU9fQ0hBUl9IXyAqLw0KLQ0KLS8qIEVuZCBvZiBGaWxlICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3N0Yl9pbml0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc3RiX2luaXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY4ZmE5ZC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvc3RiX2luaXQuaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKiBESVNDTEFJTUVSDQotKiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi0qIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotKiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi0qIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLSogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi0qIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotKiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotKiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotKiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi0qIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotKiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi0qIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLSogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLSogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi0qIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotKiBmb2xsb3dpbmcgbGluazoNCi0qIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLSoNCi0qIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgIDogc3RiX2luaXQuaA0KLSogJFJldjogMTc1MzEgJA0KLSogJERhdGU6OiAyMDEzLTA0LTEwIDEyOjU4OjQ0ICswMTAwIyQNCi0qIERlc2NyaXB0aW9uICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSAtIFNDSUYgVUFSVCBzYW1wbGUgcHJvZ3JhbQ0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9TVEJfSU5JVF9IXw0KLSNkZWZpbmUgX1NUQl9JTklUX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLUluY2x1ZGVzICAgPFN5c3RlbSBJbmNsdWRlcz4gLCAiUHJvamVjdCBJbmNsdWRlcyINCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVR5cGVkZWYgZGVmaW5pdGlvbnMNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLU1hY3JvIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1WYXJpYWJsZSBFeHRlcm5zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1GdW5jdGlvbnMgUHJvdG90eXBlcw0KLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi12b2lkIFNUQl9Jbml0KHZvaWQpOw0KLQ0KLQ0KLSNlbmRpZiAgLyogX1NUQl9JTklUX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvdHlwZWRlZmluZS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy9pbmNsdWRlL3R5cGVkZWZpbmUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY3OTIzNi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL2luY2x1ZGUvdHlwZWRlZmluZS5oCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0qIERJU0NMQUlNRVINCi0qIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLSogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi0qIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLSogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLSogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotKiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLSogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi0qIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi0qIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi0qIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLSogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi0qIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLSogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotKiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotKiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLSogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi0qIGZvbGxvd2luZyBsaW5rOg0KLSogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotKg0KLSogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogRmlsZSBOYW1lICAgICA6IHR5cGVkZWZpbmUuaA0KLSogVmVyc2lvbiAgICAgICA6IDEuMDANCi0qIERlc2NyaXB0aW9uICAgOiBEZWZpbmVzIGV4YWN0IHdpZHRoIGludGVnZXIgdHlwZXMuDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLSogICAgICAgICA6IDI0LjA1LjIwMTIgMS4wMCAgICBGaXJzdCBSZWxlYXNlDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWZuZGVmIF9UWVBFX0RFRklORV9IXw0KLSNkZWZpbmUgX1RZUEVfREVGSU5FX0hfDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1UeXBlZGVmIGRlZmluaXRpb25zDQotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi10eXBlZGVmIHNpZ25lZCAgIGNoYXIgICAgICBfU0JZVEU7DQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyICAgICAgX1VCWVRFOw0KLXR5cGVkZWYgc2lnbmVkICAgc2hvcnQgICAgIF9TV09SRDsNCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgICBfVVdPUkQ7DQotdHlwZWRlZiBzaWduZWQgICBpbnQgICAgICAgX1NJTlQ7DQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgICAgX1VJTlQ7DQotdHlwZWRlZiBzaWduZWQgICBsb25nICAgICAgX1NEV09SRDsNCi10eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICBfVURXT1JEOw0KLXR5cGVkZWYgc2lnbmVkICAgbG9uZyBsb25nIF9TUVdPUkQ7DQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgX1VRV09SRDsNCi0NCi0jZW5kaWYJLyogX1RZUEVfREVGSU5FX0hfICovDQotDQotLyogRW5kIG9mIEZpbGUgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS9Tb3VyY2UvUmVuZXNhc0ZpbGVzL3ZlY3Rvci92ZWN0b3JfbWlycm9ydGFibGUucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvdmVjdG9yL3ZlY3Rvcl9taXJyb3J0YWJsZS5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjUxYTU1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvdmVjdG9yL3ZlY3Rvcl9taXJyb3J0YWJsZS5zCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRElTQ0xBSU1FUg0KLTsqIFRoaXMgc29mdHdhcmUgaXMgc3VwcGxpZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgb25seQ0KLTsqIGludGVuZGVkIGZvciB1c2Ugd2l0aCBSZW5lc2FzIHByb2R1Y3RzLiBObyBvdGhlciB1c2VzIGFyZSBhdXRob3JpemVkLiBUaGlzDQotOyogc29mdHdhcmUgaXMgb3duZWQgYnkgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbiBhbmQgaXMgcHJvdGVjdGVkIHVuZGVyDQotOyogYWxsIGFwcGxpY2FibGUgbGF3cywgaW5jbHVkaW5nIGNvcHlyaWdodCBsYXdzLg0KLTsqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiBBTkQgUkVORVNBUyBNQUtFUyBOTyBXQVJSQU5USUVTIFJFR0FSRElORw0KLTsqIFRISVMgU09GVFdBUkUsIFdIRVRIRVIgRVhQUkVTUywgSU1QTElFRCBPUiBTVEFUVVRPUlksIElOQ0xVRElORyBCVVQgTk9UDQotOyogTElNSVRFRCBUTyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UNCi07KiBBTkQgTk9OLUlORlJJTkdFTUVOVC4gQUxMIFNVQ0ggV0FSUkFOVElFUyBBUkUgRVhQUkVTU0xZIERJU0NMQUlNRUQuDQotOyogVE8gVEhFIE1BWElNVU0gRVhURU5UIFBFUk1JVFRFRCBOT1QgUFJPSElCSVRFRCBCWSBMQVcsIE5FSVRIRVIgUkVORVNBUw0KLTsqIEVMRUNUUk9OSUNTIENPUlBPUkFUSU9OIE5PUiBBTlkgT0YgSVRTIEFGRklMSUFURUQgQ09NUEFOSUVTIFNIQUxMIEJFIExJQUJMRQ0KLTsqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgRk9SDQotOyogQU5ZIFJFQVNPTiBSRUxBVEVEIFRPIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgUkVORVNBUyBPUiBJVFMgQUZGSUxJQVRFUyBIQVZFDQotOyogQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotOyogUmVuZXNhcyByZXNlcnZlcyB0aGUgcmlnaHQsIHdpdGhvdXQgbm90aWNlLCB0byBtYWtlIGNoYW5nZXMgdG8gdGhpcyBzb2Z0d2FyZQ0KLTsqIGFuZCB0byBkaXNjb250aW51ZSB0aGUgYXZhaWxhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUuIEJ5IHVzaW5nIHRoaXMgc29mdHdhcmUsDQotOyogeW91IGFncmVlIHRvIHRoZSBhZGRpdGlvbmFsIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvdW5kIGJ5IGFjY2Vzc2luZyB0aGUNCi07KiBmb2xsb3dpbmcgbGluazoNCi07KiBodHRwOi8vd3d3LnJlbmVzYXMuY29tL2Rpc2NsYWltZXINCi07Kg0KLTsqIENvcHlyaWdodCAoQykgMjAxMiBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIEZpbGUgTmFtZSAgICAgOiB2ZWN0b3JfbWlycm9ydGFibGUucw0KLTsqIFZlcnNpb24gICAgICAgOiAwLjAxDQotOyogRGV2aWNlKHMpICAgICA6IEFyYWdvbg0KLTsqIFRvb2wtQ2hhaW4gICAgOiBEUy01IFZlciA1LjEzDQotOyogICAgICAgICAgICAgICAgIEFSTSBDb21wbGllciANCi07KiAgICAgICAgICAgICAgIDogDQotOyogSC9XIFBsYXRmb3JtICA6IEFyYWdvbiBDUFUgQm9hcmQNCi07KiBEZXNjcmlwdGlvbiAgIDogQXJhZ29uIFNhbXBsZSBQcm9ncmFtIC0gVmVjdG9yIG1pcnJvcnRhYmxlDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogSGlzdG9yeSA6IERELk1NLllZWVkgVmVyc2lvbiBEZXNjcmlwdGlvbg0KLTsqICAgICAgICAgOiAyMy4wNS4yMDEyIDAuMDENCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotOyBFbnRyeSBwb2ludCBmb3IgdGhlIFJlc2V0IGhhbmRsZXINCi07PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotCVBSRVNFUlZFOA0KLQlBUkVBIFZFQ1RPUl9NSVJST1JfVEFCTEUsIENPREUsIFJFQURPTkxZDQotDQotOwlFWFBPUlQgdmVjdG9yX3RhYmxlDQotDQotCUlNUE9SVCAgcmVzZXRfaGFuZGxlcg0KLQlJTVBPUlQgIHVuZGVmaW5lZF9oYW5kbGVyDQotCUlNUE9SVCAgcHJlZmV0Y2hfaGFuZGxlcg0KLQlJTVBPUlQgIGFib3J0X2hhbmRsZXINCi0JSU1QT1JUICByZXNlcnZlZF9oYW5kbGVyDQotCUlNUE9SVCAgRnJlZVJUT1NfSVJRX0hhbmRsZXINCi0JSU1QT1JUICBmaXFfaGFuZGxlcg0KLQlJTVBPUlQgIEZyZWVSVE9TX1NXSV9IYW5kbGVyDQotDQotOwlFTlRSWQ0KLQ0KLTsJRVhQT1JUIFN0YXJ0DQotDQotO1N0YXJ0DQotDQotdmVjdG9yX3RhYmxlMg0KLQlMRFIgcGMsID1yZXNldF9oYW5kbGVyICAgICAgICAgOyAweDAwMDBfMDAwMA0KLQlMRFIgcGMsID11bmRlZmluZWRfaGFuZGxlciAgICAgOyAweDAwMDBfMDAwNA0KLQlMRFIgcGMsID1GcmVlUlRPU19TV0lfSGFuZGxlciAgOyAweDAwMDBfMDAwOA0KLQlMRFIgcGMsID1wcmVmZXRjaF9oYW5kbGVyICAgICAgOyAweDAwMDBfMDAwYw0KLQlMRFIgcGMsID1hYm9ydF9oYW5kbGVyICAgICAgICAgOyAweDAwMDBfMDAxMA0KLQlMRFIgcGMsID1yZXNlcnZlZF9oYW5kbGVyICAgICAgOyAweDAwMDBfMDAxNA0KLQlMRFIgcGMsID1GcmVlUlRPU19JUlFfSGFuZGxlciAgOyAweDAwMDBfMDAxOA0KLQlMRFIgcGMsID1maXFfaGFuZGxlciAgICAgICAgICAgOyAweDAwMDBfMDAxYw0KLQ0KLUxpdGVyYWxzDQotCUxUT1JHDQotDQotCUVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9SZW5lc2FzRmlsZXMvdmVjdG9yL3ZlY3Rvcl90YWJsZS5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy92ZWN0b3IvdmVjdG9yX3RhYmxlLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YWQ0NGEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL1JlbmVzYXNGaWxlcy92ZWN0b3IvdmVjdG9yX3RhYmxlLnMKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBESVNDTEFJTUVSDQotOyogVGhpcyBzb2Z0d2FyZSBpcyBzdXBwbGllZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBvbmx5DQotOyogaW50ZW5kZWQgZm9yIHVzZSB3aXRoIFJlbmVzYXMgcHJvZHVjdHMuIE5vIG90aGVyIHVzZXMgYXJlIGF1dGhvcml6ZWQuIFRoaXMNCi07KiBzb2Z0d2FyZSBpcyBvd25lZCBieSBSZW5lc2FzIEVsZWN0cm9uaWNzIENvcnBvcmF0aW9uIGFuZCBpcyBwcm90ZWN0ZWQgdW5kZXINCi07KiBhbGwgYXBwbGljYWJsZSBsYXdzLCBpbmNsdWRpbmcgY29weXJpZ2h0IGxhd3MuDQotOyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBSRU5FU0FTIE1BS0VTIE5PIFdBUlJBTlRJRVMgUkVHQVJESU5HDQotOyogVEhJUyBTT0ZUV0FSRSwgV0hFVEhFUiBFWFBSRVNTLCBJTVBMSUVEIE9SIFNUQVRVVE9SWSwgSU5DTFVESU5HIEJVVCBOT1QNCi07KiBMSU1JVEVEIFRPIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQ0KLTsqIEFORCBOT04tSU5GUklOR0VNRU5ULiBBTEwgU1VDSCBXQVJSQU5USUVTIEFSRSBFWFBSRVNTTFkgRElTQ0xBSU1FRC4NCi07KiBUTyBUSEUgTUFYSU1VTSBFWFRFTlQgUEVSTUlUVEVEIE5PVCBQUk9ISUJJVEVEIEJZIExBVywgTkVJVEhFUiBSRU5FU0FTDQotOyogRUxFQ1RST05JQ1MgQ09SUE9SQVRJT04gTk9SIEFOWSBPRiBJVFMgQUZGSUxJQVRFRCBDT01QQU5JRVMgU0hBTEwgQkUgTElBQkxFDQotOyogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBGT1INCi07KiBBTlkgUkVBU09OIFJFTEFURUQgVE8gVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBSRU5FU0FTIE9SIElUUyBBRkZJTElBVEVTIEhBVkUNCi07KiBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCi07KiBSZW5lc2FzIHJlc2VydmVzIHRoZSByaWdodCwgd2l0aG91dCBub3RpY2UsIHRvIG1ha2UgY2hhbmdlcyB0byB0aGlzIHNvZnR3YXJlDQotOyogYW5kIHRvIGRpc2NvbnRpbnVlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZS4gQnkgdXNpbmcgdGhpcyBzb2Z0d2FyZSwNCi07KiB5b3UgYWdyZWUgdG8gdGhlIGFkZGl0aW9uYWwgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm91bmQgYnkgYWNjZXNzaW5nIHRoZQ0KLTsqIGZvbGxvd2luZyBsaW5rOg0KLTsqIGh0dHA6Ly93d3cucmVuZXNhcy5jb20vZGlzY2xhaW1lcg0KLTsqDQotOyogQ29weXJpZ2h0IChDKSAyMDEyIFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotOyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotOy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyogRmlsZSBOYW1lICAgICA6IHZlY3Rvcl90YWJsZS5zDQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uIC0gUlovQTFIDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuMTMNCi07KiAgICAgICAgICAgICAgICAgQVJNIENvbXBsaWVyIA0KLTsqICAgICAgICAgICAgICAgOiANCi07KiBIL1cgUGxhdGZvcm0gIDogQXJhZ29uIENQVSBCb2FyZA0KLTsqIERlc2NyaXB0aW9uICAgOiBBcmFnb24gU2FtcGxlIFByb2dyYW0gLSBWZWN0b3IgdGFibGUNCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotOyogICAgICAgICA6IDIzLjA1LjIwMTIgMC4wMQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi07IEVudHJ5IHBvaW50IGZvciB0aGUgUmVzZXQgaGFuZGxlcg0KLTs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0JUFJFU0VSVkU4DQotCUFSRUEgVkVDVE9SX1RBQkxFLCBDT0RFLCBSRUFET05MWQ0KLQ0KLQlFWFBPUlQgdmVjdG9yX3RhYmxlDQotDQotCUlNUE9SVCAgcmVzZXRfaGFuZGxlcg0KLQlJTVBPUlQgIHVuZGVmaW5lZF9oYW5kbGVyDQotCUlNUE9SVCAgRnJlZVJUT1NfU1dJX0hhbmRsZXINCi0JSU1QT1JUICBwcmVmZXRjaF9oYW5kbGVyDQotCUlNUE9SVCAgYWJvcnRfaGFuZGxlcg0KLQlJTVBPUlQgIHJlc2VydmVkX2hhbmRsZXINCi0JSU1QT1JUICBGcmVlUlRPU19JUlFfSGFuZGxlcg0KLQlJTVBPUlQgIGZpcV9oYW5kbGVyDQotDQotCUVOVFJZDQotDQotCUVYUE9SVCBTdGFydA0KLQ0KLVN0YXJ0DQotDQotdmVjdG9yX3RhYmxlDQotCUxEUiBwYywgPXJlc2V0X2hhbmRsZXIgICAgICAgICA7IDB4MDAwMF8wMDAwDQotCUxEUiBwYywgPXVuZGVmaW5lZF9oYW5kbGVyICAgICA7IDB4MDAwMF8wMDA0DQotCUxEUiBwYywgPUZyZWVSVE9TX1NXSV9IYW5kbGVyICA7IDB4MDAwMF8wMDA4DQotCUxEUiBwYywgPXByZWZldGNoX2hhbmRsZXIgICAgICA7IDB4MDAwMF8wMDBjDQotCUxEUiBwYywgPWFib3J0X2hhbmRsZXIgICAgICAgICA7IDB4MDAwMF8wMDEwDQotCUxEUiBwYywgPXJlc2VydmVkX2hhbmRsZXIgICAgICA7IDB4MDAwMF8wMDE0DQotCUxEUiBwYywgPUZyZWVSVE9TX0lSUV9IYW5kbGVyICA7IDB4MDAwMF8wMDE4DQotCUxEUiBwYywgPWZpcV9oYW5kbGVyICAgICAgICAgICA7IDB4MDAwMF8wMDFjDQotDQotTGl0ZXJhbHMNCi0JTFRPUkcNCi0NCi0JRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L1NvdXJjZS9tYWluLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiOTRiMTkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvU291cmNlL21haW4uYworKysgL2Rldi9udWxsCkBAIC0xLDI3NCArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KLSAqIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQotICogbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIChkZWZpbmVkIGluIHRoaXMgZmlsZSkgaXMgdXNlZCB0bw0KLSAqIHNlbGVjdCBiZXR3ZWVuIHRoZSB0d28uICBUaGUgc2ltcGx5IGJsaW5reSBkZW1vIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQNCi0gKiBpbiBtYWluX2JsaW5reS5jLiAgVGhlIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uIGlzDQotICogaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbiBtYWluX2Z1bGwuYy4NCi0gKg0KLSAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBjb2RlIHRoYXQgaXMgbm90IGRlbW8gc3BlY2lmaWMsIGluY2x1ZGluZyB0aGUNCi0gKiBoYXJkd2FyZSBzZXR1cCBhbmQgRnJlZVJUT1MgaG9vayBmdW5jdGlvbnMuDQotICoNCi0gKiBFTlNVUkUgVE8gUkVBRCBUSEUgRE9DVU1FTlRBVElPTiBQQUdFIEZPUiBUSElTIFBPUlQgQU5EIERFTU8gQVBQTElDQVRJT04gT04NCi0gKiBUSEUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgV0VCIFNJVEUgRk9SIEZVTEwgSU5GT1JNQVRJT04gT04gVVNJTkcgVEhJUyBERU1PDQotICogQVBQTElDQVRJT04sIEFORCBJVFMgQVNTT0NJQVRFIEZyZWVSVE9TIEFSQ0hJVEVDVFVSRSBQT1JUIQ0KLSAqDQotICovDQotDQotLyogU2NoZWR1bGVyIGluY2x1ZGUgZmlsZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0jaW5jbHVkZSAic2VtcGhyLmgiDQotDQotLyogU3RhbmRhcmQgZGVtbyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLSNpbmNsdWRlICJUaW1lckRlbW8uaCINCi0jaW5jbHVkZSAiUXVldWVPdmVyd3JpdGUuaCINCi0NCi0vKiBSZW5lc2FzIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJyX3R5cGVkZWZzLmgiDQotI2luY2x1ZGUgInNpb19jaGFyLmgiDQotDQotLyogU2V0IG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgdG8gb25lIHRvIHJ1biB0aGUgc2ltcGxlIGJsaW5reSBkZW1vLA0KLW9yIDAgdG8gcnVuIHRoZSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gKi8NCi0jZGVmaW5lIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkJMA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogQ29uZmlndXJlIHRoZSBoYXJkd2FyZSBhcyBuZWNlc3NhcnkgdG8gcnVuIHRoaXMgZGVtby4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZTZXR1cEhhcmR3YXJlKCB2b2lkICk7DQotDQotLyoNCi0gKiBtYWluX2JsaW5reSgpIGlzIHVzZWQgd2hlbiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAxLg0KLSAqIG1haW5fZnVsbCgpIGlzIHVzZWQgd2hlbiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAwLg0KLSAqLw0KLSNpZiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZID09IDENCi0JZXh0ZXJuIHZvaWQgbWFpbl9ibGlua3koIHZvaWQgKTsNCi0jZWxzZQ0KLQlleHRlcm4gdm9pZCBtYWluX2Z1bGwoIHZvaWQgKTsNCi0jZW5kaWYgLyogI2lmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgPT0gMSAqLw0KLQ0KLS8qIFByb3RvdHlwZXMgZm9yIHRoZSBzdGFuZGFyZCBGcmVlUlRPUyBjYWxsYmFjay9ob29rIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZA0KLXdpdGhpbiB0aGlzIGZpbGUuICovDQotdm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICk7DQotdm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApOw0KLXZvaWQgdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soIFRhc2tIYW5kbGVfdCBweFRhc2ssIGNoYXIgKnBjVGFza05hbWUgKTsNCi12b2lkIHZBcHBsaWNhdGlvblRpY2tIb29rKCB2b2lkICk7DQotDQotLyoNCi0gKiBDcmVhdGVzIGFuZCB2ZXJpZmllcyBkaWZmZXJlbnQgZmlsZXMgb24gdGhlIHZvbHVtZSwgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mDQotICogdmFyaW91cyBkaWZmZXJlbnQgQVBJIGZ1bmN0aW9ucy4NCi0gKi8NCi1leHRlcm4gdm9pZCB2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1pbnQgbWFpbiggdm9pZCApDQotew0KLQkvKiBDb25maWd1cmUgdGhlIGhhcmR3YXJlIHJlYWR5IHRvIHJ1biB0aGUgZGVtby4gKi8NCi0JcHJ2U2V0dXBIYXJkd2FyZSgpOw0KLQ0KLQkvKiBUaGUgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIGlzIGRlc2NyaWJlZCBhdCB0aGUgdG9wDQotCW9mIHRoaXMgZmlsZS4gKi8NCi0JI2lmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgPT0gMQ0KLQl7DQotCQltYWluX2JsaW5reSgpOw0KLQl9DQotCSNlbHNlDQotCXsNCi0JCW1haW5fZnVsbCgpOw0KLQl9DQotCSNlbmRpZg0KLQ0KLQlyZXR1cm4gMDsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2U2V0dXBIYXJkd2FyZSggdm9pZCApDQotew0KLQkvKiBJbml0aWFsaXNlIHRoZSBwaW5zIHVzZWQgYnkgdGhlIExFRHMgKHRoZSBvYnNjdXJlIFtub3cgZm9yIGhpc3RvcmljYWwNCi0JcmVhc29uc10gbmFtZSBQYXJUZXN0IHN0YW5kcyBmb3IgUGFyYWxsZWwgUG9ydCB0ZXN0KS4gKi8NCi0JdlBhclRlc3RJbml0aWFsaXNlKCk7DQotDQotICAgIC8qIENhbGwgdGhlIFJlbmVzYXMgZHJpdmVyIHRoYXQgaW5pdGlhbGlzZXMgdGhlIHNlcmlhbCBwb3J0LiAgUDE9NjYuNjdNSHoNCi0JQ0tTPTAgU0NCUlI9MTcgQml0IHJhdGUgZXJyb3I9MC40NiUgPT4gQmF1ZCByYXRlPTExNTIwMGJwcy4gKi8NCi0gICAgSW9Jbml0U2NpZjIoKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICkNCi17DQotCS8qIENhbGxlZCBpZiBhIGNhbGwgdG8gcHZQb3J0TWFsbG9jKCkgZmFpbHMgYmVjYXVzZSB0aGVyZSBpcyBpbnN1ZmZpY2llbnQNCi0JZnJlZSBtZW1vcnkgYXZhaWxhYmxlIGluIHRoZSBGcmVlUlRPUyBoZWFwLiAgcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkDQotCWludGVybmFsbHkgYnkgRnJlZVJUT1MgQVBJIGZ1bmN0aW9ucyB0aGF0IGNyZWF0ZSB0YXNrcywgcXVldWVzLCBzb2Z0d2FyZQ0KLQl0aW1lcnMsIGFuZCBzZW1hcGhvcmVzLiAgVGhlIHNpemUgb2YgdGhlIEZyZWVSVE9TIGhlYXAgaXMgc2V0IGJ5IHRoZQ0KLQljb25maWdUT1RBTF9IRUFQX1NJWkUgY29uZmlndXJhdGlvbiBjb25zdGFudCBpbiBGcmVlUlRPU0NvbmZpZy5oLiAqLw0KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggVGFza0hhbmRsZV90IHB4VGFzaywgY2hhciAqcGNUYXNrTmFtZSApDQotew0KLQkoIHZvaWQgKSBwY1Rhc2tOYW1lOw0KLQkoIHZvaWQgKSBweFRhc2s7DQotDQotCS8qIFJ1biB0aW1lIHN0YWNrIG92ZXJmbG93IGNoZWNraW5nIGlzIHBlcmZvcm1lZCBpZg0KLQljb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgaXMgZGVmaW5lZCB0byAxIG9yIDIuICBUaGlzIGhvb2sNCi0JZnVuY3Rpb24gaXMgY2FsbGVkIGlmIGEgc3RhY2sgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICovDQotCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsNCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICkNCi17DQotdm9sYXRpbGUgc2l6ZV90IHhGcmVlSGVhcFNwYWNlOw0KLQ0KLQkvKiBUaGlzIGlzIGp1c3QgYSB0cml2aWFsIGV4YW1wbGUgb2YgYW4gaWRsZSBob29rLiAgSXQgaXMgY2FsbGVkIG9uIGVhY2gNCi0JY3ljbGUgb2YgdGhlIGlkbGUgdGFzay4gIEl0IG11c3QgKk5PVCogYXR0ZW1wdCB0byBibG9jay4gIEluIHRoaXMgY2FzZSB0aGUNCi0JaWRsZSB0YXNrIGp1c3QgcXVlcmllcyB0aGUgYW1vdW50IG9mIEZyZWVSVE9TIGhlYXAgdGhhdCByZW1haW5zLiAgU2VlIHRoZQ0KLQltZW1vcnkgbWFuYWdlbWVudCBzZWN0aW9uIG9uIHRoZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyB3ZWIgc2l0ZSBmb3IgbWVtb3J5DQotCW1hbmFnZW1lbnQgb3B0aW9ucy4gIElmIHRoZXJlIGlzIGEgbG90IG9mIGhlYXAgbWVtb3J5IGZyZWUgdGhlbiB0aGUNCi0JY29uZmlnVE9UQUxfSEVBUF9TSVpFIHZhbHVlIGluIEZyZWVSVE9TQ29uZmlnLmggY2FuIGJlIHJlZHVjZWQgdG8gZnJlZSB1cA0KLQlSQU0uICovDQotCXhGcmVlSGVhcFNwYWNlID0geFBvcnRHZXRGcmVlSGVhcFNpemUoKTsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgeEZyZWVIZWFwU3BhY2UgYmVpbmcgc2V0IGJ1dCBuZXZlciB1c2VkLiAqLw0KLQkoIHZvaWQgKSB4RnJlZUhlYXBTcGFjZTsNCi0NCi0JI2lmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgIT0gMQ0KLQl7DQotCQkvKiBJZiB0aGUgZmlsZSBzeXN0ZW0gaXMgb25seSBnb2luZyB0byBiZSBhY2Nlc3NlZCBmcm9tIG9uZSB0YXNrIHRoZW4NCi0JCUZfRlNfVEhSRUFEX0FXQVJFIGNhbiBiZSBzZXQgdG8gMCBhbmQgdGhlIHNldCBvZiBleGFtcGxlIGZpbGVzIGlzDQotCQljcmVhdGVkIGJlZm9yZSB0aGUgUlRPUyBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gIElmIHRoZSBmaWxlIHN5c3RlbSBpcw0KLQkJZ29pbmcgdG8gYmUJYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrIHRoZW4gRl9GU19USFJFQURfQVdBUkUgbXVzdA0KLQkJYmUgc2V0IHRvIDEgYW5kIHRoZSBzZXQgb2Ygc2FtcGxlIGZpbGVzIGFyZSBjcmVhdGVkIGZyb20gdGhlIGlkbGUgdGFzaw0KLQkJaG9vayBmdW5jdGlvbi4gKi8NCi0JCSNpZiBGX0ZTX1RIUkVBRF9BV0FSRSA9PSAxDQotCQl7DQotCQkJc3RhdGljIHBvcnRCQVNFX1RZUEUgeENyZWF0ZWRTYW1wbGVGaWxlcyA9IHBkRkFMU0U7DQotDQotCQkJLyogSW5pdGlhbGlzZSB0aGUgZHJpdmUgYW5kIGZpbGUgc3lzdGVtLCB0aGVuIGNyZWF0ZSBhIGZldyBleGFtcGxlDQotCQkJZmlsZXMuICBUaGUgb3V0cHV0IGZyb20gdGhpcyBmdW5jdGlvbiBqdXN0IGdvZXMgdG8gdGhlIHN0ZG91dCB3aW5kb3csDQotCQkJYWxsb3dpbmcgdGhlIG91dHB1dCB0byBiZSB2aWV3ZWQgd2hlbiB0aGUgVURQIGNvbW1hbmQgY29uc29sZSBpcyBub3QNCi0JCQljb25uZWN0ZWQuICovDQotCQkJaWYoIHhDcmVhdGVkU2FtcGxlRmlsZXMgPT0gcGRGQUxTRSApDQotCQkJew0KLQkJCQl2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoKTsNCi0JCQkJeENyZWF0ZWRTYW1wbGVGaWxlcyA9IHBkVFJVRTsNCi0JCQl9DQotCQl9DQotCQkjZW5kaWYNCi0JfQ0KLQkjZW5kaWYNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2QXNzZXJ0Q2FsbGVkKCBjb25zdCBjaGFyICogcGNGaWxlLCB1bnNpZ25lZCBsb25nIHVsTGluZSApDQotew0KLXZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgdWwgPSAwOw0KLQ0KLQkoIHZvaWQgKSBwY0ZpbGU7DQotCSggdm9pZCApIHVsTGluZTsNCi0NCi0JdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQotCXsNCi0JCS8qIFNldCB1bCB0byBhIG5vbi16ZXJvIHZhbHVlIHVzaW5nIHRoZSBkZWJ1Z2dlciB0byBzdGVwIG91dCBvZiB0aGlzDQotCQlmdW5jdGlvbi4gKi8NCi0JCXdoaWxlKCB1bCA9PSAwICkNCi0JCXsNCi0JCQlwb3J0Tk9QKCk7DQotCQl9DQotCX0NCi0JdGFza0VYSVRfQ1JJVElDQUwoKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2QXBwbGljYXRpb25UaWNrSG9vayggdm9pZCApDQotew0KLQkjaWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSA9PSAwDQotCXsNCi0JCS8qIFRoZSBmdWxsIGRlbW8gaW5jbHVkZXMgYSBzb2Z0d2FyZSB0aW1lciBkZW1vL3Rlc3QgdGhhdCByZXF1aXJlcw0KLQkJcHJvZGRpbmcgcGVyaW9kaWNhbGx5IGZyb20gdGhlIHRpY2sgaW50ZXJydXB0LiAqLw0KLQkJdlRpbWVyUGVyaW9kaWNJU1JUZXN0cygpOw0KLQ0KLQkJLyogQ2FsbCB0aGUgcGVyaW9kaWMgcXVldWUgb3ZlcndyaXRlIGZyb20gSVNSIGRlbW8uICovDQotCQl2UXVldWVPdmVyd3JpdGVQZXJpb2RpY0lTUkRlbW8oKTsNCi0JfQ0KLQkjZW5kaWYNCi19DQotDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvc2NhdHRlci5zY2F0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvc2NhdHRlci5zY2F0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWI5MDQzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1JaX1I3UzcyMTAwX0lBUl9EUy01L3NjYXR0ZXIuc2NhdAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLTsvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsqIERJU0NMQUlNRVINCi07KiBUaGlzIHNvZnR3YXJlIGlzIHN1cHBsaWVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIG9ubHkNCi07KiBpbnRlbmRlZCBmb3IgdXNlIHdpdGggUmVuZXNhcyBwcm9kdWN0cy4gTm8gb3RoZXIgdXNlcyBhcmUgYXV0aG9yaXplZC4gVGhpcw0KLTsqIHNvZnR3YXJlIGlzIG93bmVkIGJ5IFJlbmVzYXMgRWxlY3Ryb25pY3MgQ29ycG9yYXRpb24gYW5kIGlzIHByb3RlY3RlZCB1bmRlcg0KLTsqIGFsbCBhcHBsaWNhYmxlIGxhd3MsIGluY2x1ZGluZyBjb3B5cmlnaHQgbGF3cy4NCi07KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFJFTkVTQVMgTUFLRVMgTk8gV0FSUkFOVElFUyBSRUdBUkRJTkcNCi07KiBUSElTIFNPRlRXQVJFLCBXSEVUSEVSIEVYUFJFU1MsIElNUExJRUQgT1IgU1RBVFVUT1JZLCBJTkNMVURJTkcgQlVUIE5PVA0KLTsqIExJTUlURUQgVE8gV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFDQotOyogQU5EIE5PTi1JTkZSSU5HRU1FTlQuIEFMTCBTVUNIIFdBUlJBTlRJRVMgQVJFIEVYUFJFU1NMWSBESVNDTEFJTUVELg0KLTsqIFRPIFRIRSBNQVhJTVVNIEVYVEVOVCBQRVJNSVRURUQgTk9UIFBST0hJQklURUQgQlkgTEFXLCBORUlUSEVSIFJFTkVTQVMNCi07KiBFTEVDVFJPTklDUyBDT1JQT1JBVElPTiBOT1IgQU5ZIE9GIElUUyBBRkZJTElBVEVEIENPTVBBTklFUyBTSEFMTCBCRSBMSUFCTEUNCi07KiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEZPUg0KLTsqIEFOWSBSRUFTT04gUkVMQVRFRCBUTyBUSElTIFNPRlRXQVJFLCBFVkVOIElGIFJFTkVTQVMgT1IgSVRTIEFGRklMSUFURVMgSEFWRQ0KLTsqIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLg0KLTsqIFJlbmVzYXMgcmVzZXJ2ZXMgdGhlIHJpZ2h0LCB3aXRob3V0IG5vdGljZSwgdG8gbWFrZSBjaGFuZ2VzIHRvIHRoaXMgc29mdHdhcmUNCi07KiBhbmQgdG8gZGlzY29udGludWUgdGhlIGF2YWlsYWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlLiBCeSB1c2luZyB0aGlzIHNvZnR3YXJlLA0KLTsqIHlvdSBhZ3JlZSB0byB0aGUgYWRkaXRpb25hbCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3VuZCBieSBhY2Nlc3NpbmcgdGhlDQotOyogZm9sbG93aW5nIGxpbms6DQotOyogaHR0cDovL3d3dy5yZW5lc2FzLmNvbS9kaXNjbGFpbWVyDQotOyoNCi07KiBDb3B5cmlnaHQgKEMpIDIwMTIgUmVuZXNhcyBFbGVjdHJvbmljcyBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBGaWxlIE5hbWUgICAgIDogc2NhdHRlci5zY2F0DQotOyogVmVyc2lvbiAgICAgICA6IDAuMDENCi07KiBEZXZpY2UocykgICAgIDogQXJhZ29uDQotOyogVG9vbC1DaGFpbiAgICA6IERTLTUgVmVyIDUuOA0KLTsqICAgICAgICAgICAgICAgICBBUk0gQ29tcGxpZXIgDQotOyogICAgICAgICAgICAgICA6IA0KLTsqIEgvVyBQbGF0Zm9ybSAgOiBBcmFnb24gQ1BVIEJvYXJkDQotOyogRGVzY3JpcHRpb24gICA6IEFyYWdvbiBTYW1wbGUgUHJvZ3JhbSBzY2F0dGVyIGZpbGUNCi07KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi07LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07KiBIaXN0b3J5IDogREQuTU0uWVlZWSBWZXJzaW9uIERlc2NyaXB0aW9uDQotOyogICAgICAgICA6IDIzLjA1LjIwMTIgMC4wMQ0KLTsqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLUxPQURfTU9EVUxFMyAweDIwMDIwMDAwIDB4MjA5RkZGRkYgICAgICAgICAgICAgIDs7IEludGVybmFsIFJBTSBBcmVhICgweDIwMDIwMDAwLTB4MjAwM0ZGRkYpDQotew0KLSAgICA7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCi0gICAgOzsgICAgdXNlIGFzIFJBTSBBcmVhICAgIDs7DQotICAgIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLSAgICBWRUNUT1JfTUlSUk9SX1RBQkxFICAgICAweDIwMDIwMDAwICAgICAgICAgIDs7IEludGVybmFsIFJBTSBBcmVhICgweDIwMDIwMDAwLTB4MjAwMjAwRkYpDQotICAgIHsgICAqIChWRUNUT1JfTUlSUk9SX1RBQkxFKSAgICAgICAgIH0gICAgICAgOzsgVmVjdG9yIHRhYmxlDQotCQotCUNPREUgCQkJCQkrMAkJCUZJWEVEDQotCXsJKiAoK1JPLUNPREUpIAkJCQl9DQotDQotCUNPTlNUCQkJCQkrMAkJCUZJWEVEDQotCXsJKiAoK1JPLURBVEEpIAkJCQl9DQotDQotCURBVEEJCQkJCSswDQotCXsJKiAoK1JXKSAJCQkJCX0NCi0NCi0JQlNTCQkJCQkJKzANCi0JewkqICgrWkkpCQkJCQkJfQ0KLQ0KLQk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCi0JOzsgICAgdXNlIGFzIFJBTSBBcmVhKDIpICAgIDs7DQotCTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLQlBUk1fTElCX0hFQVAJCQkweDIwMDgwMDAwCUVNUFRZICAweDAwMDA4MDAwCTsgQXBwbGljYXRpb24gaGVhcA0KLQl7IH0NCi0NCi0JQVJNX0xJQl9TVEFDSwkJCTB4MjAwOTAwMDAJRU1QVFkgIC0weDAwMDA4MDAwCTsgQXBwbGljYXRpb24gc3RhY2sNCi0JeyB9DQotDQotCUlSUV9TVEFDSwkJCQkweDIwMDkyMDAwCUVNUFRZICAtMHgwMDAwMjAwMAk7IElSUSBtb2RlIHN0YWNrDQotCXsgfQ0KLQ0KLQlGSVFfU1RBQ0sJCQkJMHgyMDA5NDAwMAlFTVBUWSAgLTB4MDAwMDIwMDAJOyBGUlEgbW9kZSBzdGFjaw0KLQl7IH0NCi0NCi0JU1ZDX1NUQUNLCQkJCTB4MjAwOTYwMDAJRU1QVFkgIC0weDAwMDAyMDAwCTsgU1ZDIG1vZGUgc3RhY2sNCi0JeyB9DQotDQotCUFCVF9TVEFDSwkJCQkweDIwMDk4MDAwCUVNUFRZICAtMHgwMDAwMjAwMAk7IEFCVCBtb2RlIHN0YWNrDQotCXsgfQ0KLQ0KLQlUVEIJCQkJCQkoMHgyMDA5ODAwMCBBTkQgMHhGRkZGQzAwMCkJRU1QVFkJMHgwMDAwODAwMAk7IExldmVsLTEgVHJhbnNsYXRpb24gVGFibGUgZm9yIE1NVQ0KLQl7IH0NCi19DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfUlpfUjdTNzIxMDBfSUFSX0RTLTUvdGFyZ2V0X3NjcmlwdHMvaW5pdF9SWi1BMUguZHMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS90YXJnZXRfc2NyaXB0cy9pbml0X1JaLUExSC5kcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzMwMGYyMS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9SWl9SN1M3MjEwMF9JQVJfRFMtNS90YXJnZXRfc2NyaXB0cy9pbml0X1JaLUExSC5kcworKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLXJlc2V0DQotc3RvcA0KLSNyZXNldA0KLQ0KLWluZm8gbWVtb3J5DQotbWVtb3J5IFM6MHgwMDAwMDAwMCBTOjB4MDdmZmZmZmYgcm8NCi1tZW1vcnkgUzoweDA4MDAwMDAwIFM6MHgwZmZmZmZmZiBjYWNoZQ0KLW1lbW9yeSBTOjB4M2ZmZmZmODAgUzoweDNmZmZmZmZmIG5vY2FjaGUgbm92ZXJpZnkNCi1tZW1vcnkgUzoweGZjZmUwMDAwIFM6MHhmY2ZlZmZmZiBub2NhY2hlIG5vdmVyaWZ5DQotDQotIyBVU0IgUmVnaXN0ZXIgYWNjZXNzZWQgYnkgb25seSAxNmJpdA0KLW1lbW9yeSBTOjB4ZTgwMTAwMDAgUzoweGU4MDEwMTBmIDE2DQotbWVtb3J5IFM6MHhlODIwNzAwMCBTOjB4ZTgyMDcxMGYgMTYNCi1pbmZvIG1lbW9yeQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBSZWxlYXNlIEwyIGNhY2hlIHN0YW5kYnkJCQkjIw0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotbWVtIHNldCAweDNmZmZmZjgwIDMyIDB4MDAwMDAwMDENCi0NCi0jIDsqV3JpdGluZyB0byBPbi1DaGlwIERhdGEtUmV0ZW50aW9uIFJBTSBpcyBlbmFibGVkLg0KLSMgO1NZU0NSMy5SUkFNV0UzPVJSQU1XRTI9UlJBTVdFMT1SUkFNV0UwPTENCi1tZW1vcnkgc2V0IFM6MHhGQ0ZFMDQwOCAwIHsodW5zaWduZWQgY2hhcikweDBGfQ0KLXgvMWIgMHhmY2ZlMDQwOA0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotIyBDUzAgUG9ydCBTZXR0aW5nCQkJCQkjIw0KLSMgQ1MxIFBvcnQgU2V0dGluZwkJCQkJIyMNCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLSMgUDlfMShBMjUpLCBQOV8wKEEyNCksDQotbWVtIHNldCAweGZjZmUzNDI0IDE2IDB4MDAwMyAgICAgICAgIyBQTUM5DQotbWVtIHNldCAweGZjZmUzQTI0IDE2IDB4MDAwMCAgICAgICAgIyBQRkNBRTkNCi1tZW0gc2V0IDB4ZmNmZTM2MjQgMTYgMHgwMDAwICAgICAgICAjIFBGQ0U5DQotbWVtIHNldCAweGZjZmUzNTI0IDE2IDB4MDAwMCAgICAgICAgIyBQRkM5DQotbWVtIHNldCAweGZjZmU3MjI0IDE2IDB4MDAwMyAgICAgICAgIyBQSVBDOQ0KLSMgUDhfMTUoQTIzKSwgUDhfMTQoQTIyKSwgUDhfMTMoQTIxKSwNCi1tZW0gc2V0IDB4ZmNmZTM0MjAgMTYgMHhmZmZmICAgICAgICAjIFBNQzgNCi1tZW0gc2V0IDB4ZmNmZTNBMjAgMTYgMHgwMDAwICAgICAgICAjIFBGQ0FFOA0KLW1lbSBzZXQgMHhmY2ZlMzYyMCAxNiAweDAwMDAgICAgICAgICMgUEZDRTgNCi1tZW0gc2V0IDB4ZmNmZTM1MjAgMTYgMHgwMDAwICAgICAgICAjIFBGQzgNCi1tZW0gc2V0IDB4ZmNmZTcyMjAgMTYgMHhmZmZmICAgICAgICAjIFBJUEM4DQotIyBQM183KENTMSMpLA0KLW1lbSBzZXQgMHhmY2ZlMzQwYyAxNiAweDAwODAgICAgICAgICMgUE1DMw0KLW1lbSBzZXQgMHhmY2ZlM0EwYyAxNiAweDAwODAgICAgICAgICMgUEZDQUUzDQotbWVtIHNldCAweGZjZmUzNjBjIDE2IDB4MDA4MCAgICAgICAgIyBQRkNFMw0KLW1lbSBzZXQgMHhmY2ZlMzUwYyAxNiAweDAwMDAgICAgICAgICMgUEZDMw0KLW1lbSBzZXQgMHhmY2ZlNzIwYyAxNiAweDAwODAgICAgICAgICMgUElQQzMNCi0NCi0jIFNSU1IgLSBTRFJBTSBTZXR1cD8NCi0jIFA3XzgoUkQjKSwgUDdfNyhXRTEjKSwgUDdfNihXRTAjKSwgUDdfNShSRC9XUiMpLCBQN180KENLRSksIFA3XzMoQ0FTIyksIFA3XzIoUkFTIyksIFA3XzEoQ1MzIyksIFA3XzAoQ1MwIykNCi1tZW0gc2V0IDB4ZmNmZTM0MWMgMTYgMHhmZmZmICAgICAgICAjIFBNQzcNCi1tZW0gc2V0IDB4ZmNmZTNBMWMgMTYgMHgwMDAwICAgICAgICAjIFBGQ0FFNw0KLW1lbSBzZXQgMHhmY2ZlMzYxYyAxNiAweDAwMDAgICAgICAgICMgUEZDRTcNCi1tZW0gc2V0IDB4ZmNmZTM1MWMgMTYgMHgwMDAwICAgICAgICAjIFBGQzcNCi1tZW0gc2V0IDB4ZmNmZTcyMWMgMTYgMHhmZmZmICAgICAgICAjIFBJUEM3DQotIyBQNV84KENTMiMpLA0KLW1lbSBzZXQgMHhmY2ZlMzQxNCAxNiAweDAxMDAgICAgICAgICMgUE1DNQ0KLW1lbSBzZXQgMHhmY2ZlM0ExNCAxNiAweDAxMDAgICAgICAgICMgUEZDQUU1DQotbWVtIHNldCAweGZjZmUzNjE0IDE2IDB4MDAwMCAgICAgICAgIyBQRkNFNQ0KLW1lbSBzZXQgMHhmY2ZlMzUxNCAxNiAweDAxMDAgICAgICAgICMgUEZDNQ0KLW1lbSBzZXQgMHhmY2ZlNzIxNCAxNiAweDAxMDAgICAgICAgICMgUElQQzUNCi0NCi0jIGRpc2FibGUgdmVyaWZ5IG9uIFNEUkFNIHNldHVwIHJlZ2lzdGVycw0KLW1lbW9yeSBTOjB4M2ZmZmMwMDAgUzoweDNmZmZmZmZmIG5vY2FjaGUgbm92ZXJpZnkNCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLSMgQ1MyIFNEUkFNIFNldHRpbmcgICAgICAgICAgICAgICAgICMjDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi1tZW0gc2V0IDB4M2ZmZmMwMGMgMzIgMHgwMDAwNEMwMCAgICAjIENTMkJDUiAtIFNEUkFNDQotbWVtIHNldCAweDNmZmZjMDMwIDMyIDB4MDAwMDAwODAgICAgIyBDUzJXQ1IgLSBTRFJBTQ0KLW1lbSBzZXQgMHgzZmZmZDA0MCAxNiAweDAwMDAgICAgICAgICMgU0RSQU1fTU9ERV9DUzINCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLSMgQ1MzIFNEUkFNIFNldHRpbmcgICAgICAgICAgICAgICAgICMjDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi13YWl0IDAuNXMNCi1tZW0gc2V0IDB4M2ZmZmMwMTAgMzIgMHgwMDAwNEMwMCAgICAjIENTM0JDUiAtIFNEUkFNDQotbWVtIHNldCAweDNmZmZjMDM0IDMyIDB4MDAwMDI0OTIgICAgIyBDUzNXQ1IgLSBTRFJBTQ0KLW1lbSBzZXQgMHgzZmZmYzA0YyAzMiAweDAwMTIwODEyICAgICMgU0RDUg0KLW1lbSBzZXQgMHgzZmZmYzA1OCAzMiAweEE1NUEwMDIwICAgICMgUlRDT1INCi1tZW0gc2V0IDB4M2ZmZmMwNTAgMzIgMHhBNTVBMDAxMCAgICAjIFJUQ1NSDQotbWVtIHNldCAweDNmZmZlMDQwIDE2IDB4MDAwMCAgICAgICAgIyBTRFJBTV9NT0RFX0NTMw0KLSMgU1JTUiAtIFNEUkFNIFNldHVwPw0KLQ0KLSNTUlNSIC0gTm90IHVzZWQgLSB1cGRhdGVkIHRvIGluY2x1ZGUgU0RSQU0gc2V0dXANCi0jIFA3XzYoV0UwIyksIFA3XzgoUkQjKSwgUDdfMChDUzAjKSwNCi0jbWVtIHNldCAweGZjZmUzNDFjIDE2IDB4ZmY0MSAgICAgICAgIyBQTUM3DQotI21lbSBzZXQgMHhmY2ZlM0ExYyAxNiAweDAwMDAgICAgICAgICMgUEZDQUU3DQotI21lbSBzZXQgMHhmY2ZlMzYxYyAxNiAweDAwMDAgICAgICAgICMgUEZDRTcNCi0jbWVtIHNldCAweGZjZmUzNTFjIDE2IDB4MDAwMCAgICAgICAgIyBQRkM3DQotI21lbSBzZXQgMHhmY2ZlNzIxYyAxNiAweGZmNDEgICAgICAgICMgUElQQzcNCi0jU1JTUiAtIE5vdCB1c2VkIC0gdXBkYXRlZCB0byBpbmNsdWRlIFNEUkFNIHNldHVwDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTU1ZmQyZS4uZjdkOTI1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHRocmVlIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOTU4YWY0OC4uZDIwMTBmZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCmluZGV4IDQzOGQxNjAuLjJiYTg4NTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMzVlY2U4MC4uYzVkNTU1ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDdhZTNjYmYuLjRlOTg1YzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdGhyZWUgZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3QuUyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCmluZGV4IDdmMmRjYWEuLjcwN2I2YTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCS5nbG9iYWwgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJLmdsb2JhbCB2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9zZXJpYWwuYwppbmRleCBiODU1ZDg5Li5lMzM2NWYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9QYXJUZXN0LmMKaW5kZXggZjU0MzU0Ni4uNjU4YmMzOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCmluZGV4IDJhMGE3NGMuLmE3NzUxMDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgInN0ZGxpYi5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5jCmluZGV4IDljZGJlMDQuLmUyZDNkOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5oCmluZGV4IGQxMjA5Y2IuLjc2NGY3Y2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogI2lmbmRlZiBMV0lQX0FQUFNfSA0KICNkZWZpbmUgTFdJUF9BUFBTX0gNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbWFpbl9sd0lQLmMKaW5kZXggMzFmOWRlYS4uOGE2ZWU5MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9tYWluX2x3SVAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0aHJlZSBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0E5X1p5bnFfWkM3MDIvUlRPU0RlbW8vc3JjL21haW4uYwppbmRleCA4N2Q0MjIyLi5iOTNhODI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BOV9aeW5xX1pDNzAyL1JUT1NEZW1vL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQTlfWnlucV9aQzcwMi9SVE9TRGVtby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMGJjYzM4Mi4uOWNmY2VmZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAzZGIyYTlhLi41OGY3MmViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL2xjZF9tZXNzYWdlLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL2xjZF9tZXNzYWdlLmgKaW5kZXggZDBiYWZjNi4uZGE0ZTk3NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9sY2RfbWVzc2FnZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvbGNkX21lc3NhZ2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMQ0RfTUVTU0FHRV9IDQogI2RlZmluZSBMQ0RfTUVTU0FHRV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVQ5MVNBTTNVMjU2X0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL21haW4uYwppbmRleCAzZDIwNmRhLi5lYWRmNDFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVDkxU0FNM1UyNTZfSUFSL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGU2MjYzMGEuLjllMjg4NDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUOTFTQU0zVTI1Nl9JQVIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvY29tdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvY29tdGVzdC5jCmluZGV4IGJhMWEzNjguLjU2OWI4MjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2NvbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9kZW1vX3NlcmlhbC5oCmluZGV4IDI3NGJjN2EuLmZhYzE5N2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL2RlbW9fc2VyaWFsLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU0VSSUFMX0NPTU1TX0gNCiAjZGVmaW5lIFNFUklBTF9DT01NU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDdhYzdlNjYuLjcwNDdiZjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCmluZGV4IDJhYmFmYTEuLmRmMTYxN2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW4uYwppbmRleCBkNzYxMzIxLi5jNTNlMGM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKaW5kZXggYmMxMjYyYi4uNDY5NDUyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwppbmRleCA4NWY2NDlkLi5mODE3OTg4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1MtRUsyX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKaW5kZXggZjgwMGIxMC4uYzQxMDUyOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zUy1FSzJfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNTLUVLMl9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVVNBUlQxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvY29tdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKaW5kZXggYmExYTM2OC4uNTY5YjgyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL2RlbW9fc2VyaWFsLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaAppbmRleCAyNzRiYzdhLi5mYWMxOTdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTRVJJQUxfQ09NTVNfSA0KICNkZWZpbmUgU0VSSUFMX0NPTU1TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDdhYzdlNjYuLjcwNDdiZjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKaW5kZXggMmFiYWZhMS4uZGYxNjE3YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggZDc2MTMyMS4uYzUzZTBjOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKaW5kZXggYmMxMjYyYi4uNDY5NDUyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IDg1ZjY0OWQuLmY4MTc5ODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQVRTQU0zWF9BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCmluZGV4IGQ3NzQzMzIuLmQ0NTNkODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0FUU0FNM1hfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9BVFNBTTNYX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVU0FSVDEuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaAppbmRleCA3NDc3NGViLi45NjQyZGMwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwppbmRleCAxZTA4YTQ4Li4zYmQ0MDY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaAppbmRleCBiZDJhZTc1Li4zNjVmZTA5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0hfDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSF8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYwppbmRleCBhYzU5Y2I5Li44MWEyZDhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKaW5kZXggNDBmZDYxNy4uNjQ3ZDA4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYwppbmRleCBkZGVkNzY3Li4wYTM1NDM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9HQ0MvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMKaW5kZXggZTYzYmJlNi4uYWUyMzNjNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0dDQy9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfR0NDL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDc0Nzc0ZWIuLjk2NDJkYzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwppbmRleCAxZTA4YTQ4Li4zYmQ0MDY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggYmQyYWU3NS4uMzY1ZmUwOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0hfDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSF8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCmluZGV4IGFjNTljYjkuLjgxYTJkOGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKaW5kZXggNDBmZDYxNy4uNjQ3ZDA4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9LZWlsL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKaW5kZXggZGRlZDc2Ny4uMGEzNTQzOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiAjaW5jbHVkZSA8ZGV2aWNlLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX0tlaWwvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYwppbmRleCBlNjNiYmU2Li5hZTIzM2M3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfS2VpbC9GcmVlUlRPU19EZW1vLmN5ZHNuL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vRnJlZVJUT1NDb25maWcuaAppbmRleCA3NDc3NGViLi45NjQyZGMwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMWUwOGE0OC4uM2JkNDA2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oCmluZGV4IGJkMmFlNzUuLjM2NWZlMDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IXw0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0hfDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYwppbmRleCBhYzU5Y2I5Li44MWEyZDhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1NlcmlhbC5jCmluZGV4IDQwZmQ2MTcuLjY0N2QwODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vU2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9TZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPGRldmljZS5oPg0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9DWThDNTU4OF9QU29DX0NyZWF0b3JfUlZEUy9GcmVlUlRPU19EZW1vLmN5ZHNuL1RpbWVyVGVzdC5jCmluZGV4IGRkZWQ3NjcuLjBhMzU0MzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vVGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9UaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogI2luY2x1ZGUgPGRldmljZS5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0NZOEM1NTg4X1BTb0NfQ3JlYXRvcl9SVkRTL0ZyZWVSVE9TX0RlbW8uY3lkc24vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMKaW5kZXggZTYzYmJlNi4uYWUyMzNjNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfQ1k4QzU1ODhfUFNvQ19DcmVhdG9yX1JWRFMvRnJlZVJUT1NfRGVtby5jeWRzbi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxkZXZpY2UuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAwMGVhZTBjLi4wY2Y2NzViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0LmMKaW5kZXggMjNhZWM5Ni4uNmE3MGZmYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZGU3NDU1Yy4uMWI2NjJmYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X0JVUlRDLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X0JVUlRDLmMKaW5kZXggZWFkNmZjNy4uOWY2ODFkZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9CVVJUQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfQlVSVEMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImxpbWl0cy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X1JUQy5jCmluZGV4IGQ3NmM0YTMuLmIzNTQ2NjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudF9SVEMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL21haW5fbG93X3Bvd2VyLmMKaW5kZXggOWVlNjYxYy4uZTk2MDllMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBkZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfR2lhbnRfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jCmluZGV4IGZmYjFmNzcuLjk4NTM0MzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX0dpYW50X0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9HaWFudF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvRUZNMzItR2lhbnQtR2Vja28tUGVhcmwtR2Vja28tdGlja2xlc3MtUlRPUy1kZW1vLmh0bWwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA3YmUzZDY3Li5iMmMyMzRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0LmMKaW5kZXggZGUyNzJiMC4uYzA3OTk2NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZGU3NDU1Yy4uMWI2NjJmYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50X1JUQ0MuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDQy5jCmluZGV4IDllNjE3YmQuLmNkZGFiYTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnRfUlRDQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmxjbHVkZXMuICovDQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL21haW5fbG93X3Bvd2VyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9Mb3dfUG93ZXJfRGVtby9tYWluX2xvd19wb3dlci5jCmluZGV4IDllZTY2MWMuLmU5NjA5ZTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL0xvd19Qb3dlcl9EZW1vL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vTG93X1Bvd2VyX0RlbW8vbWFpbl9sb3dfcG93ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgZGVtbw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0VGTTMyX1BlYXJsX0dlY2tvX1NpbXBsaWNpdHlfU3R1ZGlvL21haW4uYwppbmRleCA4Mjc5M2YxLi4yMjc1YjI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9FRk0zMl9QZWFybF9HZWNrb19TaW1wbGljaXR5X1N0dWRpby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfRUZNMzJfUGVhcmxfR2Vja29fU2ltcGxpY2l0eV9TdHVkaW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0VGTTMyLUdpYW50LUdlY2tvLVBlYXJsLUdlY2tvLXRpY2tsZXNzLVJUT1MtZGVtby5odG1sDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBiOGQ1MmVhLi42NDc5MmVkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvUGFyVGVzdC5jCmluZGV4IGMxZjRjMmMuLjNmNDk5NDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBHUElPIChwYXJhbGxlbCBwb3J0KSBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvbWFpbi1mdWxsLmMKaW5kZXggOTU3ODlhOS4uMTk4MzY1YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluX2JsaW5reS5jCmluZGV4IDRjNTRjNDYuLmJmZjMzODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3VJUF9UYXNrLmMKaW5kZXggODgyN2ExYy4uZjBmOTNjYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9LaW5ldGlzX0s2MF9Ub3dlcl9JQVIvd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IGQ1ZGU4ZGMuLjYwNjExMWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlc2NhbGUgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImNvbW1vbi5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0tpbmV0aXNfSzYwX1Rvd2VyX0lBUi93ZWJzZXJ2ZXIvRU1BQy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmgKaW5kZXggNGE4Y2ZjZC4uYmI0NzMxMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfS2luZXRpc19LNjBfVG93ZXJfSUFSL3dlYnNlcnZlci9FTUFDLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJfRU1BQ19IDQogI2RlZmluZSBGUl9FTUFDX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzEvRnJlZVJUT1NDb25maWcuaAppbmRleCBjN2ExMDlhLi5jOWZkMjg3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzEvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzEvbWFpbi5jCmluZGV4IDBlZDJjZmQuLmE4OTg4NGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8xL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgZGVtbyBhcHBsaWNhdGlvbiBjcmVhdGVzIHNpeCBjby1yb3V0aW5lcyBhbmQgdHdvIHRhc2tzICh0aHJlZSBpbmNsdWRpbmcgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZjU4NTQyZC4uZWEzMmNkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8yL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0RlbW8yL21haW4uYwppbmRleCA3Mjk1YmRmLi4zZmRiODlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9EZW1vMi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRGVtbzIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGRlbW8gYXBwbGljYXRpb24gY3JlYXRlcyBzZXZlbiBjby1yb3V0aW5lcyBhbmQgb25lIHRhc2sgKHR3byBpbmNsdWRpbmcgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMGFjN2FhOS4uZTc3NTkzYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggZTdjZjU3MS4uNWI0N2JjYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX0dDQy9tYWluLmMKaW5kZXggMGVkMmNmZC4uYTg5ODg0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGNyZWF0ZXMgc2l4IGNvLXJvdXRpbmVzIGFuZCB0d28gdGFza3MgKHRocmVlIGluY2x1ZGluZyANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvRnJlZVJUT1NDb25maWcuaAppbmRleCAwYWM3YWE5Li5lNzc1OTNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvUGFyVGVzdC5jCmluZGV4IGU3Y2Y1NzEuLjViNDdiY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMS9tYWluLmMKaW5kZXggNTIxYWZiNi4uM2NiZmI5MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzEvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8xL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGNyZWF0ZXMgc2l4IGNvLXJvdXRpbmVzIGFuZCB0d28gdGFza3MgKHRocmVlIGluY2x1ZGluZyANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvRnJlZVJUT1NDb25maWcuaAppbmRleCBhOTIxZTAzLi5mZWI3YTlhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvUGFyVGVzdC5jCmluZGV4IGU3Y2Y1NzEuLjViNDdiY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMi9tYWluLmMKaW5kZXggNjYwMTI1NC4uYjc0MGUzNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8yL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGNyZWF0ZXMgc2V2ZW4gY28tcm91dGluZXMgYW5kIG9uZSB0YXNrICh0d28gaW5jbHVkaW5nIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDZmYWFkMTIuLmRhYzk4MzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9QYXJUZXN0LmMKaW5kZXggNDI5ZDUyNi4uY2UzOTM2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MxMDJfUm93bGV5L0RlbW8zL21haW4uYwppbmRleCAwMmI2MmZiLi4yYWQ3Y2EzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMTAyX1Jvd2xleS9EZW1vMy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzEwMl9Sb3dsZXkvRGVtbzMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGQxZjEyNDEuLmVmYmJmMWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGU3Y2Y1NzEuLjViNDdiY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvY29tbXN0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuYwppbmRleCA3ODIzOTczLi42OTQ0YzE1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9jb21tc3Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgY29tbXMgdGVzdCBSeCBhbmQgVHggdGFzayBhbmQgY28tcm91dGluZS4gIFNlZSB0aGUgY29tbWVudHMgYXQgdGhlIHRvcA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL2NvbW1zdGVzdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvY29tbXN0ZXN0LmgKaW5kZXggNWJjMzg5Yy4uMjMxZTI4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvY29tbXN0ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvY29tbXN0ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ09NTVNfVEVTVF9IDQogI2RlZmluZSBDT01NU19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTMzE2X0lBUi9tYWluLmMKaW5kZXggZjYzYjk5YS4uMjQ5MTdjMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzMxNl9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1MzMTZfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGNyZWF0ZXMgZWlnaHQgY28tcm91dGluZXMgYW5kIGZvdXIgdGFza3MgKGZpdmUgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNGJjOTJiOC4uZGY1ZDE1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfR0NDL21haW4uYwppbmRleCA4YTU5NDk4Li4yMjM1YWUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDIzODNlZGYuLmM5MmM5MGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0lBUi9tYWluLmMKaW5kZXggN2QzNGNlYS4uNDk5NDc2OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGQ4NzA1ZjguLjgzZTdkOGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9oZWFwL2hlYXBfMS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML2hlYXAvaGVhcF8xLmMKaW5kZXggYzBmYjI5Zi4uNDUyZTYyOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML2hlYXAvaGVhcF8xLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML2hlYXAvaGVhcF8xLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTODExX0tFSUwvbWFpbi5jCmluZGV4IGYyNGViZWEuLjk5MzllZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1M4MTFfS0VJTC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zUzgxMV9LRUlML21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaAppbmRleCA2ODRmZDc2Li42ZjBlMDc2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpAQCAtODgsNyArNDcsNyBAQAogI2RlZmluZSBjb25maWdDUFVfQ0xPQ0tfSFoJCQkJKCAoIHVuc2lnbmVkIGxvbmcgKSA1MDAwMDAwMCApDQogI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJKCAoIFRpY2tUeXBlX3QgKSAxMDAwICkNCiAjZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJKCAoIHVuc2lnbmVkIHNob3J0ICkgNzAgKQ0KLSNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJKCAoIHNpemVfdCApICggMjQwMDAgKSApDQorI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkoICggc2l6ZV90ICkgKCAyNzAwMCApICkNCiAjZGVmaW5lIGNvbmZpZ01BWF9UQVNLX05BTUVfTEVOCQkJKCAxMiApDQogI2RlZmluZSBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkJCTENCiAjZGVmaW5lIGNvbmZpZ1VTRV8xNl9CSVRfVElDS1MJCQkwDQpAQCAtMTAzLDYgKzYyLDcgQEAKICNkZWZpbmUgY29uZmlnTUFYX1BSSU9SSVRJRVMJCQkoIDVVTCApDQogI2RlZmluZSBjb25maWdNQVhfQ09fUk9VVElORV9QUklPUklUSUVTICggMiApDQogI2RlZmluZSBjb25maWdRVUVVRV9SRUdJU1RSWV9TSVpFCQkxMA0KKyNkZWZpbmUgY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTgkxDQogDQogLyogVGltZXIgcmVsYXRlZCBkZWZpbmVzLiAqLw0KICNkZWZpbmUgY29uZmlnVVNFX1RJTUVSUwkJCQkxDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvSW50UXVldWVUaW1lci5jCmluZGV4IGUwNTg1NzcuLmY5NTI3OWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGRlNzc0MjMuLmRiYjQ2MjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUlRPU0RlbW8udXZwcm9qIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvUlRPU0RlbW8udXZwcm9qCmluZGV4IDc0NDUyNDUuLjMxOWQxNGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL1JUT1NEZW1vLnV2cHJvagorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9SVE9TRGVtby51dnByb2oKQEAgLTEwLDYgKzEwLDggQEAKICAgICAgIDxUYXJnZXROYW1lPkZyZWVSVE9TX0RlbW88L1RhcmdldE5hbWU+CiAgICAgICA8VG9vbHNldE51bWJlcj4weDQ8L1Rvb2xzZXROdW1iZXI+CiAgICAgICA8VG9vbHNldE5hbWU+QVJNLUFEUzwvVG9vbHNldE5hbWU+CisgICAgICA8cENDVXNlZD41MDYwNTI4OjpWNS4wNiB1cGRhdGUgNSAoYnVpbGQgNTI4KTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8dUFDNj4wPC91QUM2PgogICAgICAgPFRhcmdldE9wdGlvbj4KICAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KICAgICAgICAgICA8RGV2aWNlPkxNM1M4OTYyPC9EZXZpY2U+CkBAIC04Miw2ICs4NCw4IEBACiAgICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+CiAgICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4KICAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPgorICAgICAgICAgICAgPG5TdG9wQTFYPjA8L25TdG9wQTFYPgorICAgICAgICAgICAgPG5TdG9wQTJYPjA8L25TdG9wQTJYPgogICAgICAgICAgIDwvQWZ0ZXJNYWtlPgogICAgICAgICAgIDxTZWxlY3RlZEZvckJhdGNoQnVpbGQ+MDwvU2VsZWN0ZWRGb3JCYXRjaEJ1aWxkPgogICAgICAgICAgIDxTVkNTSWRTdHJpbmc+PC9TVkNTSWRTdHJpbmc+CkBAIC0yMjUsNiArMjI5LDcgQEAKICAgICAgICAgICAgIDx1c2VVbGliPjA8L3VzZVVsaWI+CiAgICAgICAgICAgICA8RW5kU2VsPjA8L0VuZFNlbD4KICAgICAgICAgICAgIDx1THRjZz4wPC91THRjZz4KKyAgICAgICAgICAgIDxuU2VjdXJlPjA8L25TZWN1cmU+CiAgICAgICAgICAgICA8Um9TZWxEPjM8L1JvU2VsRD4KICAgICAgICAgICAgIDxSd1NlbEQ+MzwvUndTZWxEPgogICAgICAgICAgICAgPENvZGVTZWw+MDwvQ29kZVNlbD4KQEAgLTM1OSw2ICszNjQsMTMgQEAKICAgICAgICAgICAgIDx1U3VycEluYz4wPC91U3VycEluYz4KICAgICAgICAgICAgIDx1Qzk5PjA8L3VDOTk+CiAgICAgICAgICAgICA8dXNlWE8+MDwvdXNlWE8+CisgICAgICAgICAgICA8djZMYW5nPjE8L3Y2TGFuZz4KKyAgICAgICAgICAgIDx2NkxhbmdQPjE8L3Y2TGFuZ1A+CisgICAgICAgICAgICA8dlNob3J0RW4+MTwvdlNob3J0RW4+CisgICAgICAgICAgICA8dlNob3J0V2NoPjE8L3ZTaG9ydFdjaD4KKyAgICAgICAgICAgIDx2Nkx0bz4wPC92Nkx0bz4KKyAgICAgICAgICAgIDx2Nld0RT4wPC92Nld0RT4KKyAgICAgICAgICAgIDx2NlJ0dGk+MDwvdjZSdHRpPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz4tLWRpYWdfc3VwcHJlc3MgMTkxLDU1MCw1MTMsMTY3LDE3NywxNDQ8L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT5SVkRTX0FSTUNNM19MTTNTMTAyLCAiUEFDS19TVFJVQ1RfRU5EPSIsIkFMSUdOX1NUUlVDVF9FTkQ9IjwvRGVmaW5lPgpAQCAtMzc2LDYgKzM4OCw3IEBACiAgICAgICAgICAgICA8Tm9XYXJuPjA8L05vV2Fybj4KICAgICAgICAgICAgIDx1U3VycEluYz4wPC91U3VycEluYz4KICAgICAgICAgICAgIDx1c2VYTz4wPC91c2VYTz4KKyAgICAgICAgICAgIDx1Q2xhbmdBcz4wPC91Q2xhbmdBcz4KICAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CkBAIC00MDcsMTEgKzQyMCw2IEBACiAgICAgICAgICAgPEdyb3VwTmFtZT5EZW1vX1NvdXJjZTwvR3JvdXBOYW1lPgogICAgICAgICAgIDxGaWxlcz4KICAgICAgICAgICAgIDxGaWxlPgotICAgICAgICAgICAgICA8RmlsZU5hbWU+QmxvY2tRLmM8L0ZpbGVOYW1lPgotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+Ci0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvRmlsZVBhdGg+Ci0gICAgICAgICAgICA8L0ZpbGU+Ci0gICAgICAgICAgICA8RmlsZT4KICAgICAgICAgICAgICAgPEZpbGVOYW1lPmJsb2NrdGltLmM8L0ZpbGVOYW1lPgogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxDb21tb25cTWluaW1hbFxibG9ja3RpbS5jPC9GaWxlUGF0aD4KQEAgLTQyMiwxMSArNDMwLDYgQEAKICAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgICAgPEZpbGU+Ci0gICAgICAgICAgICAgIDxGaWxlTmFtZT5pbnRlZ2VyLmM8L0ZpbGVOYW1lPgotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+Ci0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxDb21tb25cTWluaW1hbFxpbnRlZ2VyLmM8L0ZpbGVQYXRoPgotICAgICAgICAgICAgPC9GaWxlPgotICAgICAgICAgICAgPEZpbGU+CiAgICAgICAgICAgICAgIDxGaWxlTmFtZT5tYWluLmM8L0ZpbGVOYW1lPgogICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICAgICAgICAgIDxGaWxlUGF0aD4uXG1haW4uYzwvRmlsZVBhdGg+CkBAIC00OTYsNiArNDk5LDE2IEBACiAgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9GaWxlUGF0aD4KICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+TWVzc2FnZUJ1ZmZlckRlbW8uYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXENvbW1vblxNaW5pbWFsXE1lc3NhZ2VCdWZmZXJEZW1vLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5TdHJlYW1CdWZmZXJEZW1vLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxDb21tb25cTWluaW1hbFxTdHJlYW1CdWZmZXJEZW1vLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICAgIDxHcm91cD4KQEAgLTU2Niw2ICs1NzksMTEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF8yLmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICA8L0ZpbGVzPgogICAgICAgICA8L0dyb3VwPgogICAgICAgICA8R3JvdXA+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC9tYWluLmMKaW5kZXggYjk4YTA4Yy4uOGRiNzgzNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCkBAIC0xMzksOSArOTgsNyBAQAogI2luY2x1ZGUgImZvcm1pa2UxMjh4MTI4eDE2LmgiDQogDQogLyogRGVtbyBhcHAgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkJsb2NrUS5oIg0KICNpbmNsdWRlICJkZWF0aC5oIg0KLSNpbmNsdWRlICJpbnRlZ2VyLmgiDQogI2luY2x1ZGUgImJsb2NrdGltLmgiDQogI2luY2x1ZGUgImZsYXNoLmgiDQogI2luY2x1ZGUgInBhcnRlc3QuaCINCkBAIC0xNTUsNiArMTEyLDggQEAKICNpbmNsdWRlICJJbnRRdWV1ZS5oIg0KICNpbmNsdWRlICJRdWV1ZVNldC5oIg0KICNpbmNsdWRlICJFdmVudEdyb3Vwc0RlbW8uaCINCisjaW5jbHVkZSAiTWVzc2FnZUJ1ZmZlckRlbW8uaCINCisjaW5jbHVkZSAiU3RyZWFtQnVmZmVyRGVtby5oIg0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KQEAgLTE3Miw5ICsxMzEsNyBAQAogI2RlZmluZSBtYWluUVVFVUVfUE9MTF9QUklPUklUWQkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyICkNCiAjZGVmaW5lIG1haW5DSEVDS19UQVNLX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDMgKQ0KICNkZWZpbmUgbWFpblNFTV9URVNUX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDEgKQ0KLSNkZWZpbmUgbWFpbkJMT0NLX1FfUFJJT1JJVFkJCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMiApDQogI2RlZmluZSBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZICAgICAgICAgICAoIHRza0lETEVfUFJJT1JJVFkgKyAzICkNCi0jZGVmaW5lIG1haW5JTlRFR0VSX1RBU0tfUFJJT1JJVFkgICAgICAgICAgICggdHNrSURMRV9QUklPUklUWSApDQogI2RlZmluZSBtYWluR0VOX1FVRVVFX1RBU0tfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KIA0KIC8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlIHRoYXQgY2FuIGJlIHdhaXRpbmcgZm9yIGRpc3BsYXkgYXQgYW55IG9uZQ0KQEAgLTI1NSwxNyArMjEyLDE3IEBACiAJeE9MRURRdWV1ZSA9IHhRdWV1ZUNyZWF0ZSggbWFpbk9MRURfUVVFVUVfU0laRSwgc2l6ZW9mKCB4T0xFRE1lc3NhZ2UgKSApOw0KIA0KIAkvKiBTdGFydCB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gKi8NCi0gICAgdlN0YXJ0SW50ZWdlck1hdGhUYXNrcyggbWFpbklOVEVHRVJfVEFTS19QUklPUklUWSApOw0KLSAgICB2U3RhcnRHZW5lcmljUXVldWVUYXNrcyggbWFpbkdFTl9RVUVVRV9UQVNLX1BSSU9SSVRZICk7DQotICAgIHZTdGFydEludGVycnVwdFF1ZXVlVGFza3MoKTsNCisJdlN0YXJ0R2VuZXJpY1F1ZXVlVGFza3MoIG1haW5HRU5fUVVFVUVfVEFTS19QUklPUklUWSApOw0KKwl2U3RhcnRJbnRlcnJ1cHRRdWV1ZVRhc2tzKCk7DQogCXZTdGFydFJlY3Vyc2l2ZU11dGV4VGFza3MoKTsNCi0JdlN0YXJ0QmxvY2tpbmdRdWV1ZVRhc2tzKCBtYWluQkxPQ0tfUV9QUklPUklUWSApOw0KIAl2Q3JlYXRlQmxvY2tUaW1lVGFza3MoKTsNCiAJdlN0YXJ0U2VtYXBob3JlVGFza3MoIG1haW5TRU1fVEVTVF9QUklPUklUWSApOw0KIAl2U3RhcnRQb2xsZWRRdWV1ZVRhc2tzKCBtYWluUVVFVUVfUE9MTF9QUklPUklUWSApOw0KIAl2U3RhcnRRdWV1ZVBlZWtUYXNrcygpOw0KIAl2U3RhcnRRdWV1ZVNldFRhc2tzKCk7DQogCXZTdGFydEV2ZW50R3JvdXBUYXNrcygpOw0KKwl2U3RhcnRNZXNzYWdlQnVmZmVyVGFza3MoKTsNCisJdlN0YXJ0U3RyZWFtQnVmZmVyVGFza3MoKTsNCiANCiAJLyogRXhjbHVkZSBzb21lIHRhc2tzIGlmIHVzaW5nIHRoZSBraWNrc3RhcnQgdmVyc2lvbiB0byBlbnN1cmUgd2Ugc3RheSB3aXRoaW4NCiAJdGhlIDMySyBjb2RlIHNpemUgbGltaXQuICovDQpAQCAtMjgwLDI2ICsyMzcsMjQgQEAKIAl9DQogCSNlbmRpZg0KIA0KLQ0KLQ0KIAkvKiBTdGFydCB0aGUgdGFza3MgZGVmaW5lZCB3aXRoaW4gdGhpcyBmaWxlL3NwZWNpZmljIHRvIHRoaXMgZGVtby4gKi8NCiAJeFRhc2tDcmVhdGUoIHZPTEVEVGFzaywgIk9MRUQiLCBtYWluT0xFRF9UQVNLX1NUQUNLX1NJWkUsIE5VTEwsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCiANCiAJLyogVGhlIHN1aWNpZGUgdGFza3MgbXVzdCBiZSBjcmVhdGVkIGxhc3QgYXMgdGhleSBuZWVkIHRvIGtub3cgaG93IG1hbnkNCiAJdGFza3Mgd2VyZSBydW5uaW5nIHByaW9yIHRvIHRoZWlyIGNyZWF0aW9uIGluIG9yZGVyIHRvIGFzY2VydGFpbiB3aGV0aGVyDQogCW9yIG5vdCB0aGUgY29ycmVjdC9leHBlY3RlZCBudW1iZXIgb2YgdGFza3MgYXJlIHJ1bm5pbmcgYXQgYW55IGdpdmVuIHRpbWUuICovDQotICAgIHZDcmVhdGVTdWljaWRhbFRhc2tzKCBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZICk7DQorCXZDcmVhdGVTdWljaWRhbFRhc2tzKCBtYWluQ1JFQVRPUl9UQVNLX1BSSU9SSVRZICk7DQogDQotCS8qIENvbmZpZ3VyZSB0aGUgaGlnaCBmcmVxdWVuY3kgaW50ZXJydXB0IHVzZWQgdG8gbWVhc3VyZSB0aGUgaW50ZXJydXB0DQotCWppdHRlciB0aW1lLiAqLw0KLQl2U2V0dXBIaWdoRnJlcXVlbmN5VGltZXIoKTsNCisJLyogVW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZSB0byBjb25maWd1cmUgdGhlIGhpZ2ggZnJlcXVlbmN5IGludGVycnVwdCANCisJdXNlZCB0byBtZWFzdXJlIHRoZSBpbnRlcnJ1cHQgaml0dGVyIHRpbWUuIA0KKwl2U2V0dXBIaWdoRnJlcXVlbmN5VGltZXIoKTsgKi8NCiANCiAJLyogU3RhcnQgdGhlIHNjaGVkdWxlci4gKi8NCiAJdlRhc2tTdGFydFNjaGVkdWxlcigpOw0KIA0KLSAgICAvKiBXaWxsIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gY3JlYXRlIHRoZSBpZGxlDQotICAgIHRhc2suICovDQotCXJldHVybiAwOw0KKwkvKiBXaWxsIG9ubHkgZ2V0IGhlcmUgaWYgdGhlcmUgd2FzIGluc3VmZmljaWVudCBtZW1vcnkgdG8gY3JlYXRlIHRoZSBpZGxlDQorCXRhc2suICovDQorCWZvciggOzsgKTsNCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtMzQwLDYgKzI5NSwxNCBAQAogCQl1bFRpY2tzU2luY2VMYXN0RGlzcGxheSA9IDA7DQogDQogCQkvKiBIYXMgYW4gZXJyb3IgYmVlbiBmb3VuZCBpbiBhbnkgdGFzaz8gKi8NCisJCWlmKCB4QXJlU3RyZWFtQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXhNZXNzYWdlLnBjTWVzc2FnZSA9ICJFUlJPUiBJTiBTVFJNIjsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXhNZXNzYWdlLnBjTWVzc2FnZSA9ICJFUlJPUiBJTiBNU0ciOw0KKwkJfQ0KIAkJaWYoIHhBcmVHZW5lcmljUXVldWVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIEdFTiBRIjsNCkBAIC0zNDgsMTggKzMxMSwxMCBAQAogCSAgICB7DQogCSAgICAgICAgeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIENSRUFURSI7DQogCSAgICB9DQotCSAgICBlbHNlIGlmKCB4QXJlSW50ZWdlck1hdGhzVGFza1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCSAgICB7DQotCSAgICAgICAgeE1lc3NhZ2UucGNNZXNzYWdlID0gIkVSUk9SIElOIE1BVEgiOw0KLQkgICAgfQ0KIAkJZWxzZSBpZiggeEFyZUludFF1ZXVlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KIAkJew0KIAkJCXhNZXNzYWdlLnBjTWVzc2FnZSA9ICJFUlJPUiBJTiBJTlQgUVVFVUUiOw0KIAkJfQ0KLQkJZWxzZSBpZiggeEFyZUJsb2NraW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JCXsNCi0JCQl4TWVzc2FnZS5wY01lc3NhZ2UgPSAiRVJST1IgSU4gQkxPQ0sgUSI7DQotCQl9DQogCQllbHNlIGlmKCB4QXJlQmxvY2tUaW1lVGVzdFRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCiAJCXsNCiAJCQl4TWVzc2FnZS5wY01lc3NhZ2UgPSAiRVJST1IgSU4gQkxPQ0sgVElNRSI7DQpAQCAtNDgxLDEwICs0MzYsMTEgQEAKIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCit2b2xhdGlsZSBzaWduZWQgY2hhciAqcGNPdmVyZmxvd2VkVGFzayA9IE5VTEw7DQogdm9pZCB2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggVGFza0hhbmRsZV90ICpweFRhc2ssIHNpZ25lZCBjaGFyICpwY1Rhc2tOYW1lICkNCiB7DQogCSggdm9pZCApIHB4VGFzazsNCi0JKCB2b2lkICkgcGNUYXNrTmFtZTsNCisJcGNPdmVyZmxvd2VkVGFzayA9IHBjVGFza05hbWU7DQogDQogCWZvciggOzsgKTsNCiB9DQpAQCAtNDk4LDcgKzQ1NCw3IEBACiAJew0KIAkJd2hpbGUoIHVsU2V0VG8xSW5EZWJ1Z2dlclRvRXhpdCA9PSAwICkNCiAJCXsNCi0JCQkvKiBOb3RoaW5nIGRvIGRvIGhlcmUuICBTZXQgdGhlIGxvb3AgdmFyaWFibGUgdG8gYSBub24gemVybyB2YWx1ZSBpbg0KKwkJCS8qIE5vdGhpbmcgdG8gZG8gaGVyZS4gIFNldCB0aGUgbG9vcCB2YXJpYWJsZSB0byBhIG5vbiB6ZXJvIHZhbHVlIGluDQogCQkJdGhlIGRlYnVnZ2VyIHRvIHN0ZXAgb3V0IG9mIHRoaXMgZnVuY3Rpb24gdG8gdGhlIHBvaW50IHRoYXQgY2F1c2VkDQogCQkJdGhlIGFzc2VydGlvbi4gKi8NCiAJCQkoIHZvaWQgKSBwY0ZpbGU7DQpAQCAtNTA3LDMgKzQ2Myw1MyBAQAogCX0NCiAJdGFza0VYSVRfQ1JJVElDQUwoKTsNCiB9DQorDQorLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGlzIHNldCB0byAxLCBzbyB0aGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGFuDQoraW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0SWRsZVRhc2tNZW1vcnkoKSB0byBwcm92aWRlIHRoZSBtZW1vcnkgdGhhdCBpcw0KK3VzZWQgYnkgdGhlIElkbGUgdGFzay4gKi8NCit2b2lkIHZBcHBsaWNhdGlvbkdldElkbGVUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhJZGxlVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhJZGxlVGFza1N0YWNrQnVmZmVyLCB1aW50MzJfdCAqcHVsSWRsZVRhc2tTdGFja1NpemUgKQ0KK3sNCisvKiBJZiB0aGUgYnVmZmVycyB0byBiZSBwcm92aWRlZCB0byB0aGUgSWRsZSB0YXNrIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhpcw0KK2Z1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uDQordGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovDQorc3RhdGljIFN0YXRpY1Rhc2tfdCB4SWRsZVRhc2tUQ0I7DQorc3RhdGljIFN0YWNrVHlwZV90IHV4SWRsZVRhc2tTdGFja1sgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIF07DQorDQorCS8qIFBhc3Mgb3V0IGEgcG9pbnRlciB0byB0aGUgU3RhdGljVGFza190IHN0cnVjdHVyZSBpbiB3aGljaCB0aGUgSWRsZSB0YXNrJ3MNCisJc3RhdGUgd2lsbCBiZSBzdG9yZWQuICovDQorCSpwcHhJZGxlVGFza1RDQkJ1ZmZlciA9ICZ4SWRsZVRhc2tUQ0I7DQorDQorCS8qIFBhc3Mgb3V0IHRoZSBhcnJheSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgSWRsZSB0YXNrJ3Mgc3RhY2suICovDQorCSpwcHhJZGxlVGFza1N0YWNrQnVmZmVyID0gdXhJZGxlVGFza1N0YWNrOw0KKw0KKwkvKiBQYXNzIG91dCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSAqcHB4SWRsZVRhc2tTdGFja0J1ZmZlci4NCisJTm90ZSB0aGF0LCBhcyB0aGUgYXJyYXkgaXMgbmVjZXNzYXJpbHkgb2YgdHlwZSBTdGFja1R5cGVfdCwNCisJY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIGlzIHNwZWNpZmllZCBpbiB3b3Jkcywgbm90IGJ5dGVzLiAqLw0KKwkqcHVsSWRsZVRhc2tTdGFja1NpemUgPSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkU7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIGNvbmZpZ1VTRV9TVEFUSUNfQUxMT0NBVElPTiBhbmQgY29uZmlnVVNFX1RJTUVSUyBhcmUgYm90aCBzZXQgdG8gMSwgc28gdGhlDQorYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHZBcHBsaWNhdGlvbkdldFRpbWVyVGFza01lbW9yeSgpDQordG8gcHJvdmlkZSB0aGUgbWVtb3J5IHRoYXQgaXMgdXNlZCBieSB0aGUgVGltZXIgc2VydmljZSB0YXNrLiAqLw0KK3ZvaWQgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhUaW1lclRhc2tUQ0JCdWZmZXIsIFN0YWNrVHlwZV90ICoqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIsIHVpbnQzMl90ICpwdWxUaW1lclRhc2tTdGFja1NpemUgKQ0KK3sNCisvKiBJZiB0aGUgYnVmZmVycyB0byBiZSBwcm92aWRlZCB0byB0aGUgVGltZXIgdGFzayBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoaXMNCitmdW5jdGlvbiB0aGVuIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBzdGF0aWMgLSBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbG9jYXRlZCBvbg0KK3RoZSBzdGFjayBhbmQgc28gbm90IGV4aXN0cyBhZnRlciB0aGlzIGZ1bmN0aW9uIGV4aXRzLiAqLw0KK3N0YXRpYyBTdGF0aWNUYXNrX3QgeFRpbWVyVGFza1RDQjsNCitzdGF0aWMgU3RhY2tUeXBlX3QgdXhUaW1lclRhc2tTdGFja1sgY29uZmlnVElNRVJfVEFTS19TVEFDS19ERVBUSCBdOwkNCisNCisJLyogUGFzcyBvdXQgYSBwb2ludGVyIHRvIHRoZSBTdGF0aWNUYXNrX3Qgc3RydWN0dXJlIGluIHdoaWNoIHRoZSBUaW1lcg0KKwl0YXNrJ3Mgc3RhdGUgd2lsbCBiZSBzdG9yZWQuICovDQorCSpwcHhUaW1lclRhc2tUQ0JCdWZmZXIgPSAmeFRpbWVyVGFza1RDQjsNCisNCisJLyogUGFzcyBvdXQgdGhlIGFycmF5IHRoYXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBUaW1lciB0YXNrJ3Mgc3RhY2suICovDQorCSpwcHhUaW1lclRhc2tTdGFja0J1ZmZlciA9IHV4VGltZXJUYXNrU3RhY2s7DQorDQorCS8qIFBhc3Mgb3V0IHRoZSBzaXplIG9mIHRoZSBhcnJheSBwb2ludGVkIHRvIGJ5ICpwcHhUaW1lclRhc2tTdGFja0J1ZmZlci4NCisJTm90ZSB0aGF0LCBhcyB0aGUgYXJyYXkgaXMgbmVjZXNzYXJpbHkgb2YgdHlwZSBTdGFja1R5cGVfdCwNCisJY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIGlzIHNwZWNpZmllZCBpbiB3b3Jkcywgbm90IGJ5dGVzLiAqLw0KKwkqcHVsVGltZXJUYXNrU3RhY2tTaXplID0gY29uZmlnVElNRVJfVEFTS19TVEFDS19ERVBUSDsNCit9DQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC90aW1lcnRlc3QuYwppbmRleCA4YmNlZmI1Li4yNWJkZWU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvd2Vic2VydmVyL2VtYWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X0lBUl9LZWlsL3dlYnNlcnZlci9lbWFjLmMKaW5kZXggYjA1OTdlNi4uMjlmY2E5ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvd2Vic2VydmVyL2VtYWMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvZW1hYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBLZXJuZWwgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfSUFSX0tlaWwvd2Vic2VydmVyL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCA4YzY1MDBiLi4yYjU3MmE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9JQVJfS2VpbC93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZjkxMjU5ZC4uNzE0MTg5ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggZTA1ODU3Ny4uZjk1Mjc5ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBkZTc3NDIzLi5kYmI0NjIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS9tYWluLmMKaW5kZXggZjkyOGNiYi4uYzk4NjNkZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS90aW1lcnRlc3QuYwppbmRleCA3NTMzOGQ1Li5jYmJkNjI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCmluZGV4IDYxNDhkYWEuLjAyNWIzM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBLZXJuZWwgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTE0zU3h4eHhfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDhmOThiZTcuLjA4NmU3YjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xNM1N4eHh4X1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MTTNTeHh4eF9Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDY5YzY1ZGYuLjIyNGZmOGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvUGFyVGVzdC5jCmluZGV4IDZmNWVjZDAuLjdlMTQxMzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1Mub3JnIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvbWFpbi5jCmluZGV4IDc5ODRhZWMuLjQzZTY5NDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvd2Vic2VydmVyL2VtYWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvZW1hYy5jCmluZGV4IDVmODk4ZDcuLmUzYWEyMGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvZW1hYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvZW1hYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBPcmlnaW5hbGx5IGFkYXB0ZWQgZnJvbSBmaWxlIHdyaXR0ZW4gYnkgQW5kcmVhcyBEYW5uZW5iZXJnLiAgU3VwcGxpZWQgd2l0aCBwZXJtaXNzaW9uLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1JlZFN1aXRlL3NyYy93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCBmZmE5NTQwLi42NzJmNGEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19SZWRTdWl0ZS9zcmMvd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUmVkU3VpdGUvc3JjL3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAppbmRleCA4MWVkYWIzLi4zODE4OTJlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvTEVELmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvTEVELmgKaW5kZXggMzZmZGIyZS4uZjc2NDY3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L0xFRC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9MRUQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMRURfSEgNCiAjZGVmaW5lIExFRF9ISA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvUGFyVGVzdC5jCmluZGV4IDRmMzY3ZTQuLjgwY2MwMWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1Mub3JnIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvbWFpbi5jCmluZGV4IDgyMDIxMGMuLjVkYzY4YjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCmluZGV4IDZjMjZjNWUuLjcxYTE3MmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBPcmlnaW5hbGx5IGFkYXB0ZWQgZnJvbSBmaWxlIHdyaXR0ZW4gYnkgQW5kcmVhcyBEYW5uZW5iZXJnLiAgU3VwcGxpZWQgd2l0aCBwZXJtaXNzaW9uLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCA5NTZhZmE4Li42YTUxOTMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0dDQ19Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9HQ0NfUm93bGV5L3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDljMTlkNC4uZWU1MzlhNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL0xFRC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvTEVELmgKaW5kZXggMzZmZGIyZS4uZjc2NDY3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvTEVELmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvTEVELmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTEVEX0hIDQogI2RlZmluZSBMRURfSEgNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9QYXJUZXN0LmMKaW5kZXggYjgwNzU4Yy4uOTQ3NWM5NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1Mub3JnIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL21haW4uYwppbmRleCBiZDdlNWNiLi4wMTNkNmMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci9lbWFjLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi93ZWJzZXJ2ZXIvZW1hYy5jCmluZGV4IDFmODhkYTguLjI0OWE1YjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci9lbWFjLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTFBDMTc2OF9JQVIvd2Vic2VydmVyL2VtYWMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogT3JpZ2luYWxseSBhZGFwdGVkIGZyb20gZmlsZSB3cml0dGVuIGJ5IEFuZHJlYXMgRGFubmVuYmVyZy4gIFN1cHBsaWVkIHdpdGggcGVybWlzc2lvbi4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9MUEMxNzY4X0lBUi93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCmluZGV4IDk1NmFmYTguLjZhNTE5MzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX0xQQzE3NjhfSUFSL3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvUmVnVGVzdC5jCmluZGV4IDE0YmY2YTcuLmE3MzM3MTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9TYW1wbGUtQ0xJLWNvbW1hbmRzLmMKaW5kZXggODk0YjY0ZC4uZjdmYWRkNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvU2FtcGxlLUNMSS1jb21tYW5kcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1NhbXBsZS1DTEktY29tbWFuZHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1VBUlRDb21tYW5kQ29uc29sZS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmMKaW5kZXggMjhlZGEwNy4uMGRlN2ZkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvVUFSVENvbW1hbmRDb25zb2xlLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJzdHJpbmcuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9VQVJUQ29tbWFuZENvbnNvbGUuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1VBUlRDb21tYW5kQ29uc29sZS5oCmluZGV4IDg2MjhhZTkuLjNhMjQxMDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1VBUlRDb21tYW5kQ29uc29sZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL1VBUlRDb21tYW5kQ29uc29sZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFVBUlRfQ09NTUFORF9DT05TT0xFX0gNCiAjZGVmaW5lIFVBUlRfQ09NTUFORF9DT05TT0xFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGQyNjVmNDUuLjRhZjM2OTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL21haW4tYmxpbmt5LmMKaW5kZXggYjc5NDliYy4uNjJmZjVkZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1mdWxsLmMKaW5kZXggNmI5ZmE1Yy4uZDE1Y2Q2MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTArX0F0bWVsX1NBTUQyMF9YUGxhaW5lZC9SVE9TRGVtby9zcmMvbWFpbi5jCmluZGV4IDc5MzAxODIuLjQ2M2VhMWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wK19BdG1lbF9TQU1EMjBfWFBsYWluZWQvUlRPU0RlbW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMCtfQXRtZWxfU0FNRDIwX1hQbGFpbmVkL1JUT1NEZW1vL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvQXRvbGxpY19TcGVjaWZpYy9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9BdG9sbGljX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCAwMDBkNjI3Li4zNTE2OGU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9BdG9sbGljX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9BdG9sbGljX1NwZWNpZmljL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDIxMGM5OTQuLmNkOGQ4MzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0lBUl9TcGVjaWZpYy9SZWdUZXN0X0lBUi5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvSUFSX1NwZWNpZmljL1JlZ1Rlc3RfSUFSLnMKaW5kZXggN2Y0ZTQ5YS4uZThlYWVjZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvSUFSX1NwZWNpZmljL1JlZ1Rlc3RfSUFSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvSUFSX1NwZWNpZmljL1JlZ1Rlc3RfSUFSLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3RfS2VpbC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0X0tlaWwucwppbmRleCAyYTdmYzIyLi40NTQ0YTQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3RfS2VpbC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdF9LZWlsLnMKQEAgLTEsNjggKzEsMzIgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi07ICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotOyAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4hIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KLTsgICAgPj4hIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotOyAgICA+PiEgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICA+PiEga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCi07LyogDQorOy8qDQogOyAqICJSZWcgdGVzdCIgdGFza3MgLSBUaGVzZSBmaWxsIHRoZSByZWdpc3RlcnMgd2l0aCBrbm93biB2YWx1ZXMsIHRoZW4gY2hlY2sNCiA7ICogdGhhdCBlYWNoIHJlZ2lzdGVyIG1haW50YWlucyBpdHMgZXhwZWN0ZWQgdmFsdWUgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUNCiA7ICogdGFzay4gIEVhY2ggdGFzayB1c2VzIGEgZGlmZmVyZW50IHNldCBvZiB2YWx1ZXMuICBUaGUgcmVnIHRlc3QgdGFza3MgZXhlY3V0ZQ0KQEAgLTcwLDcgKzM0LDcgQEAKIDsgKiBjb250YWluaW5nIGFuIHVuZXhwZWN0ZWQgdmFsdWUgaXMgaW5kaWNhdGl2ZSBvZiBhbiBlcnJvciBpbiB0aGUgY29udGV4dA0KIDsgKiBzd2l0Y2hpbmcgbWVjaGFuaXNtLg0KIDsgKi8NCi0gDQorDQogCVBSRVNFUlZFOA0KIAlUSFVNQg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTEwMC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMTAwLmMKaW5kZXggMmE2ZGVkZS4uNTdkZGVkMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMTAwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMTAwLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgR1BJTyAocGFyYWxsZWwgcG9ydCkgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvUGFyVGVzdF9YTUMxMjAwLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzEyMDAuYwppbmRleCA0MGEzMTZlLi43Y2Q0NmUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzEyMDAuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzEyMDAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBHUElPIChwYXJhbGxlbCBwb3J0KSBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9QYXJUZXN0X1hNQzEzMDAuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTMwMC5jCmluZGV4IGEyMjg1MjguLjIwZDkxNjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTMwMC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL1BhclRlc3RfWE1DMTMwMC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIEdQSU8gKHBhcmFsbGVsIHBvcnQpIElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9tYWluLWJsaW5reS5jCmluZGV4IDA4MGUyNjkuLjJkNDdmMzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tZnVsbC5jCmluZGV4IDYzMGI5MzEuLjI0YWE1ODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0luZmluZW9uX1hNQzEwMDBfSUFSX0tlaWxfR0NDL21haW4uYwppbmRleCAwMjRkNmYzLi4xYTc0MDJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9JbmZpbmVvbl9YTUMxMDAwX0lBUl9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfSW5maW5lb25fWE1DMTAwMF9JQVJfS2VpbF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAppbmRleCA4NGIxNjZhLi5hNmNhMDYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuYwppbmRleCA3NTA1NjkwLi5iNjFhZDM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL1JlZ1Rlc3QuYwppbmRleCBhMDk0NTlmLi5lNDEyNDNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogdm9pZCB2UmVnVGVzdDFUYXNrKCB2b2lkICkgX19hdHRyaWJ1dGVfXygobmFrZWQpKTsNCiB2b2lkIHZSZWdUZXN0MlRhc2soIHZvaWQgKSBfX2F0dHJpYnV0ZV9fKChuYWtlZCkpOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1ibGlua3kuYwppbmRleCA1Y2Q1ZjliLi5hNWE4MTdlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL21haW4tZnVsbC5jCmluZGV4IGJiNjY2NjguLjJlMWI0N2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfTFBDMTExNF9MUENYcHJlc3NvL1JUT1NEZW1vL1NvdXJjZS9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9MUEMxMTE0X0xQQ1hwcmVzc28vUlRPU0RlbW8vU291cmNlL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi5jCmluZGV4IDE4ZmZlN2QuLjdiMDVkY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX0xQQzExMTRfTFBDWHByZXNzby9SVE9TRGVtby9Tb3VyY2UvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDRmODViMzAuLjQ4NDlmMzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1BhclRlc3QuYwppbmRleCAxZjQyZWRiLi4wZjczZTgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIEdQSU8gKHBhcmFsbGVsIHBvcnQpIElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL1JlZ1Rlc3QucwppbmRleCA3ZjZlMjVjLi41NjUzYTc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9SZWdUZXN0LnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvUmVnVGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJUlNFRyAgICBDT0RFOkNPREUoMikNCiAJdGh1bWINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvbWFpbi1ibGlua3kuYwppbmRleCBhZTQxYWFjLi45NTg4NTE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWZ1bGwuYwppbmRleCA3Y2I5NzhmLi41YjViMzk2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NMF9TVE0zMkYwNTE4X0lBUi9tYWluLmMKaW5kZXggN2Y2YzRkOC4uODFmYTU5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTBfU1RNMzJGMDUxOF9JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX00wX1NUTTMyRjA1MThfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCmluZGV4IDYzMGY4MDcuLmM2MDYzNzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFByb3ZpZGVzIHRoZSB0d28gdGltZXJzIHNvdXJjZXMgZm9yIHRoZSBzdGFuZGFyZCBkZW1vIEludFF1ZXVlIHRlc3QuICBBbHNvDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCmluZGV4IGM2MmM2NjMuLjA3MWYxNDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9SdW5UaW1lU3RhdHNUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9SdW5UaW1lU3RhdHNUaW1lci5jCmluZGV4IGMwODhhNTkuLjA3MmFhZGYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvUnVuVGltZVN0YXRzVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL1J1blRpbWVTdGF0c1RpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGRlYzc1MmYuLjNmYTJjM2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TSVBDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TSVBDb25maWcuaAppbmRleCAxNjAzNmJlLi4wNWM0NGRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0lQQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NJUENvbmZpZy5oCkBAIC0xLDQzICsxLDI5IEBACiAvKg0KLSAqIEZyZWVSVE9TK1VEUCBWMS4wLjQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuDQotICogQWxsIHJpZ2h0cyByZXNlcnZlZA0KKyAqIEZyZWVSVE9TK1VEUCBWMS4wLjQNCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQogICoNCi0gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MrVURQIGRpc3RyaWJ1dGlvbi4gIFRoZSBGcmVlUlRPUytVRFAgbGljZW5zZQ0KLSAqIHRlcm1zIGFyZSBkaWZmZXJlbnQgdG8gdGhlIEZyZWVSVE9TIGxpY2Vuc2UgdGVybXMuDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KICAqDQotICogRnJlZVJUT1MrVURQIHVzZXMgYSBkdWFsIGxpY2Vuc2UgbW9kZWwgdGhhdCBhbGxvd3MgdGhlIHNvZnR3YXJlIHRvIGJlIHVzZWQNCi0gKiB1bmRlciBhIHN0YW5kYXJkIEdQTCBvcGVuIHNvdXJjZSBsaWNlbnNlLCBvciBhIGNvbW1lcmNpYWwgbGljZW5zZS4gIFRoZQ0KLSAqIHN0YW5kYXJkIEdQTCBsaWNlbnNlICh1bmxpa2UgdGhlIG1vZGlmaWVkIEdQTCBsaWNlbnNlIHVuZGVyIHdoaWNoIEZyZWVSVE9TDQotICogaXRzZWxmIGlzIGRpc3RyaWJ1dGVkKSByZXF1aXJlcyB0aGF0IGFsbCBzb2Z0d2FyZSBzdGF0aWNhbGx5IGxpbmtlZCB3aXRoDQotICogRnJlZVJUT1MrVURQIGlzIGFsc28gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgR1BMIFYyIGxpY2Vuc2UgdGVybXMuDQotICogRGV0YWlscyBvZiBib3RoIGxpY2Vuc2Ugb3B0aW9ucyBmb2xsb3c6DQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQogICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrVURQIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkLCBldmFsdWF0ZWQgYW5kDQotICogZGlzdHJpYnV0ZWQgd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUNCi0gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yDQotICogdGhpcyB0ZXh0LiAgVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZQ0KLSAqIGZvbGxvd2luZyBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0Lg0KLSAqDQotICogLSBDb21tZXJjaWFsIGxpY2Vuc2luZyAtDQotICogQnVzaW5lc3NlcyBhbmQgaW5kaXZpZHVhbHMgdGhhdCBmb3IgY29tbWVyY2lhbCBvciBvdGhlciByZWFzb25zIGNhbm5vdCBjb21wbHkNCi0gKiB3aXRoIHRoZSB0ZXJtcyBvZiB0aGUgR1BMIFYyIGxpY2Vuc2UgbXVzdCBvYnRhaW4gYSBjb21tZXJjaWFsIGxpY2Vuc2UgYmVmb3JlDQotICogaW5jb3Jwb3JhdGluZyBGcmVlUlRPUytVRFAgaW50byBwcm9wcmlldGFyeSBzb2Z0d2FyZSBmb3IgZGlzdHJpYnV0aW9uIGluIGFueQ0KLSAqIGZvcm0uICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbiBiZSBwdXJjaGFzZWQgZnJvbSBodHRwOi8vc2hvcC5mcmVlcnRvcy5vcmcvdWRwDQotICogYW5kIGRvIG5vdCByZXF1aXJlIGFueSBzb3VyY2UgZmlsZXMgdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK1VEUCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91IGNhbm5vdA0KLSAqIHVzZSBGcmVlUlRPUytVRFAgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcyBpcycuDQotICogRnJlZVJUT1MrVURQIGlzIHByb3ZpZGVkIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQNCi0gKiB3YXJyYW50aWVzIG9mIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVINCi0gKiBQVVJQT1NFLiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gZGlzY2xhaW1zIGFsbCBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleQ0KLSAqIGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCiAgKg0KICAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdWRwDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQogICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCiAgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCkBAIC0yNDYsOCArMjMyLDggQEAKIGhhcmR3YXJlIGZvciB0cmFuc21pc3Npb24uICovDQogI2RlZmluZSBpcGNvbmZpZ0VUSEVSTkVUX0RSSVZFUl9BRERTX0lQX0NIRUNLU1VNCTANCiANCi0vKiBJZiBpcGNvbmZpZ0VUSEVSTkVUX0RSSVZFUl9DSEVDS1NfSVBfQ0hFQ0tTVU0gaXMgc2V0IHRvIDEgdGhlbiB0aGUgSVAgDQotY2hlY2tzdW0gd2lsbCBiZSBpZ25vcmVkIG9uIGluY29taW5nIHBhY2tldHMgb24gdGhlIGFzc3VtcHRpb24gSVAgcGFja2V0cyB3aXRoIA0KKy8qIElmIGlwY29uZmlnRVRIRVJORVRfRFJJVkVSX0NIRUNLU19JUF9DSEVDS1NVTSBpcyBzZXQgdG8gMSB0aGVuIHRoZSBJUA0KK2NoZWNrc3VtIHdpbGwgYmUgaWdub3JlZCBvbiBpbmNvbWluZyBwYWNrZXRzIG9uIHRoZSBhc3N1bXB0aW9uIElQIHBhY2tldHMgd2l0aA0KIGFuIGludmFsaWQgY2hlY2tzdW0gYXJlIG5vdCBwYXNzZWQgdG8gdGhlIHN0YWNrLiAqLw0KICNkZWZpbmUgaXBjb25maWdFVEhFUk5FVF9EUklWRVJfQ0hFQ0tTX0lQX0NIRUNLU1VNCTANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCmluZGV4IDVjYjk1NjcuLmFkY2U2ZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYwppbmRleCBmYjk5YzUyLi44YjA4MGViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQVRTQU00RV9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IGExYWJiMGMuLjQ1MWNhZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9BVFNBTTRFX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0FUU0FNNEVfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCA4NDAyNTg3Li45ODBjZjgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCBjMjc0ZmRlLi5jOTJlYzNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggMzU5ZGVhNS4uYWRiYmFhOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW4uYwppbmRleCBiMjgyZjg0Li4yYjIxOWY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL01pY3JvY2hpcF9DRUMxMzAyX0FSTV9Db3J0ZXgtTTRGX0xvd19Qb3dlcl9EZW1vLmh0bWwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuYwppbmRleCAwY2UzMzE2Li42ZTFkY2NkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5oCmluZGV4IDhhZjkyYTQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2Z1bGwvbWFpbl9mdWxsLmMKaW5kZXggMzQ2N2U1YS4uOTkwMDdkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9mdWxsL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fZnVsbC9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2xvd19wb3dlci9sb3dfcG93ZXJfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jCmluZGV4IDdhY2Q5YjguLmU1NDdmNGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX0tlaWxfR0NDL21haW5fbG93X3Bvd2VyL21haW5fbG93X3Bvd2VyLmMKaW5kZXggNDY0ZjY2OS4uODZiYWRhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfS2VpbF9HQ0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9LZWlsX0dDQy9tYWluX2xvd19wb3dlci9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBkZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvRnJlZVJUT1NDb25maWcuaAppbmRleCBkYmE2Y2Y0Li4xNTExZjQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9NaWtyb0NfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL01pa3JvQ19TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggYjFiOTFiYS4uZTllNmI0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL01pa3JvQ19TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL01pa3JvQ19TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbi5jCmluZGV4IGYxOThkYjEuLjBiZmU0YTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggNzcyODVmMC4uM2JmMzdkMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2Z1bGwvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGFmOTJhNC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2Z1bGwvbWFpbl9mdWxsLmMKaW5kZXggMmMxMTM0OC4uZjNkNWY4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fZnVsbC9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9mdWxsL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9sb3dfcG93ZXJfdGlja19jb25maWcuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUMxMzAyX01pa3JvQy9tYWluX2xvd19wb3dlci9sb3dfcG93ZXJfdGlja19jb25maWcuYwppbmRleCBlMTE2YzFkLi5kMzlhMGVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbG93X3Bvd2VyX3RpY2tfY29uZmlnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fbG93X3Bvd2VyL2xvd19wb3dlcl90aWNrX2NvbmZpZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8bGltaXRzLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQzEzMDJfTWlrcm9DL21haW5fbG93X3Bvd2VyL21haW5fbG93X3Bvd2VyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYwppbmRleCBjYWFlNmU3Li4zNDRhYmFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDMTMwMl9NaWtyb0MvbWFpbl9sb3dfcG93ZXIvbWFpbl9sb3dfcG93ZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE1IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgZGVtbw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYjQ1NDQyYi4uNzNkNjJiYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL21haW4uYwppbmRleCA3NmI1NDAxLi41MjBkMDlmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNGVmOTEzOS4uODhjYzFlNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbi5jCmluZGV4IGMyODVmNjMuLmM5MGQyMjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL21haW5fYmxpbmt5LmMKaW5kZXggNmUwZGE3My4uOWY4NTU2MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9HQ0NfRGF2ZS9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0dDQ19EYXZlL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9mdWxsLmMKaW5kZXggNzczNjZlNy4uMzNmMjNhMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfR0NDX0RhdmUvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA1YzI3ZjFhLi5hMDU3OWZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9SZWdUZXN0LnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvUmVnVGVzdC5zCmluZGV4IDJlYmM0NGIuLjFmYmYwNDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9SZWdUZXN0LnMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL1JlZ1Rlc3QucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9tYWluLmMKaW5kZXggYWE3ZjFhNi4uNjdhNGQ2ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fYmxpbmt5LmMKaW5kZXggNmUwZGE3My4uOWY4NTU2MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfSUFSL21haW5fZnVsbC5jCmluZGV4IDFkY2VlNDIuLjY1MDgxMmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0lBUi9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9JQVIvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDA2YzNiMzUuLjBkMmRlZGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvUmVnVGVzdC5jCmluZGV4IDJmNTUwMjUuLmRhNmI5M2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiBfX2FzbSB2UmVnVGVzdDFUYXNrKCB2b2lkICkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbi5jCmluZGV4IDc3MjcwMjYuLjZjYjkzMTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9ibGlua3kuYwppbmRleCA2ZTBkYTczLi45Zjg1NTYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9LZWlsL21haW5fZnVsbC5jCmluZGV4IDRhN2Y1ZTEuLjEyN2U0MTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX0tlaWwvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfS2VpbC9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMDBlMjA3Ny4uNjU4OTJiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluLmMKaW5kZXggYTkwYTJiMi4uYjJhYWU4YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2JsaW5reS5jCmluZGV4IGE1ZjVjNmYuLjA4MGM3NDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0MDAwX1Rhc2tpbmcvbWFpbl9mdWxsLmMKaW5kZXggYTQyYzUzMi4uNzZmZTQ1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQwMDBfVGFza2luZy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDAwMF9UYXNraW5nL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggM2Y1Y2EzOC4uMzM3NWQ5NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL21haW4uYwppbmRleCBhNmQ1NGI5Li4yYmY1MTk5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9ibGlua3kuYwppbmRleCBlZjg3OWU4Li5mOTFiNzgzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfSW5maW5lb25fWE1DNDUwMF9HQ0NfQXRvbGxpYy9zcmMvbWFpbl9mdWxsLmMKaW5kZXggOGEyZTVmMi4uN2M5ODg5MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX0luZmluZW9uX1hNQzQ1MDBfR0NDX0F0b2xsaWMvc3JjL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9JbmZpbmVvbl9YTUM0NTAwX0dDQ19BdG9sbGljL3NyYy9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYzk4ZTc5ZC4uN2ZjZGE0ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NMF9MUEM0M3h4X0tlaWwvTTQvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9QYXJUZXN0LmMKaW5kZXggZjA4OTcwYy4uNjVmNGQ4ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBOb3JtYWxseSwgYSBkZW1vIGFwcGxpY2F0aW9uIHdvdWxkIGRlZmluZSBQYXJUZXN0IChwYXJhbGxlbCBwb3J0IHRlc3QpDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1JlZ1Rlc3QuYwppbmRleCBlNTU4OGYyLi40ZTEwMTdmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogX19hc20gdlJlZ1Rlc3QxVGFzayggdm9pZCApDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX00wX0xQQzQzeHhfS2VpbC9NNC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L21haW4uYwppbmRleCA5YTBhNGQyLi45NTk5MTU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTTBfTFBDNDN4eF9LZWlsL000L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqID4+Pj4+PiBOT1RFIDE6IDw8PDw8PA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZmUzMDBkMC4uMWUyZTUxYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDgwOGJmN2UuLmI1NTViNzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aGUgdHdvIHRpbWVycyBhdmFpbGFibGUgaW4gdGhlIFRpbWVyMzIgcGVyaXBoZXJhbC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5hc20gYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QuYXNtCmluZGV4IGYyYTgwYjkuLjY3ZjhlOGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LmFzbQpAQCAtMSw3MSArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotOyAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi07ICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLTsgICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi07ICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi07ICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotOyAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLTsgICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotOyAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotOyAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi07ICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLTsgICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi07ICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi07ICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLTsgICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIA0KIAkudGh1bWINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCmluZGV4IGVhZjZiZGUuLmFhYTI5NzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiBfX2FzbSB2b2lkIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uKCB2b2lkICkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCmluZGV4IDU3OGUyNDQuLmQ3OTZiY2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMKaW5kZXggYmI4MTE1OS4uNzE2YzMxNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9SdW5UaW1lU3RhdHNUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vUnVuVGltZVN0YXRzVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggMmYxNTk5ZS4uMzQwMDVkMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9GdWxsX0RlbW8vc2VyaWFsLmMKaW5kZXggZGY3ZWNhNC4uMmZmMTRkZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL0Z1bGxfRGVtby9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvRnVsbF9EZW1vL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvU2ltcGx5Qmxpbmt5RGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL1NpbXBseUJsaW5reURlbW8vbWFpbl9ibGlua3kuYwppbmRleCAwZDgxN2U1Li42ZWRkZGIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvU2ltcGx5Qmxpbmt5RGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9TaW1wbHlCbGlua3lEZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9NU1A0MzJfTGF1bmNoUGFkX0lBUl9DQ1NfS2VpbC9tYWluLmMKaW5kZXggMGExODQ4OC4uZTUwODU0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX01TUDQzMl9MYXVuY2hQYWRfSUFSX0NDU19LZWlsL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfTVNQNDMyX0xhdW5jaFBhZF9JQVJfQ0NTX0tlaWwvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNzA0ZjRhYy4uODdhYjQzYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL1BhclRlc3QuYwppbmRleCBmZGEwOWZmLi41YTY0OTQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgR1BJTyAocGFyYWxsZWwgcG9ydCkgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL1JlZ1Rlc3QucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9SZWdUZXN0LnMKaW5kZXggNjMzZTUxOS4uNTdlNWQ5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL1JlZ1Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svUmVnVGVzdC5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRGX1NUTTMyRjQwN1pHLVNLL21haW4uYwppbmRleCBkZjMyYTA4Li5hZjgwZGNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNEZfU1RNMzJGNDA3WkctU0svbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000Rl9TVE0zMkY0MDdaRy1TSy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiA+Pj4+Pj4gTk9URSAxOiA8PDw8PDwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYwppbmRleCBiYjI3NzJjLi43NzVkODIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvU0FNNExfbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL1NBTTRMX2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnQuYwppbmRleCA4NzM2OGFmLi5hMGVhNDlhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvU0FNNExfbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9TQU00TF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJsaW1pdHMuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvY29uZmlnL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNDUxYzEyZC4uMmQxYWI3ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL2NvbmZpZy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9jb25maWcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW4uYwppbmRleCA2ZTg4MmU3Li5kNTE0MTlmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgcHJvamVjdCB0aGF0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00TF9BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCmluZGV4IDMyZWQ5YzkuLmNmMmIzNmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgdGlja2xlc3MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRMX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2xvd19wb3dlci5jCmluZGV4IDQ2NDdmYTcuLjYwOGZmYjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNExfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogV2hlbiBjb25maWdDUkVBVEVfTE9XX1BPV0VSX0RFTU8gaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaCBtYWluKCkgd2lsbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9Db21tb24tRGVtby1Tb3VyY2UvY29tdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKaW5kZXggYmExYTM2OC4uNTY5YjgyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9jb210ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0NvbW1vbi1EZW1vLVNvdXJjZS9pbmNsdWRlL2RlbW9fc2VyaWFsLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaAppbmRleCAyNzRiYzdhLi5mYWMxOTdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvZGVtb19zZXJpYWwuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTRVJJQUxfQ09NTVNfSA0KICNkZWZpbmUgU0VSSUFMX0NPTU1TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGE0NzQ0YzAuLjZjZTU1MmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMWFjYTUyYy4uZDlkMWUxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFByb3ZpZGVzIHRoZSB0d28gdGltZXJzIHNvdXJjZXMgZm9yIHRoZSBzdGFuZGFyZCBkZW1vIEludFF1ZXVlIHRlc3QuICBBbHNvDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvUGFyVGVzdC5jCmluZGV4IGVkNjlkZTQuLjVkNjhlODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvbWFpbi5jCmluZGV4IDhmYzdhY2IuLmVkZTE4MGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCmluZGV4IGJjMTI2MmIuLjQ2OTQ1MmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwppbmRleCA4OTY5MGJjLi42M2JkZGFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X0FUU0FNNFNfQXRtZWxfU3R1ZGlvL3NyYy9zZXJpYWwuYwppbmRleCA3ZjQ1NjIyLi5hMGQwNjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9BVFNBTTRTX0F0bWVsX1N0dWRpby9zcmMvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfQVRTQU00U19BdG1lbF9TdHVkaW8vc3JjL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVVNBUlQxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5jcHJvamVjdCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5jcHJvamVjdAppbmRleCBiMzdiMzJjLi5kNTM2MjdiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8uY3Byb2plY3QKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLmNwcm9qZWN0CkBAIC01Myw2ICs1Myw3IEBACiAJCQkJCQkJCTwvb3B0aW9uPg0KIAkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5ESUFHX1dSQVAuNjQ2MTc1ODUzIiBuYW1lPSJXcmFwIGRpYWdub3N0aWMgbWVzc2FnZXMgKC0tZGlhZ193cmFwKSIgc3VwZXJDbGFzcz0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5ESUFHX1dSQVAiIHZhbHVlPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELkRJQUdfV1JBUC5vZmYiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KIAkJCQkJCQkJPG9wdGlvbiBpZD0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5ESVNQTEFZX0VSUk9SX05VTUJFUi4xODMwMzM2OTk2IiBuYW1lPSJFbWl0IGRpYWdub3N0aWMgaWRlbnRpZmllciBudW1iZXJzICgtLWRpc3BsYXlfZXJyb3JfbnVtYmVyLCAtcGRlbikiIHN1cGVyQ2xhc3M9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVySUQuRElTUExBWV9FUlJPUl9OVU1CRVIiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCisJCQkJCQkJCTxvcHRpb24gaWQ9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVySUQuT1BUX0xFVkVMLjE4ODgxMDU1MjkiIG5hbWU9Ik9wdGltaXphdGlvbiBsZXZlbCAoLS1vcHRfbGV2ZWwsIC1PKSIgc3VwZXJDbGFzcz0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXJJRC5PUFRfTEVWRUwiIHZhbHVlPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlcklELk9QVF9MRVZFTC5vZmYiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KIAkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXIuaW5wdXRUeXBlX19DX1NSQ1MuMTM4MDExMjMyNCIgbmFtZT0iQyBTb3VyY2VzIiBzdXBlckNsYXNzPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlci5pbnB1dFR5cGVfX0NfU1JDUyIvPg0KIAkJCQkJCQkJPGlucHV0VHlwZSBpZD0iY29tLnRpLmNjc3R1ZGlvLmJ1aWxkRGVmaW5pdGlvbnMuVE1TNDcwXzE2LjkuY29tcGlsZXIuaW5wdXRUeXBlX19DUFBfU1JDUy43MzU3ODI4NzQiIG5hbWU9IkMrKyBTb3VyY2VzIiBzdXBlckNsYXNzPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlci5pbnB1dFR5cGVfX0NQUF9TUkNTIi8+DQogCQkJCQkJCQk8aW5wdXRUeXBlIGlkPSJjb20udGkuY2NzdHVkaW8uYnVpbGREZWZpbml0aW9ucy5UTVM0NzBfMTYuOS5jb21waWxlci5pbnB1dFR5cGVfX0FTTV9TUkNTLjEwNDcyOTA3MDIiIG5hbWU9IkFzc2VtYmx5IFNvdXJjZXMiIHN1cGVyQ2xhc3M9ImNvbS50aS5jY3N0dWRpby5idWlsZERlZmluaXRpb25zLlRNUzQ3MF8xNi45LmNvbXBpbGVyLmlucHV0VHlwZV9fQVNNX1NSQ1MiLz4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ubGF1bmNoZXMvUlRPU0RlbW8ubGF1bmNoIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLmxhdW5jaGVzL1JUT1NEZW1vLmxhdW5jaAppbmRleCBhOTYwZDllLi5jOGQ4MjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy8ubGF1bmNoZXMvUlRPU0RlbW8ubGF1bmNoCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5sYXVuY2hlcy9SVE9TRGVtby5sYXVuY2gKQEAgLTE3LDcgKzE3LDEwIEBACiA8c3RyaW5nQXR0cmlidXRlIGtleT0iY29tLnRpLmNjc3R1ZGlvLmRlYnVnLmRlYnVnTW9kZWwuQVRUUl9QUk9HUkFNLlRleGFzIEluc3RydW1lbnRzIFhEUzExMCBVU0IgRGVidWcgUHJvYmUvQ29ydGV4X000XzAiIHZhbHVlPSIke2J1aWxkX2FydGlmYWN0OlJUT1NEZW1vfSIvPg0KIDxzdHJpbmdBdHRyaWJ1dGUga2V5PSJjb20udGkuY2NzdHVkaW8uZGVidWcuZGVidWdNb2RlbC5BVFRSX1BST0pFQ1QuVGV4YXMgSW5zdHJ1bWVudHMgWERTMTEwIFVTQiBEZWJ1ZyBQcm9iZS9Db3J0ZXhfTTRfMCIgdmFsdWU9IlJUT1NEZW1vIi8+DQogPHN0cmluZ0F0dHJpYnV0ZSBrZXk9ImNvbS50aS5jY3N0dWRpby5kZWJ1Zy5kZWJ1Z01vZGVsLkFUVFJfVEFSR0VUX0NPTkZJRyIgdmFsdWU9IiR7dGFyZ2V0X2NvbmZpZ19hY3RpdmVfZGVmYXVsdDpSVE9TRGVtb30iLz4NCi08c3RyaW5nQXR0cmlidXRlIGtleT0iY29tLnRpLmNjc3R1ZGlvLmRlYnVnLmRlYnVnTW9kZWwuTVJVX1BST0dSQU0uVGV4YXMgSW5zdHJ1bWVudHMgWERTMTEwIFVTQiBEZWJ1ZyBQcm9iZS9Db3J0ZXhfTTRfMCIgdmFsdWU9IkM6L1VzZXJzXHJpYmFycnlcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTXERlYnVnXFJUT1NEZW1vLm91dCIvPg0KKzxzdHJpbmdBdHRyaWJ1dGUga2V5PSJjb20udGkuY2NzdHVkaW8uZGVidWcuZGVidWdNb2RlbC5NUlVfUFJPR1JBTS5UZXhhcyBJbnN0cnVtZW50cyBYRFMxMTAgVVNCIERlYnVnIFByb2JlL0NvcnRleF9NNF8wIiB2YWx1ZT0iQzovVXNlcnNccmliYXJyeVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXEZyZWVSVE9TX0RldlxXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDU1xEZWJ1Z1xSVE9TRGVtby5vdXQiLz4NCis8bWFwQXR0cmlidXRlIGtleT0iY29tLnRpLmNjc3R1ZGlvLmRlYnVnLnVpLmRpc3BsYXlGb3JtYXRzIj4NCis8bWFwRW50cnkga2V5PSJUZXhhcyBJbnN0cnVtZW50cyBYRFMxMTAgVVNCIERlYnVnIFByb2JlL0NvcnRleF9NNF8wQCMjc2VwYXJhdG9yIyNAMCIgdmFsdWU9IjMyLUJpdCBIZXggLSBUSSBTdHlsZSIvPg0KKzwvbWFwQXR0cmlidXRlPg0KIDxsaXN0QXR0cmlidXRlIGtleT0ib3JnLmVjbGlwc2UuZGVidWcuY29yZS5NQVBQRURfUkVTT1VSQ0VfUEFUSFMiPg0KIDxsaXN0RW50cnkgdmFsdWU9Ii9SVE9TRGVtbyIvPg0KIDwvbGlzdEF0dHJpYnV0ZT4NCkBAIC0yNiw0ICsyOSw1IEBACiA8L2xpc3RBdHRyaWJ1dGU+DQogPHN0cmluZ0F0dHJpYnV0ZSBrZXk9Im9yZy5lY2xpcHNlLmRlYnVnLmNvcmUuc291cmNlX2xvY2F0b3JfaWQiIHZhbHVlPSJjb20udGkuY2NzdHVkaW8uZGVidWcuc291cmNlTG9jYXRvciIvPg0KIDxzdHJpbmdBdHRyaWJ1dGUga2V5PSJvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLnNvdXJjZV9sb2NhdG9yX21lbWVudG8iIHZhbHVlPSImbHQ7P3htbCB2ZXJzaW9uPSZxdW90OzEuMCZxdW90OyBlbmNvZGluZz0mcXVvdDtVVEYtOCZxdW90OyBzdGFuZGFsb25lPSZxdW90O25vJnF1b3Q7PyZndDsmIzEzOyYjMTA7Jmx0O3NvdXJjZUxvb2t1cERpcmVjdG9yJmd0OyYjMTM7JiMxMDsmbHQ7c291cmNlQ29udGFpbmVycyBkdXBsaWNhdGVzPSZxdW90O2ZhbHNlJnF1b3Q7Jmd0OyYjMTM7JiMxMDsmbHQ7Y29udGFpbmVyIG1lbWVudG89JnF1b3Q7JmFtcDtsdDs/eG1sIHZlcnNpb249JmFtcDtxdW90OzEuMCZhbXA7cXVvdDsgZW5jb2Rpbmc9JmFtcDtxdW90O1VURi04JmFtcDtxdW90OyBzdGFuZGFsb25lPSZhbXA7cXVvdDtubyZhbXA7cXVvdDs/JmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmYW1wO2x0O2RlZmF1bHQvJmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmcXVvdDsgdHlwZUlkPSZxdW90O29yZy5lY2xpcHNlLmRlYnVnLmNvcmUuY29udGFpbmVyVHlwZS5kZWZhdWx0JnF1b3Q7LyZndDsmIzEzOyYjMTA7Jmx0O2NvbnRhaW5lciBtZW1lbnRvPSZxdW90OyZhbXA7bHQ7P3htbCB2ZXJzaW9uPSZhbXA7cXVvdDsxLjAmYW1wO3F1b3Q7IGVuY29kaW5nPSZhbXA7cXVvdDtVVEYtOCZhbXA7cXVvdDsgc3RhbmRhbG9uZT0mYW1wO3F1b3Q7bm8mYW1wO3F1b3Q7PyZhbXA7Z3Q7JmFtcDsjMTM7JmFtcDsjMTA7JmFtcDtsdDtjcHVTcGVjaWZpY0NvbnRhaW5lciBjcHVOYW1lPSZhbXA7cXVvdDtUZXhhcyBJbnN0cnVtZW50cyBYRFMxMTAgVVNCIERlYnVnIFByb2JlL0NvcnRleF9NNF8wJmFtcDtxdW90OyZhbXA7Z3Q7JmFtcDsjMTM7JmFtcDsjMTA7JmFtcDtsdDtjaGlsZENvbnRhaW5lckVudHJ5IGNoaWxkTWVtZW50bz0mYW1wO3F1b3Q7JmFtcDthbXA7bHQ7P3htbCB2ZXJzaW9uPSZhbXA7YW1wO3F1b3Q7MS4wJmFtcDthbXA7cXVvdDsgZW5jb2Rpbmc9JmFtcDthbXA7cXVvdDtVVEYtOCZhbXA7YW1wO3F1b3Q7IHN0YW5kYWxvbmU9JmFtcDthbXA7cXVvdDtubyZhbXA7YW1wO3F1b3Q7PyZhbXA7YW1wO2d0OyZhbXA7YW1wOyMxMzsmYW1wO2FtcDsjMTA7JmFtcDthbXA7bHQ7cHJvamVjdCBuYW1lPSZhbXA7YW1wO3F1b3Q7UlRPU0RlbW8mYW1wO2FtcDtxdW90OyByZWZlcmVuY2VkUHJvamVjdHM9JmFtcDthbXA7cXVvdDt0cnVlJmFtcDthbXA7cXVvdDsvJmFtcDthbXA7Z3Q7JmFtcDthbXA7IzEzOyZhbXA7YW1wOyMxMDsmYW1wO3F1b3Q7IGNoaWxkVHlwZT0mYW1wO3F1b3Q7b3JnLmVjbGlwc2UuZGVidWcuY29yZS5jb250YWluZXJUeXBlLnByb2plY3QmYW1wO3F1b3Q7LyZhbXA7Z3Q7JmFtcDsjMTM7JmFtcDsjMTA7JmFtcDtsdDtjaGlsZENvbnRhaW5lckVudHJ5IGNoaWxkTWVtZW50bz0mYW1wO3F1b3Q7JmFtcDthbXA7bHQ7P3htbCB2ZXJzaW9uPSZhbXA7YW1wO3F1b3Q7MS4wJmFtcDthbXA7cXVvdDsgZW5jb2Rpbmc9JmFtcDthbXA7cXVvdDtVVEYtOCZhbXA7YW1wO3F1b3Q7IHN0YW5kYWxvbmU9JmFtcDthbXA7cXVvdDtubyZhbXA7YW1wO3F1b3Q7PyZhbXA7YW1wO2d0OyZhbXA7YW1wOyMxMzsmYW1wO2FtcDsjMTA7JmFtcDthbXA7bHQ7ZGVmYXVsdC8mYW1wO2FtcDtndDsmYW1wO2FtcDsjMTM7JmFtcDthbXA7IzEwOyZhbXA7cXVvdDsgY2hpbGRUeXBlPSZhbXA7cXVvdDtvcmcuZWNsaXBzZS5kZWJ1Zy5jb3JlLmNvbnRhaW5lclR5cGUuZGVmYXVsdCZhbXA7cXVvdDsvJmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmYW1wO2x0O2NoaWxkQ29udGFpbmVyRW50cnkgY2hpbGRNZW1lbnRvPSZhbXA7cXVvdDsmYW1wO2FtcDtsdDs/eG1sIHZlcnNpb249JmFtcDthbXA7cXVvdDsxLjAmYW1wO2FtcDtxdW90OyBlbmNvZGluZz0mYW1wO2FtcDtxdW90O1VURi04JmFtcDthbXA7cXVvdDsgc3RhbmRhbG9uZT0mYW1wO2FtcDtxdW90O25vJmFtcDthbXA7cXVvdDs/JmFtcDthbXA7Z3Q7JmFtcDthbXA7IzEzOyZhbXA7YW1wOyMxMDsmYW1wO2FtcDtsdDtsaWJyYXJ5U291cmNlLyZhbXA7YW1wO2d0OyZhbXA7YW1wOyMxMzsmYW1wO2FtcDsjMTA7JmFtcDtxdW90OyBjaGlsZFR5cGU9JmFtcDtxdW90O2NvbS50aS5jY3N0dWRpby5kZWJ1Zy5jb250YWluZXJUeXBlLmxpYnJhcnkuc291cmNlJmFtcDtxdW90Oy8mYW1wO2d0OyZhbXA7IzEzOyZhbXA7IzEwOyZhbXA7bHQ7L2NwdVNwZWNpZmljQ29udGFpbmVyJmFtcDtndDsmYW1wOyMxMzsmYW1wOyMxMDsmcXVvdDsgdHlwZUlkPSZxdW90O2NvbS50aS5jY3N0dWRpby5kZWJ1Zy5jb250YWluZXJUeXBlLmNwdS5zcGVjaWZpYyZxdW90Oy8mZ3Q7JiMxMzsmIzEwOyZsdDsvc291cmNlQ29udGFpbmVycyZndDsmIzEzOyYjMTA7Jmx0Oy9zb3VyY2VMb29rdXBEaXJlY3RvciZndDsmIzEzOyYjMTA7Ii8+DQorPHN0cmluZ0F0dHJpYnV0ZSBrZXk9Im9yZy5lY2xpcHNlLmRzZi5sYXVuY2guTUVNT1JZX0JMT0NLUyIgdmFsdWU9IiZsdDs/eG1sIHZlcnNpb249JnF1b3Q7MS4wJnF1b3Q7IGVuY29kaW5nPSZxdW90O1VURi04JnF1b3Q7IHN0YW5kYWxvbmU9JnF1b3Q7bm8mcXVvdDs/Jmd0OyYjMTM7JiMxMDsmbHQ7bWVtb3J5QmxvY2tFeHByZXNzaW9uTGlzdCBjb250ZXh0PSZxdW90O3Jlc2VydmVkLWZvci1mdXR1cmUtdXNlJnF1b3Q7LyZndDsmIzEzOyYjMTA7Ii8+DQogPC9sYXVuY2hDb25maWd1cmF0aW9uPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTLy5wcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLnByb2plY3QKaW5kZXggZTQ0OTkzMi4uMTY3YTQ5MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLnByb2plY3QKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvLnByb2plY3QKQEAgLTYxLDcgKzYxLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE0NjwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5MDk8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtNzAsNyArNzAsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTQ2PC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkxMzwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC03OSw3ICs3OSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxNDY8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTE2PC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTg4LDcgKzg4LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE0NjwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5MTk8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtOTcsNyArOTcsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTYyPC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkyMjwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMDYsNyArMTA2LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE3NzwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5MjY8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTE1LDcgKzExNSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxNzc8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTI5PC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTEyNCw3ICsxMjQsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDg3NDQxNTI0MTc3PC9pZD4NCisJCQk8aWQ+MTUwNzIyMDY3MDkzMjwvaWQ+DQogCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC0xMzMsNyArMTMzLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ4NzQ0MTUyNDE5MzwvaWQ+DQorCQkJPGlkPjE1MDcyMjA2NzA5MzY8L2lkPg0KIAkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTQyLDcgKzE0Miw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0ODc0NDE1MjQxOTM8L2lkPg0KKwkJCTxpZD4xNTA3MjIwNjcwOTM5PC9pZD4NCiAJCQk8bmFtZT5GdWxsX0RlbW8vU3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTE1MSw2ICsxNTEsMjQgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCisJCQk8aWQ+MTUwNzIyMDY3MDk0MzwvaWQ+DQorCQkJPG5hbWU+RnVsbF9EZW1vL1N0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQorCQkJPHR5cGU+NTwvdHlwZT4NCisJCQk8bWF0Y2hlcj4NCisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+DQorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS1TdHJlYW1CdWZmZXJEZW1vLmM8L2FyZ3VtZW50cz4NCisJCQk8L21hdGNoZXI+DQorCQk8L2ZpbHRlcj4NCisJCTxmaWx0ZXI+DQorCQkJPGlkPjE1MDcyMjA2NzA5NDY8L2lkPg0KKwkJCTxuYW1lPkZ1bGxfRGVtby9TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KKwkJCTx0eXBlPjU8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtTWVzc2FnZUJ1ZmZlckRlbW8uYzwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCiAJCQk8aWQ+MTQ4Njc2MTg1MTg2ODwvaWQ+DQogCQkJPG5hbWU+RnJlZVJUT1NfU291cmNlL3BvcnRhYmxlL0NDUzwvbmFtZT4NCiAJCQk8dHlwZT45PC90eXBlPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGNkZmRjODIuLjVhMzYwMjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KQEAgLTIyNSw1ICsxODQsMTAgQEAKICNkZWZpbmUgcG9ydENPTkZJR1VSRV9USU1FUl9GT1JfUlVOX1RJTUVfU1RBVFMoKQ0KICNkZWZpbmUgcG9ydEdFVF9SVU5fVElNRV9DT1VOVEVSX1ZBTFVFKCkJCTANCiANCisvKiBUaGUgdGVzdCB0aGF0IGNoZWNrcyB0aGUgdHJpZ2dlciBsZXZlbCBvbiBzdHJlYW0gYnVmZmVycyByZXF1aXJlcyBhbg0KK2FsbG93YWJsZSBtYXJnaW4gb2YgZXJyb3Igb24gc2xvd2VyIHByb2Nlc3NvcnMgKHNsb3dlciB0aGFuIHRoZSBXaW4zMg0KK21hY2hpbmUgb24gd2hpY2ggdGhlIHRlc3QgaXMgZGV2ZWxvcGVkKS4gKi8NCisjZGVmaW5lIGNvbmZpZ1NUUkVBTV9CVUZGRVJfVFJJR0dFUl9MRVZFTF9URVNUX01BUkdJTiAgIDQNCisNCiAjZW5kaWYgLyogRlJFRVJUT1NfQ09ORklHX0ggKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vUmVnVGVzdC5hc20gYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vUmVnVGVzdC5hc20KaW5kZXggYzdmOTczYy4uNmE4MzU0MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnVsbF9EZW1vL1JlZ1Rlc3QuYXNtCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9SZWdUZXN0LmFzbQpAQCAtMSw3MSArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotOyAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi07ICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLTsgICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi07ICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi07ICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotOyAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLTsgICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotOyAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotOyAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi07ICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLTsgICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi07ICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi07ICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLTsgICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIA0KIAkudGh1bWINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggZDNkMDY5OC4uNmMwOGI4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KQEAgLTEzMiw2ICs5MSw4IEBACiAjaW5jbHVkZSAiVGFza05vdGlmeS5oIg0KICNpbmNsdWRlICJJbnRTZW1UZXN0LmgiDQogI2luY2x1ZGUgIlN0YXRpY0FsbG9jYXRpb24uaCINCisjaW5jbHVkZSAiU3RyZWFtQnVmZmVyRGVtby5oIg0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyRGVtby5oIg0KIA0KIC8qIFByaW9yaXRpZXMgZm9yIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLiAqLw0KICNkZWZpbmUgbWFpblNFTV9URVNUX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDFVTCApDQpAQCAtMjMwLDYgKzE5MSw4IEBACiAJdlN0YXJ0RXZlbnRHcm91cFRhc2tzKCk7DQogCXZTdGFydFRhc2tOb3RpZnlUYXNrKCk7DQogCXZTdGFydEludGVycnVwdFNlbWFwaG9yZVRhc2tzKCk7DQorCXZTdGFydFN0cmVhbUJ1ZmZlclRhc2tzKCk7DQorCXZTdGFydE1lc3NhZ2VCdWZmZXJUYXNrcygpOw0KIA0KIAkvKiBDcmVhdGUgdGhlIHJlZ2lzdGVyIGNoZWNrIHRhc2tzLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZiB0aGlzCWZpbGUgKi8NCiAJeFRhc2tDcmVhdGUoIHBydlJlZ1Rlc3RUYXNrRW50cnkxLCAiUmVnMSIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgbWFpblJFR19URVNUX1RBU0tfMV9QQVJBTUVURVIsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCkBAIC0zMjQsMTcgKzI4NywyNyBAQAogCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxM1VMOw0KIAkJfQ0KIA0KKwkJaWYoIHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxNFVMOw0KKwkJfQ0KKw0KKwkJaWYoIHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXVsRXJyb3JGb3VuZCB8PSAxVUwgPDwgMTVVTDsNCisJCX0NCisNCiAJCS8qIENoZWNrIHRoYXQgdGhlIHJlZ2lzdGVyIHRlc3QgMSB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQogCQlpZiggdWxMYXN0UmVnVGVzdDFWYWx1ZSA9PSB1bFJlZ1Rlc3QxTG9vcENvdW50ZXIgKQ0KIAkJew0KLQkJCXVsRXJyb3JGb3VuZCB8PSAxVUwgPDwgMTVVTDsNCisJCQl1bEVycm9yRm91bmQgfD0gMVVMIDw8IDE2VUw7DQogCQl9DQogCQl1bExhc3RSZWdUZXN0MVZhbHVlID0gdWxSZWdUZXN0MUxvb3BDb3VudGVyOw0KIA0KIAkJLyogQ2hlY2sgdGhhdCB0aGUgcmVnaXN0ZXIgdGVzdCAyIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCiAJCWlmKCB1bExhc3RSZWdUZXN0MlZhbHVlID09IHVsUmVnVGVzdDJMb29wQ291bnRlciApDQogCQl7DQotCQkJdWxFcnJvckZvdW5kIHw9IDFVTCA8PCAxNlVMOw0KKwkJCXVsRXJyb3JGb3VuZCB8PSAxVUwgPDwgMTdVTDsNCiAJCX0NCiAJCXVsTGFzdFJlZ1Rlc3QyVmFsdWUgPSB1bFJlZ1Rlc3QyTG9vcENvdW50ZXI7DQogDQpAQCAtNDEzLDYgKzM4NiwxMCBAQAogDQogCQkvKiBVc2UgbXV0ZXhlcyBmcm9tIGludGVycnVwdHMuICovDQogCQl2SW50ZXJydXB0U2VtYXBob3JlUGVyaW9kaWNUZXN0KCk7DQorDQorCQkvKiBXcml0ZXMgdG8gc3RyZWFtIGJ1ZmZlciBieXRlIGJ5IGJ5dGUgdG8gdGVzdCB0aGUgc3RyZWFtIGJ1ZmZlciB0cmlnZ2VyDQorCQlsZXZlbCBmdW5jdGlvbmFsaXR5LiAqLw0KKwkJdlBlcmlvZGljU3RyZWFtQnVmZmVyUHJvY2Vzc2luZygpOw0KIAl9DQogDQogI2VuZGlmDQpAQCAtNDIyLDQgKzM5OSwzIEBACiANCiANCiANCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9TaW1wbHlfQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL1NpbXBseV9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGYxNTM3MjEuLjQ2M2U2OTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL1NpbXBseV9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL1NpbXBseV9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9tYWluLmMKaW5kZXggYzk2OTNlZi4uNmI5OTNiMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTRfU2ltcGxlTGlua19DQzMyMjBTRl9DQ1MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL21haW4uYwpAQCAtMSwyODggKzEsMjQ5IEBACi0vKgotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkCi0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uCi0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLgotCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uCi0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwKLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwKLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwKLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwKLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZwotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sCi0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoKLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKgotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKgotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoKLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZwotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/Ci0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uCi0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUKLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLgotCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywKLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUwotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4KLQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLgotCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuCi0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5Ci0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZAotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5LgotCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhCi0qLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsCi0gKiBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQotICogY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PIHNldHRpbmcgKGRlZmluZWQgaW4gRnJlZVJUT1NDb25maWcuaCkgaXMKLSAqIHVzZWQgdG8gc2VsZWN0IGJldHdlZW4gdGhlIHR3by4gIFRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaXMgaW1wbGVtZW50ZWQgYW5kCi0gKiBkZXNjcmliZWQgaW4gbWFpbl9ibGlua3kuYy4gIFRoZSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbgotICogaXMgaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbiBtYWluX2Z1bGwuYy4KLSAqCi0gKiBUaGUgYmxpbmt5IGRlbW8gdXNlcyBGcmVlUlRPUydzIHRpY2tsZXNzIGlkbGUgbW9kZSB0byByZWR1Y2UgcG93ZXIKLSAqIGNvbnN1bXB0aW9uLiAgU2VlIHRoZSBub3RlcyBvbiB0aGUgd2ViIHBhZ2UgYmVsb3cgcmVnYXJkaW5nIHRoZSBkaWZmZXJlbmNlCi0gKiBpbiBwb3dlciBzYXZpbmcgdGhhdCBjYW4gYmUgYWNoaWV2ZWQgYmV0d2VlbiB1c2luZyB0aGUgZ2VuZXJpYyB0aWNrbGVzcwotICogaW1wbGVtZW50YXRpb24gKGFzIHVzZWQgYnkgdGhlIGJsaW5reSBkZW1vKSBhbmQgYSB0aWNrbGVzcyBpbXBsZW1lbnRhdGlvbgotICogdGhhdCBpcyB0YWlsb3JlZCBzcGVjaWZpY2FsbHkgdG8gdGhlIENDMzIyMC4KLSAqCi0gKiBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUgY29kZSB0aGF0IGlzIG5vdCBkZW1vIHNwZWNpZmljLgotICoKLSAqIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9USV9DQzMyMjBfU2ltcGxlTGlua19GcmVlUlRPU19EZW1vLmh0bWwgZm9yCi0gKiBpbnN0cnVjdGlvbnMuCi0gKgotICovCi0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLwotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLS8qIFRJIGluY2x1ZGVzLiAqLwotI2luY2x1ZGUgPHRpL2RyaXZlcnMvR1BJTy5oPgotI2luY2x1ZGUgPHRpL2JvYXJkcy9DQzMyMjBTRl9MQVVOQ0hYTC9Cb2FyZC5oPgotCi0vKiBLZXJuZWwgaW5jbHVkZXMuICovCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCIKLSNpbmNsdWRlICJ0YXNrLmgiCi0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKgotICogU2V0IHVwIHRoZSBoYXJkd2FyZSByZWFkeSB0byBydW4gdGhpcyBkZW1vLgotICovCi1zdGF0aWMgdm9pZCBwcnZTZXR1cEhhcmR3YXJlKCB2b2lkICk7Ci0KLS8qCi0gKiBtYWluX2JsaW5reSgpIGlzIHVzZWQgd2hlbiBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gaXMgc2V0IHRvIDEuCi0gKiBtYWluX2Z1bGwoKSBpcyB1c2VkIHdoZW4gY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PIGlzIHNldCB0byAwLgotICovCi1leHRlcm4gdm9pZCBtYWluX2JsaW5reSggdm9pZCApOwotZXh0ZXJuIHZvaWQgbWFpbl9mdWxsKCB2b2lkICk7Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi1pbnQgbWFpbiggdm9pZCApCi17Ci0JLyogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1RJX0NDMzIyMF9TaW1wbGVMaW5rX0ZyZWVSVE9TX0RlbW8uaHRtbCBmb3IKLSAgICBpbnN0cnVjdGlvbnMuICovCi0KLQotCS8qIFByZXBhcmUgdGhlIGhhcmR3YXJlIHRvIHJ1biB0aGlzIGRlbW8uICovCi0JcHJ2U2V0dXBIYXJkd2FyZSgpOwotCi0JLyogVGhlIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyBzZXR0aW5nIGlzIGRlc2NyaWJlZCBhdCB0aGUgdG9wCi0Jb2YgdGhpcyBmaWxlLiAqLwotCSNpZiggY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PID09IDEgKQotCXsKLQkJbWFpbl9ibGlua3koKTsKLQl9Ci0JI2Vsc2UKLQl7Ci0JCW1haW5fZnVsbCgpOwotCX0KLQkjZW5kaWYKLQotCXJldHVybiAwOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLXN0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKQotewotICAgIC8qIENhbGwgYm9hcmQgaW5pdCBmdW5jdGlvbnMgKi8KLSAgICBCb2FyZF9pbml0R2VuZXJhbCgpOwotICAgIEJvYXJkX2luaXRHUElPKCk7Ci0gICAgR1BJT193cml0ZSggQm9hcmRfTEVEMCwgQm9hcmRfR1BJT19MRURfT0ZGICk7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotdm9pZCB2TWFpblRvZ2dsZUxFRCggdm9pZCApCi17Ci1zdGF0aWMgdWludDMyX3QgdWxMRURTdGF0ZSA9IEJvYXJkX0dQSU9fTEVEX09GRjsKLQotICAgIHVsTEVEU3RhdGUgPSAhdWxMRURTdGF0ZTsKLSAgICBHUElPX3dyaXRlKCBCb2FyZF9MRUQwLCB1bExFRFN0YXRlICk7Ci19Ci0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLQotdm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICkKLXsKLQkvKiB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZgotCWNvbmZpZ1VTRV9NQUxMT0NfRkFJTEVEX0hPT0sgaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIEl0IGlzIGEgaG9vawotCWZ1bmN0aW9uIHRoYXQgd2lsbCBnZXQgY2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscy4KLQlwdlBvcnRNYWxsb2MoKSBpcyBjYWxsZWQgaW50ZXJuYWxseSBieSB0aGUga2VybmVsIHdoZW5ldmVyIGEgdGFzaywgcXVldWUsCi0JdGltZXIgb3Igc2VtYXBob3JlIGlzIGNyZWF0ZWQuICBJdCBpcyBhbHNvIGNhbGxlZCBieSB2YXJpb3VzIHBhcnRzIG9mIHRoZQotCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYyBvciBoZWFwXzIuYyBhcmUgdXNlZCwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUKLQloZWFwIGF2YWlsYWJsZSB0byBwdlBvcnRNYWxsb2MoKSBpcyBkZWZpbmVkIGJ5IGNvbmZpZ1RPVEFMX0hFQVBfU0laRSBpbgotCUZyZWVSVE9TQ29uZmlnLmgsIGFuZCB0aGUgeFBvcnRHZXRGcmVlSGVhcFNpemUoKSBBUEkgZnVuY3Rpb24gY2FuIGJlIHVzZWQKLQl0byBxdWVyeSB0aGUgc2l6ZSBvZiBmcmVlIGhlYXAgc3BhY2UgdGhhdCByZW1haW5zIChhbHRob3VnaCBpdCBkb2VzIG5vdAotCXByb3ZpZGUgaW5mb3JtYXRpb24gb24gaG93IHRoZSByZW1haW5pbmcgaGVhcCBtaWdodCBiZSBmcmFnbWVudGVkKS4gKi8KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7Ci0JZm9yKCA7OyApOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLXZvaWQgdkFwcGxpY2F0aW9uSWRsZUhvb2soIHZvaWQgKQotewotCS8qIHZBcHBsaWNhdGlvbklkbGVIb29rKCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBjb25maWdVU0VfSURMRV9IT09LIGlzIHNldAotCXRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIEl0IHdpbGwgYmUgY2FsbGVkIG9uIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBpZGxlCi0JdGFzay4gIEl0IGlzIGVzc2VudGlhbCB0aGF0IGNvZGUgYWRkZWQgdG8gdGhpcyBob29rIGZ1bmN0aW9uIG5ldmVyIGF0dGVtcHRzCi0JdG8gYmxvY2sgaW4gYW55IHdheSAoZm9yIGV4YW1wbGUsIGNhbGwgeFF1ZXVlUmVjZWl2ZSgpIHdpdGggYSBibG9jayB0aW1lCi0Jc3BlY2lmaWVkLCBvciBjYWxsIHZUYXNrRGVsYXkoKSkuICBJZiB0aGUgYXBwbGljYXRpb24gbWFrZXMgdXNlIG9mIHRoZQotCXZUYXNrRGVsZXRlKCkgQVBJIGZ1bmN0aW9uIChhcyB0aGlzIGRlbW8gYXBwbGljYXRpb24gZG9lcykgdGhlbiBpdCBpcyBhbHNvCi0JaW1wb3J0YW50IHRoYXQgdkFwcGxpY2F0aW9uSWRsZUhvb2soKSBpcyBwZXJtaXR0ZWQgdG8gcmV0dXJuIHRvIGl0cyBjYWxsaW5nCi0JZnVuY3Rpb24sIGJlY2F1c2UgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpZGxlIHRhc2sgdG8gY2xlYW4gdXAKLQltZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBrZXJuZWwgdG8gYW55IHRhc2sgdGhhdCBoYXMgc2luY2UgYmVlbiBkZWxldGVkLiAqLwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLXZvaWQgdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soIFRhc2tIYW5kbGVfdCBweFRhc2ssIGNoYXIgKnBjVGFza05hbWUgKQotewotCSggdm9pZCApIHBjVGFza05hbWU7Ci0JKCB2b2lkICkgcHhUYXNrOwotCi0JLyogUnVuIHRpbWUgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgcGVyZm9ybWVkIGlmCi0JY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XIGlzIGRlZmluZWQgdG8gMSBvciAyLiAgVGhpcyBob29rCi0JZnVuY3Rpb24gaXMgY2FsbGVkIGlmIGEgc3RhY2sgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICovCi0JdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOwotCWZvciggOzsgKTsKLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi12b2lkICptYWxsb2MoIHNpemVfdCB4U2l6ZSApCi17Ci0JLyogVGhlcmUgc2hvdWxkIG5vdCBiZSBhIGhlYXAgZGVmaW5lZCwgc28gdHJhcCBhbnkgYXR0ZW1wdHMgdG8gY2FsbAotCW1hbGxvYy4gKi8KLQl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7Ci0JZm9yKCA7OyApOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIGNvbmZpZ1VTRV9TVEFUSUNfQUxMT0NBVElPTiBpcyBzZXQgdG8gMSwgc28gdGhlIGFwcGxpY2F0aW9uIG11c3QgcHJvdmlkZSBhbgotaW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0SWRsZVRhc2tNZW1vcnkoKSB0byBwcm92aWRlIHRoZSBtZW1vcnkgdGhhdCBpcwotdXNlZCBieSB0aGUgSWRsZSB0YXNrLiAqLwotdm9pZCB2QXBwbGljYXRpb25HZXRJZGxlVGFza01lbW9yeSggU3RhdGljVGFza190ICoqcHB4SWRsZVRhc2tUQ0JCdWZmZXIsIFN0YWNrVHlwZV90ICoqcHB4SWRsZVRhc2tTdGFja0J1ZmZlciwgdWludDMyX3QgKnB1bElkbGVUYXNrU3RhY2tTaXplICkKLXsKLS8qIElmIHRoZSBidWZmZXJzIHRvIGJlIHByb3ZpZGVkIHRvIHRoZSBJZGxlIHRhc2sgYXJlIGRlY2xhcmVkIGluc2lkZSB0aGlzCi1mdW5jdGlvbiB0aGVuIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBzdGF0aWMgLSBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbG9jYXRlZCBvbgotdGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovCi1zdGF0aWMgU3RhdGljVGFza190IHhJZGxlVGFza1RDQjsKLXN0YXRpYyBTdGFja1R5cGVfdCB1eElkbGVUYXNrU3RhY2tbIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSBdOwotCi0gICAgLyogUGFzcyBvdXQgYSBwb2ludGVyIHRvIHRoZSBTdGF0aWNUYXNrX3Qgc3RydWN0dXJlIGluIHdoaWNoIHRoZSBJZGxlIHRhc2sncwotICAgIHN0YXRlIHdpbGwgYmUgc3RvcmVkLiAqLwotICAgICpwcHhJZGxlVGFza1RDQkJ1ZmZlciA9ICZ4SWRsZVRhc2tUQ0I7Ci0KLSAgICAvKiBQYXNzIG91dCB0aGUgYXJyYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIElkbGUgdGFzaydzIHN0YWNrLiAqLwotICAgICpwcHhJZGxlVGFza1N0YWNrQnVmZmVyID0gdXhJZGxlVGFza1N0YWNrOwotCi0gICAgLyogUGFzcyBvdXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgKnBweElkbGVUYXNrU3RhY2tCdWZmZXIuCi0gICAgTm90ZSB0aGF0LCBhcyB0aGUgYXJyYXkgaXMgbmVjZXNzYXJpbHkgb2YgdHlwZSBTdGFja1R5cGVfdCwKLSAgICBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovCi0gICAgKnB1bElkbGVUYXNrU3RhY2tTaXplID0gY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIGNvbmZpZ1VTRV9TVEFUSUNfQUxMT0NBVElPTiBhbmQgY29uZmlnVVNFX1RJTUVSUyBhcmUgYm90aCBzZXQgdG8gMSwgc28gdGhlCi1hcHBsaWNhdGlvbiBtdXN0IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCkKLXRvIHByb3ZpZGUgdGhlIG1lbW9yeSB0aGF0IGlzIHVzZWQgYnkgdGhlIFRpbWVyIHNlcnZpY2UgdGFzay4gKi8KLXZvaWQgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhUaW1lclRhc2tUQ0JCdWZmZXIsIFN0YWNrVHlwZV90ICoqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIsIHVpbnQzMl90ICpwdWxUaW1lclRhc2tTdGFja1NpemUgKQotewotLyogSWYgdGhlIGJ1ZmZlcnMgdG8gYmUgcHJvdmlkZWQgdG8gdGhlIFRpbWVyIHRhc2sgYXJlIGRlY2xhcmVkIGluc2lkZSB0aGlzCi1mdW5jdGlvbiB0aGVuIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBzdGF0aWMgLSBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbG9jYXRlZCBvbgotdGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovCi1zdGF0aWMgU3RhdGljVGFza190IHhUaW1lclRhc2tUQ0I7Ci1zdGF0aWMgU3RhY2tUeXBlX3QgdXhUaW1lclRhc2tTdGFja1sgY29uZmlnVElNRVJfVEFTS19TVEFDS19ERVBUSCBdOwotCi0gICAgLyogUGFzcyBvdXQgYSBwb2ludGVyIHRvIHRoZSBTdGF0aWNUYXNrX3Qgc3RydWN0dXJlIGluIHdoaWNoIHRoZSBUaW1lcgotICAgIHRhc2sncyBzdGF0ZSB3aWxsIGJlIHN0b3JlZC4gKi8KLSAgICAqcHB4VGltZXJUYXNrVENCQnVmZmVyID0gJnhUaW1lclRhc2tUQ0I7Ci0KLSAgICAvKiBQYXNzIG91dCB0aGUgYXJyYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIFRpbWVyIHRhc2sncyBzdGFjay4gKi8KLSAgICAqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIgPSB1eFRpbWVyVGFza1N0YWNrOwotCi0gICAgLyogUGFzcyBvdXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgKnBweFRpbWVyVGFza1N0YWNrQnVmZmVyLgotICAgIE5vdGUgdGhhdCwgYXMgdGhlIGFycmF5IGlzIG5lY2Vzc2FyaWx5IG9mIHR5cGUgU3RhY2tUeXBlX3QsCi0gICAgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIGlzIHNwZWNpZmllZCBpbiB3b3Jkcywgbm90IGJ5dGVzLiAqLwotICAgICpwdWxUaW1lclRhc2tTdGFja1NpemUgPSBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIOwotfQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0KLS8qIENhdGNoIGFzc2VydHMgc28gdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIG9mIHRoZSBhc3NlcnQgY2FuIGJlIHZpZXdlZC4gKi8KLXZvaWQgdk1haW5Bc3NlcnRDYWxsZWQoIGNvbnN0IGNoYXIgKnBjRmlsZU5hbWUsIHVpbnQzMl90IHVsTGluZU51bWJlciApCi17Ci0gICAgdGFza0VOVEVSX0NSSVRJQ0FMKCk7Ci0gICAgZm9yKCA7OyApCi0gICAgewotICAgICAgICAvKiBVc2UgdGhlIHZhcmlhYmxlcyB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIGFuZCBpbiBhbiBhdHRlbXB0IHRvCi0gICAgICAgIGVuc3VyZSB0aGV5IGNhbiBiZSB2aWV3ZWQgaW4gdGhlIGRlYnVnZ2VyLiAgSWYgdGhlIHZhcmlhYmxlcyBnZXQKLSAgICAgICAgb3B0aW1pc2VkIGF3YXkgdGhlbiBzZXQgY29weSB0aGVpciB2YWx1ZXMgdG8gZmlsZSBzY29wZSBvciBnbG9iYWxzIHRoZW4KLSAgICAgICAgdmlldyB0aGUgdmFyaWFibGVzIHRoZXkgYXJlIGNvcGllZCB0by4gKi8KLSAgICAgICAgKCB2b2lkICkgcGNGaWxlTmFtZTsKLSAgICAgICAgKCB2b2lkICkgdWxMaW5lTnVtYmVyOwotICAgIH0KLX0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotCi0vKiBUbyBlbmFibGUgdGhlIGxpYnJhcmllcyB0byBidWlsZC4gKi8KLXZvaWQgUG93ZXJDQzMyWFhfZW50ZXJMUERTKCB2b2lkICpkcml2ZXJsaWJGdW5jICkKLXsKLSAgICAoIHZvaWQgKSBkcml2ZXJsaWJGdW5jOwotCi0gICAgLyogVGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgc28gdHJhcCBhbnkgY2FsbHMgdG8gaXQgYnkgaGFsdGluZwotICAgIGhlcmUuICovCi0gICAgY29uZmlnQVNTRVJUKCBkcml2ZXJsaWJGdW5jID09IE5VTEwgICk7Ci19CisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQorICogYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCisgKiBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gc2V0dGluZyAoZGVmaW5lZCBpbiBGcmVlUlRPU0NvbmZpZy5oKSBpcw0KKyAqIHVzZWQgdG8gc2VsZWN0IGJldHdlZW4gdGhlIHR3by4gIFRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaXMgaW1wbGVtZW50ZWQgYW5kDQorICogZGVzY3JpYmVkIGluIG1haW5fYmxpbmt5LmMuICBUaGUgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24NCisgKiBpcyBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fZnVsbC5jLg0KKyAqDQorICogVGhlIGJsaW5reSBkZW1vIHVzZXMgRnJlZVJUT1MncyB0aWNrbGVzcyBpZGxlIG1vZGUgdG8gcmVkdWNlIHBvd2VyDQorICogY29uc3VtcHRpb24uICBTZWUgdGhlIG5vdGVzIG9uIHRoZSB3ZWIgcGFnZSBiZWxvdyByZWdhcmRpbmcgdGhlIGRpZmZlcmVuY2UNCisgKiBpbiBwb3dlciBzYXZpbmcgdGhhdCBjYW4gYmUgYWNoaWV2ZWQgYmV0d2VlbiB1c2luZyB0aGUgZ2VuZXJpYyB0aWNrbGVzcw0KKyAqIGltcGxlbWVudGF0aW9uIChhcyB1c2VkIGJ5IHRoZSBibGlua3kgZGVtbykgYW5kIGEgdGlja2xlc3MgaW1wbGVtZW50YXRpb24NCisgKiB0aGF0IGlzIHRhaWxvcmVkIHNwZWNpZmljYWxseSB0byB0aGUgQ0MzMjIwLg0KKyAqDQorICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGNvZGUgdGhhdCBpcyBub3QgZGVtbyBzcGVjaWZpYy4NCisgKg0KKyAqIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9USV9DQzMyMjBfU2ltcGxlTGlua19GcmVlUlRPU19EZW1vLmh0bWwgZm9yDQorICogaW5zdHJ1Y3Rpb25zLg0KKyAqDQorICovDQorDQorLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorDQorLyogVEkgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgPHRpL2RyaXZlcnMvR1BJTy5oPg0KKyNpbmNsdWRlIDx0aS9ib2FyZHMvQ0MzMjIwU0ZfTEFVTkNIWEwvQm9hcmQuaD4NCisNCisvKiBLZXJuZWwgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFNldCB1cCB0aGUgaGFyZHdhcmUgcmVhZHkgdG8gcnVuIHRoaXMgZGVtby4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZTZXR1cEhhcmR3YXJlKCB2b2lkICk7DQorDQorLyoNCisgKiBtYWluX2JsaW5reSgpIGlzIHVzZWQgd2hlbiBjb25maWdDUkVBVEVfU0lNUExFX1RJQ0tMRVNTX0RFTU8gaXMgc2V0IHRvIDEuDQorICogbWFpbl9mdWxsKCkgaXMgdXNlZCB3aGVuIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyBpcyBzZXQgdG8gMC4NCisgKi8NCitleHRlcm4gdm9pZCBtYWluX2JsaW5reSggdm9pZCApOw0KK2V4dGVybiB2b2lkIG1haW5fZnVsbCggdm9pZCApOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK2ludCBtYWluKCB2b2lkICkNCit7DQorCS8qIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9USV9DQzMyMjBfU2ltcGxlTGlua19GcmVlUlRPU19EZW1vLmh0bWwgZm9yDQorICAgIGluc3RydWN0aW9ucy4gKi8NCisNCisNCisJLyogUHJlcGFyZSB0aGUgaGFyZHdhcmUgdG8gcnVuIHRoaXMgZGVtby4gKi8NCisJcHJ2U2V0dXBIYXJkd2FyZSgpOw0KKw0KKwkvKiBUaGUgY29uZmlnQ1JFQVRFX1NJTVBMRV9USUNLTEVTU19ERU1PIHNldHRpbmcgaXMgZGVzY3JpYmVkIGF0IHRoZSB0b3ANCisJb2YgdGhpcyBmaWxlLiAqLw0KKwkjaWYoIGNvbmZpZ0NSRUFURV9TSU1QTEVfVElDS0xFU1NfREVNTyA9PSAxICkNCisJew0KKwkJbWFpbl9ibGlua3koKTsNCisJfQ0KKwkjZWxzZQ0KKwl7DQorCQltYWluX2Z1bGwoKTsNCisJfQ0KKwkjZW5kaWYNCisNCisJcmV0dXJuIDA7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKQ0KK3sNCisgICAgLyogQ2FsbCBib2FyZCBpbml0IGZ1bmN0aW9ucyAqLw0KKyAgICBCb2FyZF9pbml0R2VuZXJhbCgpOw0KKyAgICBCb2FyZF9pbml0R1BJTygpOw0KKyAgICBHUElPX3dyaXRlKCBCb2FyZF9MRUQwLCBCb2FyZF9HUElPX0xFRF9PRkYgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2TWFpblRvZ2dsZUxFRCggdm9pZCApDQorew0KK3N0YXRpYyB1aW50MzJfdCB1bExFRFN0YXRlID0gQm9hcmRfR1BJT19MRURfT0ZGOw0KKw0KKyAgICB1bExFRFN0YXRlID0gIXVsTEVEU3RhdGU7DQorICAgIEdQSU9fd3JpdGUoIEJvYXJkX0xFRDAsIHVsTEVEU3RhdGUgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICkNCit7DQorCS8qIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soKSB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmDQorCWNvbmZpZ1VTRV9NQUxMT0NfRkFJTEVEX0hPT0sgaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIEl0IGlzIGEgaG9vaw0KKwlmdW5jdGlvbiB0aGF0IHdpbGwgZ2V0IGNhbGxlZCBpZiBhIGNhbGwgdG8gcHZQb3J0TWFsbG9jKCkgZmFpbHMuDQorCXB2UG9ydE1hbGxvYygpIGlzIGNhbGxlZCBpbnRlcm5hbGx5IGJ5IHRoZSBrZXJuZWwgd2hlbmV2ZXIgYSB0YXNrLCBxdWV1ZSwNCisJdGltZXIgb3Igc2VtYXBob3JlIGlzIGNyZWF0ZWQuICBJdCBpcyBhbHNvIGNhbGxlZCBieSB2YXJpb3VzIHBhcnRzIG9mIHRoZQ0KKwlkZW1vIGFwcGxpY2F0aW9uLiAgSWYgaGVhcF8xLmMgb3IgaGVhcF8yLmMgYXJlIHVzZWQsIHRoZW4gdGhlIHNpemUgb2YgdGhlDQorCWhlYXAgYXZhaWxhYmxlIHRvIHB2UG9ydE1hbGxvYygpIGlzIGRlZmluZWQgYnkgY29uZmlnVE9UQUxfSEVBUF9TSVpFIGluDQorCUZyZWVSVE9TQ29uZmlnLmgsIGFuZCB0aGUgeFBvcnRHZXRGcmVlSGVhcFNpemUoKSBBUEkgZnVuY3Rpb24gY2FuIGJlIHVzZWQNCisJdG8gcXVlcnkgdGhlIHNpemUgb2YgZnJlZSBoZWFwIHNwYWNlIHRoYXQgcmVtYWlucyAoYWx0aG91Z2ggaXQgZG9lcyBub3QNCisJcHJvdmlkZSBpbmZvcm1hdGlvbiBvbiBob3cgdGhlIHJlbWFpbmluZyBoZWFwIG1pZ2h0IGJlIGZyYWdtZW50ZWQpLiAqLw0KKwl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQorCWZvciggOzsgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApDQorew0KKwkvKiB2QXBwbGljYXRpb25JZGxlSG9vaygpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgY29uZmlnVVNFX0lETEVfSE9PSyBpcyBzZXQNCisJdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgd2lsbCBiZSBjYWxsZWQgb24gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGlkbGUNCisJdGFzay4gIEl0IGlzIGVzc2VudGlhbCB0aGF0IGNvZGUgYWRkZWQgdG8gdGhpcyBob29rIGZ1bmN0aW9uIG5ldmVyIGF0dGVtcHRzDQorCXRvIGJsb2NrIGluIGFueSB3YXkgKGZvciBleGFtcGxlLCBjYWxsIHhRdWV1ZVJlY2VpdmUoKSB3aXRoIGEgYmxvY2sgdGltZQ0KKwlzcGVjaWZpZWQsIG9yIGNhbGwgdlRhc2tEZWxheSgpKS4gIElmIHRoZSBhcHBsaWNhdGlvbiBtYWtlcyB1c2Ugb2YgdGhlDQorCXZUYXNrRGVsZXRlKCkgQVBJIGZ1bmN0aW9uIChhcyB0aGlzIGRlbW8gYXBwbGljYXRpb24gZG9lcykgdGhlbiBpdCBpcyBhbHNvDQorCWltcG9ydGFudCB0aGF0IHZBcHBsaWNhdGlvbklkbGVIb29rKCkgaXMgcGVybWl0dGVkIHRvIHJldHVybiB0byBpdHMgY2FsbGluZw0KKwlmdW5jdGlvbiwgYmVjYXVzZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGlkbGUgdGFzayB0byBjbGVhbiB1cA0KKwltZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBrZXJuZWwgdG8gYW55IHRhc2sgdGhhdCBoYXMgc2luY2UgYmVlbiBkZWxldGVkLiAqLw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCBUYXNrSGFuZGxlX3QgcHhUYXNrLCBjaGFyICpwY1Rhc2tOYW1lICkNCit7DQorCSggdm9pZCApIHBjVGFza05hbWU7DQorCSggdm9pZCApIHB4VGFzazsNCisNCisJLyogUnVuIHRpbWUgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgcGVyZm9ybWVkIGlmDQorCWNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyBpcyBkZWZpbmVkIHRvIDEgb3IgMi4gIFRoaXMgaG9vaw0KKwlmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYSBzdGFjayBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gKi8NCisJdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOw0KKwlmb3IoIDs7ICk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgKm1hbGxvYyggc2l6ZV90IHhTaXplICkNCit7DQorCS8qIFRoZXJlIHNob3VsZCBub3QgYmUgYSBoZWFwIGRlZmluZWQsIHNvIHRyYXAgYW55IGF0dGVtcHRzIHRvIGNhbGwNCisJbWFsbG9jLiAqLw0KKwl0YXNrRElTQUJMRV9JTlRFUlJVUFRTKCk7DQorCWZvciggOzsgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogY29uZmlnVVNFX1NUQVRJQ19BTExPQ0FUSU9OIGlzIHNldCB0byAxLCBzbyB0aGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGFuDQoraW1wbGVtZW50YXRpb24gb2YgdkFwcGxpY2F0aW9uR2V0SWRsZVRhc2tNZW1vcnkoKSB0byBwcm92aWRlIHRoZSBtZW1vcnkgdGhhdCBpcw0KK3VzZWQgYnkgdGhlIElkbGUgdGFzay4gKi8NCit2b2lkIHZBcHBsaWNhdGlvbkdldElkbGVUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhJZGxlVGFza1RDQkJ1ZmZlciwgU3RhY2tUeXBlX3QgKipwcHhJZGxlVGFza1N0YWNrQnVmZmVyLCB1aW50MzJfdCAqcHVsSWRsZVRhc2tTdGFja1NpemUgKQ0KK3sNCisvKiBJZiB0aGUgYnVmZmVycyB0byBiZSBwcm92aWRlZCB0byB0aGUgSWRsZSB0YXNrIGFyZSBkZWNsYXJlZCBpbnNpZGUgdGhpcw0KK2Z1bmN0aW9uIHRoZW4gdGhleSBtdXN0IGJlIGRlY2xhcmVkIHN0YXRpYyAtIG90aGVyd2lzZSB0aGV5IHdpbGwgYmUgYWxsb2NhdGVkIG9uDQordGhlIHN0YWNrIGFuZCBzbyBub3QgZXhpc3RzIGFmdGVyIHRoaXMgZnVuY3Rpb24gZXhpdHMuICovDQorc3RhdGljIFN0YXRpY1Rhc2tfdCB4SWRsZVRhc2tUQ0I7DQorc3RhdGljIFN0YWNrVHlwZV90IHV4SWRsZVRhc2tTdGFja1sgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIF07DQorDQorICAgIC8qIFBhc3Mgb3V0IGEgcG9pbnRlciB0byB0aGUgU3RhdGljVGFza190IHN0cnVjdHVyZSBpbiB3aGljaCB0aGUgSWRsZSB0YXNrJ3MNCisgICAgc3RhdGUgd2lsbCBiZSBzdG9yZWQuICovDQorICAgICpwcHhJZGxlVGFza1RDQkJ1ZmZlciA9ICZ4SWRsZVRhc2tUQ0I7DQorDQorICAgIC8qIFBhc3Mgb3V0IHRoZSBhcnJheSB0aGF0IHdpbGwgYmUgdXNlZCBhcyB0aGUgSWRsZSB0YXNrJ3Mgc3RhY2suICovDQorICAgICpwcHhJZGxlVGFza1N0YWNrQnVmZmVyID0gdXhJZGxlVGFza1N0YWNrOw0KKw0KKyAgICAvKiBQYXNzIG91dCB0aGUgc2l6ZSBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSAqcHB4SWRsZVRhc2tTdGFja0J1ZmZlci4NCisgICAgTm90ZSB0aGF0LCBhcyB0aGUgYXJyYXkgaXMgbmVjZXNzYXJpbHkgb2YgdHlwZSBTdGFja1R5cGVfdCwNCisgICAgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFIGlzIHNwZWNpZmllZCBpbiB3b3Jkcywgbm90IGJ5dGVzLiAqLw0KKyAgICAqcHVsSWRsZVRhc2tTdGFja1NpemUgPSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkU7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIGNvbmZpZ1VTRV9TVEFUSUNfQUxMT0NBVElPTiBhbmQgY29uZmlnVVNFX1RJTUVSUyBhcmUgYm90aCBzZXQgdG8gMSwgc28gdGhlDQorYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHZBcHBsaWNhdGlvbkdldFRpbWVyVGFza01lbW9yeSgpDQordG8gcHJvdmlkZSB0aGUgbWVtb3J5IHRoYXQgaXMgdXNlZCBieSB0aGUgVGltZXIgc2VydmljZSB0YXNrLiAqLw0KK3ZvaWQgdkFwcGxpY2F0aW9uR2V0VGltZXJUYXNrTWVtb3J5KCBTdGF0aWNUYXNrX3QgKipwcHhUaW1lclRhc2tUQ0JCdWZmZXIsIFN0YWNrVHlwZV90ICoqcHB4VGltZXJUYXNrU3RhY2tCdWZmZXIsIHVpbnQzMl90ICpwdWxUaW1lclRhc2tTdGFja1NpemUgKQ0KK3sNCisvKiBJZiB0aGUgYnVmZmVycyB0byBiZSBwcm92aWRlZCB0byB0aGUgVGltZXIgdGFzayBhcmUgZGVjbGFyZWQgaW5zaWRlIHRoaXMNCitmdW5jdGlvbiB0aGVuIHRoZXkgbXVzdCBiZSBkZWNsYXJlZCBzdGF0aWMgLSBvdGhlcndpc2UgdGhleSB3aWxsIGJlIGFsbG9jYXRlZCBvbg0KK3RoZSBzdGFjayBhbmQgc28gbm90IGV4aXN0cyBhZnRlciB0aGlzIGZ1bmN0aW9uIGV4aXRzLiAqLw0KK3N0YXRpYyBTdGF0aWNUYXNrX3QgeFRpbWVyVGFza1RDQjsNCitzdGF0aWMgU3RhY2tUeXBlX3QgdXhUaW1lclRhc2tTdGFja1sgY29uZmlnVElNRVJfVEFTS19TVEFDS19ERVBUSCBdOw0KKw0KKyAgICAvKiBQYXNzIG91dCBhIHBvaW50ZXIgdG8gdGhlIFN0YXRpY1Rhc2tfdCBzdHJ1Y3R1cmUgaW4gd2hpY2ggdGhlIFRpbWVyDQorICAgIHRhc2sncyBzdGF0ZSB3aWxsIGJlIHN0b3JlZC4gKi8NCisgICAgKnBweFRpbWVyVGFza1RDQkJ1ZmZlciA9ICZ4VGltZXJUYXNrVENCOw0KKw0KKyAgICAvKiBQYXNzIG91dCB0aGUgYXJyYXkgdGhhdCB3aWxsIGJlIHVzZWQgYXMgdGhlIFRpbWVyIHRhc2sncyBzdGFjay4gKi8NCisgICAgKnBweFRpbWVyVGFza1N0YWNrQnVmZmVyID0gdXhUaW1lclRhc2tTdGFjazsNCisNCisgICAgLyogUGFzcyBvdXQgdGhlIHNpemUgb2YgdGhlIGFycmF5IHBvaW50ZWQgdG8gYnkgKnBweFRpbWVyVGFza1N0YWNrQnVmZmVyLg0KKyAgICBOb3RlIHRoYXQsIGFzIHRoZSBhcnJheSBpcyBuZWNlc3NhcmlseSBvZiB0eXBlIFN0YWNrVHlwZV90LA0KKyAgICBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgaXMgc3BlY2lmaWVkIGluIHdvcmRzLCBub3QgYnl0ZXMuICovDQorICAgICpwdWxUaW1lclRhc2tTdGFja1NpemUgPSBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRIOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBDYXRjaCBhc3NlcnRzIHNvIHRoZSBmaWxlIGFuZCBsaW5lIG51bWJlciBvZiB0aGUgYXNzZXJ0IGNhbiBiZSB2aWV3ZWQuICovDQordm9pZCB2TWFpbkFzc2VydENhbGxlZCggY29uc3QgY2hhciAqcGNGaWxlTmFtZSwgdWludDMyX3QgdWxMaW5lTnVtYmVyICkNCit7DQordm9sYXRpbGUgQmFzZVR5cGVfdCB4U2V0VG9Ob25aZXJvVG9TdGVwT3V0T2ZMb29wID0gMDsNCisNCisgICAgdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorICAgIHdoaWxlKCB4U2V0VG9Ob25aZXJvVG9TdGVwT3V0T2ZMb29wID09IDAgKQ0KKyAgICB7DQorICAgICAgICAvKiBVc2UgdGhlIHZhcmlhYmxlcyB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIGFuZCBpbiBhbiBhdHRlbXB0IHRvDQorICAgICAgICBlbnN1cmUgdGhleSBjYW4gYmUgdmlld2VkIGluIHRoZSBkZWJ1Z2dlci4gIElmIHRoZSB2YXJpYWJsZXMgZ2V0DQorICAgICAgICBvcHRpbWlzZWQgYXdheSB0aGVuIHNldCBjb3B5IHRoZWlyIHZhbHVlcyB0byBmaWxlIHNjb3BlIG9yIGdsb2JhbHMgdGhlbg0KKyAgICAgICAgdmlldyB0aGUgdmFyaWFibGVzIHRoZXkgYXJlIGNvcGllZCB0by4gKi8NCisgICAgICAgICggdm9pZCApIHBjRmlsZU5hbWU7DQorICAgICAgICAoIHZvaWQgKSB1bExpbmVOdW1iZXI7DQorICAgIH0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogVG8gZW5hYmxlIHRoZSBsaWJyYXJpZXMgdG8gYnVpbGQuICovDQordm9pZCBQb3dlckNDMzJYWF9lbnRlckxQRFMoIHZvaWQgKmRyaXZlcmxpYkZ1bmMgKQ0KK3sNCisgICAgKCB2b2lkICkgZHJpdmVybGliRnVuYzsNCisNCisgICAgLyogVGhpcyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgc28gdHJhcCBhbnkgY2FsbHMgdG8gaXQgYnkgaGFsdGluZw0KKyAgICBoZXJlLiAqLw0KKyAgICBjb25maWdBU1NFUlQoIGRyaXZlcmxpYkZ1bmMgPT0gTlVMTCAgKTsNCit9DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9wcmludGYtc3RkYXJnLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9wcmludGYtc3RkYXJnLmMKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9wcmludGYtc3RkYXJnLmMKcmVuYW1lIHRvIEZyZWVSVE9TL0RlbW8vQ09SVEVYX000X1NpbXBsZUxpbmtfQ0MzMjIwU0ZfQ0NTL3ByaW50Zi1zdGRhcmcuYwppbmRleCA2YTA1MTkzLi5hMjVjYWI2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL3ByaW50Zi1zdGRhcmcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NNF9TaW1wbGVMaW5rX0NDMzIyMFNGX0NDUy9wcmludGYtc3RkYXJnLmMKQEAgLTI0LDI2ICsyNCwzOSBAQAogCXJlcGxhY2Ugb3V0Ynl0ZShjKSBieSB5b3VyIG93biBmdW5jdGlvbiBjYWxsLg0KIA0KICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgPHN0ZGFyZy5oPg0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCiANCi1zdGF0aWMgdm9pZCBwcmludGNoYXIoY2hhciAqKnN0ciwgaW50IGMpDQorI2RlZmluZSBwdXRjaGFyKGMpIGMNCisNCisjaW5jbHVkZSA8c3RkYXJnLmg+DQorDQorc3RhdGljIGludCB0aW55X3ByaW50KCBjaGFyICoqb3V0LCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncywgdW5zaWduZWQgaW50IGJ1ZmxlbiApOw0KKw0KK3N0YXRpYyB2b2lkIHByaW50Y2hhcihjaGFyICoqc3RyLCBpbnQgYywgY2hhciAqYnVmbGltaXQpDQogew0KKwkvL2V4dGVybiBpbnQgcHV0Y2hhcihpbnQgYyk7DQorDQogCWlmIChzdHIpIHsNCi0JCSoqc3RyID0gKGNoYXIpYzsNCi0JCSsrKCpzdHIpOw0KKwkJaWYoIGJ1ZmxpbWl0ID09ICggY2hhciAqICkgMCApIHsNCisJCQkvKiBMaW1pdCBvZiBidWZmZXIgbm90IGtub3duLCB3cml0ZSBjaGFyYXRlciB0byBidWZmZXIuICovDQorCQkJKipzdHIgPSAoY2hhciljOw0KKwkJCSsrKCpzdHIpOw0KKwkJfQ0KKwkJZWxzZSBpZiggKCAoIHVuc2lnbmVkIGxvbmcgKSAqc3RyICkgPCAoICggdW5zaWduZWQgbG9uZyApIGJ1ZmxpbWl0ICkgKSB7DQorCQkJLyogV2l0aGluZyBrbm93biBsaW1pdCBvZiBidWZmZXIsIHdyaXRlIGNoYXJhY3Rlci4gKi8NCisJCQkqKnN0ciA9IChjaGFyKWM7DQorCQkJKysoKnN0cik7DQorCQl9DQogCX0NCiAJZWxzZQ0KIAl7DQotCQkvKiBPdXRwdXQgY2hhciBoZXJlLiAqLw0KKwkJKHZvaWQpcHV0Y2hhcihjKTsNCiAJfQ0KIH0NCiANCiAjZGVmaW5lIFBBRF9SSUdIVCAxDQogI2RlZmluZSBQQURfWkVSTyAyDQogDQotc3RhdGljIGludCBwcmludHMoY2hhciAqKm91dCwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgd2lkdGgsIGludCBwYWQpDQorc3RhdGljIGludCBwcmludHMoY2hhciAqKm91dCwgY29uc3QgY2hhciAqc3RyaW5nLCBpbnQgd2lkdGgsIGludCBwYWQsIGNoYXIgKmJ1ZmxpbWl0KQ0KIHsNCiAJcmVnaXN0ZXIgaW50IHBjID0gMCwgcGFkY2hhciA9ICcgJzsNCiANCkBAIC01NywxNiArNzAsMTYgQEAKIAl9DQogCWlmICghKHBhZCAmIFBBRF9SSUdIVCkpIHsNCiAJCWZvciAoIDsgd2lkdGggPiAwOyAtLXdpZHRoKSB7DQotCQkJcHJpbnRjaGFyIChvdXQsIHBhZGNoYXIpOw0KKwkJCXByaW50Y2hhciAob3V0LCBwYWRjaGFyLCBidWZsaW1pdCk7DQogCQkJKytwYzsNCiAJCX0NCiAJfQ0KIAlmb3IgKCA7ICpzdHJpbmcgOyArK3N0cmluZykgew0KLQkJcHJpbnRjaGFyIChvdXQsICpzdHJpbmcpOw0KKwkJcHJpbnRjaGFyIChvdXQsICpzdHJpbmcsIGJ1ZmxpbWl0KTsNCiAJCSsrcGM7DQogCX0NCiAJZm9yICggOyB3aWR0aCA+IDA7IC0td2lkdGgpIHsNCi0JCXByaW50Y2hhciAob3V0LCBwYWRjaGFyKTsNCisJCXByaW50Y2hhciAob3V0LCBwYWRjaGFyLCBidWZsaW1pdCk7DQogCQkrK3BjOw0KIAl9DQogDQpAQCAtNzYsNyArODksNyBAQAogLyogdGhlIGZvbGxvd2luZyBzaG91bGQgYmUgZW5vdWdoIGZvciAzMiBiaXQgaW50ICovDQogI2RlZmluZSBQUklOVF9CVUZfTEVOIDEyDQogDQotc3RhdGljIGludCBwcmludGkoY2hhciAqKm91dCwgaW50IGksIGludCBiLCBpbnQgc2csIGludCB3aWR0aCwgaW50IHBhZCwgaW50IGxldGJhc2UpDQorc3RhdGljIGludCBwcmludGkoY2hhciAqKm91dCwgaW50IGksIGludCBiLCBpbnQgc2csIGludCB3aWR0aCwgaW50IHBhZCwgaW50IGxldGJhc2UsIGNoYXIgKmJ1ZmxpbWl0KQ0KIHsNCiAJY2hhciBwcmludF9idWZbUFJJTlRfQlVGX0xFTl07DQogCXJlZ2lzdGVyIGNoYXIgKnM7DQpAQCAtODYsNyArOTksNyBAQAogCWlmIChpID09IDApIHsNCiAJCXByaW50X2J1ZlswXSA9ICcwJzsNCiAJCXByaW50X2J1ZlsxXSA9ICdcMCc7DQotCQlyZXR1cm4gcHJpbnRzIChvdXQsIHByaW50X2J1Ziwgd2lkdGgsIHBhZCk7DQorCQlyZXR1cm4gcHJpbnRzIChvdXQsIHByaW50X2J1Ziwgd2lkdGgsIHBhZCwgYnVmbGltaXQpOw0KIAl9DQogDQogCWlmIChzZyAmJiBiID09IDEwICYmIGkgPCAwKSB7DQpAQCAtMTA3LDcgKzEyMCw3IEBACiANCiAJaWYgKG5lZykgew0KIAkJaWYoIHdpZHRoICYmIChwYWQgJiBQQURfWkVSTykgKSB7DQotCQkJcHJpbnRjaGFyIChvdXQsICctJyk7DQorCQkJcHJpbnRjaGFyIChvdXQsICctJywgYnVmbGltaXQpOw0KIAkJCSsrcGM7DQogCQkJLS13aWR0aDsNCiAJCX0NCkBAIC0xMTYsMTQgKzEyOSwyMyBAQAogCQl9DQogCX0NCiANCi0JcmV0dXJuIHBjICsgcHJpbnRzIChvdXQsIHMsIHdpZHRoLCBwYWQpOw0KKwlyZXR1cm4gcGMgKyBwcmludHMgKG91dCwgcywgd2lkdGgsIHBhZCwgYnVmbGltaXQpOw0KIH0NCiANCi1zdGF0aWMgaW50IHByaW50KCBjaGFyICoqb3V0LCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncyApDQorc3RhdGljIGludCB0aW55X3ByaW50KCBjaGFyICoqb3V0LCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncywgdW5zaWduZWQgaW50IGJ1ZmxlbiApDQogew0KIAlyZWdpc3RlciBpbnQgd2lkdGgsIHBhZDsNCiAJcmVnaXN0ZXIgaW50IHBjID0gMDsNCi0JY2hhciBzY3JbMl07DQorCWNoYXIgc2NyWzJdLCAqYnVmbGltaXQ7DQorDQorCWlmKCBidWZsZW4gPT0gMCApew0KKwkJYnVmbGltaXQgPSAoIGNoYXIgKiApIDA7DQorCX0NCisJZWxzZSB7DQorCQkvKiBDYWxjdWxhdGUgdGhlIGxhc3QgdmFsaWQgYnVmZmVyIHNwYWNlLCBsZWF2aW5nIHNwYWNlIGZvciB0aGUgTlVMTA0KKwkJdGVybWluYXRvci4gKi8NCisJCWJ1ZmxpbWl0ID0gKCAqb3V0ICkgKyAoIGJ1ZmxlbiAtIDEgKTsNCisJfQ0KIA0KIAlmb3IgKDsgKmZvcm1hdCAhPSAwOyArK2Zvcm1hdCkgew0KIAkJaWYgKCpmb3JtYXQgPT0gJyUnKSB7DQpAQCAtMTQ1LDM2ICsxNjcsMzYgQEAKIAkJCX0NCiAJCQlpZiggKmZvcm1hdCA9PSAncycgKSB7DQogCQkJCXJlZ2lzdGVyIGNoYXIgKnMgPSAoY2hhciAqKXZhX2FyZyggYXJncywgaW50ICk7DQotCQkJCXBjICs9IHByaW50cyAob3V0LCBzP3M6IihudWxsKSIsIHdpZHRoLCBwYWQpOw0KKwkJCQlwYyArPSBwcmludHMgKG91dCwgcz9zOiIobnVsbCkiLCB3aWR0aCwgcGFkLCBidWZsaW1pdCk7DQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCi0JCQlpZiggKmZvcm1hdCA9PSAnZCcgfHwgKmZvcm1hdCA9PSAnaScgKSB7DQotCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxMCwgMSwgd2lkdGgsIHBhZCwgJ2EnKTsNCisJCQlpZiggKmZvcm1hdCA9PSAnZCcgKSB7DQorCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxMCwgMSwgd2lkdGgsIHBhZCwgJ2EnLCBidWZsaW1pdCk7DQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCiAJCQlpZiggKmZvcm1hdCA9PSAneCcgKSB7DQotCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxNiwgMCwgd2lkdGgsIHBhZCwgJ2EnKTsNCisJCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDE2LCAwLCB3aWR0aCwgcGFkLCAnYScsIGJ1ZmxpbWl0KTsNCiAJCQkJY29udGludWU7DQogCQkJfQ0KIAkJCWlmKCAqZm9ybWF0ID09ICdYJyApIHsNCi0JCQkJcGMgKz0gcHJpbnRpIChvdXQsIHZhX2FyZyggYXJncywgaW50ICksIDE2LCAwLCB3aWR0aCwgcGFkLCAnQScpOw0KKwkJCQlwYyArPSBwcmludGkgKG91dCwgdmFfYXJnKCBhcmdzLCBpbnQgKSwgMTYsIDAsIHdpZHRoLCBwYWQsICdBJywgYnVmbGltaXQpOw0KIAkJCQljb250aW51ZTsNCiAJCQl9DQogCQkJaWYoICpmb3JtYXQgPT0gJ3UnICkgew0KLQkJCQlwYyArPSBwcmludGkgKG91dCwgdmFfYXJnKCBhcmdzLCBpbnQgKSwgMTAsIDAsIHdpZHRoLCBwYWQsICdhJyk7DQorCQkJCXBjICs9IHByaW50aSAob3V0LCB2YV9hcmcoIGFyZ3MsIGludCApLCAxMCwgMCwgd2lkdGgsIHBhZCwgJ2EnLCBidWZsaW1pdCk7DQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCiAJCQlpZiggKmZvcm1hdCA9PSAnYycgKSB7DQogCQkJCS8qIGNoYXIgYXJlIGNvbnZlcnRlZCB0byBpbnQgdGhlbiBwdXNoZWQgb24gdGhlIHN0YWNrICovDQogCQkJCXNjclswXSA9IChjaGFyKXZhX2FyZyggYXJncywgaW50ICk7DQogCQkJCXNjclsxXSA9ICdcMCc7DQotCQkJCXBjICs9IHByaW50cyAob3V0LCBzY3IsIHdpZHRoLCBwYWQpOw0KKwkJCQlwYyArPSBwcmludHMgKG91dCwgc2NyLCB3aWR0aCwgcGFkLCBidWZsaW1pdCk7DQogCQkJCWNvbnRpbnVlOw0KIAkJCX0NCiAJCX0NCiAJCWVsc2Ugew0KIAkJb3V0Og0KLQkJCXByaW50Y2hhciAob3V0LCAqZm9ybWF0KTsNCisJCQlwcmludGNoYXIgKG91dCwgKmZvcm1hdCwgYnVmbGltaXQpOw0KIAkJCSsrcGM7DQogCQl9DQogCX0NCkBAIC0xODUsMzEgKzIwNywzMiBAQAogDQogaW50IHByaW50Zihjb25zdCBjaGFyICpmb3JtYXQsIC4uLikNCiB7DQotCXZhX2xpc3QgYXJnczsNCisgICAgICAgIHZhX2xpc3QgYXJnczsNCiANCi0JdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOw0KLQlyZXR1cm4gcHJpbnQoIDAsIGZvcm1hdCwgYXJncyApOw0KKyAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOw0KKyAgICAgICAgcmV0dXJuIHRpbnlfcHJpbnQoIDAsIGZvcm1hdCwgYXJncywgMCApOw0KIH0NCiANCiBpbnQgc3ByaW50ZihjaGFyICpvdXQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQ0KIHsNCi0JdmFfbGlzdCBhcmdzOw0KKyAgICAgICAgdmFfbGlzdCBhcmdzOw0KIA0KLQl2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQotCXJldHVybiBwcmludCggJm91dCwgZm9ybWF0LCBhcmdzICk7DQorICAgICAgICB2YV9zdGFydCggYXJncywgZm9ybWF0ICk7DQorICAgICAgICByZXR1cm4gdGlueV9wcmludCggJm91dCwgZm9ybWF0LCBhcmdzLCAwICk7DQogfQ0KIA0KIA0KIGludCBzbnByaW50ZiggY2hhciAqYnVmLCB1bnNpZ25lZCBpbnQgY291bnQsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uICkNCiB7DQotCXZhX2xpc3QgYXJnczsNCisgICAgICAgIHZhX2xpc3QgYXJnczsNCiANCi0JKCB2b2lkICkgY291bnQ7DQorICAgICAgICAoIHZvaWQgKSBjb3VudDsNCiANCi0JdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOw0KLQlyZXR1cm4gcHJpbnQoICZidWYsIGZvcm1hdCwgYXJncyApOw0KKyAgICAgICAgdmFfc3RhcnQoIGFyZ3MsIGZvcm1hdCApOw0KKyAgICAgICAgcmV0dXJuIHRpbnlfcHJpbnQoICZidWYsIGZvcm1hdCwgYXJncywgY291bnQgKTsNCiB9DQogDQorDQogI2lmZGVmIFRFU1RfUFJJTlRGDQogaW50IG1haW4odm9pZCkNCiB7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IDYxZWQ0ZWUuLjMxZDAzNWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDUxZjc5ZDAuLjhmMTk3NTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggYTVmNjM1NS4uMmFlZDQ1NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBOb3JtYWxseSB0aGUgaW50ZXJydXB0IG5lc3RpbmcgdGVzdCB3b3VsZCB1c2UgW2F0IGxlYXN0XSB0d28gc2VwYXJhdGUgdGltZXJzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5jCmluZGV4IGFiM2YzNWUuLmM5MmVjM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiAiUmVnIHRlc3QiIHRhc2tzIC0gVGhlc2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGgga25vd24gdmFsdWVzLCB0aGVuIGNoZWNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNRTcwX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCAzNWE5M2U4Li43YjczZWFkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1FNzBfWHBsYWluZWRfQXRtZWxTdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvbWFpbi5jCmluZGV4IDZmNzlkOTEuLjExOGQxN2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTUU3MF9YcGxhaW5lZF9BdG1lbFN0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggZWY1MWRlYS4uN2EyNDU5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnJlZVJUT1NDb25maWcuaAppbmRleCBlZjM5ZDI2Li45ZjQxODliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggODBjNTllMi4uZjkyYzVlMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGluaXRpYWxpc2VzIHRocmVlIHRpbWVycyBhcyBmb2xsb3dzOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5jCmluZGV4IGFiM2YzNWUuLmM5MmVjM2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogIlJlZyB0ZXN0IiB0YXNrcyAtIFRoZXNlIGZpbGwgdGhlIHJlZ2lzdGVycyB3aXRoIGtub3duIHZhbHVlcywgdGhlbiBjaGVjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDU3NmJlNGEuLjY4Njk5MDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0F0bWVsU3R1ZGlvL21haW4uYwppbmRleCBmMTUyOTljLi5iZDI1NWY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfQXRtZWxTdHVkaW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9BdG1lbFN0dWRpby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBlZjUxZGVhLi43YTI0NTk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGVmMzlkMjYuLjlmNDE4OWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBmN2ZmYTgxLi43MWQyNjYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCmluZGV4IDExZWExYTYuLjM1NzZmMWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiBfX2FzbSB2b2lkIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uKCB2b2lkICkNCiB7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0LnMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QucwppbmRleCAwNjI5M2I3Li4xODc0NTBmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3QucwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggNTc2YmU0YS4uNjg2OTkwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld2QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXdkCmluZGV4IDQ2MDYwNjkuLmRiNzEyZmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld2QKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3ZApAQCAtMSwzMTYzICsxLDI4MzQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI4PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgIDxmaWxlVmVyc2lvbj4zPC9maWxlVmVyc2lvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DVmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xyZXNvdXJjZXNcSUFSXHNhbXY3LWVrLXNyYW0ubWFjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWVtRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGRlYnVnZ2VyXEF0bWVsXEFUU0FNVjcxUTIxLmRkZjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJ1blRvTmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPm1haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNGcHVQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEREZBcmd1bWVudFByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFN1cHByZXNzRG93bmxvYWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZFZlcmlmeUFsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Ny4zMC4zLjgwNjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0R5bkRyaXZlckxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5KTElOS19JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcY29uZmlnXGZsYXNobG9hZGVyXEF0bWVsXHNhbXY3MXEyMVxzYW12NzFxMjEtZmxhc2guYm9hcmQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2sxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2syPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1N1cHByZXNzQ2hlY2szPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzUGF0aDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdmVycmlkZURlZkZsYXNoQm9hcmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNPZmZzZXQzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZXZpY2VDb25maWdNYWNyb0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEZWJ1Z2dlckV4dHJhT3B0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQWxsTVRCT3B0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU5yT2ZDb3JlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZU1hc3RlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MzQ2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlV29ya3NwYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZVByb2plY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlQ29uZmlndXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRFeHRyYUltYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DQXR0YWNoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QU5HRUxfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbmdlbEhlYXJ0YmVhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQW5nZWxDb21tdW5pY2F0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW1Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFOR0VMVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0FuZ2VsTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbmdlbExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Q01TSVNEQVBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NNU0lTREFQVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklBUlJPTV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Mb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSb21Db21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JSkVUX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RHVyYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyRnJvbVByb2JlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQb3dlclJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXREb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJUkxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0SnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4zMjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1Jlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1NjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NUY3BJcEFsdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua0RldmljZU5hbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkxNSUZURElfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxtaWZ0ZGlTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaURvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlMb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaUZ0ZGlJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5NQUNSQUlHT1JfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVTcGVlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5UQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0VtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdU11bHRpVGFyZ2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MEBBUk03VERNSTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkVtdUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0VtdUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5qdGFnbzwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VW51c2VkQWRkcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDA4MDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UkRJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJTG9nRmlsZUVkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJSFdSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlNUTElOS19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRISVJEUEFSVFlfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlEcml2ZXJEbGw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1RoaXJkUGFydHlMb2dGaWxlRWRpdEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0VmNjVHlwZURlZmF1bHQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWb2x0YWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VkNDRGVmYXVsdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFNldHRsaW5ndGltZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvSnRhZ1NwZWVkVHlwZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldENvbm5lY3Rpb248L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRVc2JDb21Qb3J0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRBbGxvd0FjY2Vzc1RvQlNMPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0VyYXNlRmxhc2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlhEUzEwMF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj41PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSFdSZXNldERlbGF5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFByb2JlTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8ZGVidWdnZXJQbHVnaW5zPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxIQ0NXYXJlXEhDQ1dhcmUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xtaWRkbGV3YXJlXFBlcmNlcGlvVHJhY2VFeHBvcnRlclxQZXJjZXBpb1RyYWNlRXhwb3J0UGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xBVklYXEFWSVguRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcTVFYXE1RWFJ0b3NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE9wZW5SVE9TXE9wZW5SVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xRdWFkcm9zXFF1YWRyb3NfRVdCN19QbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUaHJlYWRYXFRocmVhZFhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJXHVDT1MtSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXE9ydGlcT3J0aS5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXHVDUHJvYmVcdUNQcm9iZVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgIDwvZGVidWdnZXJQbHVnaW5zPg0KLSAgPC9jb25maWd1cmF0aW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPlJlbGVhc2U8L25hbWU+DQotICAgIDx0b29sY2hhaW4+DQotICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KLSAgICA8L3Rvb2xjaGFpbj4NCi0gICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+Qy1TUFk8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+Mjg8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc2FtdjctZWstc3JhbS5tYWM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxDT05GSUdcZGVidWdnZXJcQXRtZWxcQVRTQU1WNzFRMjEuZGRmPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43LjMwLjMuODA2MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkpMSU5LX0lEPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+OC4yMC4xLjE0MTgxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Vc2VGbGFzaExvYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTG93TGV2ZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NCRThTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNGaWxlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNEZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Rmxhc2hMb2FkZXJzVjM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxjb25maWdcZmxhc2hsb2FkZXJcQXRtZWxcc2FtdjcxeDIxXHNhbXY3MXgyMS1mbGFzaC5ib2FyZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hc3NFcmFzZUJlZm9yZUZsYXNoaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DQURJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDYWRpTWVtb3J5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZhc3QgTW9kZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQVXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQU2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ01TSVNEQVBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklKRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzdG9yZUJyZWFrcG9pbnRzQ2hlY2s8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DUHJvYmVDZmdPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByb2JlQ29uZmlnUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U2VsZWN0ZWRDUFVCZWhhdmlvdXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUNwdU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pldEVtdVBhcmFtczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJlZmVyRVRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNldHRpbmdzTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2l6ZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5KTElOS19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzI8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjMwMC4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlRHVtbXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKTGlua0RldmljZU5hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+TE1JRlRESV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG1pZnRkaVNwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pZnRkaUxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTG1pRnRkaUludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+U1RMSU5LX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RBUE51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1Jlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0p0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rRGVidWdBY2Nlc3NQb3J0UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VEhJUkRQQVJUWV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eURyaXZlckRsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DVGhpcmRQYXJ0eUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPlRJRkVUX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJlc2V0TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRWY2NUeXBlRGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZvbHRhZ2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRWQ0NEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0U2V0dGxpbmd0aW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9KdGFnU3BlZWRUeXBlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0Q29ubmVjdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRVc2JDb21Qb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkF1dG9tYXRpYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRBbGxvd0FjY2Vzc1RvQlNMPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0VyYXNlRmxhc2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+WERTMTAwX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VElQYWNrYWdlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Qm9hcmRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNXSTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElSUTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSFdSZXNldERlbGF5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEp0YWdTcGVlZExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwUHJvYmVMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFNXT1BvcnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFNXT1BvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8ZGVidWdnZXJQbHVnaW5zPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteFRpbnlBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcZW1iT1NcZW1iT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xNYmVkXE1iZWRBcm1QbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcT3BlblJUT1NcT3BlblJUT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xTYWZlUlRPU1xTYWZlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRocmVhZFhcVGhyZWFkWEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xUSS1SVE9TXHRpcnRvc3BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSUlcdUNPUy1JSUktS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MTwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcT3J0aVxPcnRpLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXFRhcmdldEFjY2Vzc1NlcnZlclxUYXJnZXRBY2Nlc3NTZXJ2ZXIuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcdUNQcm9iZVx1Q1Byb2JlUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgPC9kZWJ1Z2dlclBsdWdpbnM+DQorICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNJbnB1dDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW5kaWFuPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NWYXJpYW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1PdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NZW1GaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UnVuVG9OYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0ZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RERkFyZ3VtZW50UHJvZHVjZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkU3VwcHJlc3NEb3dubG9hZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkVmVyaWZ5QWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjMwLjMuODA2MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHluRHJpdmVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkFSTVNJTV9JRDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVzZUZsYXNoTG9hZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNMb3dMZXZlbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0JFOFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0ZpbGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0RldmljZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GbGFzaExvYWRlcnNWMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzU3VwcHJlc3NDaGVjazM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNQYXRoMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk92ZXJyaWRlRGVmRmxhc2hCb2FyZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc09mZnNldDM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RldmljZUNvbmZpZ01hY3JvRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RlYnVnZ2VyRXh0cmFPcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NBbGxNVEJPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTnJPZkNvcmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlTWFzdGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVXb3Jrc3BhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVNsYXZlUHJvamVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVDb25maWd1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEb3dubG9hZEV4dHJhSW1hZ2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NBdHRhY2hTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QVJNU0lNX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbUVuYWJsZVBTUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1NpbVBzcE92ZXJyaWRlQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DU2ltUHNwQ29uZmlnRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BTkdFTF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0FuZ2VsSGVhcnRiZWF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNBbmdlbENvbW11bmljYXRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbUJhdWQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0FuZ2VsQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU5HRUxUQ1BJUDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQW5nZWxMb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFuZ2VsTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DTVNJU0RBUF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXNldExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSFdSZXNldER1cmF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlUYXJnZXRFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HREJTRVJWRVJfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRDUElQPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9Mb2dmaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSlRhZ1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJST01fSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUxvZ0ZpbGVDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tTG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUm9tQ29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JvbUNvbW1CYXVkPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Nzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj44PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NJYXJQcm9iZVNjcmlwdEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjEwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjMwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcm90b2NvbFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTd29QaW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldENwdUNsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0U3dvUHJlc2NhbGVyTGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0QnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0VXBkYXRlQnJlYWtwb2ludHNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJESUNhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SRElDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENPUkVSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaENIS0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hJTlRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NQcm9iZUNmZ092ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DUHJvYmVDb25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0UHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldE11bHRpQ1BVTnVtYmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRTZWxlY3RlZENQVUJlaGF2aW91cjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JQ3B1TmFtZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSmV0RW11UGFyYW1zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRQcmVmZXJFVEI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWpldFRyYWNlU2V0dGluZ3NMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+Mjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZsYXNoQm9hcmRQYXRoU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0lqZXRVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MTY8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkpMaW5rU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0hXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SkxpbmtJbml0aWFsU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEb0psaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTY2FuQ2hhaW5Ob25BUk1EZXZpY2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rSVJMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0NvbW1SYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rU3BlZWRSYWRpb1YyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDVVNCRGV2aWNlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hSZXNldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoVW5kZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFNXSTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRGF0YTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaElSUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoRklRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKTGlua1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSkxpbmtUY3BJcFNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0F1dG88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTd29DbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NKTGlua1RyYWNlU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZUR1bW15PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DSkxpbmtEZXZpY2VOYW1lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT41MDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+TUFDUkFJR09SX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPmp0YWc8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RW11U3BlZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5hYWEuYmJiLmNjYy5kZGQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVNdWx0aVRhcmdldDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjBAQVJNN1RETUk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FbXVIV1Jlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNFbXVDb21tQmF1ZDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DRW11Q29tbVBvcnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+anRhZ288L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlVudXNlZEFkZHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDAwODAwMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNYWNyYWlnb3JIV1Jlc2V0RGVsYXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdCcmVha3BvaW50UmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKVGFnRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0pUYWdVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01hY3JhaWdvckludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTWFjcmFpZ29ySW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+UEVNSUNST19JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NKUEVNaWNyb1Nob3dTZXR0aW5nczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlJESV9JRDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DUkRJRHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNSRElMb2dGaWxlQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q1JESUxvZ0ZpbGVFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUhXUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MjAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtVc2JTZXJpYWxObzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTVExpbmtKdGFnU3BlZWRMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlRJRkVUX0lEPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VXNiQ29tUG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkF1dG9tYXRpYzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0QWxsb3dBY2Nlc3NUb0JTTDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldERvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ01TUEZldExvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmFkaW9FcmFzZUZsYXNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+NTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRJUGFja2FnZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkJvYXJkRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEJyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMERvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9jYWxsX21haW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoUmVzZXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFVuZGVmPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTV0k8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaERhdGE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFByZWZldGNoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJUlE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEZJUTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ09SRVJFU0VUPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hNTUVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTk9DUEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQ0hSRVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hTVEFURVJSPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hCVVNFUlI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaElOVEVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSEFSREVSUjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoRHVtbXk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDcHVDbG9ja0VkaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrQXV0bzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFN3b0Nsb2NrRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEhXUmVzZXREZWxheTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFJlc2V0TGlzdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBVc2JTZXJpYWxOb1NlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEp0YWdTcGVlZExpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPGRlYnVnZ2VyUGx1Z2lucz4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXG1pZGRsZXdhcmVcSENDV2FyZVxIQ0NXYXJlLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNcbWlkZGxld2FyZVxQZXJjZXBpb1RyYWNlRXhwb3J0ZXJcUGVyY2VwaW9UcmFjZUV4cG9ydFBsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQVZJWFxBVklYLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXENNWFxDbXhUaW55QXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcZW1iT1NcZW1iT1NQbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1RWFxNUVhSdG9zUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcUXVhZHJvc1xRdWFkcm9zX0VXQjdfUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xTYWZlUlRPU1xTYWZlUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVEktUlRPU1x0aXJ0b3NwbHVnaW4uZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlcdUNPUy1JSS0yODYtS0EtQ1NweS5ld3BsdWdpbjwvZmlsZT4NCi0gICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCi0gICAgICA8L3BsdWdpbj4NCi0gICAgICA8cGx1Z2luPg0KLSAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXHVDT1MtSUlJXHVDT1MtSUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQotICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQotICAgICAgPC9wbHVnaW4+DQotICAgICAgPHBsdWdpbj4NCi0gICAgICAgIDxmaWxlPiRFV19ESVIkXGNvbW1vblxwbHVnaW5zXENvZGVDb3ZlcmFnZVxDb2RlQ292ZXJhZ2UuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjE8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICAgIDxwbHVnaW4+DQotICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KLSAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KLSAgICAgIDwvcGx1Z2luPg0KLSAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DLVNQWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q1Byb2Nlc3NvcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1ZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1lbUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SdW5Ub05hbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+bWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0V4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRERGQXJndW1lbnRQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRTdXBwcmVzc0Rvd25sb2FkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRG93bmxvYWRWZXJpZnlBbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43LjMwLjMuODA2MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEeW5Ecml2ZXJMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkFSTVNJTV9JRDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VXNlRmxhc2hMb2FkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xvd0xldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRmlsZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DRGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZsYXNoTG9hZGVyc1YzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgxPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNTdXBwcmVzc0NoZWNrMzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1BhdGgzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3ZlcnJpZGVEZWZGbGFzaEJvYXJkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzT2Zmc2V0MzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSW1hZ2VzVXNlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0ltYWdlc1VzZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NJbWFnZXNVc2UzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGV2aWNlQ29uZmlnTWFjcm9GaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRGVidWdnZXJFeHRyYU9wdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0FsbE1UQk9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVOck9mQ29yZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVNYXN0ZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVQb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjUzNDYxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ011bHRpY29yZVdvcmtzcGFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTXVsdGljb3JlU2xhdmVQcm9qZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NNdWx0aWNvcmVTbGF2ZUNvbmZpZ3VyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0Rvd25sb2FkRXh0cmFJbWFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0F0dGFjaFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hc3NFcmFzZUJlZm9yZUZsYXNoaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkFSTVNJTV9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbURyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1FbmFibGVQU1A8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NTaW1Qc3BPdmVycmlkZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1NpbVBzcENvbmZpZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DQURJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDYWRpTWVtb3J5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZhc3QgTW9kZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FESUxvZ0ZpbGVFZGl0QjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+NDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU0ZFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSWFyUHJvYmVTY3JpcHRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBIV1Jlc2V0RHVyYXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MzAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEhXUmVzZXREZWxheTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQRG9Mb2dmaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUE11bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBSZXN0b3JlQnJlYWtwb2ludHNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFVwZGF0ZUJyZWFrcG9pbnRzRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5fY2FsbF9tYWluPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoVW5kZWY8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hTV0k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoUHJlZmV0Y2g8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hJUlE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hNTUVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hDSEtFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hTVEFURVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoSEFSREVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQTXVsdGlDUFVFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q01TSVNEQVBNdWx0aUNQVU51bWJlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNNU0lTREFQUHJvYmVDb25maWdSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DTVNJU0RBUFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDTVNJU0RBUFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdEQlNFUlZFUl9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+VENQSVA8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+YWFhLmJiYi5jY2MuZGRkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnQnJlYWtwb2ludFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSlRhZ0RvVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKVGFnVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUpFVF9JRDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjg8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0lhclByb2JlU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEhXUmVzZXREdXJhdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MjAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UG93ZXJGcm9tUHJvYmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFBvd2VyUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldERvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aVRhcmdldEVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNjYW5DaGFpbk5vbkFSTURldmljZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldElSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRKdGFnU3BlZWRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0UHJvdG9jb2xSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0U3dvUGluPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRDcHVDbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NzIuMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFN3b1ByZXNjYWxlckxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFJlc3RvcmVCcmVha3BvaW50c0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRVcGRhdGVCcmVha3BvaW50c0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UkRJQ2F0Y2hSZXNldDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFVuZGVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRGF0YTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SRElDYXRjaFByZWZldGNoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlJESUNhdGNoRklRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ09SRVJFU0VUPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoQ0hLRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaElOVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ1Byb2JlQ2ZnT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NQcm9iZUNvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRQcm9iZUNvbmZpZ1JhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRNdWx0aUNQVUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0TXVsdGlDUFVOdW1iZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFNlbGVjdGVkQ1BVQmVoYXZpb3VyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklDcHVOYW1lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NKZXRFbXVQYXJhbXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWpldFByZWZlckVUQjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JamV0VHJhY2VTZXR0aW5nc0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklqZXRUcmFjZVNpemVMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GbGFzaEJvYXJkUGF0aFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSWpldFVzYlNlcmlhbE5vPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJamV0VXNiU2VyaWFsTm9TZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SkxJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hTRkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5KTGlua1NwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxjc3B5Y29tbS5sb2c8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkpMaW5rSW5pdGlhbFNwZWVkPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRG9KbGlua011bHRpVGFyZ2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU2NhbkNoYWluTm9uQVJNRGV2aWNlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rTXVsdGlUYXJnZXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0lSTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtDb21tUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1RDUElQPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmFhYS5iYmIuY2NjLmRkZDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua1NwZWVkUmFkaW9WMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1VTQkRldmljZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSRElDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JESUNhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUkRJQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0JyZWFrcG9pbnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rRG9VcGRhdGVCcmVha3BvaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NKTGlua0ludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDSkxpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDT1JFUkVTRVQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaE1NRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hOT0NQRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hDSFJFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaFNUQVRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDYXRjaEJVU0VSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NhdGNoSU5URVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hIQVJERVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ2F0Y2hEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rU2NyaXB0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1RjcElwQWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pMaW5rVGNwSXBTZXJpYWxObzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcyLjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tBdXRvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU3dvQ2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjIwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DSkxpbmtUcmFjZVNvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rVHJhY2VTb3VyY2VEdW1teTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0pMaW5rRGV2aWNlTmFtZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5MTUlGVERJX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MbWlmdGRpU3BlZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xtaWZ0ZGlEb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlmdGRpTG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMbWlGdGRpSW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5QRU1JQ1JPX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0pQRU1pY3JvU2hvd1NldHRpbmdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvTG9nZmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Mb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5TVExJTktfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj40PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rREFQTnVtYmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSW50ZXJmYWNlUmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtJbnRlcmZhY2VDbWRMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rUmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NwdUNsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT43Mi4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrQXV0bzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N3b0Nsb2NrRWRpdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4yMDAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua0NhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NUTGlua1VzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDU1RMaW5rSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTVExpbmtEZWJ1Z0FjY2Vzc1BvcnRSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5USElSRFBBUlRZX0lEPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5RHJpdmVyRGxsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUNoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNUaGlyZFBhcnR5TG9nRmlsZUVkaXRCPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RyaXZlckluZm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+VElGRVRfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NEcml2ZXJJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0UmVzZXRMaXN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEludGVyZmFjZVJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0SW50ZXJmYWNlQ21kTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFRhcmdldFZjY1R5cGVEZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTVNQRmV0VGFyZ2V0Vm9sdGFnZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbmluaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFZDQ0RlZmF1bHQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRUYXJnZXRTZXR0bGluZ3RpbWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRSYWRpb0p0YWdTcGVlZFR5cGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRDb25uZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFVzYkNvbVBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QXV0b21hdGljPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldEFsbG93QWNjZXNzVG9CU0w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXREb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NNU1BGZXRMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcY3NweWNvbW0ubG9nPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ01TUEZldFJhZGlvRXJhc2VGbGFzaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5YRFMxMDBfSUQ8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj42PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFNGRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRHJpdmVySW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5USVBhY2thZ2VPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5USVBhY2thZ2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Cb2FyZEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0xvZ2ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TG9nRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGNzcHljb21tLmxvZzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBCcmVha3BvaW50UmFkaW88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBEb1VwZGF0ZUJyZWFrcG9pbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXBkYXRlQnJlYWtwb2ludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X2NhbGxfbWFpbjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaFJlc2V0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hVbmRlZjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1dJPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hEYXRhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hQcmVmZXRjaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoSVJRPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hGSVE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENPUkVSRVNFVDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoTU1FUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaE5PQ1BFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaENIUkVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoU1RBVEVSUjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMENhdGNoQlVTRVJSPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ2F0Y2hJTlRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaEhBUkRFUlI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBDYXRjaER1bW15PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwQ3B1Q2xvY2tFZGl0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0F1dG88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBTd29DbG9ja0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBIV1Jlc2V0RGVsYXk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBSZXNldExpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwVXNiU2VyaWFsTm88L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMFVzYlNlcmlhbE5vU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwSnRhZ1NwZWVkTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBJbnRlcmZhY2VSYWRpbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1hkczEwMEludGVyZmFjZUNtZExpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NYZHMxMDBQcm9iZUxpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydFJhZGlvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDWGRzMTAwU1dPUG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxkZWJ1Z2dlclBsdWdpbnM+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcQ01YXENteEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xDTVhcQ214VGlueUFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xlbWJPU1xlbWJPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXE1iZWRcTWJlZEFybVBsdWdpbi5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1xPcGVuUlRPU1xPcGVuUlRPU1BsdWdpbi5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFNhZmVSVE9TXFNhZmVSVE9TUGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcVGhyZWFkWFxUaHJlYWRYQXJtUGx1Z2luLkVOVS5ld3BsdWdpbjwvZmlsZT4NCisgICAgICAgICAgICAgICAgPGxvYWRGbGFnPjA8L2xvYWRGbGFnPg0KKyAgICAgICAgICAgIDwvcGx1Z2luPg0KKyAgICAgICAgICAgIDxwbHVnaW4+DQorICAgICAgICAgICAgICAgIDxmaWxlPiRUT09MS0lUX0RJUiRccGx1Z2luc1xydG9zXFRJLVJUT1NcdGlydG9zcGx1Z2luLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLTI4Ni1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JFRPT0xLSVRfRElSJFxwbHVnaW5zXHJ0b3NcdUNPUy1JSVx1Q09TLUlJLUtBLUNTcHkuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kVE9PTEtJVF9ESVIkXHBsdWdpbnNccnRvc1x1Q09TLUlJSVx1Q09TLUlJSS1LQS1DU3B5LmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcQ29kZUNvdmVyYWdlXENvZGVDb3ZlcmFnZS5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4xPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1xPcnRpXE9ydGkuRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICAgICAgPHBsdWdpbj4NCisgICAgICAgICAgICAgICAgPGZpbGU+JEVXX0RJUiRcY29tbW9uXHBsdWdpbnNcVGFyZ2V0QWNjZXNzU2VydmVyXFRhcmdldEFjY2Vzc1NlcnZlci5FTlUuZXdwbHVnaW48L2ZpbGU+DQorICAgICAgICAgICAgICAgIDxsb2FkRmxhZz4wPC9sb2FkRmxhZz4NCisgICAgICAgICAgICA8L3BsdWdpbj4NCisgICAgICAgICAgICA8cGx1Z2luPg0KKyAgICAgICAgICAgICAgICA8ZmlsZT4kRVdfRElSJFxjb21tb25ccGx1Z2luc1x1Q1Byb2JlXHVDUHJvYmVQbHVnaW4uRU5VLmV3cGx1Z2luPC9maWxlPg0KKyAgICAgICAgICAgICAgICA8bG9hZEZsYWc+MDwvbG9hZEZsYWc+DQorICAgICAgICAgICAgPC9wbHVnaW4+DQorICAgICAgICA8L2RlYnVnZ2VyUGx1Z2lucz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KIDwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXdwIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3cAppbmRleCA5M2M2ZjAyLi5hMzEyM2JlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXdwCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3AKQEAgLTEsMjA4MCArMSwyMTg3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8cHJvamVjdD4NCi0gIDxmaWxlVmVyc2lvbj4yPC9maWxlVmVyc2lvbj4NCi0gIDxjb25maWd1cmF0aW9uPg0KLSAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgIDxmaWxlVmVyc2lvbj4zPC9maWxlVmVyc2lvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+RGVidWdcRXhlPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T2JqUGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkRlYnVnXE9iajwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+RGVidWdcTGlzdDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT43PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBmbGFncy48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HT3V0cHV0QmluYXJ5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ29yZU9yQ2hpcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlJURGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5Vc2UgdGhlIG5vcm1hbCBjb25maWd1cmF0aW9uIG9mIHRoZSBDL0MrKyBydW50aW1lIGxpYnJhcnkuIE5vIGxvY2FsZSBpbnRlcmZhY2UsIEMgbG9jYWxlLCBubyBmaWxlIGRlc2NyaXB0b3Igc3VwcG9ydCwgbm8gbXVsdGlieXRlcyBpbiBwcmludGYgYW5kIHNjYW5mLCBhbmQgbm8gaGV4IGZsb2F0cyBpbiBzdHJ0b2QuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjUuMTAuMC4xNTk8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0xhc3RTYXZlZEJ5UHJvZHVjdFZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT43LjYwLjEuMTEyMDY8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsRW5hYmxlTWlzcmE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyYm9zZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0NoaXBTZWxlY3RFZGl0TWVudTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPkFUU0FNVjcxUTIxCUF0bWVsIEFUU0FNVjcxUTIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT40MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpc0RzcExpYjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlRocmVhZHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29yZVZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVRGV2aWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5BVFNBTVY3MVEyMQlBdG1lbCBBVFNBTVY3MVEyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZQVTI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT42PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk5FT048L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0ZQVUNvcmVTbGF2ZTI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+NDE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUNDQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjMxPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdGltaXphdGlvbk5vU2l6ZUNvbnN0cmFpbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPl9fU0FNVjcxUTIxX188L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT5UUkFDRV9MRVZFTD00PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NDb21tZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NMaW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdENNbmVtb25pY3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01lc3NhZ2VzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzU291cmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRW5hYmxlUmVtYXJrczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdTdXBwcmVzczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1JlbWFyazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5pbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdFcnJvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQWxsb3dMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDAwMDAwMDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ011bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybkFyZUVycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0NvbXBpbGVyUnVudGltZUluZm88L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpYkNvbmZpZ0hlYWRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QcmVJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDSW5jbHVkZVBhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1lazwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjc8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XGluY2x1ZGVcc2Ftdjc8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJDwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXC4uXENvbW1vblxpbmNsdWRlPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGluY2x1ZGU8L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDU3RkSW5jQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NDb2RlU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPi50ZXh0PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUludGVyd29yazI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SVByb2Nlc3Nvck1vZGUyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJvcGk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSd3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kTm9EeW5Jbml0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0xhbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ0RpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQWxsb3dWTEE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwRGlhbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1JUVEk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjU3RhdGljRGVzdHI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjQ3BwSW5saW5lU2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Ntc2lzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0Zsb2F0U2VtYW50aWNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTm9MaXRlcmFsUG9vbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjk8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUVuZGlhbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BQ2FzZVNlbnNpdGl2aXR5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY3JvQ2hhcnM8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X19TQU00UzE2Q19fPC9zdGF0ZT4NCi0gICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KLSAgICAgICAgICA8c3RhdGU+X19BU1NFTUJMWV9fPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3RIZWFkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpc3Rpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRGVmczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeHBzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0V4ZWM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T25seUFzc2VkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk11bHRpTGluZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+VGFiU3BhY2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkRlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZJbnRlcm5hbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BWFJlZkR1YWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFPdXRwdXRGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNDaGVjazwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BTGltaXRFcnJvcnNFZGl0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUlnbm9yZVN0ZEluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVVzZXJJbmNsdWRlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SVE9TRGVtby5iaW48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQotICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQotICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQotICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE3PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5SVE9TRGVtby5vdXQ8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc2FtdjcxcTIxX3NyYW0uaWNmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+X19pYXJfcHJvZ3JhbV9zdGFydDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHhGRjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNBbGlnbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNQb2x5PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0NvbXBsPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNVbml0U2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0NhbGxHcmFwaDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+IyMjVW5pdGlhbGl6ZWQjIyM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YS8+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+UmVsZWFzZTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5HZW5lcmFsPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4zPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI0PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+R2VuZXJhbDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI5PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RXhlUGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5EZWJ1Z1xFeGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RGVidWdcT2JqPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5EZWJ1Z1xMaXN0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbnB1dCBkZXNjcmlwdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5ObyBzcGVjaWZpZXIgbiwgbm8gZmxvYXQgbm9yIGxvbmcgbG9uZywgbm8gc2NhbiBzZXQsIG5vIGFzc2lnbm1lbnQgc3VwcHJlc3NpbmcuPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PdXRwdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Tm8gc3BlY2lmaWVyIGEsIEEsIG5vIHNwZWNpZmllciBuLCBubyBmbG9hdCBub3IgbG9uZyBsb25nLCBubyBmbGFncy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NS4xMC4wLjE1OTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjguMjAuMS4xNDE4MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+QVRTQU1WNzFRMjEJQXRtZWwgQVRTQU1WNzFRMjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvd0xldmVsSW50ZXJmYWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlQkU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblN0ZG91dEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFSdWxlczk4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXMwNDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcSU5DXGNcRExpYl9Db25maWdfTm9ybWFsLmg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjI2PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjQxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvcmVWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVEZXZpY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5BVFNBTVY3MVEyMQlBdG1lbCBBVFNBTVY3MVEyMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+Njwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NDE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQ01TSVNQYWNrU2VsZWN0RGV2aWNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9nTGliSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR0xpYkFkZGl0aW9uYWxMb2NhbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dQcmludGZWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT40PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50Zk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HU2NhbmZNdWx0aWJ5dGVTdXBwb3J0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZVRhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb2NhbGVEaXNwbGF5T25seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRTUEV4dGVuc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5JQ0NBUk08L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjI8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4zNDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0aW1pemF0aW9uTm9TaXplQ29uc3RyYWludHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9fU0FNVjcxUTIxX188L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPnNyYW08L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlRSQUNFX0xFVkVMPTQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jQ29tbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQcmVwcm9jTGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTW5lbW9uaWNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdENNZXNzYWdlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGlzdEFzc1NvdXJjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnU3VwcHJlc3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdSZW1hcms8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnRXJyb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0FsbG93TGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDAwMDAwMDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1dhcm5BcmVFcnI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NDb21waWxlclJ1bnRpbWVJbmZvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaWJDb25maWdIZWFkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UHJlSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0luY2x1ZGVQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjc8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xpbmNsdWRlXHNhbXY3PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kUFJPSl9ESVIkXEZ1bGxfRGVtbzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlxDb21tb25caW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTdGRJbmNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0NvZGVTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPi50ZXh0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yTW9kZTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdFN0cmF0ZWd5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzOTg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjEwMDAxMTExMTAxMTAxMDExMDExMTAwMTExMDAxMTExMTExMDExMTAwMTEwMTEwMDAxMDExMTAxMTExMDExMDExMDAxMTExMTExMTExMTExMDAxMTAwMTExMTEwMDExMTAxMTEwMDExMTExMTExMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUm9waTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZFJ3cGk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmROb0R5bkluaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjTGFuZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDRGlhbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NBbGxvd1ZMQTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NTdGF0aWNEZXN0cjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDcHBJbmxpbmVTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRmxvYXRTZW1hbnRpY3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NOb0xpdGVyYWxQb29sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3lTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NHdWFyZENhbGxzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jU291cmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jT3V0cHV0Qm9tPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWNjUlRUSTI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjEwPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU9ialByZWZpeDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BRW5kaWFuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFDYXNlU2Vuc2l0aXZpdHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjcm9DaGFyczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5XaGF0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuT25lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTE8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWJ1ZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BbHRSZWdpc3Rlck5hbWVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFEZWZpbmVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9fU0FNNFMxNkNfXzwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+c3JhbTwvc3RhdGU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+X19BU1NFTUJMWV9fPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRQUk9KX0RJUiQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNDaGVja1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFeHRyYU9wdGlvbnNWMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFzbU5vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+T0JKQ09QWTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGb3JtYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4zPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9DT3V0cHV0T3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5SVE9TRGVtby5iaW48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ0NvbW1hbmRMaW5lUHJvZHVjZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DT2JqQ29weUVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5DVVNUT008L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQorICAgICAgICAgICAgICAgIDxjbWRsaW5lPjwvY21kbGluZT4NCisgICAgICAgICAgICAgICAgPGhhc1ByaW8+MDwvaGFzUHJpbz4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGEgLz4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8cHJlYnVpbGQ+PC9wcmVidWlsZD4NCisgICAgICAgICAgICAgICAgPHBvc3RidWlsZD48L3Bvc3RidWlsZD4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua091dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UlRPU0RlbW8ub3V0PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xpYklPQ29uZmlnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlhMaW5rTWlzcmFIYW5kbGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSW5wdXRGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtEZWJ1Z0luZm9FbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtLZWVwU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U3ltYm9sPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTZWdtZW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlBbGlnbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ29uZmlnRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTWFwRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dJbml0aWFsaXphdGlvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ01vZHVsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1NlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dWZW5lZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xyZXNvdXJjZXNcSUFSXHNhbXY3MXEyMV9zcmFtLmljZjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPl9faWFyX3Byb2dyYW1fc3RhcnQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvRmlsbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJCeXRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4RkY8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlclN0YXJ0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyRW5kPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjB4MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjU2l6ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjUG9seTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNDb21wbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0luaXRpYWxWYWx1ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkRvQ3JjPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQkU4U2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtCdWZmZXJlZFRlcm1pbmFsT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3Rkb3V0SW50ZXJmYWNlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjRnVsbFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJRWxmVG9vbFBvc3RQcm9jZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQXV0b0xpYlNlbGVjdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1JlZGlyU3ltYm9sczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ1VudXNlZEZyYWdtZW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NyY1JldmVyc2VCeXRlT3JkZXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNVc2VBc0lucHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0SW5saW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0FsbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0RXhjZXB0aW9uc0ZvcmNlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ21zaXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRNZXJnZUR1cGxTZWN0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdFVzZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEZvcmNlVmZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tBbmFseXNpc0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ29udHJvbEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQ2FsbEdyYXBoRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsZ29yaXRobTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjVW5pdFNpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZV9BbHREZWZhdWx0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0VuY091dHB1dEJvbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0hlYXBTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2NhbGVTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUFSQ0hJVkU8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjE8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVJbnB1dHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU92ZXJyaWRlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3V0cHV0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiMjI1VuaXRpYWxpemVkIyMjPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhIC8+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICA8L2NvbmZpZ3VyYXRpb24+DQorICAgIDxjb25maWd1cmF0aW9uPg0KKyAgICAgICAgPG5hbWU+UmVsZWFzZTwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5FeGVQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxFeGU8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PYmpQYXRoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxPYmo8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5MaXN0UGF0aDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlJlbGVhc2VcTGlzdDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklucHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5GdWxsIGZvcm1hdHRpbmcuPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IHZhcmlhbnQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjI8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+RnVsbCBmb3JtYXR0aW5nLjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0U2xhdmU8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UlREZXNjcmlwdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1Byb2R1Y3RWZXJzaW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+NS4xMC4wLjE1OTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HTGFzdFNhdmVkQnlQcm9kdWN0VmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxFbmFibGVNaXNyYTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5lcmFsTWlzcmFWZXJib3NlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9HQ2hpcFNlbGVjdEVkaXRNZW51PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ZGVmYXVsdAlOb25lPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuTG93TGV2ZWxJbnRlcmZhY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGVCRTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuU3Rkb3V0SW50ZXJmYWNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzOTg8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwMTExMTEwMTEwMTAxMTAxMTEwMDExMTAwMTExMTExMTAxMTEwMDExMDExMDAwMTAxMTEwMTExMTAxMTAxMTAwMTExMTExMTExMTExMTAwMTEwMDExMTExMDAxMTEwMTExMDAxMTExMTExMTExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMDExMTAwMTAxMTExMTExMTEwMDAxMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAwMTAxMTExMDExMTEwMTAxMDExMTExMTExMTExMTExMTExMTExMTExMTExMDExMTExMTEwMTExMTEwMDExMTEwMTExMTEwMTExMTExMTExMTExMTExMTE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5SVENvbmZpZ1BhdGgyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+JFRPT0xLSVRfRElSJFxJTkNcY1xETGliX0NvbmZpZ19Ob3JtYWwuaDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdCRUNvcmVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+T0dVc2VDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzRHNwTGliPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliVGhyZWFkczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db3JlVmFyaWFudDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+ZGVmYXVsdAlOb25lPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5OclJlZ3M8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TkVPTjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HRlBVQ29yZVNsYXZlMjwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MjQ8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4zMTwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KLSAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5OREVCVUc8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4xMTExMTExMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDRGVidWdJbmZvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFbmRpYW5Nb2RlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SUV4dHJhT3B0aW9uc0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0xhbmdDb25mb3JtYW5jZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1NpZ25lZFBsYWluQ2hhcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1JlcXVpcmVQcm90b3R5cGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4kRklMRV9CTkFNRSQubzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4udGV4dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklJbnRlcndvcmsyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRMZXZlbFNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+Mzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczk4PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNvbXBpbGVyTWlzcmFSdWxlczA0PC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTExMTAxMTEwMDEwMTExMTExMTExMDAwMTEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMDEwMTExMTAxMTExMDEwMTAxMTExMTExMTExMTExMTExMTExMTExMTExMTAxMTExMTExMDExMTExMDAxMTExMDExMTExMDExMTExMTExMTExMTExMTExPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcERpYWxlY3Q8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWNjRXhjZXB0aW9uczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NSVFRJPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNDR3VhcmRDYWxsczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgPC9kYXRhPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QUFSTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj45PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuV2hhdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BV2Fybk9uZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UxPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVdhcm5SYW5nZTI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVidWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QWx0UmVnaXN0ZXJOYW1lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRGVmaW5lczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0SGVhZGVyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFMaXN0aW5nPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkluY2x1ZGVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk1hY0RlZnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+TWFjRXhwczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NYWNFeGVjPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9ubHlBc3NlZDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5NdWx0aUxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+UGFnZUxlbmd0aENoZWNrPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGg8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT44MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPlRhYlNwYWNpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT44PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWY8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFYUmVmSW50ZXJuYWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QVhSZWZEdWFsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFQcm9jZXNzb3I8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUZwdVByb2Nlc3NvcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BT3V0cHV0RmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRGSUxFX0JOQU1FJC5vPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QU11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzQ2hlY2s8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+QUxpbWl0RXJyb3JzRWRpdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjEwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFJZ25vcmVTdGRJbmNsdWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkFVc2VySW5jbHVkZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zQ2hlY2tWMjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5BRXh0cmFPcHRpb25zVjI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5Bc21Ob0xpdGVyYWxQb29sPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCi0gICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCi0gICAgICAgICAgPHZlcnNpb24+MzwvdmVyc2lvbj4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PQ091dHB1dE92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5jLnNyZWM8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5PT0NDb21tYW5kTGluZVByb2R1Y2VyPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPk9PQ09iakNvcHlFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8ZXh0ZW5zaW9ucz48L2V4dGVuc2lvbnM+DQotICAgICAgICA8Y21kbGluZT48L2NtZGxpbmU+DQotICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkJJQ09NUDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGEvPg0KLSAgICA8L3NldHRpbmdzPg0KLSAgICA8c2V0dGluZ3M+DQotICAgICAgPG5hbWU+QlVJTERBQ1RJT048L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjE8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHByZWJ1aWxkPjwvcHJlYnVpbGQ+DQotICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPklMSU5LPC9uYW1lPg0KLSAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjE3PC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua091dHB1dEZpbGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT5jLm91dDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTGliSU9Db25maWc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+WExpbmtNaXNyYUhhbmRsZXI8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJbnB1dEZpbGVTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0RlYnVnSW5mb0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0tlZXBTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtSYXdCaW5hcnlTeW1ib2w8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVNlZ21lbnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUFsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDb25maWdEZWZpbmVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtNYXBGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ0luaXRpYWxpemF0aW9uPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nTW9kdWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nU2VjdGlvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvZ1ZlbmVlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0ljZk92ZXJyaWRlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rSWNmRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGdlbmVyaWMuaWNmPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0VuYWJsZVJlbWFya3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdXBwcmVzc0RpYWdzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzUmVtPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzV2FybjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVHJlYXRBc0VycjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rV2FybmluZ3NBcmVFcnJvcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtVc2VFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtFeHRyYU9wdGlvbnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0xvd0xldmVsSW50ZXJmYWNlU2xhdmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtBdXRvTGliRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQWRkaXRpb25hbExpYnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua092ZXJyaWRlUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtQcm9ncmFtRW50cnlMYWJlbFNlbGVjdDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9GaWxsPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkZpbGxlckJ5dGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RmlsbGVyU3RhcnQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5GaWxsZXJFbmQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4weDExMDIxPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQml0T3JkZXI8L25hbWU+DQotICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjSW5pdGlhbFZhbHVlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+RG9DcmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtCRThTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0J1ZmZlcmVkVGVybWluYWxPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGRvdXRJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5DcmNGdWxsU2l6ZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0lFbGZUb29sUG9zdFByb2Nlc3M8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtMb2dBdXRvTGliU2VsZWN0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nUmVkaXJTeW1ib2xzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nVW51c2VkRnJhZ21lbnRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rQ3JjUmV2ZXJzZUJ5dGVPcmRlcjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua0NyY1VzZUFzSW5wdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRJbmxpbmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zQWxsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtPcHRFeGNlcHRpb25zRm9yY2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtDbXNpczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JbGlua09wdE1lcmdlRHVwbFNlY3Rpb25zPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0VXNlVmZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rT3B0Rm9yY2VWZmU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0FuYWx5c2lzRW5hYmxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDb250cm9sRmlsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rU3RhY2tDYWxsR3JhcGhGaWxlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+Q3JjQWxnb3JpdGhtPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KLSAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rVGhyZWFkc1NsYXZlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklsaW5rTG9nQ2FsbEdyYXBoPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5JQVJDSElWRTwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQotICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5JYXJjaGl2ZUlucHV0czwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPklhcmNoaXZlT3ZlcnJpZGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdXRwdXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5CSUxJTks8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhLz4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+QXRtZWxfTGliQm9hcmQ8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxsZWQuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc3RhcnR1cF9zYW0uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xzeXN0ZW1fc2FtLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkF0bWVsX0xpYkNoaXA8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VccGlvLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwbWMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHN1cGMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHRjLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+Qmxpbmt5X0RlbW88L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnJlZVJUT1NfU291cmNlPC9uYW1lPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkdlbmVyYWw8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjM8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yOTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkV4ZVBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxFeGU8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9ialBhdGg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+UmVsZWFzZVxPYmo8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkxpc3RQYXRoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlJlbGVhc2VcTGlzdDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0VuZGlhbk1vZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SW5wdXQgZGVzY3JpcHRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+RnVsbCBmb3JtYXR0aW5nLjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T3V0cHV0IGRlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPkZ1bGwgZm9ybWF0dGluZy48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdPdXRwdXRCaW5hcnk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDb3JlT3JDaGlwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdSdW50aW1lTGliU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HUnVudGltZUxpYlNlbGVjdFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5SVERlc2NyaXB0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPlVzZSB0aGUgbm9ybWFsIGNvbmZpZ3VyYXRpb24gb2YgdGhlIEMvQysrIHJ1bnRpbWUgbGlicmFyeS4gTm8gbG9jYWxlIGludGVyZmFjZSwgQyBsb2NhbGUsIG5vIGZpbGUgZGVzY3JpcHRvciBzdXBwb3J0LCBubyBtdWx0aWJ5dGVzIGluIHByaW50ZiBhbmQgc2NhbmYsIGFuZCBubyBoZXggZmxvYXRzIGluIHN0cnRvZC48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJvZHVjdFZlcnNpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+NS4xMC4wLjE1OTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dMYXN0U2F2ZWRCeVByb2R1Y3RWZXJzaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjcuNjAuMS4xMTIwNjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbEVuYWJsZU1pc3JhPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVZlcmJvc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDaGlwU2VsZWN0RWRpdE1lbnU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+ZGVmYXVsdAlOb25lPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5Mb3dMZXZlbEludGVyZmFjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HRW5kaWFuTW9kZUJFPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5TdGRvdXRJbnRlcmZhY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuZXJhbE1pc3JhVmVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbmVyYWxNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDb25maWdQYXRoMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4kVE9PTEtJVF9ESVIkXElOQ1xjXERMaWJfQ29uZmlnX05vcm1hbC5oPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HQkVDb3JlU2xhdmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4yNjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1VzZUNtc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HVXNlQ21zaXNEc3BMaWI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R1J1bnRpbWVMaWJUaHJlYWRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNvcmVWYXJpYW50PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R0ZQVURldmljZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmRlZmF1bHQJTm9uZTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RlBVMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TnJSZWdzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5ORU9OPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdGUFVDb3JlU2xhdmUyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MjY8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dDTVNJU1BhY2tTZWxlY3REZXZpY2U8L25hbWU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T2dMaWJIZWFwPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HTGliQWRkaXRpb25hbExvY2FsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1ByaW50ZlZhcmlhbnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9HUHJpbnRmTXVsdGlieXRlU3VwcG9ydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PR1NjYW5mVmFyaWFudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0dTY2FuZk11bHRpYnl0ZVN1cHBvcnQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuTG9jYWxlVGFnczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlbkxvY2FsZURpc3BsYXlPbmx5PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RFNQRXh0ZW5zaW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklDQ0FSTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM0PC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8d2FudE5vbkxvY2FsPjE8L3dhbnROb25Mb2NhbD4NCisgICAgICAgICAgICAgICAgPGRlYnVnPjA8L2RlYnVnPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRpbWl6YXRpb25Ob1NpemVDb25zdHJhaW50czwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+TkRFQlVHPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1ByZXByb2NGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0NvbW1lbnRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUHJlcHJvY0xpbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q0ZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0Q01uZW1vbmljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RDTWVzc2FnZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMaXN0QXNzRmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0xpc3RBc3NTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmFibGVSZW1hcmtzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ1N1cHByZXNzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnUmVtYXJrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NEaWFnV2FybmluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDRGlhZ0Vycm9yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPYmpQcmVmaXg8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NBbGxvd0xpc3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTExMTEwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RlYnVnSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRW5kaWFuTW9kZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklFeHRyYU9wdGlvbnNDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRXh0cmFPcHRpb25zPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NMYW5nQ29uZm9ybWFuY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NTaWduZWRQbGFpbkNoYXI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NSZXF1aXJlUHJvdG90eXBlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0RpYWdXYXJuQXJlRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29tcGlsZXJSdW50aW1lSW5mbzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JRnB1UHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDTGliQ29uZmlnSGVhZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlByZUluY2x1ZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NJbmNsdWRlUGF0aDI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1N0ZEluY0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDQ29kZVNlY3Rpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+LnRleHQ8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklQcm9jZXNzb3JNb2RlMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ09wdExldmVsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjM8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0U3RyYXRlZ3k8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDT3B0TGV2ZWxTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4zPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Db21waWxlck1pc3JhUnVsZXM5ODwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDExMTExMDExMDEwMTEwMTExMDAxMTEwMDExMTExMTEwMTExMDAxMTAxMTAwMDEwMTExMDExMTEwMTEwMTEwMDExMTExMTExMTExMTEwMDExMDAxMTExMTAwMTExMDExMTAwMTExMTExMTExMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q29tcGlsZXJNaXNyYVJ1bGVzMDQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjExMTEwMTExMDAxMDExMTExMTExMTAwMDExMDExMTExMTExMTExMTExMTExMTExMTExMTExMDAxMDExMTEwMTExMTAxMDEwMTExMTExMTExMTExMTExMTExMTExMTExMTEwMTExMTExMTAxMTExMTAwMTExMTAxMTExMTAxMTExMTExMTExMTExMTExMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NQb3NJbmRSb3BpPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNDUG9zSW5kUndwaTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ1Bvc0luZE5vRHluSW5pdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NMYW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NEaWFsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0FsbG93VkxBPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY1N0YXRpY0Rlc3RyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkljY0NwcElubGluZVNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NDbXNpczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NGbG9hdFNlbWFudGljczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ05vTGl0ZXJhbFBvb2w8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NPcHRTdHJhdGVneVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DQ0d1YXJkQ2FsbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNTb3VyY2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q0NFbmNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NFeGNlcHRpb25zMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JY2NSVFRJMjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5BQVJNPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4yPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTA8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgICAgICAgICA8ZGVidWc+MDwvZGVidWc+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BT2JqUHJlZml4PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFFbmRpYW48L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUNhc2VTZW5zaXRpdml0eTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNyb0NoYXJzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybkVuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FybldoYXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QVdhcm5PbmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BV2FyblJhbmdlMTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFXYXJuUmFuZ2UyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlYnVnPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFsdFJlZ2lzdGVyTmFtZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QURlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdEhlYWRlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BTGlzdGluZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbmNsdWRlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5NYWNEZWZzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk1hY0V4cHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TWFjRXhlYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Pbmx5QXNzZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+TXVsdGlMaW5lPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPlBhZ2VMZW5ndGhDaGVjazwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5QYWdlTGVuZ3RoPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5UYWJTcGFjaW5nPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjg8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRGVmaW5lczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BWFJlZkludGVybmFsPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFYUmVmRHVhbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BUHJvY2Vzc29yPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFGcHVQcm9jZXNzb3I8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QU91dHB1dEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+JEZJTEVfQk5BTUUkLm88L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0NoZWNrPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkFMaW1pdEVycm9yc0VkaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BSWdub3JlU3RkSW5jbHVkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5BVXNlckluY2x1ZGVzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc0NoZWNrVjI8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QUV4dHJhT3B0aW9uc1YyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+QXNtTm9MaXRlcmFsUG9vbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgPC9kYXRhPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5PQkpDT1BZPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MTwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPk9PQ091dHB1dEZvcm1hdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDx2ZXJzaW9uPjM8L3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T0NPdXRwdXRPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPdXRwdXRGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPmMuc3JlYzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+T09DQ29tbWFuZExpbmVQcm9kdWNlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5PT0NPYmpDb3B5RW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkNVU1RPTTwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MzwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxleHRlbnNpb25zPjwvZXh0ZW5zaW9ucz4NCisgICAgICAgICAgICAgICAgPGNtZGxpbmU+PC9jbWRsaW5lPg0KKyAgICAgICAgICAgICAgICA8aGFzUHJpbz4wPC9oYXNQcmlvPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklDT01QPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgICAgIDxzZXR0aW5ncz4NCisgICAgICAgICAgICA8bmFtZT5CVUlMREFDVElPTjwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MTwvYXJjaGl2ZVZlcnNpb24+DQorICAgICAgICAgICAgPGRhdGE+DQorICAgICAgICAgICAgICAgIDxwcmVidWlsZD48L3ByZWJ1aWxkPg0KKyAgICAgICAgICAgICAgICA8cG9zdGJ1aWxkPjwvcG9zdGJ1aWxkPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+SUxJTks8L25hbWU+DQorICAgICAgICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KKyAgICAgICAgICAgIDxkYXRhPg0KKyAgICAgICAgICAgICAgICA8dmVyc2lvbj4yMDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3V0cHV0RmlsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT5jLm91dDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMaWJJT0NvbmZpZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5YTGlua01pc3JhSGFuZGxlcjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0lucHV0RmlsZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRGVidWdJbmZvRW5hYmxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rS2VlcFN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeUZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Jhd0JpbmFyeVN5bWJvbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5U2VnbWVudDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUmF3QmluYXJ5QWxpZ248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0NvbmZpZ0RlZmluZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua01hcEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nSW5pdGlhbGl6YXRpb248L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dNb2R1bGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dTZWN0aW9uPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9nVmVuZWVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSWNmT3ZlcnJpZGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtJY2ZGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPiRUT09MS0lUX0RJUiRcQ09ORklHXGdlbmVyaWMuaWNmPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5hYmxlUmVtYXJrczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N1cHByZXNzRGlhZ3M8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNSZW08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RyZWF0QXNXYXJuPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtUcmVhdEFzRXJyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtXYXJuaW5nc0FyZUVycm9yczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1VzZUV4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0V4dHJhT3B0aW9uczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG93TGV2ZWxJbnRlcmZhY2VTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0F1dG9MaWJFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtBZGRpdGlvbmFsTGliczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3ZlcnJpZGVQcm9ncmFtRW50cnlMYWJlbDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1Byb2dyYW1FbnRyeUxhYmVsU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rUHJvZ3JhbUVudHJ5TGFiZWw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0ZpbGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+RmlsbGVyQnl0ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weEZGPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5GaWxsZXJTdGFydDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkZpbGxlckVuZDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4weDA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1NpemU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0FsaWduPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1BvbHk8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgxMTAyMTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+Q3JjQ29tcGw8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4wPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0JpdE9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNJbml0aWFsVmFsdWU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MHgwPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5Eb0NyYzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0JFOFNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQnVmZmVyZWRUZXJtaW5hbE91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0ZG91dEludGVyZmFjZVNsYXZlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY0Z1bGxTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rSUVsZlRvb2xQb3N0UHJvY2VzczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0F1dG9MaWJTZWxlY3Q8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dSZWRpclN5bWJvbHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtMb2dVbnVzZWRGcmFnbWVudHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtDcmNSZXZlcnNlQnl0ZU9yZGVyPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rQ3JjVXNlQXNJbnB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdElubGluZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNBbGxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua09wdEV4Y2VwdGlvbnNGb3JjZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0Ntc2lzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rT3B0TWVyZ2VEdXBsU2VjdGlvbnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRVc2VWZmU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtPcHRGb3JjZVZmZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1N0YWNrQW5hbHlzaXNFbmFibGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NvbnRyb2xGaWxlPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtTdGFja0NhbGxHcmFwaEZpbGU8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+PC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5DcmNBbGdvcml0aG08L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkNyY1VuaXRTaXplPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua1RocmVhZHNTbGF2ZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0xvZ0NhbGxHcmFwaDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JbGlua0ljZkZpbGVfQWx0RGVmYXVsdDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT48L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rRW5jSW5wdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtFbmNPdXRwdXRCb208L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWxpbmtIZWFwU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklsaW5rTG9jYWxlU2VsZWN0PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICA8L2RhdGE+DQorICAgICAgICA8L3NldHRpbmdzPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPklBUkNISVZFPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MDwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPklhcmNoaXZlSW5wdXRzPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+SWFyY2hpdmVPdmVycmlkZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5JYXJjaGl2ZU91dHB1dDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4jIyNVbml0aWFsaXplZCMjIzwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+QklMSU5LPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YSAvPg0KKyAgICAgICAgPC9zZXR0aW5ncz4NCisgICAgPC9jb25maWd1cmF0aW9uPg0KICAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydGFzbS5zPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydG1hY3JvLmg8L25hbWU+DQotICAgICAgPC9maWxlPg0KKyAgICAgICAgPG5hbWU+QXRtZWxfTGliQm9hcmQ8L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9sb3dsZXZlbC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGxlZC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xyZXNvdXJjZXNcSUFSXHN0YXJ0dXBfc2FtLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xzeXN0ZW1fc2FtLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkF0bWVsX0xpYkNoaXA8L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHBpby5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwbWMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2Vcc3VwYy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx0Yy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgPC9ncm91cD4NCisgICAgPGdyb3VwPg0KKyAgICAgICAgPG5hbWU+Qmxpbmt5X0RlbW88L25hbWU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZyZWVSVE9TX1NvdXJjZTwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5wb3J0YWJsZTwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0YXNtLnM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnRtYWNyby5oPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkZ1bGxfRGVtbzwvbmFtZT4NCisgICAgICAgIDxncm91cD4NCisgICAgICAgICAgICA8bmFtZT5Db21tb25fRGVtb19UYXNrczwvbmFtZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcY291bnRzZW0uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxFdmVudEdyb3Vwc0RlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRRdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRTZW1UZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlU2V0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGFza05vdGlmeS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5oPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xSZWdUZXN0LnM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQogICAgIDwvZ3JvdXA+DQogICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9uYW1lPg0KKyAgICAgICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQogICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcbGlzdC5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHF1ZXVlLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVx0aW1lcnMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnVsbF9EZW1vPC9uYW1lPg0KLSAgICA8Z3JvdXA+DQotICAgICAgPG5hbWU+Q29tbW9uX0RlbW9fVGFza3M8L25hbWU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEJsb2NrUS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcYmxvY2t0aW0uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxkZWF0aC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZHluYW1pYy5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxmbG9wLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50UXVldWUuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFNlbVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFF1ZXVlT3ZlcndyaXRlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZVNldC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxccmVjbXV0ZXguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRhc2tOb3RpZnkuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRpbWVyRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgPC9ncm91cD4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cSW50UXVldWVUaW1lci5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuaDwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xSZWdUZXN0LnM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8ZmlsZT4NCi0gICAgPG5hbWU+JFBST0pfRElSJFxtYWluLmM8L25hbWU+DQotICA8L2ZpbGU+DQogPC9wcm9qZWN0Pg0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3QgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvUlRPU0RlbW8uZXd0CmluZGV4IDI3Nzk5ODEuLjE2ZDYzMTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9SVE9TRGVtby5ld3QKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL1JUT1NEZW1vLmV3dApAQCAtMSwyNDYzICsxLDI1MjAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KIDxwcm9qZWN0Pg0KLSAgPGZpbGVWZXJzaW9uPjI8L2ZpbGVWZXJzaW9uPg0KLSAgPGNvbmZpZ3VyYXRpb24+DQotICAgIDxuYW1lPkRlYnVnPC9uYW1lPg0KLSAgICA8dG9vbGNoYWluPg0KLSAgICAgIDxuYW1lPkFSTTwvbmFtZT4NCi0gICAgPC90b29sY2hhaW4+DQotICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPkMtU1RBVDwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MjU5PC9hcmNoaXZlVmVyc2lvbj4NCi0gICAgICA8ZGF0YT4NCi0gICAgICAgIDx2ZXJzaW9uPjI1OTwvdmVyc2lvbj4NCi0gICAgICAgIDxjc3RhdGFyZ3M+DQotICAgICAgICAgIDx1c2VFeHRyYUFyZ3M+MDwvdXNlRXh0cmFBcmdzPg0KLSAgICAgICAgICA8ZXh0cmFBcmdzPjwvZXh0cmFBcmdzPg0KLSAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXRFbmFibGVkPjE8L2FuYWx5emVUaW1lb3V0RW5hYmxlZD4NCi0gICAgICAgICAgPGFuYWx5emVUaW1lb3V0PjYwMDwvYW5hbHl6ZVRpbWVvdXQ+DQotICAgICAgICAgIDxlbmFibGVQYXJhbGxlbD4wPC9lbmFibGVQYXJhbGxlbD4NCi0gICAgICAgICAgPHBhcmFsbGVsVGhyZWFkcz4yPC9wYXJhbGxlbFRocmVhZHM+DQotICAgICAgICAgIDxlbmFibGVGYWxzZVBvc2l0aXZlcz4wPC9lbmFibGVGYWxzZVBvc2l0aXZlcz4NCi0gICAgICAgICAgPG1lc3NhZ2VzTGltaXRFbmFibGVkPjE8L21lc3NhZ2VzTGltaXRFbmFibGVkPg0KLSAgICAgICAgICA8bWVzc2FnZXNMaW1pdD4xMDA8L21lc3NhZ2VzTGltaXQ+DQotICAgICAgICA8L2NzdGF0YXJncz4NCi0gICAgICAgIDxjc3RhdF9zZXR0aW5ncz4NCi0gICAgICAgICAgPGNzdGF0X3ZlcnNpb24+MS4zLjI8L2NzdGF0X3ZlcnNpb24+DQotICAgICAgICAgIDxjaGVja3NfdHJlZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVERDSEVDS1MiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHItcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItaW52LWluZGV4LXB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLW5lZy1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLXVuaW5pdC1pbmRleCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC1mbG9hdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC11bnNpZ24tbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLXVuc2lnbi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJBVEgtZGl2LTAtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1iZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1pbnRlcnZhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWdsb2JhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWxvY2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWluYy1ib29sIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbWFsbG9jLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stbm9ubmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbmVnLWNoZWNrLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5ldy1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILW92ZXJmbG93LWNhc3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1vdmVyZmxvdyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LWJvdW5kcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LW5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNpemVvZi1ieS1zaXplb2YiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FTVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0FTVC1vbGQtc3R5bGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0giPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0FUQ0gtb2JqZWN0LXNsaWNpbmciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVRDSC14dG9yLWJhZC1tZW1iZXIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPTU1BLW92ZXJsb2FkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUVOVC1uZXN0ZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QtbWVtYmVyLXJldCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1hbGxvYy1jdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXJldCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcC1zZWxmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtY29weS1jdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ09QLWRlYWxsb2MtZHRvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWR0b3ItdGhyb3ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtaW5pdC1vcmRlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtdW5pbml0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtbWVtYmVyLXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWN0b3ItY2FsbC12aXJ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ1BVLWN0b3ItaW1wbGljaXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdGhyb3ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdm9pZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWR0b3ItY2FsbC12aXJ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbWFsbG9jLWNsYXNzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbm9udmlydC1kdG9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtcmV0dXJuLXJlZi10by1jbGFzcy1kYXRhIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFQ0wiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkRFQ0wtaW1wbGljaXQtaW50Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUZJTkUtaGFzaC1tdWx0aXBsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFTlVNIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFTlVNLWJvdW5kcyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWNvbmQtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtZGFuZ2xpbmctZWxzZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWxvb3AtZXhpdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVYUC1tYWluLXJldC1pbnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbnVsbC1zdG10Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLXN0cmF5LXNlbWljb2xvbiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFBSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFItY29uc3Qtb3ZlcmZsb3ciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBUIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVC1jbXAtbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZQVC1saXRlcmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQtbWlzdXNlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtaW1wbGljaXQtZGVjbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlVOQy11bnByb3RvdHlwZWQtdXNlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTkNMVURFIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJTkNMVURFLWMtZmlsZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJTlQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklOVC11c2Utc2lnbmVkLWFzLXVuc2lnbmVkLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1lbmQtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWVuZC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItaW52YWxpZGF0ZWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJVFItbWlzbWF0Y2gtYWxnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLXN0b3JlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItdW5pbml0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWJzZWFyY2gtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZuLXVuc2FmZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1mcmVhZC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtc2V0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcHV0ZW52Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXFzb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tY29uc3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tZXJyb3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbGVhayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zcHJpbnRmLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdGQtc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJuY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNtcC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJuY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxPR0lDIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMT0dJQy1vdmVybG9hZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1hcnJheS1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtc29tZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZnB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jLXN0cnVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1uby11c2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLW9wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1zdHJ1Y3QtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXZhcmlhYmxlLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWxlYWstYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbGVhayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2MtYXJpdGgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2MtZGlmZi10eXBlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLXNpemVvZi1wdHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2Mtc2l6ZW9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLW1hbGxvYy1zdHJsZW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZWFsbG9jLWRpZmYtdHlwZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1mcmVlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmV0dXJuLW5vLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbC1maWVsZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtLXJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2siLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1zb21lIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1zdGFjayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLXZhciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWNtcC1zdHItbGl0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduLWZ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1hZnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYtZnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1mdW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtbGl0ZXJhbC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItb3ZlcmxvYWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItc2luZ2xldG9uLWFyaXRoLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXVuY2hrLXBhcmFtLXNvbWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5pbml0LXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1hbGxvYy16ZXJvLWJ5dGVzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNhc2UtcmVhY2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLWFsd2F5cyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jbXAtbmV2ZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1hbHdheXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWV4cHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLW5ldmVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtZGVhZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1leHByIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWZ1bmMtbm8tZWZmZWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtZ2xvYmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWxvY2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLW1lbWJlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELW5vLWVmZmVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXNlbGYtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtdW51c2VkLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtcGFyYW0iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXJldHVybi12YWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXZhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC12YXItYWxsIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1kZXJlZi1maWxlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1kb3VibGUtY2xvc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLWZpbGUtbm8tY2xvc2UtYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1wb3MtbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLXVzZS1hZnRlci1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWltcGxpY2l0LWRlcmVmLWZpbGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFLXdyaXRlLXJvbmx5LWZpbGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0laRU9GIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNJWkVPRi1zaWRlLWVmZmVjdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLW9yZGVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1hcnItYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXN0cnVjdC1maWVsZC1oZWFwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXZhci1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLXNvbWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtcmVhZHMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtd3JpdGVzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNUUlVDVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1RSVUNULXNpZ25lZC1iaXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENIIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNXSVRDSC1mYWxsLXRocm91Z2giLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlRIUk9XLWVtcHR5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctbWFpbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctbnVsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctcHRyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1zdGF0aWMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXVuaGFuZGxlZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi1vdmVybGFwLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04tdHlwZS1wdW5uaW5nIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0VSVCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1FWFAxOS1DIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPMzctQyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zOC1DIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHMzEtQyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQ1VSSVRZIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtb3J5LWxlYWstYWxpYXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1tZW1zZXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3ByaW50Zi1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY2F0LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNtcC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY3B5LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWFsbG9jLXNpemUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1jb3B5LWxlbmd0aCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1pbmRleCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLW9mZnNldCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi11c2UtYWZ0ZXItZnJlZS1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtc29tZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYWZ0ZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC1jb21wYXJlLWJlZm9yZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLXRhaW50ZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLW9wZW4tbm8tY2xvc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtRklMRU9QLXBhdGgtdHJhdmVyc2FsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRklMRU9QLXVzZS1hZnRlci1jbG9zZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtSU5KRUNUSU9OIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtSU5KRUNUSU9OLXNxbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04teHBhdGgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AtdGFpbnRlZC1ib3VuZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtYXNzaWdubWVudC1mdW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1hc3NpZ25tZW50Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYWZ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1jbXAtYmVmLWZ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1OVUxMLWxpdGVyYWwtcG9zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLVNUUklORy1mb3JtYXQtc3RyaW5nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLVNUUklORy1oYXJkLWNvZGVkLWNyZWRlbnRpYWxzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9oIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9pIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9qIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS42Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNy4xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS41Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEyX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEzIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjdfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMTAiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS41Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjEwIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2giLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2kiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19oIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19oIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2kiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19rIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX20iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19vIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfcSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM191Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi43Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0zLjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjJfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4zX2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjRfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjVfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuNF9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4zX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjVfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC45X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjE0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I3Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4zX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2QiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi43Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy44Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguOCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjRfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMTAiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjExIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEyX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOCI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS00X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS05Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTExIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMi0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMy0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTktMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC01Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC04Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE1X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMjEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi02Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTExX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTFfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTgtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xNC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE4LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTkiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE5LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zLTFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC03Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS02Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMS0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTRfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTAtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTUtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0wLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtNS0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0wLTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNy0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgIDwvY2hlY2tzX3RyZWU+DQotICAgICAgICA8L2NzdGF0X3NldHRpbmdzPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gICAgPHNldHRpbmdzPg0KLSAgICAgIDxuYW1lPlJ1bnRpbWVDaGVja2luZzwvbmFtZT4NCi0gICAgICA8YXJjaGl2ZVZlcnNpb24+MDwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yPC92ZXJzaW9uPg0KLSAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgIDxmaWxlVmVyc2lvbj4zPC9maWxlVmVyc2lvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5EZWJ1ZzwvbmFtZT4NCisgICAgICAgIDx0b29sY2hhaW4+DQorICAgICAgICAgICAgPG5hbWU+QVJNPC9uYW1lPg0KKyAgICAgICAgPC90b29sY2hhaW4+DQogICAgICAgICA8ZGVidWc+MTwvZGVidWc+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNEZWJ1Z0hlYXA8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjRW5hYmxlQm91bmRzQ2hlY2tpbmc8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tQdHJzTm9uSW5zdHJNZW08L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjVHJhY2tQb2ludGVyQm91bmRzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0NoZWNrQWNjZXNzZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjR2VuZXJhdGVFbnRyaWVzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y05yVHJhY2tlZFBvaW50ZXJzPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0ludE92ZXJmbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0luY1Vuc2lnbmVkPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0ludENvbnZlcnNpb248L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW5jbEV4cGxpY2l0PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0ludFNoaWZ0T3ZlcmZsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW5jbFVuc2lnbmVkU2hpZnRPdmVyZmxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNVbmhhbmRsZWRDYXNlPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0RpdkJ5WmVybzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNFbmFibGU8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tQdHJzTm9uSW5zdHJGdW5jPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICA8L2NvbmZpZ3VyYXRpb24+DQotICA8Y29uZmlndXJhdGlvbj4NCi0gICAgPG5hbWU+UmVsZWFzZTwvbmFtZT4NCi0gICAgPHRvb2xjaGFpbj4NCi0gICAgICA8bmFtZT5BUk08L25hbWU+DQotICAgIDwvdG9vbGNoYWluPg0KLSAgICA8ZGVidWc+MDwvZGVidWc+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5DLVNUQVQ8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjI1OTwvYXJjaGl2ZVZlcnNpb24+DQotICAgICAgPGRhdGE+DQotICAgICAgICA8dmVyc2lvbj4yNTk8L3ZlcnNpb24+DQotICAgICAgICA8Y3N0YXRhcmdzPg0KLSAgICAgICAgICA8dXNlRXh0cmFBcmdzPjA8L3VzZUV4dHJhQXJncz4NCi0gICAgICAgICAgPGV4dHJhQXJncz48L2V4dHJhQXJncz4NCi0gICAgICAgICAgPGFuYWx5emVUaW1lb3V0RW5hYmxlZD4xPC9hbmFseXplVGltZW91dEVuYWJsZWQ+DQotICAgICAgICAgIDxhbmFseXplVGltZW91dD42MDA8L2FuYWx5emVUaW1lb3V0Pg0KLSAgICAgICAgICA8ZW5hYmxlUGFyYWxsZWw+MDwvZW5hYmxlUGFyYWxsZWw+DQotICAgICAgICAgIDxwYXJhbGxlbFRocmVhZHM+MjwvcGFyYWxsZWxUaHJlYWRzPg0KLSAgICAgICAgICA8ZW5hYmxlRmFsc2VQb3NpdGl2ZXM+MDwvZW5hYmxlRmFsc2VQb3NpdGl2ZXM+DQotICAgICAgICAgIDxtZXNzYWdlc0xpbWl0RW5hYmxlZD4xPC9tZXNzYWdlc0xpbWl0RW5hYmxlZD4NCi0gICAgICAgICAgPG1lc3NhZ2VzTGltaXQ+MTAwPC9tZXNzYWdlc0xpbWl0Pg0KLSAgICAgICAgPC9jc3RhdGFyZ3M+DQotICAgICAgICA8Y3N0YXRfc2V0dGluZ3M+DQotICAgICAgICAgIDxjc3RhdF92ZXJzaW9uPjEuMy4yPC9jc3RhdF92ZXJzaW9uPg0KLSAgICAgICAgICA8Y2hlY2tzX3RyZWU+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1REQ0hFQ0tTIj4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgtcHRyLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1uZWctaW5kZXgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi11bmluaXQtaW5kZXgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRIIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtZmxvYXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLW5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWNtcC11bnNpZ24tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1hZnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1jbXAtYmVmIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtaW50ZXJ2YWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC11bmNoay1nbG9iYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC11bmNoay1sb2NhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1pbmMtYm9vbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW1hbGxvYy1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtbmVnLWNoZWNrLW5vbm5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW5lZy1jaGVjay1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZXctb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkFUSC1vdmVyZmxvdy1jYXN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtb3ZlcmZsb3ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaGlmdC1ib3VuZHMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaGlmdC1uZWciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaXplb2YtYnktc2l6ZW9mIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBU1QiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNBU1Qtb2xkLXN0eWxlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENIIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENILW9iamVjdC1zbGljaW5nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0FUQ0gteHRvci1iYWQtbWVtYmVyIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1BIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT01NQS1vdmVybG9hZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT01NRU5UIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQtbmVzdGVkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTlNUIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTlNULW1lbWJlci1yZXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtYWxsb2MtY3RvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcC1yZXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1hc3NpZ24tb3Atc2VsZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWNvcHktY3RvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNPUC1kZWFsbG9jLWR0b3IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yLXRocm93Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtZHRvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWluaXQtb3JkZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLW1lbWJlci11bmluaXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1jdG9yLWNhbGwtdmlydCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNQVS1jdG9yLWltcGxpY2l0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZGVsZXRlLXRocm93Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZGVsZXRlLXZvaWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kdG9yLWNhbGwtdmlydCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLW1hbGxvYy1jbGFzcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLW5vbnZpcnQtZHRvciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLXJldHVybi1yZWYtdG8tY2xhc3MtZGF0YSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUNMIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJERUNMLWltcGxpY2l0LWludCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUZJTkUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iREVGSU5FLWhhc2gtbXVsdGlwbGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRU5VTSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRU5VTS1ib3VuZHMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUC1jb25kLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWRhbmdsaW5nLWVsc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUC1sb29wLWV4aXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJFWFAtbWFpbi1yZXQtaW50Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW51bGwtc3RtdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVYUC1zdHJheS1zZW1pY29sb24iLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFBSLWNvbnN0LW92ZXJmbG93Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQtY21wLW51bGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGUFQtbGl0ZXJhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULW1pc3VzZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGVU5DIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGVU5DLWltcGxpY2l0LWRlY2wiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGVU5DLXVucHJvdG90eXBlZC1hbGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLXVzZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5DTFVERSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5DTFVERS1jLWZpbGUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5UIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJJTlQtdXNlLXNpZ25lZC1hcy11bnNpZ25lZC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklOVC11c2Utc2lnbmVkLWFzLXVuc2lnbmVkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1hZnQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1lbmQtY21wLWJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWludmFsaWRhdGVkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLW1pc21hdGNoLWFsZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklUUi1zdG9yZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLXVuaW5pdCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1ic2VhcmNoLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWJzZWFyY2gtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1mbi11bnNhZmUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItZnJlYWQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1mcmVhZC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbWNoci1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbWNoci1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbWNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbWNweS1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXB1dGVudiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWNvbnN0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWVycm9yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWxlYWsiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tbmVnIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLW51bGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3ByaW50Zi1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0ZC1zb3J0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJjYXQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJuY2F0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItc3RybmNhdC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJuY21wLW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RybmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMT0dJQyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTE9HSUMtb3ZlcmxvYWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kZWxldGUtYXJyYXktb3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kZWxldGUtb3AiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kb3VibGUtZnJlZS1hbGlhcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlLXNvbWUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kb3VibGUtZnJlZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZwdHIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tZnJlZS1uby1hbGxvYy1zdHJ1Y3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tZnJlZS1uby1hbGxvYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtbm8tdXNlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS1vcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtc3RydWN0LWZpZWxkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZS1hbGlhcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtdmFyaWFibGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1sZWFrLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWxlYWsiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbWFsbG9jLWFyaXRoIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLWRpZmYtdHlwZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YtcHRyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbWFsbG9jLXNpemVvZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2Mtc3RybGVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmVhbGxvYy1kaWZmLXR5cGUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZXR1cm4tZnJlZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1uby1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1nbG9iYWwtZmllbGQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1nbG9iYWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbS1yZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLXJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tdXNlLWZyZWUtYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tdXNlLWZyZWUtc29tZSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLWZpZWxkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtc3RhY2siLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC12YXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1jbXAtc3RyLWxpdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1mdW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtYXNzaWduIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYWZ0Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYmVmLWZ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtY21wLWJlZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtZnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWxpdGVyYWwtcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW92ZXJsb2FkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1zaW5nbGV0b24tYXJpdGgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmNoay1wYXJhbS1zb21lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXVuY2hrLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXVuaW5pdC1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi11bmluaXQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVEIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtYWxsb2MtemVyby1ieXRlcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jYXNlLXJlYWNoIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNtcC1hbHdheXMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLW5ldmVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtYWx3YXlzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtY29uZC1jb25zdC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1jb25zdC1leHByIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY29uZC1uZXZlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWRlYWQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZXhwciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1mdW5jLW5vLWVmZmVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLWdsb2JhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1sb2NhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1tZW1iZXIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1wYXJhbSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1uby1lZmZlY3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1zZWxmLWFzc2lnbiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXVudXNlZC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXBhcmFtIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELXVudXNlZC1yZXR1cm4tdmFsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELXVudXNlZC12YWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtdmFyLWFsbCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZGVyZWYtZmlsZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UtZG91YmxlLWNsb3NlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLW5vLWNsb3NlLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWZpbGUtcG9zLW5lZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS11c2UtYWZ0ZXItY2xvc2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRVNPVVJDRS1pbXBsaWNpdC1kZXJlZi1maWxlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS13cml0ZS1yb25seS1maWxlIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNJWkVPRiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0Ytc2lkZS1lZmZlY3QiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy1vcmRlciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy11bmluaXQtYXJyLWFsbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC1zdHJ1Y3QtZmllbGQtaGVhcCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXN0cnVjdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1BDLXVuaW5pdC12YXItYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXZhci1zb21lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXZvbGF0aWxlLXJlYWRzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXZvbGF0aWxlLXdyaXRlcyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVFJVQ1QiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNUUlVDVC1zaWduZWQtYml0Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNXSVRDSCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTV0lUQ0gtZmFsbC10aHJvdWdoIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJUSFJPVy1lbXB0eSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlRIUk9XLW1haW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLW51bGwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXB0ciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctc3RhdGljIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy11bmhhbmRsZWQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04iPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVU5JT04tb3ZlcmxhcC1hc3NpZ24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OLXR5cGUtcHVubmluZyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkNFUlQiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQMTktQyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTzM3LUMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPMzgtQyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULVNJRyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULVNJRzMxLUMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUNVUklUWSI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrLWFsaWFzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1tZW1vcnktbGVhayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItbWVtc2V0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1xc29ydC1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1xc29ydC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXNwcmludGYtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RkLXNvcnQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RkLXNvcnQtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cmNhdC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJjcHktb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jYXQtb3ZlcnJ1bi1wb3MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4tcG9zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jbXAtb3ZlcnJ1biIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNweS1vdmVycnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY3B5LW92ZXJydW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1hbGxvYy1zaXplIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtY29weS1sZW5ndGgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1jb3B5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtaW5kZXgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1vZmZzZXQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtYWxsIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXVzZS1hZnRlci1mcmVlLXNvbWUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC1jb21wYXJlLWFmdGVyIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtRElWLTAtY29tcGFyZS1iZWZvcmUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC10YWludGVkIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1GSUxFT1AiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC1vcGVuLW5vLWNsb3NlIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUZJTEVPUC1wYXRoLXRyYXZlcnNhbCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC11c2UtYWZ0ZXItY2xvc2UiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUlOSkVDVElPTiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUlOSkVDVElPTi1zcWwiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtSU5KRUNUSU9OLXhwYXRoIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1MT09QIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1MT09QLXRhaW50ZWQtYm91bmQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQtZnVuLXBvcyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtYXNzaWdubWVudCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWFmdCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZi1mdW4iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWNtcC1iZWYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtTlVMTC1saXRlcmFsLXBvcyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1TVFJJTkctZm9ybWF0LXN0cmluZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1TVFJJTkctaGFyZC1jb2RlZC1jcmVkZW50aWFscyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICA8L3BhY2thZ2U+DQotICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMi4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMi40Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC01LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNi41Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTcuMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4xX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4xMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuN19iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuOF9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjhfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjEwIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi4xMCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuNl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjZfZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjE1Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjExIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEyIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgIDwvcGFja2FnZT4NCi0gICAgICAgICAgICA8cGFja2FnZSBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMiI+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjZfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC44Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9nIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9oIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9pIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19lIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2YiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfaCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2ciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19pIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2oiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfayIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19tIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX24iLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19wIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfciIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM192Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3ciLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuNyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjJfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS4yX2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jODkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjNfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS40X2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jOTkiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjVfYzg5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS41X2M5OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjkiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTYiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTYuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTYuMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjExIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xNCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS41X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjVfYiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1IzIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4xX1I2Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMV9SNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjRfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMC44Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjkiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEyLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy40X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9kIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS4yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS40Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2UiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS43Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNi42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTYuNyIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuOCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTgiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC41Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9kIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjgiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOS4xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5LjIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC40X2M4OSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjRfYzk5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMC43Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjEwIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS42Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS45Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTAiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMS4xMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEyX2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2MiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjVfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjYiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgiPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS02Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTgiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtOSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTItMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTMtMiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTctMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC01Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC02Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTRfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtNF9iIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy0xLTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOS0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC02Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTciLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtOCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC05Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEwIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2QiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9mIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE5Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIxIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi00Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTUiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi03Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi05Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTExX2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMl9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTQiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS04LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOC0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE5Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOS0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMi0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zLTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtMy0xX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0zLTFfZCIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC01Ii8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTYiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC04Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtNiIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi0yIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMS0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTIiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctMi0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTQiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNC0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS0yX2IiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtMl9jIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfZCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtNF9hIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2IiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC0wLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC00Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNS0xX2EiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTUtMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNS0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMy0xIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTIiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNSI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS01LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi00Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTFfYSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9iIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0zIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMC0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0xIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0xLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0xLTMiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUtMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMCI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC0zIi8+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC00Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTIiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTQiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi01Ii8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMy0yIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTEiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTMiLz4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTUiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAiPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMSIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMiIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMyIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtNCIvPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtNSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMiI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMi0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC00Ij4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC00LTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTciPg0KLSAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTctMSIvPg0KLSAgICAgICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTktMyI+DQotICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTktMy0xIi8+DQotICAgICAgICAgICAgICA8L2dyb3VwPg0KLSAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yNy0wIj4NCi0gICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yNy0wLTEiLz4NCi0gICAgICAgICAgICAgIDwvZ3JvdXA+DQotICAgICAgICAgICAgPC9wYWNrYWdlPg0KLSAgICAgICAgICA8L2NoZWNrc190cmVlPg0KLSAgICAgICAgPC9jc3RhdF9zZXR0aW5ncz4NCi0gICAgICA8L2RhdGE+DQotICAgIDwvc2V0dGluZ3M+DQotICAgIDxzZXR0aW5ncz4NCi0gICAgICA8bmFtZT5SdW50aW1lQ2hlY2tpbmc8L25hbWU+DQotICAgICAgPGFyY2hpdmVWZXJzaW9uPjA8L2FyY2hpdmVWZXJzaW9uPg0KLSAgICAgIDxkYXRhPg0KLSAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCi0gICAgICAgIDx3YW50Tm9uTG9jYWw+MTwvd2FudE5vbkxvY2FsPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkMtU1RBVDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjYxPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjYxPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8Y3N0YXRhcmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPHVzZUV4dHJhQXJncz4wPC91c2VFeHRyYUFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8ZXh0cmFBcmdzPjwvZXh0cmFBcmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPGFuYWx5emVUaW1lb3V0RW5hYmxlZD4xPC9hbmFseXplVGltZW91dEVuYWJsZWQ+DQorICAgICAgICAgICAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXQ+NjAwPC9hbmFseXplVGltZW91dD4NCisgICAgICAgICAgICAgICAgICAgIDxlbmFibGVQYXJhbGxlbD4wPC9lbmFibGVQYXJhbGxlbD4NCisgICAgICAgICAgICAgICAgICAgIDxwYXJhbGxlbFRocmVhZHM+MjwvcGFyYWxsZWxUaHJlYWRzPg0KKyAgICAgICAgICAgICAgICAgICAgPGVuYWJsZUZhbHNlUG9zaXRpdmVzPjA8L2VuYWJsZUZhbHNlUG9zaXRpdmVzPg0KKyAgICAgICAgICAgICAgICAgICAgPG1lc3NhZ2VzTGltaXRFbmFibGVkPjE8L21lc3NhZ2VzTGltaXRFbmFibGVkPg0KKyAgICAgICAgICAgICAgICAgICAgPG1lc3NhZ2VzTGltaXQ+MTAwPC9tZXNzYWdlc0xpbWl0Pg0KKyAgICAgICAgICAgICAgICA8L2NzdGF0YXJncz4NCisgICAgICAgICAgICAgICAgPGNzdGF0X3NldHRpbmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPGNzdGF0X3ZlcnNpb24+MS41LjA8L2NzdGF0X3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8Y2hlY2tzX3RyZWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1REQ0hFQ0tTIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHItcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgtcHRyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLW5lZy1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItdW5pbml0LWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLWZsb2F0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLXVuc2lnbi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWludGVydmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstbG9jYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtaW5jLWJvb2wiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW1hbGxvYy1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stbm9ubmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZXctb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILW92ZXJmbG93LWNhc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW92ZXJmbG93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaGlmdC1ib3VuZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2l6ZW9mLWJ5LXNpemVvZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBU1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVNULW9sZC1zdHlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDQVRDSC1vYmplY3Qtc2xpY2luZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0FUQ0gteHRvci1iYWQtbWVtYmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT01NQS1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQtbmVzdGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTlNULW1lbWJlci1yZXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtYWxsb2MtY3RvciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXJldCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXNlbGYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtY29weS1jdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtZGVhbGxvYy1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yLXRocm93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LW9yZGVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtbWVtYmVyLXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWN0b3ItY2FsbC12aXJ0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDUFUtY3Rvci1pbXBsaWNpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZGVsZXRlLXRocm93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdm9pZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZHRvci1jYWxsLXZpcnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLW1hbGxvYy1jbGFzcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbm9udmlydC1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1yZXR1cm4tcmVmLXRvLWNsYXNzLWRhdGEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUNMIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iREVDTC1pbXBsaWNpdC1pbnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUZJTkUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORS1oYXNoLW11bHRpcGxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRU5VTSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVOVU0tYm91bmRzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtY29uZC1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWRhbmdsaW5nLWVsc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWxvb3AtZXhpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW1haW4tcmV0LWludCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW51bGwtc3RtdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLXN0cmF5LXNlbWljb2xvbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFItY29uc3Qtb3ZlcmZsb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVC1jbXAtbnVsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlBULWxpdGVyYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULW1pc3VzZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGVU5DLWltcGxpY2l0LWRlY2wiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGVU5DLXVucHJvdG90eXBlZC11c2VkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5DTFVERSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklOQ0xVREUtYy1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5UIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQtcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklOVC11c2Utc2lnbmVkLWFzLXVuc2lnbmVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWVuZC1jbXAtYmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1pbnZhbGlkYXRlZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLW1pc21hdGNoLWFsZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLXN0b3JlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi11bmluaXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWJzZWFyY2gtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZuLXVuc2FmZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1mcmVhZC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbWNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1zZXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcHV0ZW52IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tY29uc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1lcnJvciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1uZWciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3ByaW50Zi1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0ZC1zb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RyY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxPR0lDIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTE9HSUMtb3ZlcmxvYWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0iPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kZWxldGUtYXJyYXktb3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtYWxpYXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZwdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jLXN0cnVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtbm8tdXNlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXN0cnVjdC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZS1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbGVhay1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2MtYXJpdGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1kaWZmLXR5cGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YtcHRyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2Mtc2l6ZW9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbWFsbG9jLXN0cmxlbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmVhbGxvYy1kaWZmLXR5cGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1mcmVlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZXR1cm4tbm8tYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1nbG9iYWwtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcGFyYW0tcmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1yZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtc3RhY2siIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLXZhciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItY21wLXN0ci1saXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYWZ0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYtZnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtZnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtbGl0ZXJhbC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0tc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXVuY2hrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5pbml0LXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVEIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWFsbG9jLXplcm8tYnl0ZXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jYXNlLXJlYWNoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLWFsd2F5cyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNtcC1uZXZlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtYWx3YXlzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtZXhwciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLW5ldmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1kZWFkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZXhwciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWZ1bmMtbm8tZWZmZWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1nbG9iYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1sb2NhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLW1lbWJlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1uby1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXNlbGYtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXJldHVybi12YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtdmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtdmFyLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZGVyZWYtZmlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1kb3VibGUtY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1uby1jbG9zZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWZpbGUtcG9zLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLXVzZS1hZnRlci1jbG9zZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtaW1wbGljaXQtZGVyZWYtZmlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS13cml0ZS1yb25seS1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0laRU9GIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0Ytc2lkZS1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy1vcmRlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1hcnItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkLWhlYXAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXZhci1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtcmVhZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS13cml0ZXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVFJVQ1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTVFJVQ1Qtc2lnbmVkLWJpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNXSVRDSCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENILWZhbGwtdGhyb3VnaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctZW1wdHkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlRIUk9XLW1haW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctbnVsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctc3RhdGljIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXVuaGFuZGxlZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi1vdmVybGFwLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi10eXBlLXB1bm5pbmciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDRVJUIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUVYUDE5LUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zNy1DIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPMzgtQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULVNJRzMxLUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUNVUklUWSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXNwcmludGYtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNtcC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWFsbG9jLXNpemUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHktbGVuZ3RoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1jb3B5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtb2Zmc2V0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYWZ0ZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYmVmb3JlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC10YWludGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC1vcGVuLW5vLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtRklMRU9QLXBhdGgtdHJhdmVyc2FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1GSUxFT1AtdXNlLWFmdGVyLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUlOSkVDVElPTiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04tc3FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtSU5KRUNUSU9OLXhwYXRoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1MT09QLXRhaW50ZWQtYm91bmQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQtZnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1hc3NpZ25tZW50IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZi1mdW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtbGl0ZXJhbC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HLWZvcm1hdC1zdHJpbmciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1TVFJJTkctaGFyZC1jb2RlZC1jcmVkZW50aWFscyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9qIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC02LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjhfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguOF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTguOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTggMTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEyX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjE1IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2kiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19qIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX20iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19uIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM190IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM193IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjlfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjRfYzk5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEyX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS05IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC04IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE1X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIxIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE0LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTgtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE5Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTktMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0xLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICA8L2NoZWNrc190cmVlPg0KKyAgICAgICAgICAgICAgICA8L2NzdGF0X3NldHRpbmdzPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+UnVudGltZUNoZWNraW5nPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4xPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0RlYnVnSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNFbmFibGVCb3VuZHNDaGVja2luZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ck1lbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNUcmFja1BvaW50ZXJCb3VuZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tBY2Nlc3NlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNHZW5lcmF0ZUVudHJpZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjTnJUcmFja2VkUG9pbnRlcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50T3ZlcmZsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW5jVW5zaWduZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50Q29udmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsRXhwbGljaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50U2hpZnRPdmVyZmxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsVW5zaWduZWRTaGlmdE92ZXJmbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y1VuaGFuZGxlZENhc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRGl2QnlaZXJvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ckZ1bmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgIDwvY29uZmlndXJhdGlvbj4NCisgICAgPGNvbmZpZ3VyYXRpb24+DQorICAgICAgICA8bmFtZT5SZWxlYXNlPC9uYW1lPg0KKyAgICAgICAgPHRvb2xjaGFpbj4NCisgICAgICAgICAgICA8bmFtZT5BUk08L25hbWU+DQorICAgICAgICA8L3Rvb2xjaGFpbj4NCiAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0RlYnVnSGVhcDwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNFbmFibGVCb3VuZHNDaGVja2luZzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ck1lbTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNUcmFja1BvaW50ZXJCb3VuZHM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tBY2Nlc3NlczwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjE8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNHZW5lcmF0ZUVudHJpZXM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjTnJUcmFja2VkUG9pbnRlcnM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xMDAwPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50T3ZlcmZsb3c8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW5jVW5zaWduZWQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50Q29udmVyc2lvbjwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsRXhwbGljaXQ8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjSW50U2hpZnRPdmVyZmxvdzwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsVW5zaWduZWRTaGlmdE92ZXJmbG93PC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y1VuaGFuZGxlZENhc2U8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgICAgPG9wdGlvbj4NCi0gICAgICAgICAgPG5hbWU+R2VuUnRjRGl2QnlaZXJvPC9uYW1lPg0KLSAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQotICAgICAgICA8L29wdGlvbj4NCi0gICAgICAgIDxvcHRpb24+DQotICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZTwvbmFtZT4NCi0gICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KLSAgICAgICAgPC9vcHRpb24+DQotICAgICAgICA8b3B0aW9uPg0KLSAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ckZ1bmM8L25hbWU+DQotICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCi0gICAgICAgIDwvb3B0aW9uPg0KLSAgICAgIDwvZGF0YT4NCi0gICAgPC9zZXR0aW5ncz4NCi0gIDwvY29uZmlndXJhdGlvbj4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+QXRtZWxfTGliQm9hcmQ8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGJvYXJkX2xvd2xldmVsLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbWVtb3JpZXMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxsZWQuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xJQVJcc3RhcnR1cF9zYW0uYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHJlc291cmNlc1xzeXN0ZW1fc2FtLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkF0bWVsX0xpYkNoaXA8L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VccGlvLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwbWMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHN1cGMuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHRjLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVx3ZHQuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+Qmxpbmt5X0RlbW88L25hbWU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgPC9ncm91cD4NCi0gIDxncm91cD4NCi0gICAgPG5hbWU+RnJlZVJUT1NfU291cmNlPC9uYW1lPg0KKyAgICAgICAgPHNldHRpbmdzPg0KKyAgICAgICAgICAgIDxuYW1lPkMtU1RBVDwvbmFtZT4NCisgICAgICAgICAgICA8YXJjaGl2ZVZlcnNpb24+MjYxPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjYxPC92ZXJzaW9uPg0KKyAgICAgICAgICAgICAgICA8Y3N0YXRhcmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPHVzZUV4dHJhQXJncz4wPC91c2VFeHRyYUFyZ3M+DQorICAgICAgICAgICAgICAgICAgICA8ZXh0cmFBcmdzPjwvZXh0cmFBcmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPGFuYWx5emVUaW1lb3V0RW5hYmxlZD4xPC9hbmFseXplVGltZW91dEVuYWJsZWQ+DQorICAgICAgICAgICAgICAgICAgICA8YW5hbHl6ZVRpbWVvdXQ+NjAwPC9hbmFseXplVGltZW91dD4NCisgICAgICAgICAgICAgICAgICAgIDxlbmFibGVQYXJhbGxlbD4wPC9lbmFibGVQYXJhbGxlbD4NCisgICAgICAgICAgICAgICAgICAgIDxwYXJhbGxlbFRocmVhZHM+MjwvcGFyYWxsZWxUaHJlYWRzPg0KKyAgICAgICAgICAgICAgICAgICAgPGVuYWJsZUZhbHNlUG9zaXRpdmVzPjA8L2VuYWJsZUZhbHNlUG9zaXRpdmVzPg0KKyAgICAgICAgICAgICAgICAgICAgPG1lc3NhZ2VzTGltaXRFbmFibGVkPjE8L21lc3NhZ2VzTGltaXRFbmFibGVkPg0KKyAgICAgICAgICAgICAgICAgICAgPG1lc3NhZ2VzTGltaXQ+MTAwPC9tZXNzYWdlc0xpbWl0Pg0KKyAgICAgICAgICAgICAgICA8L2NzdGF0YXJncz4NCisgICAgICAgICAgICAgICAgPGNzdGF0X3NldHRpbmdzPg0KKyAgICAgICAgICAgICAgICAgICAgPGNzdGF0X3ZlcnNpb24+MS41LjA8L2NzdGF0X3ZlcnNpb24+DQorICAgICAgICAgICAgICAgICAgICA8Y2hlY2tzX3RyZWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1REQ0hFQ0tTIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLWludi1pbmRleC1wdHItcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgtcHRyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFSUi1pbnYtaW5kZXgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVJSLW5lZy1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBUlItdW5pbml0LWluZGV4IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLWZsb2F0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1jbXAtdW5zaWduLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtY21wLXVuc2lnbi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLWludGVydmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtZGl2LTAtdW5jaGstbG9jYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILWRpdi0wLXVuY2hrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1kaXYtMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtaW5jLWJvb2wiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW1hbGxvYy1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stbm9ubmVnIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZWctY2hlY2stcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1uZXctb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQVRILW92ZXJmbG93LWNhc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILW92ZXJmbG93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkFUSC1zaGlmdC1ib3VuZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQVRILXNoaWZ0LW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJBVEgtc2l6ZW9mLWJ5LXNpemVvZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBU1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDQVNULW9sZC1zdHlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNBVENIIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDQVRDSC1vYmplY3Qtc2xpY2luZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iQ0FUQ0gteHRvci1iYWQtbWVtYmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09NTUEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT01NQS1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTU1FTlQtbmVzdGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09OU1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPTlNULW1lbWJlci1yZXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtYWxsb2MtY3RvciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXJldCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtYXNzaWduLW9wLXNlbGYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ09QLWFzc2lnbi1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtY29weS1jdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDT1AtZGVhbGxvYy1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yLXRocm93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LW9yZGVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNPUC1pbml0LXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDT1AtbWVtYmVyLXVuaW5pdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLWN0b3ItY2FsbC12aXJ0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDUFUtY3Rvci1pbXBsaWNpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZGVsZXRlLXRocm93IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1kZWxldGUtdm9pZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtZHRvci1jYWxsLXZpcnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ1BVLW1hbGxvYy1jbGFzcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDUFUtbm9udmlydC1kdG9yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNQVS1yZXR1cm4tcmVmLXRvLWNsYXNzLWRhdGEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUNMIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iREVDTC1pbXBsaWNpdC1pbnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJERUZJTkUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkRFRklORS1oYXNoLW11bHRpcGxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRU5VTSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkVOVU0tYm91bmRzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJFWFAtY29uZC1hc3NpZ24iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWRhbmdsaW5nLWVsc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRVhQLWxvb3AtZXhpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW1haW4tcmV0LWludCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLW51bGwtc3RtdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRVhQLXN0cmF5LXNlbWljb2xvbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkVYUFItY29uc3Qtb3ZlcmZsb3ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGUFQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZQVC1jbXAtbnVsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iRlBULWxpdGVyYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iRlBULW1pc3VzZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkZVTkMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJGVU5DLWltcGxpY2l0LWRlY2wiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkZVTkMtdW5wcm90b3R5cGVkLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJGVU5DLXVucHJvdG90eXBlZC11c2VkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5DTFVERSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IklOQ0xVREUtYy1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSU5UIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSU5ULXVzZS1zaWduZWQtYXMtdW5zaWduZWQtcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklOVC11c2Utc2lnbmVkLWFzLXVuc2lnbmVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJJVFItZW5kLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iSVRSLWVuZC1jbXAtYmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi1pbnZhbGlkYXRlZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLW1pc21hdGNoLWFsZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iSVRSLXN0b3JlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IklUUi11bmluaXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItYnNlYXJjaC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWJzZWFyY2gtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZuLXVuc2FmZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLWZyZWFkLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1mcmVhZC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItbWVtY2hyLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1tZW1jaHItb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLW1lbWNweS1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItbWVtY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1tZW1zZXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLW1lbXNldC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcHV0ZW52IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItcXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1xc29ydC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1yZXR1cm4tY29uc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1lcnJvciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJMSUItcmV0dXJuLWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1uZWciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXJldHVybi1udWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3ByaW50Zi1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RkLXNvcnQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0ZC1zb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IkxJQi1zdHJjYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cmNhdC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJMSUItc3RyY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxJQi1zdHJjcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jbXAtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTElCLXN0cm5jcHktb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkxPR0lDIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTE9HSUMtb3ZlcmxvYWQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0iPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1kZWxldGUtYXJyYXktb3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRlbGV0ZS1vcCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZG91YmxlLWZyZWUtYWxpYXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWRvdWJsZS1mcmVlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLWZwdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1mcmVlLW5vLWFsbG9jLXN0cnVjdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWZyZWUtbm8tYWxsb2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLWZyZWUtbm8tdXNlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLW9wIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1mcmVlLXN0cnVjdC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZS1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tZnJlZS12YXJpYWJsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tbGVhay1hbGlhcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUVNLWxlYWsiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1FTS1tYWxsb2MtYXJpdGgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1kaWZmLXR5cGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLW1hbGxvYy1zaXplb2YtcHRyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1tYWxsb2Mtc2l6ZW9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNRU0tbWFsbG9jLXN0cmxlbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tcmVhbGxvYy1kaWZmLXR5cGUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXJldHVybi1mcmVlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1yZXR1cm4tbm8tYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1nbG9iYWwtZmllbGQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrLWdsb2JhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcGFyYW0tcmVmIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1wYXJhbSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNRU0tc3RhY2stcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS1zdGFjay1yZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXN0YWNrIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1FTS11c2UtZnJlZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUVNLXVzZS1mcmVlLXNvbWUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1hcml0aC1maWVsZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItYXJpdGgtc3RhY2siIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLWFyaXRoLXZhciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItY21wLXN0ci1saXQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1udWxsLWFzc2lnbi1mdW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItbnVsbC1hc3NpZ24tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItbnVsbC1jbXAtYWZ0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYtZnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlBUUi1udWxsLWNtcC1iZWYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLW51bGwtZnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLW51bGwtbGl0ZXJhbC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlBUUi1vdmVybG9hZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUFRSLXNpbmdsZXRvbi1hcml0aCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5jaGstcGFyYW0tc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUFRSLXVuY2hrLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJQVFItdW5pbml0LXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJQVFItdW5pbml0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVEIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWFsbG9jLXplcm8tYnl0ZXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jYXNlLXJlYWNoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtY21wLWFsd2F5cyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNtcC1uZXZlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtYWx3YXlzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1jb25kLWNvbnN0LWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QtZXhwciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWNvbmQtY29uc3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1jb25kLW5ldmVyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1kZWFkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtZXhwciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWZ1bmMtbm8tZWZmZWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1nbG9iYWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1sb2NhbC1oaWRlcy1sb2NhbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVELWxvY2FsLWhpZGVzLW1lbWJlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRUQtbG9jYWwtaGlkZXMtcGFyYW0iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC1uby1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVELXNlbGYtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtYXNzaWduIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXBhcmFtIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJSRUQtdW51c2VkLXJldHVybi12YWwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFRC11bnVzZWQtdmFsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFRC11bnVzZWQtdmFyLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlJFU09VUkNFIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtZGVyZWYtZmlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1kb3VibGUtY2xvc2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iUkVTT1VSQ0UtZmlsZS1uby1jbG9zZS1hbGwiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlJFU09VUkNFLWZpbGUtcG9zLW5lZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS1maWxlLXVzZS1hZnRlci1jbG9zZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iUkVTT1VSQ0UtaW1wbGljaXQtZGVyZWYtZmlsZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJSRVNPVVJDRS13cml0ZS1yb25seS1maWxlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0laRU9GIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTSVpFT0Ytc2lkZS1lZmZlY3QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy1vcmRlciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU1BDLXVuaW5pdC1hcnItYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkLWhlYXAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0LWZpZWxkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtc3RydWN0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNQQy11bmluaXQtdmFyLWFsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTUEMtdW5pbml0LXZhci1zb21lIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTUEMtdm9sYXRpbGUtcmVhZHMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNQQy12b2xhdGlsZS13cml0ZXMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTVFJVQ1QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTVFJVQ1Qtc2lnbmVkLWJpdCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNXSVRDSCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU1dJVENILWZhbGwtdGhyb3VnaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iVEhST1ctZW1wdHkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlRIUk9XLW1haW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctbnVsbCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJUSFJPVy1wdHIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iVEhST1ctc3RhdGljIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlRIUk9XLXVuaGFuZGxlZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlVOSU9OIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi1vdmVybGFwLWFzc2lnbiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJVTklPTi10eXBlLXB1bm5pbmciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJDRVJUIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRVhQIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUVYUDE5LUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULUZJTyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iQ0VSVC1GSU8zNy1DIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtRklPMzgtQyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IkNFUlQtU0lHIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJDRVJULVNJRzMxLUMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUNVUklUWSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrLWFsaWFzIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbW9yeS1sZWFrIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLW1lbXNldC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXFzb3J0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItcXNvcnQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXNwcmludGYtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdGQtc29ydC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0ZC1zb3J0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY2F0LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RyY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNhdC1vdmVycnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jYXQtb3ZlcnJ1biIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY21wLW92ZXJydW4tcG9zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItc3RybmNtcC1vdmVycnVuIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtQlVGRkVSLXN0cm5jcHktb3ZlcnJ1bi1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi1zdHJuY3B5LW92ZXJydW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWFsbG9jLXNpemUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUJVRkZFUi10YWludGVkLWNvcHktbGVuZ3RoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1jb3B5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdGFpbnRlZC1pbmRleCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtQlVGRkVSLXRhaW50ZWQtb2Zmc2V0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtYWxsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1CVUZGRVItdXNlLWFmdGVyLWZyZWUtc29tZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYWZ0ZXIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLURJVi0wLWNvbXBhcmUtYmVmb3JlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1ESVYtMC10YWludGVkIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUZJTEVPUC1vcGVuLW5vLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtRklMRU9QLXBhdGgtdHJhdmVyc2FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1GSUxFT1AtdXNlLWFmdGVyLWNsb3NlIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUlOSkVDVElPTiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1JTkpFQ1RJT04tc3FsIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJTRUMtSU5KRUNUSU9OLXhwYXRoIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLUxPT1AiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1MT09QLXRhaW50ZWQtYm91bmQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1OVUxMLWFzc2lnbm1lbnQtZnVuLXBvcyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtTlVMTC1hc3NpZ25tZW50IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9IlNFQy1OVUxMLWNtcC1hZnQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZi1mdW4iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iU0VDLU5VTEwtY21wLWJlZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iU0VDLU5VTEwtbGl0ZXJhbC1wb3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJTRUMtU1RSSU5HLWZvcm1hdC1zdHJpbmciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9IlNFQy1TVFJJTkctaGFyZC1jb2RlZC1jcmVkZW50aWFscyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2UiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMS4yX2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xLjJfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEuMl9qIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0yLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTUuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC01LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTYuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC02LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC02LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtNy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC04LjhfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguOF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTguOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTguMTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTggMTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOC4xMCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTkuMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtOS4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC05LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjFfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjJfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEwLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTExLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMi44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEyLjEyX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTIuMTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuMl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjJfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTMuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTEzLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xMy43X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE0LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC44X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNC45IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTQuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE1LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTUuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNi44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTYuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE2LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTcuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE3LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xNy42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE4LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTguNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMTkuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAwNC0xOS4xMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTE5LjE1IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfZyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjNfaSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDA0LTIwLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMDQtMjAuMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAwNC0yMC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2thZ2UgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuNl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjdfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC43X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuN19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9mIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjExX2ciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTFfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xMV9pIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEyIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItRGlyLTQuMTNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1EaXItNC4xM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLURpci00LjEzX2giIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19nIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfaCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX2kiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19qIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfayIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX20iIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19uIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfbyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3AiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM19xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfciIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM190IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xLjNfdSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMS4zX3YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEuM193IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMi4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yLjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTMuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMy4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuMl9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuM19jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNF9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNV9jOTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTUuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNS43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS01LjkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTYuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTcuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS03LjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtNy40X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjNfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC41X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguNV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjlfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguOV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS04LjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOC4xMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTguMTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjFfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4xX2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtOS4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTkuNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS05LjVfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjFfUjgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEwLjRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTAuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTExLjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMS40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTEuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMi4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMyI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTEzLjJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4yX2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTMuNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xMy42IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuM19iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE0LjRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTQuNF9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNC40X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS41IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNS42X2QiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE1LjZfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTUuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE2LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTciPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy4yX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTcuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE3LjciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xNy44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4xX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC4zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC40IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC42X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE4LjZfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTguNl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC43IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0xOC44IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMTkuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTE5LjIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNF9jODkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjRfYzk5IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjAuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIwLjEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuNyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjExIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjEuMTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIxLjEyX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4xX2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi4yX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMyMDEyLVJ1bGUtMjIuNV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQzIwMTItUnVsZS0yMi41X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDMjAxMi1SdWxlLTIyLjYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNrYWdlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNrYWdlIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMl9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTRfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0xLTgiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTAtMS05IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0wLTEtMTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMC0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItNy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi03LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEwLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTAtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMC02IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0yLTEzLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMi0xMy00X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTItMTMtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtMS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0zLTkiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMy05LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTMtOS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTQtNS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC00LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNC01LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTciIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC04IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEwIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTEzX2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xM19jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTNfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE0IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTVfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE1X2IiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2MiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xNl9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTAtMTZfZSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTE2X2YiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMC0xOSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0wLTIxIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0yLTkiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTAiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMi0xMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTItMTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTMtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0zLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMy00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtOC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTQiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE0LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNS0xOCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTgtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC01LTE5Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTUtMTktMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi0yLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTItMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9jIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTMtMV9kIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi00LTYiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNC03IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTQtOCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtMiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi01LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNS00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTUtNiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNi02LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTYtNi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC02LTYtNSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTEtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0xLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy00LTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtNy01LTJfZCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJmYWxzZSIgbmFtZT0iTUlTUkFDKysyMDA4LTctNS00X2EiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC03LTUtNF9iIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtMC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTgtNC0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC04LTQtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC00LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTFfYyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOC01LTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktMy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNS0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNiI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTktNi0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC05LTYtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtOS02LTQiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMSI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTEyLTEtMV9hIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xMi0xLTFfYiIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTItMS0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTAiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0xLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTEtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zIj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS0zLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTMtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTUtMy01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE1LTUiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNS01LTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTAtMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMC00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0yLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTItMyIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi00IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9ImZhbHNlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTYtMi01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE2LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0iZmFsc2UiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNi0zLTIiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE3LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTctMC0zIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xNy0wLTUiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC0yIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0wLTMiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTAtNCIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtMC01IiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTIiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC0yLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE4LTQtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGdyb3VwIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOC03Ij4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGVjayBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMTgtNy0xIiAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Z3JvdXAgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTE5LTMiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoZWNrIGVuYWJsZWQ9InRydWUiIG5hbWU9Ik1JU1JBQysrMjAwOC0xOS0zLTEiIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZ3JvdXA+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxncm91cCBlbmFibGVkPSJ0cnVlIiBuYW1lPSJNSVNSQUMrKzIwMDgtMjctMCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hlY2sgZW5hYmxlZD0idHJ1ZSIgbmFtZT0iTUlTUkFDKysyMDA4LTI3LTAtMSIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ncm91cD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2thZ2U+DQorICAgICAgICAgICAgICAgICAgICA8L2NoZWNrc190cmVlPg0KKyAgICAgICAgICAgICAgICA8L2NzdGF0X3NldHRpbmdzPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgICAgICA8c2V0dGluZ3M+DQorICAgICAgICAgICAgPG5hbWU+UnVudGltZUNoZWNraW5nPC9uYW1lPg0KKyAgICAgICAgICAgIDxhcmNoaXZlVmVyc2lvbj4wPC9hcmNoaXZlVmVyc2lvbj4NCisgICAgICAgICAgICA8ZGF0YT4NCisgICAgICAgICAgICAgICAgPHZlcnNpb24+MjwvdmVyc2lvbj4NCisgICAgICAgICAgICAgICAgPHdhbnROb25Mb2NhbD4xPC93YW50Tm9uTG9jYWw+DQorICAgICAgICAgICAgICAgIDxkZWJ1Zz4wPC9kZWJ1Zz4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0RlYnVnSGVhcDwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNFbmFibGVCb3VuZHNDaGVja2luZzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ck1lbTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNUcmFja1BvaW50ZXJCb3VuZHM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjQ2hlY2tBY2Nlc3NlczwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4xPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNHZW5lcmF0ZUVudHJpZXM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjTnJUcmFja2VkUG9pbnRlcnM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTAwMDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50T3ZlcmZsb3c8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW5jVW5zaWduZWQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50Q29udmVyc2lvbjwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsRXhwbGljaXQ8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjSW50U2hpZnRPdmVyZmxvdzwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNJbmNsVW5zaWduZWRTaGlmdE92ZXJmbG93PC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y1VuaGFuZGxlZENhc2U8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MDwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgICAgICA8b3B0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPG5hbWU+R2VuUnRjRGl2QnlaZXJvPC9uYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPHN0YXRlPjA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICA8L29wdGlvbj4NCisgICAgICAgICAgICAgICAgPG9wdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxuYW1lPkdlblJ0Y0VuYWJsZTwvbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxzdGF0ZT4wPC9zdGF0ZT4NCisgICAgICAgICAgICAgICAgPC9vcHRpb24+DQorICAgICAgICAgICAgICAgIDxvcHRpb24+DQorICAgICAgICAgICAgICAgICAgICA8bmFtZT5HZW5SdGNDaGVja1B0cnNOb25JbnN0ckZ1bmM8L25hbWU+DQorICAgICAgICAgICAgICAgICAgICA8c3RhdGU+MTwvc3RhdGU+DQorICAgICAgICAgICAgICAgIDwvb3B0aW9uPg0KKyAgICAgICAgICAgIDwvZGF0YT4NCisgICAgICAgIDwvc2V0dGluZ3M+DQorICAgIDwvY29uZmlndXJhdGlvbj4NCiAgICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPnBvcnRhYmxlPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnRhc20uczwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnRtYWNyby5oPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCisgICAgICAgIDxuYW1lPkF0bWVsX0xpYkJvYXJkPC9uYW1lPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbG93bGV2ZWwuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtcc291cmNlXGJvYXJkX21lbW9yaWVzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxsZWQuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliYm9hcmRfc2FtdjctZWtccmVzb3VyY2VzXElBUlxzdGFydHVwX3NhbS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJib2FyZF9zYW12Ny1la1xyZXNvdXJjZXNcc3lzdGVtX3NhbS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5BdG1lbF9MaWJDaGlwPC9uYW1lPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxsaWJjaGlwX3NhbXY3XHNvdXJjZVxwaW8uYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VccG1jLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXGxpYmNoaXBfc2Ftdjdcc291cmNlXHN1cGMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2VcdGMuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbGliY2hpcF9zYW12N1xzb3VyY2Vcd2R0LmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgIDwvZ3JvdXA+DQorICAgIDxncm91cD4NCisgICAgICAgIDxuYW1lPkJsaW5reV9EZW1vPC9uYW1lPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5GcmVlUlRPU19Tb3VyY2U8L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+cG9ydGFibGU8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxJQVJcQVJNX0NNN1xyMHAxXHBvcnQuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXElBUlxBUk1fQ003XHIwcDFccG9ydGFzbS5zPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXEFSTV9DTTdccjBwMVxwb3J0bWFjcm8uaDwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8L2dyb3VwPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxsaXN0LmM8L25hbWU+DQorICAgICAgICA8L2ZpbGU+DQorICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGFza3MuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRpbWVycy5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICA8L2dyb3VwPg0KKyAgICA8Z3JvdXA+DQorICAgICAgICA8bmFtZT5GdWxsX0RlbW88L25hbWU+DQorICAgICAgICA8Z3JvdXA+DQorICAgICAgICAgICAgPG5hbWU+Q29tbW9uX0RlbW9fVGFza3M8L25hbWU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcQmxvY2tRLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGNvdW50c2VtLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGRlYXRoLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGR5bmFtaWMuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcRXZlbnRHcm91cHNEZW1vLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGZsb3AuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50UXVldWUuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcSW50U2VtVGVzdC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZVNldC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jPC9uYW1lPg0KKyAgICAgICAgICAgIDwvZmlsZT4NCisgICAgICAgICAgICA8ZmlsZT4NCisgICAgICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXFRhc2tOb3RpZnkuYzwvbmFtZT4NCisgICAgICAgICAgICA8L2ZpbGU+DQorICAgICAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcVGltZXJEZW1vLmM8L25hbWU+DQorICAgICAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPC9ncm91cD4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuYzwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuaDwvbmFtZT4NCisgICAgICAgIDwvZmlsZT4NCisgICAgICAgIDxmaWxlPg0KKyAgICAgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXG1haW5fZnVsbC5jPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KKyAgICAgICAgPGZpbGU+DQorICAgICAgICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cUmVnVGVzdC5zPC9uYW1lPg0KKyAgICAgICAgPC9maWxlPg0KICAgICA8L2dyb3VwPg0KICAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvbmFtZT4NCisgICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcbWFpbi5jPC9uYW1lPg0KICAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXGxpc3QuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cLi5cU291cmNlXHRhc2tzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gIDwvZ3JvdXA+DQotICA8Z3JvdXA+DQotICAgIDxuYW1lPkZ1bGxfRGVtbzwvbmFtZT4NCi0gICAgPGdyb3VwPg0KLSAgICAgIDxuYW1lPkNvbW1vbl9EZW1vX1Rhc2tzPC9uYW1lPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGJsb2NrdGltLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxjb3VudHNlbS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZGVhdGguYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXGR5bmFtaWMuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEV2ZW50R3JvdXBzRGVtby5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcZmxvcC5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcR2VuUVRlc3QuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXEludFF1ZXVlLmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxJbnRTZW1UZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jPC9uYW1lPg0KLSAgICAgIDwvZmlsZT4NCi0gICAgICA8ZmlsZT4NCi0gICAgICAgIDxuYW1lPiRQUk9KX0RJUiRcLi5cQ29tbW9uXE1pbmltYWxcUXVldWVTZXQuYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgICAgPGZpbGU+DQotICAgICAgICA8bmFtZT4kUFJPSl9ESVIkXC4uXENvbW1vblxNaW5pbWFsXHJlY211dGV4LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxzZW10ZXN0LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUYXNrTm90aWZ5LmM8L25hbWU+DQotICAgICAgPC9maWxlPg0KLSAgICAgIDxmaWxlPg0KLSAgICAgICAgPG5hbWU+JFBST0pfRElSJFwuLlxDb21tb25cTWluaW1hbFxUaW1lckRlbW8uYzwvbmFtZT4NCi0gICAgICA8L2ZpbGU+DQotICAgIDwvZ3JvdXA+DQotICAgIDxmaWxlPg0KLSAgICAgIDxuYW1lPiRQUk9KX0RJUiRcRnVsbF9EZW1vXEludFF1ZXVlVGltZXIuYzwvbmFtZT4NCi0gICAgPC9maWxlPg0KLSAgICA8ZmlsZT4NCi0gICAgICA8bmFtZT4kUFJPSl9ESVIkXEZ1bGxfRGVtb1xJbnRRdWV1ZVRpbWVyLmg8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L25hbWU+DQotICAgIDwvZmlsZT4NCi0gICAgPGZpbGU+DQotICAgICAgPG5hbWU+JFBST0pfRElSJFxGdWxsX0RlbW9cUmVnVGVzdC5zPC9uYW1lPg0KLSAgICA8L2ZpbGU+DQotICA8L2dyb3VwPg0KLSAgPGZpbGU+DQotICAgIDxuYW1lPiRQUk9KX0RJUiRcbWFpbi5jPC9uYW1lPg0KLSAgPC9maWxlPg0KIDwvcHJvamVjdD4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL21haW4uYwppbmRleCBhNmYyMmMyLi5mNjJjYmRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLkRlYnVnLmNzcHkuYmF0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLkRlYnVnLmNzcHkuYmF0CmluZGV4IGM0MWUzYzAuLjRhOGU1NDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5EZWJ1Zy5jc3B5LmJhdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uRGVidWcuY3NweS5iYXQKQEAgLTI1LDcgKzI1LDcgQEAKIA0KIEBlY2hvIG9uIA0KIA0KLSJDOlxEZXZUb29sc1xJQVIgU3lzdGVtc1xFbWJlZGRlZCBXb3JrYmVuY2ggNy40XGNvbW1vblxiaW5cY3NweWJhdCIgLWYgIkM6XEVcRGV2XEZyZWVSVE9TXFdvcmtpbmdDb3B5XEZyZWVSVE9TXERlbW9cQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbFxzZXR0aW5nc1xSVE9TRGVtby5EZWJ1Zy5nZW5lcmFsLnhjbCIgLS1iYWNrZW5kIC1mICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZHJpdmVyLnhjbCIgDQorIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA4LjBcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXHNldHRpbmdzXFJUT1NEZW1vLkRlYnVnLmdlbmVyYWwueGNsIiAtLWJhY2tlbmQgLWYgIkM6XHRlbXBccmNcRnJlZVJUT1N2MTAuMC4wXEZyZWVSVE9TXERlbW9cQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbFxzZXR0aW5nc1xSVE9TRGVtby5EZWJ1Zy5kcml2ZXIueGNsIiANCiANCiBAZWNobyBvZmYgDQogZ290byBlbmQgDQpAQCAtMzQsNyArMzQsNyBAQAogDQogQGVjaG8gb24gDQogDQotIkM6XERldlRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA3LjRcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcRVxEZXZcRnJlZVJUT1NcV29ya2luZ0NvcHlcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXHNldHRpbmdzXFJUT1NEZW1vLkRlYnVnLmdlbmVyYWwueGNsIiAiLS1kZWJ1Z19maWxlPSV+MSIgLS1iYWNrZW5kIC1mICJDOlxFXERldlxGcmVlUlRPU1xXb3JraW5nQ29weVxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZHJpdmVyLnhjbCIgDQorIkM6XGRldnRvb2xzXElBUiBTeXN0ZW1zXEVtYmVkZGVkIFdvcmtiZW5jaCA4LjBcY29tbW9uXGJpblxjc3B5YmF0IiAtZiAiQzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXHNldHRpbmdzXFJUT1NEZW1vLkRlYnVnLmdlbmVyYWwueGNsIiAiLS1kZWJ1Z19maWxlPSV+MSIgLS1iYWNrZW5kIC1mICJDOlx0ZW1wXHJjXEZyZWVSVE9TdjEwLjAuMFxGcmVlUlRPU1xEZW1vXENPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWxcc2V0dGluZ3NcUlRPU0RlbW8uRGVidWcuZHJpdmVyLnhjbCIgDQogDQogQGVjaG8gb2ZmIA0KIDplbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uY3J1biBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCmluZGV4IDViYjVhY2MuLjYyYzIxYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5jcnVuCkBAIC0xLDE2ICsxLDEzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIj8+DQotDQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCiA8Y3J1bj4NCi0gIDx2ZXJzaW9uPjE8L3ZlcnNpb24+DQotICA8ZmlsdGVyX2VudHJpZXM+DQotICAgIDxmaWx0ZXIgaW5kZXg9IjAiIHR5cGU9ImRlZmF1bHQiPg0KLSAgICAgIDx0eXBlPio8L3R5cGU+DQotICAgICAgPHN0YXJ0X2ZpbGU+Kjwvc3RhcnRfZmlsZT4NCi0gICAgICA8ZW5kX2ZpbGU+KjwvZW5kX2ZpbGU+DQotICAgICAgPGFjdGlvbl9kZWJ1Z2dlcj4wPC9hY3Rpb25fZGVidWdnZXI+DQotICAgICAgPGFjdGlvbl9sb2c+MTwvYWN0aW9uX2xvZz4NCi0gICAgPC9maWx0ZXI+DQotICA8L2ZpbHRlcl9lbnRyaWVzPg0KKyAgICA8dmVyc2lvbj4xPC92ZXJzaW9uPg0KKyAgICA8ZmlsdGVyX2VudHJpZXM+DQorICAgICAgICA8ZmlsdGVyIGluZGV4PSIwIiB0eXBlPSJkZWZhdWx0Ij4NCisgICAgICAgICAgICA8dHlwZT4qPC90eXBlPg0KKyAgICAgICAgICAgIDxzdGFydF9maWxlPio8L3N0YXJ0X2ZpbGU+DQorICAgICAgICAgICAgPGVuZF9maWxlPio8L2VuZF9maWxlPg0KKyAgICAgICAgICAgIDxhY3Rpb25fZGVidWdnZXI+MDwvYWN0aW9uX2RlYnVnZ2VyPg0KKyAgICAgICAgICAgIDxhY3Rpb25fbG9nPjE8L2FjdGlvbl9sb2c+DQorICAgICAgICA8L2ZpbHRlcj4NCisgICAgPC9maWx0ZXJfZW50cmllcz4NCiA8L2NydW4+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLmRiZ2R0CmluZGV4IDQ1OTQwYjYuLjhmNjQ3ZTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NBTVY3MV9YcGxhaW5lZF9JQVJfS2VpbC9zZXR0aW5ncy9SVE9TRGVtby5kYmdkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8uZGJnZHQKQEAgLTEsMTExICsxLDI5MCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KLQ0KKzw/eG1sIHZlcnNpb249IjEuMCI/Pg0KIDxQcm9qZWN0Pg0KLSAgPERlc2t0b3A+DQotICAgIDxTdGF0aWM+DQotICAgICAgPERlYnVnLUxvZz4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPjxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPjwvRGVidWctTG9nPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD4NCi0gICAgICAgIDxDb2x1bW5XaWR0aDE+MTIxNjwvQ29sdW1uV2lkdGgxPg0KLSAgICAgICAgPENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj4NCi0gICAgICAgIDxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz4NCi0gICAgICA8L0J1aWxkPg0KLSAgICAgIDxXb3Jrc3BhY2U+DQotICAgICAgICA8Q29sdW1uV2lkdGhzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxDb2x1bW4wPjE1NzwvQ29sdW1uMD48Q29sdW1uMT4yNzwvQ29sdW1uMT48Q29sdW1uMj4yNzwvQ29sdW1uMj48Q29sdW1uMz4yNzwvQ29sdW1uMz48L0NvbHVtbldpZHRocz4NCi0gICAgICA8L1dvcmtzcGFjZT4NCi0gICAgICA8RGlzYXNzZW1ibHk+DQotICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPGl0ZW0+RGlzYXNzZW1ibHk8L2l0ZW0+PGl0ZW0+X0kwPC9pdGVtPjwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgIDxpdGVtPjUwMDwvaXRlbT48aXRlbT4yMDwvaXRlbT48L2NvbC13aWR0aHM+DQotICAgICAgICA8RGlzYXNtSGlzdG9yeS8+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxTaG93Q29kZUNvdmVyYWdlPjE8L1Nob3dDb2RlQ292ZXJhZ2U+PFNob3dJbnN0clByb2ZpbGluZz4xPC9TaG93SW5zdHJQcm9maWxpbmc+PC9EaXNhc3NlbWJseT4NCi0gICAgICA8UmVnaXN0ZXI+PFByZWZlcmVkV2luZG93cz48UG9zaXRpb24+MjwvUG9zaXRpb24+PFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD48U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPjxXaW5kb3dzLz48L1ByZWZlcmVkV2luZG93cz48L1JlZ2lzdGVyPg0KLSAgICAgIDxDYWxsU3RhY2s+DQotICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KLSAgICAgICAgICA8UG9zaXRpb24+MTwvUG9zaXRpb24+DQotICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQotICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQotICAgICAgICAgIDxXaW5kb3dzLz4NCi0gICAgICAgIDwvUHJlZmVyZWRXaW5kb3dzPg0KLSAgICAgICAgPGNvbC1uYW1lcz4NCi0gICAgICAgICAgPGl0ZW0+RnJhbWU8L2l0ZW0+DQotICAgICAgICAgIDxpdGVtPl9JMDwvaXRlbT4NCi0gICAgICAgIDwvY29sLW5hbWVzPg0KLSAgICAgICAgPGNvbC13aWR0aHM+DQotICAgICAgICAgIDxpdGVtPjM1MDA8L2l0ZW0+DQotICAgICAgICAgIDxpdGVtPjIwPC9pdGVtPg0KLSAgICAgICAgPC9jb2wtd2lkdGhzPg0KLSAgICAgIDwvQ2FsbFN0YWNrPg0KLSAgICA8UXVpY2tXYXRjaD48UHJlZmVyZWRXaW5kb3dzPjxQb3NpdGlvbj4yPC9Qb3NpdGlvbj48U2NyZWVuUG9zWD4wPC9TY3JlZW5Qb3NYPjxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+PFdpbmRvd3MvPjwvUHJlZmVyZWRXaW5kb3dzPjxjb2wtbmFtZXM+PGl0ZW0+RXhwcmVzc2lvbjwvaXRlbT48aXRlbT5Mb2NhdGlvbjwvaXRlbT48aXRlbT5UeXBlPC9pdGVtPjxpdGVtPlZhbHVlPC9pdGVtPjwvY29sLW5hbWVzPjxjb2wtd2lkdGhzPjxpdGVtPjEwMDwvaXRlbT48aXRlbT4xNTA8L2l0ZW0+PGl0ZW0+MTAwPC9pdGVtPjxpdGVtPjEwMDwvaXRlbT48L2NvbC13aWR0aHM+PFFXYXRjaEhpc3Rvcnk+PGl0ZW0+dWx4PC9pdGVtPjwvUVdhdGNoSGlzdG9yeT48L1F1aWNrV2F0Y2g+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMD4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTg1OC05ODE4PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5EZWJ1ZyBMb2c8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+RGVidWctTG9nPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTE5MzM1LTk4Mjg8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPkJ1aWxkPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkJ1aWxkPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uLz4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQwPjxXbmQxPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTMwNjA2LTk4MjE8L0lkZW50aXR5Pg0KLSAgICAgICAgICAgIDxUYWJOYW1lPldvcmtzcGFjZTwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5Xb3Jrc3BhY2U8L0ZhY3Rvcnk+DQotICAgICAgICAgICAgPFNlc3Npb24+DQotICAgICAgICAgICAgICANCi0gICAgICAgICAgICA8Tm9kZURpY3Q+PEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPjxFeHBhbmRlZE5vZGU+UlRPU0RlbW8vRnJlZVJUT1NfU291cmNlPC9FeHBhbmRlZE5vZGU+PEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPU19Tb3VyY2UvUG9ydGFibGU8L0V4cGFuZGVkTm9kZT48L05vZGVEaWN0PjwvU2Vzc2lvbj4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQxPjwvV2luZG93cz4NCi0gICAgPEVkaXRvcj4NCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgICANCi0gICAgPFBhbmU+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxtYWluLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xMTQ8L1lQb3MyPjxTZWxTdGFydDI+NjQxMTwvU2VsU3RhcnQyPjxTZWxFbmQyPjY0MTE8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4yMTk8L1lQb3MyPjxTZWxTdGFydDI+MTEzMDQ8L1NlbFN0YXJ0Mj48U2VsRW5kMj4xMTMwNDwvU2VsRW5kMj48L1RhYj48QWN0aXZlVGFiPjE8L0FjdGl2ZVRhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4xNDQ8L1lQb3MyPjxTZWxTdGFydDI+NzMxNDwvU2VsU3RhcnQyPjxTZWxFbmQyPjczMTQ8L1NlbEVuZDI+PC9UYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxsaWJib2FyZF9zYW12Ny1la1xzb3VyY2VcYm9hcmRfbG93bGV2ZWwuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjQzPC9ZUG9zMj48U2VsU3RhcnQyPjI5MTM8L1NlbFN0YXJ0Mj48U2VsRW5kMj4yOTEzPC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj4zNTk8L1lQb3MyPjxTZWxTdGFydDI+MTQxNDE8L1NlbFN0YXJ0Mj48U2VsRW5kMj4xNDE0MTwvU2VsRW5kMj48L1RhYj48VGFiPjxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+PEZpbGVuYW1lPiRXU19ESVIkXC4uXC4uXFNvdXJjZVxpbmNsdWRlXHBvcnRhYmxlLmg8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj43NzwvWVBvczI+PFNlbFN0YXJ0Mj41MjI3PC9TZWxTdGFydDI+PFNlbEVuZDI+NTIyNzwvU2VsRW5kMj48L1RhYj48L1BhbmU+PEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT48U2l6ZXM+PFBhbmU+PFg+MTAwMDAwMDwvWD48WT4xMDAwMDAwPC9ZPjwvUGFuZT48L1NpemVzPjxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPjwvRWRpdG9yPg0KLSAgICA8UG9zaXRpb25zPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8VG9wPjxSb3cwPjxTaXplcz48VG9vbGJhci0wMENEOEY5MD48a2V5PmlhcmlkZXBtLmVudTE8L2tleT48L1Rvb2xiYXItMDBDRDhGOTA+PC9TaXplcz48L1JvdzA+PFJvdzE+PFNpemVzPjxUb29sYmFyLTEyNjcwQUM4PjxrZXk+ZGVidWdnZXJndWkuZW51MTwva2V5PjwvVG9vbGJhci0xMjY3MEFDOD48L1NpemVzPjwvUm93MT48Um93Mj48U2l6ZXM+PFRvb2xiYXItMTI2NzBDNTg+PGtleT5hcm1qbGluay5lbnUxPC9rZXk+PC9Ub29sYmFyLTEyNjcwQzU4PjwvU2l6ZXM+PC9Sb3cyPjwvVG9wPjxMZWZ0PjxSb3cwPjxTaXplcz48V25kMT48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT42MzE8L0JvdHRvbT48UmlnaHQ+MjMxPC9SaWdodD48eD4tMjwveD48eT4tMjwveT48eHNjcmVlbj4yMDA8L3hzY3JlZW4+PHlzY3JlZW4+MjAwPC95c2NyZWVuPjxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yMDMyNTI8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTM4NjkwPC9zaXplVmVydENYPjxzaXplVmVydENZPjY0MzI5Mzwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQxPjwvU2l6ZXM+PC9Sb3cwPjwvTGVmdD48UmlnaHQ+PFJvdzA+PFNpemVzLz48L1JvdzA+PC9SaWdodD48Qm90dG9tPjxSb3cwPjxTaXplcz48V25kMD48UmVjdD48VG9wPi0yPC9Ub3A+PExlZnQ+LTI8L0xlZnQ+PEJvdHRvbT4yNjE8L0JvdHRvbT48UmlnaHQ+MTY4MjwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MTY4NDwveHNjcmVlbj48eXNjcmVlbj4yNjM8L3lzY3JlZW4+PHNpemVIb3J6Q1g+MTAwMjM4MTwvc2l6ZUhvcnpDWD48c2l6ZUhvcnpDWT4yNjcyNzY8L3NpemVIb3J6Q1k+PHNpemVWZXJ0Q1g+MTE5MDQ4PC9zaXplVmVydENYPjxzaXplVmVydENZPjIwMzI1Mjwvc2l6ZVZlcnRDWT48L1JlY3Q+PC9XbmQwPjwvU2l6ZXM+PC9Sb3cwPjwvQm90dG9tPjxGbG9hdD48U2l6ZXMvPjwvRmxvYXQ+PC9Qb3NpdGlvbnM+DQotICA8L0Rlc2t0b3A+DQorICAgIDxEZXNrdG9wPg0KKyAgICAgICAgPFN0YXRpYz4NCisgICAgICAgICAgICA8RGVidWctTG9nPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjIwPC9Db2x1bW5XaWR0aDA+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDE+MTYyMjwvQ29sdW1uV2lkdGgxPg0KKyAgICAgICAgICAgIDwvRGVidWctTG9nPg0KKyAgICAgICAgICAgIDxCdWlsZD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgIDwvQnVpbGQ+DQorICAgICAgICAgICAgPFdvcmtzcGFjZT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4wPjE1NzwvQ29sdW1uMD4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4xPjI3PC9Db2x1bW4xPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjI+Mjc8L0NvbHVtbjI+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMz4yNzwvQ29sdW1uMz4NCisgICAgICAgICAgICAgICAgPC9Db2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgPC9Xb3Jrc3BhY2U+DQorICAgICAgICAgICAgPERpc2Fzc2VtYmx5Pg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjI8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkRpc2Fzc2VtYmx5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41MDA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4yMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8RGlzYXNtSGlzdG9yeSAvPg0KKyAgICAgICAgICAgICAgICA8U2hvd0NvZGVDb3ZlcmFnZT4xPC9TaG93Q29kZUNvdmVyYWdlPg0KKyAgICAgICAgICAgICAgICA8U2hvd0luc3RyUHJvZmlsaW5nPjE8L1Nob3dJbnN0clByb2ZpbGluZz4NCisgICAgICAgICAgICA8L0Rpc2Fzc2VtYmx5Pg0KKyAgICAgICAgICAgIDxSZWdpc3Rlcj4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgPC9SZWdpc3Rlcj4NCisgICAgICAgICAgICA8Q2FsbFN0YWNrPg0KKyAgICAgICAgICAgICAgICA8UHJlZmVyZWRXaW5kb3dzPg0KKyAgICAgICAgICAgICAgICAgICAgPFBvc2l0aW9uPjE8L1Bvc2l0aW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPFNjcmVlblBvc1g+MDwvU2NyZWVuUG9zWD4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NZPjA8L1NjcmVlblBvc1k+DQorICAgICAgICAgICAgICAgICAgICA8V2luZG93cyAvPg0KKyAgICAgICAgICAgICAgICA8L1ByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgPGNvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPkZyYW1lPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+X0kwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICA8L2NvbC1uYW1lcz4NCisgICAgICAgICAgICAgICAgPGNvbC13aWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNTAwPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLXdpZHRocz4NCisgICAgICAgICAgICA8L0NhbGxTdGFjaz4NCisgICAgICAgICAgICA8UXVpY2tXYXRjaD4NCisgICAgICAgICAgICAgICAgPFByZWZlcmVkV2luZG93cz4NCisgICAgICAgICAgICAgICAgICAgIDxQb3NpdGlvbj4yPC9Qb3NpdGlvbj4NCisgICAgICAgICAgICAgICAgICAgIDxTY3JlZW5Qb3NYPjA8L1NjcmVlblBvc1g+DQorICAgICAgICAgICAgICAgICAgICA8U2NyZWVuUG9zWT4wPC9TY3JlZW5Qb3NZPg0KKyAgICAgICAgICAgICAgICAgICAgPFdpbmRvd3MgLz4NCisgICAgICAgICAgICAgICAgPC9QcmVmZXJlZFdpbmRvd3M+DQorICAgICAgICAgICAgICAgIDxjb2wtbmFtZXM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5FeHByZXNzaW9uPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+TG9jYXRpb248L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT5UeXBlPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+VmFsdWU8L2l0ZW0+DQorICAgICAgICAgICAgICAgIDwvY29sLW5hbWVzPg0KKyAgICAgICAgICAgICAgICA8Y29sLXdpZHRocz4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjE1MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjEwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9jb2wtd2lkdGhzPg0KKyAgICAgICAgICAgICAgICA8UVdhdGNoSGlzdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPnVseDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9RV2F0Y2hIaXN0b3J5Pg0KKyAgICAgICAgICAgIDwvUXVpY2tXYXRjaD4NCisgICAgICAgIDwvU3RhdGljPg0KKyAgICAgICAgPFdpbmRvd3M+DQorICAgICAgICAgICAgPFduZDA+DQorICAgICAgICAgICAgICAgIDxUYWJzPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTk4NTgtOTgxODwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xOTMzNS05ODI4PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMD4NCisgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0zMDYwNi05ODIxPC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vL0ZyZWVSVE9TX1NvdXJjZTwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtby9GcmVlUlRPU19Tb3VyY2UvUG9ydGFibGU8L0V4cGFuZGVkTm9kZT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9Ob2RlRGljdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Nlc3Npb24+DQorICAgICAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPC9UYWJzPg0KKyAgICAgICAgICAgICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+DQorICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgPC9XaW5kb3dzPg0KKyAgICAgICAgPEVkaXRvcj4NCisgICAgICAgICAgICA8UGFuZT4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+MTE0PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NjQxMTwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NjQxMTwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEZ1bGxfRGVtb1xtYWluX2Z1bGwuYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjIxOTwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjExMzA0PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj4xMTMwNDwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxBY3RpdmVUYWI+MTwvQWN0aXZlVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxCbGlua3lfRGVtb1xtYWluX2JsaW5reS5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+MTQ0PC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NzMxNDwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NzMxNDwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXGxpYmJvYXJkX3NhbXY3LWVrXHNvdXJjZVxib2FyZF9sb3dsZXZlbC5jPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+NDM8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj4yOTEzPC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj4yOTEzPC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgIDxGYWN0b3J5PlRleHRFZGl0b3I8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICA8RmlsZW5hbWU+JFdTX0RJUiRcLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj4zNTk8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj4xNDE0MTwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+MTQxNDE8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFwuLlwuLlxTb3VyY2VcaW5jbHVkZVxwb3J0YWJsZS5oPC9GaWxlbmFtZT4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zPjA8L1hQb3M+DQorICAgICAgICAgICAgICAgICAgICA8WVBvcz4wPC9ZUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0PjA8L1NlbFN0YXJ0Pg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZD4wPC9TZWxFbmQ+DQorICAgICAgICAgICAgICAgICAgICA8WFBvczI+MDwvWFBvczI+DQorICAgICAgICAgICAgICAgICAgICA8WVBvczI+Nzc8L1lQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbFN0YXJ0Mj41MjI3PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj41MjI3PC9TZWxFbmQyPg0KKyAgICAgICAgICAgICAgICA8L1RhYj4NCisgICAgICAgICAgICA8L1BhbmU+DQorICAgICAgICAgICAgPEFjdGl2ZVBhbmU+MDwvQWN0aXZlUGFuZT4NCisgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgIDxQYW5lPg0KKyAgICAgICAgICAgICAgICAgICAgPFg+MTAwMDAwMDwvWD4NCisgICAgICAgICAgICAgICAgICAgIDxZPjEwMDAwMDA8L1k+DQorICAgICAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgIDxTcGxpdE1vZGU+MTwvU3BsaXRNb2RlPg0KKyAgICAgICAgPC9FZGl0b3I+DQorICAgICAgICA8UG9zaXRpb25zPg0KKyAgICAgICAgICAgIDxUb3A+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTAwQ0Q4RjkwPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmlhcmlkZXBtLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMDBDRDhGOTA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgICAgIDxSb3cxPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTEyNjcwQUM4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmRlYnVnZ2VyZ3VpLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMTI2NzBBQzg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzE+DQorICAgICAgICAgICAgICAgIDxSb3cyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUb29sYmFyLTEyNjcwQzU4Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8a2V5PmFybWpsaW5rLmVudTE8L2tleT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2xiYXItMTI2NzBDNTg+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzI+DQorICAgICAgICAgICAgPC9Ub3A+DQorICAgICAgICAgICAgPExlZnQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT42MzE8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4yMzE8L1JpZ2h0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHg+LTI8L3g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eT4tMjwveT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2NyZWVuPjIwMDwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjIwMDwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjExOTA0ODwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjIwMzI1Mjwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjEzODY5MDwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjY0MzI5Mzwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMT4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0xlZnQ+DQorICAgICAgICAgICAgPFJpZ2h0Pg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcyAvPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9SaWdodD4NCisgICAgICAgICAgICA8Qm90dG9tPg0KKyAgICAgICAgICAgICAgICA8Um93MD4NCisgICAgICAgICAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgICAgICAgICA8V25kMD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VG9wPi0yPC9Ub3A+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGVmdD4tMjwvTGVmdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxCb3R0b20+MjYxPC9Cb3R0b20+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmlnaHQ+MTY4MjwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MTY4NDwveHNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5c2NyZWVuPjI2MzwveXNjcmVlbj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNYPjEwMDIzODE8L3NpemVIb3J6Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZUhvcnpDWT4yNjcyNzY8L3NpemVIb3J6Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWD4xMTkwNDg8L3NpemVWZXJ0Q1g+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2l6ZVZlcnRDWT4yMDMyNTI8L3NpemVWZXJ0Q1k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvUmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICA8L1duZDA+DQorICAgICAgICAgICAgICAgICAgICA8L1NpemVzPg0KKyAgICAgICAgICAgICAgICA8L1JvdzA+DQorICAgICAgICAgICAgPC9Cb3R0b20+DQorICAgICAgICAgICAgPEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8U2l6ZXMgLz4NCisgICAgICAgICAgICA8L0Zsb2F0Pg0KKyAgICAgICAgPC9Qb3NpdGlvbnM+DQorICAgIDwvRGVza3RvcD4NCisgICAgPFdpbmRvd1N0b3JhZ2UgLz4NCiA8L1Byb2plY3Q+DQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsL3NldHRpbmdzL1JUT1NEZW1vLndzZHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAppbmRleCA5ZThhYTQzLi5kZWEwNjYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TQU1WNzFfWHBsYWluZWRfSUFSX0tlaWwvc2V0dGluZ3MvUlRPU0RlbW8ud3NkdApAQCAtMSw3NiArMSw1NjMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9Imlzby04ODU5LTEiPz4NCi0NCis8P3htbCB2ZXJzaW9uPSIxLjAiPz4NCiA8V29ya3NwYWNlPg0KLSAgPENvbmZpZ0RpY3Rpb25hcnk+DQotICAgIA0KLSAgPEN1cnJlbnRDb25maWdzPjxQcm9qZWN0PlJUT1NEZW1vL0RlYnVnPC9Qcm9qZWN0PjwvQ3VycmVudENvbmZpZ3M+PC9Db25maWdEaWN0aW9uYXJ5Pg0KLSAgPERlc2t0b3A+DQotICAgIDxTdGF0aWM+DQotICAgICAgPFdvcmtzcGFjZT4NCi0gICAgICAgIDxDb2x1bW5XaWR0aHM+DQotICAgICAgICAgIA0KLSAgICAgICAgICANCi0gICAgICAgICAgDQotICAgICAgICAgIA0KLSAgICAgICAgPENvbHVtbjA+MjM3PC9Db2x1bW4wPjxDb2x1bW4xPjI3PC9Db2x1bW4xPjxDb2x1bW4yPjI3PC9Db2x1bW4yPjxDb2x1bW4zPjI3PC9Db2x1bW4zPjwvQ29sdW1uV2lkdGhzPg0KLSAgICAgIDwvV29ya3NwYWNlPg0KLSAgICAgIDxCdWlsZD4NCi0gICAgICAgIA0KLSAgICAgICAgDQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT48Q29sdW1uV2lkdGgyPjMyNDwvQ29sdW1uV2lkdGgyPjxDb2x1bW5XaWR0aDM+ODE8L0NvbHVtbldpZHRoMz48L0J1aWxkPg0KLSAgICAgIDxEZWJ1Zy1Mb2c+DQotICAgICAgICANCi0gICAgICAgIA0KLSAgICAgIDxDb2x1bW5XaWR0aDA+MjA8L0NvbHVtbldpZHRoMD48Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT48L0RlYnVnLUxvZz4NCi0gICAgPFRlcm1pbmFsSU8vPjxGaW5kLWluLUZpbGVzPjxDb2x1bW5XaWR0aDA+NDk3PC9Db2x1bW5XaWR0aDA+PENvbHVtbldpZHRoMT44MjwvQ29sdW1uV2lkdGgxPjxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+PENvbHVtbldpZHRoMz4zMzE8L0NvbHVtbldpZHRoMz48L0ZpbmQtaW4tRmlsZXM+PC9TdGF0aWM+DQotICAgIDxXaW5kb3dzPg0KLSAgICAgIA0KLSAgICAgIA0KLSAgICA8V25kMT4NCi0gICAgICAgIDxUYWJzPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMzI4OC05Njk0PC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQotICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KLSAgICAgICAgICAgIDxTZXNzaW9uPg0KLSAgICAgICAgICAgICAgDQotICAgICAgICAgICAgPE5vZGVEaWN0PjxFeHBhbmRlZE5vZGU+UlRPU0RlbW88L0V4cGFuZGVkTm9kZT48L05vZGVEaWN0PjwvU2Vzc2lvbj4NCi0gICAgICAgICAgPC9UYWI+DQotICAgICAgICA8L1RhYnM+DQotICAgICAgICANCi0gICAgICA8U2VsZWN0ZWRUYWI+MDwvU2VsZWN0ZWRUYWI+PC9XbmQxPjxXbmQzPg0KLSAgICAgICAgPFRhYnM+DQotICAgICAgICAgIDxUYWI+DQotICAgICAgICAgICAgPElkZW50aXR5PlRhYklELTEzNjQ5LTIwMzEzPC9JZGVudGl0eT4NCi0gICAgICAgICAgICA8VGFiTmFtZT5CdWlsZDwvVGFiTmFtZT4NCi0gICAgICAgICAgICA8RmFjdG9yeT5CdWlsZDwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgICA8VGFiPg0KLSAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xNTk1MC0yMzM0MDwvSWRlbnRpdHk+DQotICAgICAgICAgICAgPFRhYk5hbWU+RGVidWcgTG9nPC9UYWJOYW1lPg0KLSAgICAgICAgICAgIDxGYWN0b3J5PkRlYnVnLUxvZzwvRmFjdG9yeT4NCi0gICAgICAgICAgICA8U2Vzc2lvbi8+DQotICAgICAgICAgIDwvVGFiPg0KLSAgICAgICAgPFRhYj48SWRlbnRpdHk+VGFiSUQtMzAzMTUtMTk4NTY8L0lkZW50aXR5PjxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+PEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT48U2Vzc2lvbi8+PC9UYWI+PC9UYWJzPg0KLSAgICAgICAgDQotICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPjwvV25kMz48L1dpbmRvd3M+DQotICAgIDxFZGl0b3I+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxQYW5lPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcbWFpbi5jPC9GaWxlbmFtZT48WFBvcz4wPC9YUG9zPjxZUG9zPjA8L1lQb3M+PFNlbFN0YXJ0PjA8L1NlbFN0YXJ0PjxTZWxFbmQ+MDwvU2VsRW5kPjxYUG9zMj4wPC9YUG9zMj48WVBvczI+NjM8L1lQb3MyPjxTZWxTdGFydDI+NjQxMTwvU2VsU3RhcnQyPjxTZWxFbmQyPjY0MTE8L1NlbEVuZDI+PC9UYWI+PEFjdGl2ZVRhYj4wPC9BY3RpdmVUYWI+PFRhYj48RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5PjxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPjxYUG9zPjA8L1hQb3M+PFlQb3M+MDwvWVBvcz48U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+PFNlbEVuZD4wPC9TZWxFbmQ+PFhQb3MyPjA8L1hQb3MyPjxZUG9zMj42OTwvWVBvczI+PFNlbFN0YXJ0Mj4xMTMwNDwvU2VsU3RhcnQyPjxTZWxFbmQyPjExMzA0PC9TZWxFbmQyPjwvVGFiPjxUYWI+PEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT48RmlsZW5hbWU+JFdTX0RJUiRcQmxpbmt5X0RlbW9cbWFpbl9ibGlua3kuYzwvRmlsZW5hbWU+PFhQb3M+MDwvWFBvcz48WVBvcz4wPC9ZUG9zPjxTZWxTdGFydD4wPC9TZWxTdGFydD48U2VsRW5kPjA8L1NlbEVuZD48WFBvczI+MDwvWFBvczI+PFlQb3MyPjY2PC9ZUG9zMj48U2VsU3RhcnQyPjczMTQ8L1NlbFN0YXJ0Mj48U2VsRW5kMj43MzE0PC9TZWxFbmQyPjwvVGFiPjwvUGFuZT48QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPjxTaXplcz48UGFuZT48WD4xMDAwMDAwPC9YPjxZPjEwMDAwMDA8L1k+PC9QYW5lPjwvU2l6ZXM+PFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+PC9FZGl0b3I+DQotICAgIDxQb3NpdGlvbnM+DQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgICAgDQotICAgIDxUb3A+PFJvdzA+PFNpemVzPjxUb29sYmFyLTAwREMxOTk4PjxrZXk+aWFyaWRlcG0uZW51MTwva2V5PjwvVG9vbGJhci0wMERDMTk5OD48L1NpemVzPjwvUm93MD48L1RvcD48TGVmdD48Um93MD48U2l6ZXM+PFduZDE+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+ODk0PC9Cb3R0b20+PFJpZ2h0PjMxMTwvUmlnaHQ+PHg+LTI8L3g+PHk+LTI8L3k+PHhzY3JlZW4+MjI5PC94c2NyZWVuPjx5c2NyZWVuPjIwMTwveXNjcmVlbj48c2l6ZUhvcnpDWD4xMTkyNzE8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MTc3MjQ5PC9zaXplSG9yekNZPjxzaXplVmVydENYPjE2MzAyMTwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT43OTAxMjM8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMT48L1NpemVzPjwvUm93MD48L0xlZnQ+PFJpZ2h0PjxSb3cwPjxTaXplcy8+PC9Sb3cwPjwvUmlnaHQ+PEJvdHRvbT48Um93MD48U2l6ZXM+PFduZDM+PFJlY3Q+PFRvcD4tMjwvVG9wPjxMZWZ0Pi0yPC9MZWZ0PjxCb3R0b20+MTk2PC9Cb3R0b20+PFJpZ2h0PjE5MjI8L1JpZ2h0Pjx4Pi0yPC94Pjx5Pi0yPC95Pjx4c2NyZWVuPjE5MjQ8L3hzY3JlZW4+PHlzY3JlZW4+MTk4PC95c2NyZWVuPjxzaXplSG9yekNYPjEwMDIwODM8L3NpemVIb3J6Q1g+PHNpemVIb3J6Q1k+MTc0NjAzPC9zaXplSG9yekNZPjxzaXplVmVydENYPjExOTI3MTwvc2l6ZVZlcnRDWD48c2l6ZVZlcnRDWT4xNzcyNDk8L3NpemVWZXJ0Q1k+PC9SZWN0PjwvV25kMz48L1NpemVzPjwvUm93MD48L0JvdHRvbT48RmxvYXQ+PFNpemVzLz48L0Zsb2F0PjwvUG9zaXRpb25zPg0KLSAgPC9EZXNrdG9wPg0KKyAgICA8Q29uZmlnRGljdGlvbmFyeT4NCisgICAgICAgIDxDdXJyZW50Q29uZmlncz4NCisgICAgICAgICAgICA8UHJvamVjdD5SVE9TRGVtby9EZWJ1ZzwvUHJvamVjdD4NCisgICAgICAgIDwvQ3VycmVudENvbmZpZ3M+DQorICAgIDwvQ29uZmlnRGljdGlvbmFyeT4NCisgICAgPERlc2t0b3A+DQorICAgICAgICA8U3RhdGljPg0KKyAgICAgICAgICAgIDxXb3Jrc3BhY2U+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aHM+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMD4yMzc8L0NvbHVtbjA+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMT4yNzwvQ29sdW1uMT4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4yPjI3PC9Db2x1bW4yPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjM+Mjc8L0NvbHVtbjM+DQorICAgICAgICAgICAgICAgIDwvQ29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgIDwvV29ya3NwYWNlPg0KKyAgICAgICAgICAgIDxCdWlsZD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjEyMTY8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMj4zMjQ8L0NvbHVtbldpZHRoMj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMz44MTwvQ29sdW1uV2lkdGgzPg0KKyAgICAgICAgICAgIDwvQnVpbGQ+DQorICAgICAgICAgICAgPERlYnVnLUxvZz4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMDwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjE2MjI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICA8L0RlYnVnLUxvZz4NCisgICAgICAgICAgICA8VGVybWluYWxJTyAvPg0KKyAgICAgICAgICAgIDxGaW5kLWluLUZpbGVzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgwPjQ5NzwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjgyPC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+NzQ2PC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+MzMxPC9Db2x1bW5XaWR0aDM+DQorICAgICAgICAgICAgPC9GaW5kLWluLUZpbGVzPg0KKyAgICAgICAgPC9TdGF0aWM+DQorICAgICAgICA8V2luZG93cz4NCisgICAgICAgICAgICA8V25kMT4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0yMzI4OC05Njk0PC9JZGVudGl0eT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8VGFiTmFtZT5Xb3Jrc3BhY2U8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+V29ya3NwYWNlPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxTZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Tm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXhwYW5kZWROb2RlPlJUT1NEZW1vPC9FeHBhbmRlZE5vZGU+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTm9kZURpY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9TZXNzaW9uPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMT4NCisgICAgICAgICAgICA8V25kMz4NCisgICAgICAgICAgICAgICAgPFRhYnM+DQorICAgICAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxJZGVudGl0eT5UYWJJRC0xMzY0OS0yMDMxMzwvSWRlbnRpdHk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRhYk5hbWU+QnVpbGQ8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+QnVpbGQ8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMTU5NTAtMjMzNDA8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkRlYnVnIExvZzwvVGFiTmFtZT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5EZWJ1Zy1Mb2c8L0ZhY3Rvcnk+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFNlc3Npb24gLz4NCisgICAgICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPFRhYj4NCisgICAgICAgICAgICAgICAgICAgICAgICA8SWRlbnRpdHk+VGFiSUQtMzAzMTUtMTk4NTY8L0lkZW50aXR5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxUYWJOYW1lPkZpbmQgaW4gRmlsZXM8L1RhYk5hbWU+DQorICAgICAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+RmluZC1pbi1GaWxlczwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgICAgICA8U2Vzc2lvbiAvPg0KKyAgICAgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDwvVGFicz4NCisgICAgICAgICAgICAgICAgPFNlbGVjdGVkVGFiPjA8L1NlbGVjdGVkVGFiPg0KKyAgICAgICAgICAgIDwvV25kMz4NCisgICAgICAgIDwvV2luZG93cz4NCisgICAgICAgIDxFZGl0b3I+DQorICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXG1haW4uYzwvRmlsZW5hbWU+DQorICAgICAgICAgICAgICAgICAgICA8WFBvcz4wPC9YUG9zPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3M+MDwvWVBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydD4wPC9TZWxTdGFydD4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQ+MDwvU2VsRW5kPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3MyPjA8L1hQb3MyPg0KKyAgICAgICAgICAgICAgICAgICAgPFlQb3MyPjYzPC9ZUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxTdGFydDI+NjQxMTwvU2VsU3RhcnQyPg0KKyAgICAgICAgICAgICAgICAgICAgPFNlbEVuZDI+NjQxMTwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxBY3RpdmVUYWI+MDwvQWN0aXZlVGFiPg0KKyAgICAgICAgICAgICAgICA8VGFiPg0KKyAgICAgICAgICAgICAgICAgICAgPEZhY3Rvcnk+VGV4dEVkaXRvcjwvRmFjdG9yeT4NCisgICAgICAgICAgICAgICAgICAgIDxGaWxlbmFtZT4kV1NfRElSJFxGdWxsX0RlbW9cbWFpbl9mdWxsLmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42OTwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjExMzA0PC9TZWxTdGFydDI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kMj4xMTMwNDwvU2VsRW5kMj4NCisgICAgICAgICAgICAgICAgPC9UYWI+DQorICAgICAgICAgICAgICAgIDxUYWI+DQorICAgICAgICAgICAgICAgICAgICA8RmFjdG9yeT5UZXh0RWRpdG9yPC9GYWN0b3J5Pg0KKyAgICAgICAgICAgICAgICAgICAgPEZpbGVuYW1lPiRXU19ESVIkXEJsaW5reV9EZW1vXG1haW5fYmxpbmt5LmM8L0ZpbGVuYW1lPg0KKyAgICAgICAgICAgICAgICAgICAgPFhQb3M+MDwvWFBvcz4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zPjA8L1lQb3M+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQ+MDwvU2VsU3RhcnQ+DQorICAgICAgICAgICAgICAgICAgICA8U2VsRW5kPjA8L1NlbEVuZD4NCisgICAgICAgICAgICAgICAgICAgIDxYUG9zMj4wPC9YUG9zMj4NCisgICAgICAgICAgICAgICAgICAgIDxZUG9zMj42NjwvWVBvczI+DQorICAgICAgICAgICAgICAgICAgICA8U2VsU3RhcnQyPjczMTQ8L1NlbFN0YXJ0Mj4NCisgICAgICAgICAgICAgICAgICAgIDxTZWxFbmQyPjczMTQ8L1NlbEVuZDI+DQorICAgICAgICAgICAgICAgIDwvVGFiPg0KKyAgICAgICAgICAgIDwvUGFuZT4NCisgICAgICAgICAgICA8QWN0aXZlUGFuZT4wPC9BY3RpdmVQYW5lPg0KKyAgICAgICAgICAgIDxTaXplcz4NCisgICAgICAgICAgICAgICAgPFBhbmU+DQorICAgICAgICAgICAgICAgICAgICA8WD4xMDAwMDAwPC9YPg0KKyAgICAgICAgICAgICAgICAgICAgPFk+MTAwMDAwMDwvWT4NCisgICAgICAgICAgICAgICAgPC9QYW5lPg0KKyAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgPFNwbGl0TW9kZT4xPC9TcGxpdE1vZGU+DQorICAgICAgICA8L0VkaXRvcj4NCisgICAgICAgIDxQb3NpdGlvbnM+DQorICAgICAgICAgICAgPFRvcD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2xiYXItMDBEQzE5OTg+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxrZXk+aWFyaWRlcG0uZW51MTwva2V5Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvVG9vbGJhci0wMERDMTk5OD4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1RvcD4NCisgICAgICAgICAgICA8TGVmdD4NCisgICAgICAgICAgICAgICAgPFJvdzA+DQorICAgICAgICAgICAgICAgICAgICA8U2l6ZXM+DQorICAgICAgICAgICAgICAgICAgICAgICAgPFduZDE+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvcD4tMjwvVG9wPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExlZnQ+LTI8L0xlZnQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Qm90dG9tPjg5NDwvQm90dG9tPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPFJpZ2h0PjMxMTwvUmlnaHQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eD4tMjwveD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx5Pi0yPC95Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzY3JlZW4+MjI5PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MjAxPC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTE5MjcxPC9zaXplSG9yekNYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1k+MTc3MjQ5PC9zaXplSG9yekNZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1g+MTYzMDIxPC9zaXplVmVydENYPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVWZXJ0Q1k+NzkwMTIzPC9zaXplVmVydENZPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1JlY3Q+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9XbmQxPg0KKyAgICAgICAgICAgICAgICAgICAgPC9TaXplcz4NCisgICAgICAgICAgICAgICAgPC9Sb3cwPg0KKyAgICAgICAgICAgIDwvTGVmdD4NCisgICAgICAgICAgICA8UmlnaHQ+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzIC8+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L1JpZ2h0Pg0KKyAgICAgICAgICAgIDxCb3R0b20+DQorICAgICAgICAgICAgICAgIDxSb3cwPg0KKyAgICAgICAgICAgICAgICAgICAgPFNpemVzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxXbmQzPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8UmVjdD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUb3A+LTI8L1RvcD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMZWZ0Pi0yPC9MZWZ0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRvbT4xOTY8L0JvdHRvbT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodD4xOTIyPC9SaWdodD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4Pi0yPC94Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHk+LTI8L3k+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNjcmVlbj4xOTI0PC94c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHlzY3JlZW4+MTk4PC95c2NyZWVuPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNpemVIb3J6Q1g+MTAwMjA4Mzwvc2l6ZUhvcnpDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplSG9yekNZPjE3NDYwMzwvc2l6ZUhvcnpDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENYPjExOTI3MTwvc2l6ZVZlcnRDWD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzaXplVmVydENZPjE3NzI0OTwvc2l6ZVZlcnRDWT4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9SZWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvV25kMz4NCisgICAgICAgICAgICAgICAgICAgIDwvU2l6ZXM+DQorICAgICAgICAgICAgICAgIDwvUm93MD4NCisgICAgICAgICAgICA8L0JvdHRvbT4NCisgICAgICAgICAgICA8RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxTaXplcyAvPg0KKyAgICAgICAgICAgIDwvRmxvYXQ+DQorICAgICAgICA8L1Bvc2l0aW9ucz4NCisgICAgPC9EZXNrdG9wPg0KKyAgICA8V2luZG93U3RvcmFnZT4NCisgICAgICAgIDxDaGlsZElkTWFwPg0KKyAgICAgICAgICAgIDxUQl9DTVNJU1BBQ0s+MzQwNDg8L1RCX0NNU0lTUEFDSz4NCisgICAgICAgICAgICA8VEJfTUFJTj4zNDA0OTwvVEJfTUFJTj4NCisgICAgICAgICAgICA8V0lOX0JSRUFLUE9JTlRTPjM0MDUwPC9XSU5fQlJFQUtQT0lOVFM+DQorICAgICAgICAgICAgPFdJTl9CVUlMRD4zNDA1MTwvV0lOX0JVSUxEPg0KKyAgICAgICAgICAgIDxXSU5fQ0FMTF9HUkFQSD4zNDA1MjwvV0lOX0NBTExfR1JBUEg+DQorICAgICAgICAgICAgPFdJTl9DTVNJU1BBQ0tfQUdFTlRfTE9HPjM0MDUzPC9XSU5fQ01TSVNQQUNLX0FHRU5UX0xPRz4NCisgICAgICAgICAgICA8V0lOX0NVU1RPTV9TRlI+MzQwNTQ8L1dJTl9DVVNUT01fU0ZSPg0KKyAgICAgICAgICAgIDxXSU5fQ19TVEFUPjM0MDU1PC9XSU5fQ19TVEFUPg0KKyAgICAgICAgICAgIDxXSU5fREVCVUdfTE9HPjM0MDU2PC9XSU5fREVCVUdfTE9HPg0KKyAgICAgICAgICAgIDxXSU5fRklORF9BTExfREVDTEFSQVRJT05TPjM0MDU3PC9XSU5fRklORF9BTExfREVDTEFSQVRJT05TPg0KKyAgICAgICAgICAgIDxXSU5fRklORF9BTExfUkVGRVJFTkNFUz4zNDA1ODwvV0lOX0ZJTkRfQUxMX1JFRkVSRU5DRVM+DQorICAgICAgICAgICAgPFdJTl9GSU5EX0lOX0ZJTEVTPjM0MDU5PC9XSU5fRklORF9JTl9GSUxFUz4NCisgICAgICAgICAgICA8V0lOX1NFTEVDVF9BTUJJR1VPVVNfREVGSU5JVElPTlM+MzQwNjA8L1dJTl9TRUxFQ1RfQU1CSUdVT1VTX0RFRklOSVRJT05TPg0KKyAgICAgICAgICAgIDxXSU5fU09VUkNFX0JST1dTRVI+MzQwNjE8L1dJTl9TT1VSQ0VfQlJPV1NFUj4NCisgICAgICAgICAgICA8V0lOX1RPT0xfT1VUUFVUPjM0MDYyPC9XSU5fVE9PTF9PVVRQVVQ+DQorICAgICAgICAgICAgPFdJTl9XT1JLU1BBQ0U+MzQwNjM8L1dJTl9XT1JLU1BBQ0U+DQorICAgICAgICA8L0NoaWxkSWRNYXA+DQorICAgICAgICA8RGVza3RvcD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPFRvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNDAwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjM0MDAxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9Ub29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA0OD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPFRvb2xCYXJDbWRJZHM+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwMDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjAxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MDM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAyNDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYwNzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzYzNTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjM0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2Mzc8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4wPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2NDM8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0NDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA5MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDU3PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+NTc2MzY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT41NzY0MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjU3NjQxPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMjY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA2NTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDYzPC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwNjQ8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzA1MzwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDU0PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM1PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MzMwMzY8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zNDM5OTwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjA8L2l0ZW0+DQorICAgICAgICAgICAgICAgICAgICA8aXRlbT4zMzAzODwvaXRlbT4NCisgICAgICAgICAgICAgICAgICAgIDxpdGVtPjMzMDM5PC9pdGVtPg0KKyAgICAgICAgICAgICAgICAgICAgPGl0ZW0+MDwvaXRlbT4NCisgICAgICAgICAgICAgICAgPC9Ub29sQmFyQ21kSWRzPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA0OT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMD4yMTwvQ29sdW1uV2lkdGgwPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGgxPjE4NjI8L0NvbHVtbldpZHRoMT4NCisgICAgICAgICAgICAgICAgPEZpbHRlckxldmVsPjI8L0ZpbHRlckxldmVsPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbGU+PC9MaXZlRmlsZT4NCisgICAgICAgICAgICAgICAgPExpdmVMb2dFbmFibGVkPjA8L0xpdmVMb2dFbmFibGVkPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbHRlckxldmVsPi0xPC9MaXZlRmlsdGVyTGV2ZWw+DQorICAgICAgICAgICAgPC9JYXJQYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8Q29sdW1uV2lkdGhzPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjA+MjA4PC9Db2x1bW4wPg0KKyAgICAgICAgICAgICAgICAgICAgPENvbHVtbjE+MzA8L0NvbHVtbjE+DQorICAgICAgICAgICAgICAgICAgICA8Q29sdW1uMj4zMDwvQ29sdW1uMj4NCisgICAgICAgICAgICAgICAgICAgIDxDb2x1bW4zPjMwPC9Db2x1bW4zPg0KKyAgICAgICAgICAgICAgICA8L0NvbHVtbldpZHRocz4NCisgICAgICAgICAgICAgICAgPE5vZGVEaWN0Pg0KKyAgICAgICAgICAgICAgICAgICAgPEV4cGFuZGVkTm9kZT5SVE9TRGVtbzwvRXhwYW5kZWROb2RlPg0KKyAgICAgICAgICAgICAgICA8L05vZGVEaWN0Pg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA2Mz4NCisgICAgICAgICAgICA8Q29udHJvbEJhclZlcnNpb24+DQorICAgICAgICAgICAgICAgIDxNYWpvcj4xNDwvTWFqb3I+DQorICAgICAgICAgICAgICAgIDxNaW5vcj4xMDwvTWlub3I+DQorICAgICAgICAgICAgPC9Db250cm9sQmFyVmVyc2lvbj4NCisgICAgICAgICAgICA8TUZDVG9vbEJhclBhcmFtZXRlcnM+DQorICAgICAgICAgICAgICAgIDxUb29sdGlwcz4xPC9Ub29sdGlwcz4NCisgICAgICAgICAgICAgICAgPFNob3J0Y3V0S2V5cz4xPC9TaG9ydGN1dEtleXM+DQorICAgICAgICAgICAgICAgIDxMYXJnZUljb25zPjA8L0xhcmdlSWNvbnM+DQorICAgICAgICAgICAgICAgIDxNZW51QW5pbWF0aW9uPjA8L01lbnVBbmltYXRpb24+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRseVVzZWRNZW51cz4xPC9SZWNlbnRseVVzZWRNZW51cz4NCisgICAgICAgICAgICAgICAgPE1lbnVTaGFkb3dzPjE8L01lbnVTaGFkb3dzPg0KKyAgICAgICAgICAgICAgICA8U2hvd0FsbE1lbnVzQWZ0ZXJEZWxheT4xPC9TaG93QWxsTWVudXNBZnRlckRlbGF5Pg0KKyAgICAgICAgICAgICAgICA8Q29tbWFuZHNVc2FnZT4wMDAwMDAwMDAwMDA8L0NvbW1hbmRzVXNhZ2U+DQorICAgICAgICAgICAgPC9NRkNUb29sQmFyUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8Q29tbWFuZE1hbmFnZXI+DQorICAgICAgICAgICAgICAgIDxDb21tYW5kc1dpdGhvdXRJbWFnZXM+MDYwMDIwRjEwMDAwMTBGMDAwMDAwMEYwMDAwMDIwRjAwMDAwMzBGMDAwMDA2MEYwMDAwMDwvQ29tbWFuZHNXaXRob3V0SW1hZ2VzPg0KKyAgICAgICAgICAgICAgICA8TWVudVVzZXJJbWFnZXM+MDAwMDwvTWVudVVzZXJJbWFnZXM+DQorICAgICAgICAgICAgPC9Db21tYW5kTWFuYWdlcj4NCisgICAgICAgICAgICA8UGFuZS01OTM5Mz4NCisgICAgICAgICAgICAgICAgPElEPjA8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjBBMDAwMDAwMEEwMDAwMDA2RTAwMDAwMDZFMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwREMwMzAwMDA4MDA3MDAwMEY1MDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS01OTM5Mz4NCisgICAgICAgICAgICA8QmFzZVBhbmUtNTkzOTM+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtNTkzOTM+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTA+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMDM2MDEwMDAwREIwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1MD4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTA+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTA+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTAgLz4NCisgICAgICAgICAgICA8UGFuZS0tMT4NCisgICAgICAgICAgICAgICAgPElEPjQyOTQ5NjcyOTU8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMzkwMDAwMDAxODAxMDAwMEZEMDIwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0tMT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtLTE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtLTE+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1MTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MTwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTE+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDA+MjE8L0NvbHVtbldpZHRoMD4NCisgICAgICAgICAgICAgICAgPENvbHVtbldpZHRoMT4xMzk5PC9Db2x1bW5XaWR0aDE+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDI+MzczPC9Db2x1bW5XaWR0aDI+DQorICAgICAgICAgICAgICAgIDxDb2x1bW5XaWR0aDM+OTM8L0NvbHVtbldpZHRoMz4NCisgICAgICAgICAgICAgICAgPEZpbHRlckxldmVsPjI8L0ZpbHRlckxldmVsPg0KKyAgICAgICAgICAgICAgICA8TGl2ZUZpbGU+QzpcdGVtcFxyY1xGcmVlUlRPU3YxMC4wLjBcRnJlZVJUT1NcRGVtb1xDT1JURVhfTTdfU0FNVjcxX1hwbGFpbmVkX0lBUl9LZWlsXEJ1aWxkTG9nLmxvZzwvTGl2ZUZpbGU+DQorICAgICAgICAgICAgICAgIDxMaXZlTG9nRW5hYmxlZD4wPC9MaXZlTG9nRW5hYmxlZD4NCisgICAgICAgICAgICAgICAgPExpdmVGaWx0ZXJMZXZlbD4tMTwvTGl2ZUZpbHRlckxldmVsPg0KKyAgICAgICAgICAgIDwvSWFyUGFuZS0zNDA1MT4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Mz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDUzPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDFFMDMwMDAwODAwNzAwMDBEQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTM+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUzPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUzIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTY+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU2Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1Nj4NCisgICAgICAgICAgICA8UGFuZS0zNDA1Nz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU3PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTc+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDU3Pg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDU3IC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTg+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1ODwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU4Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1OD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1OD4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1OCAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDU5Pg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTk8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAzNjAxMDAwMEY4MDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwMjIwMzAwMDA3QzA3MDAwMEJDMDMwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1OT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTk+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTk+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTkgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2MD4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYwPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wNDAwMDAwMDIyMDMwMDAwN0MwNzAwMDBCQzAzMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjA+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYwPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDYwIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNjI+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA2MjwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDQwMDAwMDAyMjAzMDAwMDdDMDcwMDAwQkMwMzAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD40MDk2PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDYyPg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA2Mj4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA2Mj4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA2MiAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNTI8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDBBRDAyMDAwMEQwMDAwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjAwMDAwMDAwMDAwMDAwMDBBRDAyMDAwMEIzMDAwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+MzI3Njg8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNTI+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjA8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDUyPg0KKyAgICAgICAgICAgIDxJYXJQYW5lLTM0MDUyIC8+DQorICAgICAgICAgICAgPFBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA1NDwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MDAwMDAwMDAxRDAwMDAwMDM2MDEwMDAwRjgwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAwMDAwMDAwMDM2MDEwMDAwREIwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD4zMjc2ODwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA1ND4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNTQ+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNTQgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA1NT4NCisgICAgICAgICAgICAgICAgPElEPjM0MDU1PC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDAwMDAwMDAwMzYwMTAwMDBEQjAwMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjMyNzY4PC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjA8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDU1Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA1NT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4wPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA1NT4NCisgICAgICAgICAgICA8SWFyUGFuZS0zNDA1NSAvPg0KKyAgICAgICAgICAgIDxQYW5lLTM0MDYxPg0KKyAgICAgICAgICAgICAgICA8SUQ+MzQwNjE8L0lEPg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudEZsb2F0PjAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwPC9SZWN0UmVjZW50RmxvYXQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RG9ja2VkPjA0MDAwMDAwNUEwMDAwMDAxNDAxMDAwMEQwMDEwMDAwPC9SZWN0UmVjZW50RG9ja2VkPg0KKyAgICAgICAgICAgICAgICA8UmVjZW50RnJhbWVBbGlnbm1lbnQ+NDA5NjwvUmVjZW50RnJhbWVBbGlnbm1lbnQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRSb3dJbmRleD4wPC9SZWNlbnRSb3dJbmRleD4NCisgICAgICAgICAgICAgICAgPElzRmxvYXRpbmc+MDwvSXNGbG9hdGluZz4NCisgICAgICAgICAgICAgICAgPE1SVVdpZHRoPjMyNzY3PC9NUlVXaWR0aD4NCisgICAgICAgICAgICAgICAgPFBpblN0YXRlPjA8L1BpblN0YXRlPg0KKyAgICAgICAgICAgIDwvUGFuZS0zNDA2MT4NCisgICAgICAgICAgICA8QmFzZVBhbmUtMzQwNjE+DQorICAgICAgICAgICAgICAgIDxJc1Zpc2libGU+MDwvSXNWaXNpYmxlPg0KKyAgICAgICAgICAgIDwvQmFzZVBhbmUtMzQwNjE+DQorICAgICAgICAgICAgPElhclBhbmUtMzQwNjEgLz4NCisgICAgICAgICAgICA8UGFuZS0zNDA2Mz4NCisgICAgICAgICAgICAgICAgPElEPjM0MDYzPC9JRD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnRGbG9hdD4wMDAwMDAwMDFEMDAwMDAwMTgwMTAwMDBENDAxMDAwMDwvUmVjdFJlY2VudEZsb2F0Pg0KKyAgICAgICAgICAgICAgICA8UmVjdFJlY2VudERvY2tlZD4wMDAwMDAwMDU2MDAwMDAwMTgwMTAwMDBGRDAyMDAwMDwvUmVjdFJlY2VudERvY2tlZD4NCisgICAgICAgICAgICAgICAgPFJlY2VudEZyYW1lQWxpZ25tZW50PjQwOTY8L1JlY2VudEZyYW1lQWxpZ25tZW50Pg0KKyAgICAgICAgICAgICAgICA8UmVjZW50Um93SW5kZXg+MDwvUmVjZW50Um93SW5kZXg+DQorICAgICAgICAgICAgICAgIDxJc0Zsb2F0aW5nPjA8L0lzRmxvYXRpbmc+DQorICAgICAgICAgICAgICAgIDxNUlVXaWR0aD4zMjc2NzwvTVJVV2lkdGg+DQorICAgICAgICAgICAgICAgIDxQaW5TdGF0ZT4wPC9QaW5TdGF0ZT4NCisgICAgICAgICAgICA8L1BhbmUtMzQwNjM+DQorICAgICAgICAgICAgPEJhc2VQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgICAgICA8SXNWaXNpYmxlPjE8L0lzVmlzaWJsZT4NCisgICAgICAgICAgICA8L0Jhc2VQYW5lLTM0MDYzPg0KKyAgICAgICAgICAgIDxEb2NraW5nTWFuYWdlci0yNTY+DQorICAgICAgICAgICAgICAgIDxEb2NraW5nUGFuZUFuZFBhbmVEaXZpZGVycz4wMDAwMDAwMDBDMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjE4MDEwMDAwMzkwMDAwMDAxQzAxMDAwMEZEMDIwMDAwMDEwMDAwMDAwMjAwMDAxMDA0MDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwRkZGRkZGRkYwMjAwMDAwMDBEODUwMDAwMEY4NTAwMDBGRkZGMDIwMDBCMDA0MzU0NjE2MjYyNjU2NDUwNjE2RTY1MDAxMDAwMDAwMTAwMDAwMDAwMDAwMDAwMUQwMDAwMDAxODAxMDAwMEQ0MDEwMDAwMDAwMDAwMDAzOTAwMDAwMDE4MDEwMDAwRkQwMjAwMDAwMDAwMDAwMDQwMTAwMDU2MDIwMDAwMDBGRkZFRkYwRTUzMDA2RjAwNzUwMDcyMDA2MzAwNjUwMDIwMDA0MjAwNzIwMDZGMDA3NzAwNzMwMDY1MDA3MjAwMDAwMDAwMDAwRDg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjA5NTcwMDZGMDA3MjAwNkIwMDczMDA3MDAwNjEwMDYzMDA2NTAwMDEwMDAwMDAwRjg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRjAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwRkZGRkZGRkYwRDg1MDAwMDAxMDAwMDAwRkZGRkZGRkYwRDg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA3ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA3ODUwMDAwMDEwMDAwMDAwNzg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA2ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA2ODUwMDAwMDEwMDAwMDAwNjg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMDAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwNDAwMDAwMDAwMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0ODUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDA0ODUwMDAwMDEwMDAwMDAwNDg1MDAwMDAwMDAwMDAwMDA4MDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMEZEMDIwMDAwODAwNzAwMDAwMTAzMDAwMDAxMDAwMDAwMDEwMDAwMTAwNDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMEZGRkZGRkZGMDgwMDAwMDAwMzg1MDAwMDA1ODUwMDAwMDg4NTAwMDAwOTg1MDAwMDBBODUwMDAwMEI4NTAwMDAwQzg1MDAwMDBFODUwMDAwMDE4MDAwODAwMDAwMDEwMDAwMDAwMDAwMDAwMDFEMDAwMDAwMzYwMTAwMDBGODAwMDAwMDAwMDAwMDAwMDEwMzAwMDA4MDA3MDAwMERDMDMwMDAwMDAwMDAwMDA0MDgwMDA1NjA4MDAwMDAwRkZGRUZGMDU0MjAwNzUwMDY5MDA2QzAwNjQwMDAxMDAwMDAwMDM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwRTQzMDA0RDAwNTMwMDQ5MDA1MzAwMkQwMDUwMDA2MTAwNjMwMDZCMDAyMDAwNEMwMDZGMDA2NzAwMDAwMDAwMDAwNTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjA5NDQwMDY1MDA2MjAwNzUwMDY3MDAyMDAwNEMwMDZGMDA2NzAwMDEwMDAwMDAwODg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBDNDQwMDY1MDA2MzAwNkMwMDYxMDA3MjAwNjEwMDc0MDA2OTAwNkYwMDZFMDA3MzAwMDAwMDAwMDAwOTg1MDAwMDAxMDAwMDAwRkZGRkZGRkZGRkZGRkZGRkZGRkVGRjBBNTIwMDY1MDA2NjAwNjUwMDcyMDA2NTAwNkUwMDYzMDA2NTAwNzMwMDAwMDAwMDAwMEE4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkZGRkZFRkYwRDQ2MDA2OTAwNkUwMDY0MDAyMDAwNjkwMDZFMDAyMDAwNDYwMDY5MDA2QzAwNjUwMDczMDAwMDAwMDAwMDBCODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMTU0MTAwNkQwMDYyMDA2OTAwNjcwMDc1MDA2RjAwNzUwMDczMDAyMDAwNDQwMDY1MDA2NjAwNjkwMDZFMDA2OTAwNzQwMDY5MDA2RjAwNkUwMDczMDAwMDAwMDAwMDBDODUwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkZGRkZGRkZGRUZGMEI1NDAwNkYwMDZGMDA2QzAwMjAwMDRGMDA3NTAwNzQwMDcwMDA3NTAwNzQwMDAwMDAwMDAwMEU4NTAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRkZGRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGMDM4NTAwMDAwMTAwMDAwMEZGRkZGRkZGMDM4NTAwMDAwMDAwMDAwMDAwODAwMDAwMDAwMDAwMDBGRkZGRkZGRkZGRkZGRkZGMDAwMDAwMDAwMDAwMDAwMDA0MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAxMDAwMDEwMDQwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMjg1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMjg1MDAwMDAxMDAwMDAwMDI4NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA8L0RvY2tpbmdQYW5lQW5kUGFuZURpdmlkZXJzPg0KKyAgICAgICAgICAgIDwvRG9ja2luZ01hbmFnZXItMjU2Pg0KKyAgICAgICAgICAgIDxNRkNUb29sQmFyLTM0MDQ4Pg0KKyAgICAgICAgICAgICAgICA8TmFtZT5DTVNJUy1QYWNrPC9OYW1lPg0KKyAgICAgICAgICAgICAgICA8QnV0dG9ucz4wMDIwMDAwMDAxMDAwMDAwMDIwMEZGRkYwMTAwMTEwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0Mjc1NzQ3NDZGNkVEMDg0MDAwMDAwMDAwNDAwMEMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwRDE4NDAwMDAwMDAwMDAwMDBEMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDBGRkZFRkYwQTQzMDA0RDAwNTMwMDQ5MDA1MzAwMkQwMDUwMDA2MTAwNjMwMDZCMDBGRjdGMDAwMDwvQnV0dG9ucz4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXItMzQwNDg+DQorICAgICAgICAgICAgPFBhbmUtMzQwNDg+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA0ODwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMzAwMDAxQzAwMDAwMDQ3MDMwMDAwMzgwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD44MTkyPC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjE8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDQ4Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA0OD4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA0OD4NCisgICAgICAgICAgICA8TUZDVG9vbEJhci0zNDA0OT4NCisgICAgICAgICAgICAgICAgPE5hbWU+TWFpbjwvTmFtZT4NCisgICAgICAgICAgICAgICAgPEJ1dHRvbnM+MDAyMDAwMDAwMTAwMDAwMDIwMDBGRkZGMDEwMDExMDA0MzRENDY0MzU0NkY2RjZDNDI2MTcyNDI3NTc0NzQ2RjZFMDBFMTAwMDAwMDAwMDAwMDM2MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAxRTEwMDAwMDAwMDAwMDAzNzAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwM0UxMDAwMDAwMDAwNDAwMzkwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDA4MTAwMDAwMDAwMDAwMDFBMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwN0UxMDAwMDAwMDAwNDAwM0MwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDIzRTEwMDAwMDAwMDA0MDAzRTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyMkUxMDAwMDAwMDAwNDAwM0QwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjVFMTAwMDAwMDAwMDQwMDQwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyQkUxMDAwMDAwMDAwNDAwNDMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMkNFMTAwMDAwMDAwMDQwMDQ0MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMEZGRkYwMTAwMTkwMDQzNEQ0NjQzNTQ2RjZGNkM0MjYxNzI0MzZGNkQ2MjZGNDI2Rjc4NDI3NTc0NzQ2RjZFNDI4MTAwMDAwMDAwMDQwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAxMDAwMDAwNzgwMDAwMDAwMjAwMjA1MEZGRkZGRkZGRkZGRUZGMDA5NjAwMDAwMDAwMDAwMDAwMDAwMDAxODAyMTgxMDAwMDAwMDAwNDAwMkQwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjRFMTAwMDAwMDAwMDQwMDNGMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI4RTEwMDAwMDAwMDA0MDA0MTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyOUUxMDAwMDAwMDAwNDAwNDIwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDI4MTAwMDAwMDAwMDQwMDFDMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDI5ODEwMDAwMDAwMDA0MDAzMTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAyNzgxMDAwMDAwMDAwNDAwMkYwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMjg4MTAwMDAwMDAwMDQwMDMwMDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDFEODEwMDAwMDAwMDA0MDAyOTAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAxRTgxMDAwMDAwMDAwNDAwMkEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMDAwMDAwMDAwMTAwMDAwMEZGRkZGRkZGRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDBCODEwMDAwMDAwMDA0MDAyMDAwMDAwMEZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwQzgxMDAwMDAwMDAwMDAwMjEwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwNUY4NjAwMDAwMDAwMDAwMDM1MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDE4MDAwMDAwMDAwMDEwMDAwMDBGRkZGRkZGRkZGRkVGRjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAxODAwRTgxMDAwMDAwMDAwMDAwMjMwMDAwMDBGRkZFRkYwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDAwMTgwMEY4MTAwMDAwMDAwMDAwMDI0MDAwMDAwRkZGRUZGMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAxMDAwMDAwMDAwMDAwMDBGRkZFRkYwNDREMDA2MTAwNjkwMDZFMDBGRjdGMDAwMDwvQnV0dG9ucz4NCisgICAgICAgICAgICA8L01GQ1Rvb2xCYXItMzQwNDk+DQorICAgICAgICAgICAgPFBhbmUtMzQwNDk+DQorICAgICAgICAgICAgICAgIDxJRD4zNDA0OTwvSUQ+DQorICAgICAgICAgICAgICAgIDxSZWN0UmVjZW50RmxvYXQ+MEEwMDAwMDAwQTAwMDAwMDZFMDAwMDAwNkUwMDAwMDA8L1JlY3RSZWNlbnRGbG9hdD4NCisgICAgICAgICAgICAgICAgPFJlY3RSZWNlbnREb2NrZWQ+MDAwMDAwMDAxQzAwMDAwMDAwMDMwMDAwMzkwMDAwMDA8L1JlY3RSZWNlbnREb2NrZWQ+DQorICAgICAgICAgICAgICAgIDxSZWNlbnRGcmFtZUFsaWdubWVudD44MTkyPC9SZWNlbnRGcmFtZUFsaWdubWVudD4NCisgICAgICAgICAgICAgICAgPFJlY2VudFJvd0luZGV4PjE8L1JlY2VudFJvd0luZGV4Pg0KKyAgICAgICAgICAgICAgICA8SXNGbG9hdGluZz4wPC9Jc0Zsb2F0aW5nPg0KKyAgICAgICAgICAgICAgICA8TVJVV2lkdGg+MzI3Njc8L01SVVdpZHRoPg0KKyAgICAgICAgICAgICAgICA8UGluU3RhdGU+MDwvUGluU3RhdGU+DQorICAgICAgICAgICAgPC9QYW5lLTM0MDQ5Pg0KKyAgICAgICAgICAgIDxCYXNlUGFuZS0zNDA0OT4NCisgICAgICAgICAgICAgICAgPElzVmlzaWJsZT4xPC9Jc1Zpc2libGU+DQorICAgICAgICAgICAgPC9CYXNlUGFuZS0zNDA0OT4NCisgICAgICAgIDwvRGVza3RvcD4NCisgICAgICAgIDxNRElXaW5kb3dzPg0KKyAgICAgICAgICAgIDxNRElDbGllbnRBcmVhLTA+DQorICAgICAgICAgICAgICAgIDxNRElUYWJzU3RhdGU+MDEwMDAwMDAwMzAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDEwMDAwMDBGRkZGRkZGRjAwMDAwMDAwMDEwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMjgwMDAwMDAyODAwMDAwMDAwMDAwMDAwPC9NRElUYWJzU3RhdGU+DQorICAgICAgICAgICAgPC9NRElDbGllbnRBcmVhLTA+DQorICAgICAgICA8L01ESVdpbmRvd3M+DQorICAgIDwvV2luZG93U3RvcmFnZT4NCiA8L1dvcmtzcGFjZT4NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTJlNzM0NC4uMmZlYTgxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZGM0MzFiNS4uNTAzOWNlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCA4MjY3MzgyLi5jMGFkZjdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbml0aWFsaXNlcyB0aHJlZSB0aW1lcnMgYXMgZm9sbG93czoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9JQVIucwppbmRleCAwNjI5M2I3Li4xODc0NTBmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLSAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLSAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDxGcmVlUlRPU0NvbmZpZy5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL1JlZ1Rlc3RfS2VpbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9LZWlsLmMKaW5kZXggMTFlYTFhNi4uMzU3NmYxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9LZWlsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9GdWxsX0RlbW8vUmVnVGVzdF9LZWlsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIF9fYXNtIHZvaWQgdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24oIHZvaWQgKQ0KIHsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NN19TVE0zMkY3X1NUTTMyNzU2Ry1FVkFMX0lBUl9LZWlsL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IGRmMjY1N2EuLjIzMWQzZDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX003X1NUTTMyRjdfU1RNMzI3NTZHLUVWQUxfSUFSX0tlaWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9tYWluLmMKaW5kZXggODU5YjgzNS4uM2FhNmViOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTTdfU1RNMzJGN19TVE0zMjc1NkctRVZBTF9JQVJfS2VpbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhmNzFjZGUuLjM2ZGZkNzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvUGFyVGVzdC5jCmluZGV4IDFmOWIzN2IuLjU4MTI5ODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvbWFpbi1mdWxsLmMKaW5kZXggZTllOGFlZC4uMTczMzMzYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYwppbmRleCAwZGIzYzdhLi5lODUxMGE4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIG1haW4tYmxpbmt5LmMgaXMgaW5jbHVkZWQgd2hlbiB0aGUgIkJsaW5reSIgYnVpbGQgY29uZmlndXJhdGlvbiBpcyB1c2VkLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlBMzEwX0lBUl9LZWlsL3NlcmlhbC5jCmluZGV4IDEyM2FhZTIuLjYxM2U2ZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUEzMTBfSUFSX0tlaWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QTMxMF9JQVJfS2VpbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvRnJlZVJUT1NDb25maWcuaAppbmRleCA1MzZlN2YyLi44NjQxMDEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL1BhclRlc3QuYwppbmRleCA5NGQ0NmIyLi5hNjc0NTk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL21haW4tZnVsbC5jCmluZGV4IDZjMzdkN2EuLjNkMDYyZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL21haW5fYmxpbmt5LmMKaW5kZXggNDZiYzViNS4uMWQ0NWRhMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBtYWluLWJsaW5reS5jIGlzIGluY2x1ZGVkIHdoZW4gdGhlICJCbGlua3kiIGJ1aWxkIGNvbmZpZ3VyYXRpb24gaXMgdXNlZC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTUI5QjUwMF9JQVJfS2VpbC9zZXJpYWwuYwppbmRleCBlZGRhNmZlLi42MDE0YjI5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NQjlCNTAwX0lBUl9LZWlsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01COUI1MDBfSUFSX0tlaWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDJmNzA5OGUuLjJmODg0NzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAppbmRleCA3NTM5YjQwLi4yMzg5MDUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eApAQCAtMSw2MDAgKzEsNjAyIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+DQotPFByb2plY3RPcHQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InByb2plY3Rfb3B0eC54c2QiPg0KLQ0KLSAgPFNjaGVtYVZlcnNpb24+MS4wPC9TY2hlbWFWZXJzaW9uPg0KLQ0KLSAgPEhlYWRlcj4jIyMgdVZpc2lvbiBQcm9qZWN0LCAoQykgS2VpbCBTb2Z0d2FyZTwvSGVhZGVyPg0KLQ0KLSAgPEV4dGVuc2lvbnM+DQotICAgIDxjRXh0PiouYzsqLlM8L2NFeHQ+DQotICAgIDxhRXh0PjwvYUV4dD4NCi0gICAgPG9FeHQ+Ki5vYmo8L29FeHQ+DQotICAgIDxsRXh0PioubGliPC9sRXh0Pg0KLSAgICA8dEV4dD4qLnR4dDsgKi5oOyAqLmluYzwvdEV4dD4NCi0gICAgPHBFeHQ+Ki5wbG08L3BFeHQ+DQotICAgIDxDcHBYPiouY3BwPC9DcHBYPg0KLSAgICA8bk1pZ3JhdGU+MDwvbk1pZ3JhdGU+DQotICA8L0V4dGVuc2lvbnM+DQotDQotICA8RGF2ZVRtPg0KLSAgICA8ZHdMb3dEYXRlVGltZT4wPC9kd0xvd0RhdGVUaW1lPg0KLSAgICA8ZHdIaWdoRGF0ZVRpbWU+MDwvZHdIaWdoRGF0ZVRpbWU+DQotICA8L0RhdmVUbT4NCi0NCi0gIDxUYXJnZXQ+DQotICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vX0dDQ19NUFU8L1RhcmdldE5hbWU+DQotICAgIDxUb29sc2V0TnVtYmVyPjB4MzwvVG9vbHNldE51bWJlcj4NCi0gICAgPFRvb2xzZXROYW1lPkFSTS1HTlU8L1Rvb2xzZXROYW1lPg0KLSAgICA8VGFyZ2V0T3B0aW9uPg0KLSAgICAgIDxDTEtBUk0+MTIwMDAwMDA8L0NMS0FSTT4NCi0gICAgICA8T1BUVFQ+DQotICAgICAgICA8Z0ZsYWdzPjE8L2dGbGFncz4NCi0gICAgICAgIDxCZWVwQXRFbmQ+MTwvQmVlcEF0RW5kPg0KLSAgICAgICAgPFJ1blNpbT4wPC9SdW5TaW0+DQotICAgICAgICA8UnVuVGFyZ2V0PjE8L1J1blRhcmdldD4NCi0gICAgICAgIDxSdW5BYlVjPjA8L1J1bkFiVWM+DQotICAgICAgPC9PUFRUVD4NCi0gICAgICA8T1BUSFg+DQotICAgICAgICA8SGV4U2VsZWN0aW9uPjE8L0hleFNlbGVjdGlvbj4NCi0gICAgICAgIDxGbGFzaEJ5dGU+NjU1MzU8L0ZsYXNoQnl0ZT4NCi0gICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPg0KLSAgICAgICAgPEhleFJhbmdlSGlnaEFkZHJlc3M+MDwvSGV4UmFuZ2VIaWdoQWRkcmVzcz4NCi0gICAgICAgIDxIZXhPZmZzZXQ+MDwvSGV4T2Zmc2V0Pg0KLSAgICAgIDwvT1BUSFg+DQotICAgICAgPE9QVExFWD4NCi0gICAgICAgIDxQYWdlV2lkdGg+MTIwPC9QYWdlV2lkdGg+DQotICAgICAgICA8UGFnZUxlbmd0aD42NTwvUGFnZUxlbmd0aD4NCi0gICAgICAgIDxUYWJTdG9wPjg8L1RhYlN0b3A+DQotICAgICAgICA8TGlzdGluZ1BhdGg+LlxMaXN0aW5nc1w8L0xpc3RpbmdQYXRoPg0KLSAgICAgIDwvT1BUTEVYPg0KLSAgICAgIDxMaXN0aW5nUGFnZT4NCi0gICAgICAgIDxDcmVhdGVDTGlzdGluZz4xPC9DcmVhdGVDTGlzdGluZz4NCi0gICAgICAgIDxDcmVhdGVBTGlzdGluZz4xPC9DcmVhdGVBTGlzdGluZz4NCi0gICAgICAgIDxDcmVhdGVMTGlzdGluZz4xPC9DcmVhdGVMTGlzdGluZz4NCi0gICAgICAgIDxDcmVhdGVJTGlzdGluZz4wPC9DcmVhdGVJTGlzdGluZz4NCi0gICAgICAgIDxBc21Db25kPjE8L0FzbUNvbmQ+DQotICAgICAgICA8QXNtU3ltYj4xPC9Bc21TeW1iPg0KLSAgICAgICAgPEFzbVhyZWY+MDwvQXNtWHJlZj4NCi0gICAgICAgIDxDQ29uZD4xPC9DQ29uZD4NCi0gICAgICAgIDxDQ29kZT4wPC9DQ29kZT4NCi0gICAgICAgIDxDTGlzdEluYz4wPC9DTGlzdEluYz4NCi0gICAgICAgIDxDU3ltYj4wPC9DU3ltYj4NCi0gICAgICAgIDxMaW5rZXJDb2RlTGlzdGluZz4wPC9MaW5rZXJDb2RlTGlzdGluZz4NCi0gICAgICA8L0xpc3RpbmdQYWdlPg0KLSAgICAgIDxPUFRYTD4NCi0gICAgICAgIDxMTWFwPjE8L0xNYXA+DQotICAgICAgICA8TENvbW1lbnRzPjE8L0xDb21tZW50cz4NCi0gICAgICAgIDxMR2VuZXJhdGVTeW1ib2xzPjE8L0xHZW5lcmF0ZVN5bWJvbHM+DQotICAgICAgICA8TExpYlN5bT4xPC9MTGliU3ltPg0KLSAgICAgICAgPExMaW5lcz4xPC9MTGluZXM+DQotICAgICAgICA8TExvY1N5bT4xPC9MTG9jU3ltPg0KLSAgICAgICAgPExQdWJTeW0+MTwvTFB1YlN5bT4NCi0gICAgICAgIDxMWHJlZj4wPC9MWHJlZj4NCi0gICAgICAgIDxMRXhwU2VsPjA8L0xFeHBTZWw+DQotICAgICAgPC9PUFRYTD4NCi0gICAgICA8T1BURkw+DQotICAgICAgICA8dHZFeHA+MTwvdHZFeHA+DQotICAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgICA8SXNDdXJyZW50VGFyZ2V0PjE8L0lzQ3VycmVudFRhcmdldD4NCi0gICAgICA8L09QVEZMPg0KLSAgICAgIDxDcHVDb2RlPjc8L0NwdUNvZGU+DQotICAgICAgPERlYnVnT3B0Pg0KLSAgICAgICAgPHVTaW0+MDwvdVNpbT4NCi0gICAgICAgIDx1VHJnPjE8L3VUcmc+DQotICAgICAgICA8c0xkQXBwPjE8L3NMZEFwcD4NCi0gICAgICAgIDxzR29tYWluPjE8L3NHb21haW4+DQotICAgICAgICA8c1JicmVhaz4xPC9zUmJyZWFrPg0KLSAgICAgICAgPHNSd2F0Y2g+MTwvc1J3YXRjaD4NCi0gICAgICAgIDxzUm1lbT4xPC9zUm1lbT4NCi0gICAgICAgIDxzUmZ1bmM+MTwvc1JmdW5jPg0KLSAgICAgICAgPHNSYm94PjE8L3NSYm94Pg0KLSAgICAgICAgPHRMZEFwcD4xPC90TGRBcHA+DQotICAgICAgICA8dEdvbWFpbj4xPC90R29tYWluPg0KLSAgICAgICAgPHRSYnJlYWs+MTwvdFJicmVhaz4NCi0gICAgICAgIDx0UndhdGNoPjE8L3RSd2F0Y2g+DQotICAgICAgICA8dFJtZW0+MTwvdFJtZW0+DQotICAgICAgICA8dFJmdW5jPjA8L3RSZnVuYz4NCi0gICAgICAgIDx0UmJveD4xPC90UmJveD4NCi0gICAgICAgIDx0UnRyYWNlPjE8L3RSdHJhY2U+DQotICAgICAgICA8c1JTeXNWdz4xPC9zUlN5c1Z3Pg0KLSAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4NCi0gICAgICAgIDxzUnVuRGViPjA8L3NSdW5EZWI+DQotICAgICAgICA8c0xydGltZT4wPC9zTHJ0aW1lPg0KLSAgICAgICAgPG5Uc2VsPjE8L25Uc2VsPg0KLSAgICAgICAgPHNEbGw+PC9zRGxsPg0KLSAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4NCi0gICAgICAgIDxzRGxnRGxsPjwvc0RsZ0RsbD4NCi0gICAgICAgIDxzRGxnUGE+PC9zRGxnUGE+DQotICAgICAgICA8c0lmaWxlPjwvc0lmaWxlPg0KLSAgICAgICAgPHREbGw+PC90RGxsPg0KLSAgICAgICAgPHREbGxQYT48L3REbGxQYT4NCi0gICAgICAgIDx0RGxnRGxsPjwvdERsZ0RsbD4NCi0gICAgICAgIDx0RGxnUGE+PC90RGxnUGE+DQotICAgICAgICA8dElmaWxlPmluaXRfYXBwLmluaTwvdElmaWxlPg0KLSAgICAgICAgPHBNb24+QklOXFVMMkNNMy5ETEw8L3BNb24+DQotICAgICAgPC9EZWJ1Z09wdD4NCi0gICAgICA8VGFyZ2V0RHJpdmVyRGxsUmVnaXN0cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkpMMkNNMzwvS2V5Pg0KLSAgICAgICAgICA8TmFtZT4tVTU5MTAxNzg5IC1PMzA0NyAtUzIgLVpUSUZTcGVlZFNlbDUwMDAgLUEwIC1DMCAtSlUxIC1KSTEyNy4wLjAuMSAtSlAwIC1SU1QwIC1OMDAoIkFSTSBDb3JlU2lnaHQgU1ctRFAiKSAtRDAwKDJCQTAxNDc3KSAtTDAwKDApIC1UTzE5IC1UQzQ4MDAwMDAwIC1UUDIxIC1URFM4MDA2IC1URFQwIC1UREMxRiAtVElFMSAtVElQOCAtVEIxIC1URkUwIC1GTzExIC1GRDExODAwMCAtRkM4MDAwIC1GTjEgLUZGME5FV19ERVZJQ0UuRkxNIC1GUzBFMDAwMCAtRkwwMzgwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSk8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgICAgPFNldFJlZ0VudHJ5Pg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPEtleT5ETEdEQVJNPC9LZXk+DQotICAgICAgICAgIDxOYW1lPigxMDEwPS0xLC0xLC0xLC0xLDApKDEwMDc9LTEsLTEsLTEsLTEsMCkoMTAwOD0tMSwtMSwtMSwtMSwwKSgxMDA5PS0xLC0xLC0xLC0xLDApKDEwMTI9LTEsLTEsLTEsLTEsMCk8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgICAgPFNldFJlZ0VudHJ5Pg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPEtleT5BUk1SVFhFVkVOVEZMQUdTPC9LZXk+DQotICAgICAgICAgIDxOYW1lPi1MNzAgLVoxOCAtQzAgLU0wIC1UMTwvTmFtZT4NCi0gICAgICAgIDwvU2V0UmVnRW50cnk+DQotICAgICAgICA8U2V0UmVnRW50cnk+DQotICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPg0KLSAgICAgICAgICA8S2V5PkRMR1RBUk08L0tleT4NCi0gICAgICAgICAgPE5hbWU+KDEwMTA9LTEsLTEsLTEsLTEsMCkoMTAwNz0tMSwtMSwtMSwtMSwwKSgxMDA4PS0xLC0xLC0xLC0xLDApKDEwMDk9MTIwLDE0OSwzNTQsNjgzLDApKDEwMTI9MTM3NywxMzEsMTg0Miw0MzEsMCk8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgICAgPFNldFJlZ0VudHJ5Pg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPEtleT5BUk1EQkdGTEFHUzwvS2V5Pg0KLSAgICAgICAgICA8TmFtZT4tVDA8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgICAgPFNldFJlZ0VudHJ5Pg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPEtleT5ETEdVQVJNPC9LZXk+DQotICAgICAgICAgIDxOYW1lPigxMDU9LTEsLTEsLTEsLTEsMCk8L05hbWU+DQotICAgICAgICA8L1NldFJlZ0VudHJ5Pg0KLSAgICAgICAgPFNldFJlZ0VudHJ5Pg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPEtleT5VTDJDTTM8L0tleT4NCi0gICAgICAgICAgPE5hbWU+LVVWMTExNVNBRSAtTzMwNDcgLVMwIC1DMCAtUDAwIC1OMDAoIkFSTSBDb3JlU2lnaHQgU1ctRFAiKSAtRDAwKDJCQTAxNDc3KSAtTDAwKDApIC1UTzE5IC1UQzQ4MDAwMDAwIC1UUDIxIC1URFM4MDI4IC1URFQwIC1UREMxRiAtVElFMSAtVElQOCAtRk8xMSAtRkQxMTgwMDAgLUZDODAwMCAtRk4xIC1GRjBORVdfREVWSUNFLkZMTSAtRlMwRTAwMDAgLUZMMDM4MDAwIC1GUDAoJCREZXZpY2U6QVJNQ000X0ZQJERldmljZVxBUk1cRmxhc2hcTkVXX0RFVklDRS5GTE0pPC9OYW1lPg0KLSAgICAgICAgPC9TZXRSZWdFbnRyeT4NCi0gICAgICA8L1RhcmdldERyaXZlckRsbFJlZ2lzdHJ5Pg0KLSAgICAgIDxCcmVha3BvaW50Pg0KLSAgICAgICAgPEJwPg0KLSAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4NCi0gICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgPExpbmVOdW1iZXI+MjQyODwvTGluZU51bWJlcj4NCi0gICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPg0KLSAgICAgICAgICA8QWRkcmVzcz45MjYxODQ8L0FkZHJlc3M+DQotICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+DQotICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+DQotICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4NCi0gICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+DQotICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+DQotICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+DQotICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcU291cmNlXHRhc2tzLmM8L0ZpbGVuYW1lPg0KLSAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4NCi0gICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi8uLi8uLi9Tb3VyY2UvdGFza3MuY1wyNDI4PC9FeHByZXNzaW9uPg0KLSAgICAgICAgPC9CcD4NCi0gICAgICAgIDxCcD4NCi0gICAgICAgICAgPE51bWJlcj4xPC9OdW1iZXI+DQotICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgIDxMaW5lTnVtYmVyPjg1MTwvTGluZU51bWJlcj4NCi0gICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPg0KLSAgICAgICAgICA8QWRkcmVzcz45NTMxNDA8L0FkZHJlc3M+DQotICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+DQotICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+DQotICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4NCi0gICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+DQotICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+DQotICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+DQotICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcRGVtb1xDT1JURVhfTVBVX01FQzE3MDFfS2VpbF9HQ0NcbWFpbi5jPC9GaWxlbmFtZT4NCi0gICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+DQotICAgICAgICAgIDxFeHByZXNzaW9uPlxcUlRPU0RlbW9cLi4vbWFpbi5jXDg1MTwvRXhwcmVzc2lvbj4NCi0gICAgICAgIDwvQnA+DQotICAgICAgICA8QnA+DQotICAgICAgICAgIDxOdW1iZXI+MjwvTnVtYmVyPg0KLSAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICA8TGluZU51bWJlcj4zMDc8L0xpbmVOdW1iZXI+DQotICAgICAgICAgIDxFbmFibGVkRmxhZz4xPC9FbmFibGVkRmxhZz4NCi0gICAgICAgICAgPEFkZHJlc3M+OTM5MTQ4PC9BZGRyZXNzPg0KLSAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0Pg0KLSAgICAgICAgICA8SHR4VHlwZT4wPC9IdHhUeXBlPg0KLSAgICAgICAgICA8TWFueU9iamVjdHM+MDwvTWFueU9iamVjdHM+DQotICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0Pg0KLSAgICAgICAgICA8QnJlYWtCeUFjY2Vzcz4wPC9CcmVha0J5QWNjZXNzPg0KLSAgICAgICAgICA8QnJlYWtJZlJDb3VudD4xPC9CcmVha0lmUkNvdW50Pg0KLSAgICAgICAgICA8RmlsZW5hbWU+QzpcRVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXE1pY3JvY2hpcF9DRUMxMzAyXFdvcmtpbmdDb3B5XFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9GaWxlbmFtZT4NCi0gICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+DQotICAgICAgICAgIDxFeHByZXNzaW9uPlxcUlRPU0RlbW9cLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmNcMzA3PC9FeHByZXNzaW9uPg0KLSAgICAgICAgPC9CcD4NCi0gICAgICAgIDxCcD4NCi0gICAgICAgICAgPE51bWJlcj4zPC9OdW1iZXI+DQotICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgIDxMaW5lTnVtYmVyPjkxNjwvTGluZU51bWJlcj4NCi0gICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPg0KLSAgICAgICAgICA8QWRkcmVzcz45NTMyMzI8L0FkZHJlc3M+DQotICAgICAgICAgIDxCeXRlT2JqZWN0PjA8L0J5dGVPYmplY3Q+DQotICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+DQotICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4NCi0gICAgICAgICAgPFNpemVPZk9iamVjdD4wPC9TaXplT2ZPYmplY3Q+DQotICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+DQotICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+DQotICAgICAgICAgIDxGaWxlbmFtZT5DOlxFXERldlxGcmVlUlRPU1xUcmlhbFxBY3RpdmVcTWljcm9jaGlwX0NFQzEzMDJcV29ya2luZ0NvcHlcRGVtb1xDT1JURVhfTVBVX01FQzE3MDFfS2VpbF9HQ0NcbWFpbi5jPC9GaWxlbmFtZT4NCi0gICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+DQotICAgICAgICAgIDxFeHByZXNzaW9uPlxcUlRPU0RlbW9cLi4vbWFpbi5jXDkxNjwvRXhwcmVzc2lvbj4NCi0gICAgICAgIDwvQnA+DQotICAgICAgPC9CcmVha3BvaW50Pg0KLSAgICAgIDxXYXRjaFdpbmRvdzE+DQotICAgICAgICA8V3c+DQotICAgICAgICAgIDxjb3VudD4wPC9jb3VudD4NCi0gICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+DQotICAgICAgICAgIDxJdGVtVGV4dD54VGlja0NvdW50PC9JdGVtVGV4dD4NCi0gICAgICAgIDwvV3c+DQotICAgICAgICA8V3c+DQotICAgICAgICAgIDxjb3VudD4xPC9jb3VudD4NCi0gICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+DQotICAgICAgICAgIDxJdGVtVGV4dD5weEN1cnJlbnRUQ0I8L0l0ZW1UZXh0Pg0KLSAgICAgICAgPC9Xdz4NCi0gICAgICAgIDxXdz4NCi0gICAgICAgICAgPGNvdW50PjI8L2NvdW50Pg0KLSAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4NCi0gICAgICAgICAgPEl0ZW1UZXh0PipwY1N0cmluZzwvSXRlbVRleHQ+DQotICAgICAgICA8L1d3Pg0KLSAgICAgICAgPFd3Pg0KLSAgICAgICAgICA8Y291bnQ+MzwvY291bnQ+DQotICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPg0KLSAgICAgICAgICA8SXRlbVRleHQ+JmFtcDt4U2NoZWR1bGVyUnVubmluZzwvSXRlbVRleHQ+DQotICAgICAgICA8L1d3Pg0KLSAgICAgICAgPFd3Pg0KLSAgICAgICAgICA8Y291bnQ+NDwvY291bnQ+DQotICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPg0KLSAgICAgICAgICA8SXRlbVRleHQ+eFNjaGVkdWxlclJ1bm5pbmc8L0l0ZW1UZXh0Pg0KLSAgICAgICAgPC9Xdz4NCi0gICAgICA8L1dhdGNoV2luZG93MT4NCi0gICAgICA8TWVtb3J5V2luZG93MT4NCi0gICAgICAgIDxNbT4NCi0gICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+DQotICAgICAgICAgIDxTdWJUeXBlPjI8L1N1YlR5cGU+DQotICAgICAgICAgIDxJdGVtVGV4dD4weDEwMDAwMDwvSXRlbVRleHQ+DQotICAgICAgICAgIDxBY2NTaXplWD40PC9BY2NTaXplWD4NCi0gICAgICAgIDwvTW0+DQotICAgICAgPC9NZW1vcnlXaW5kb3cxPg0KLSAgICAgIDxUcmFjZXBvaW50Pg0KLSAgICAgICAgPFRIRGVsYXk+MDwvVEhEZWxheT4NCi0gICAgICA8L1RyYWNlcG9pbnQ+DQotICAgICAgPERlYnVnRmxhZz4NCi0gICAgICAgIDx0cmFjZT4wPC90cmFjZT4NCi0gICAgICAgIDxwZXJpb2RpYz4xPC9wZXJpb2RpYz4NCi0gICAgICAgIDxhTHdpbj4xPC9hTHdpbj4NCi0gICAgICAgIDxhQ292ZXI+MDwvYUNvdmVyPg0KLSAgICAgICAgPGFTZXIxPjA8L2FTZXIxPg0KLSAgICAgICAgPGFTZXIyPjA8L2FTZXIyPg0KLSAgICAgICAgPGFQYT4wPC9hUGE+DQotICAgICAgICA8dmlld21vZGU+MTwvdmlld21vZGU+DQotICAgICAgICA8dnJTZWw+MDwvdnJTZWw+DQotICAgICAgICA8YVN5bT4wPC9hU3ltPg0KLSAgICAgICAgPGFUYm94PjA8L2FUYm94Pg0KLSAgICAgICAgPEFzY1MxPjA8L0FzY1MxPg0KLSAgICAgICAgPEFzY1MyPjA8L0FzY1MyPg0KLSAgICAgICAgPEFzY1MzPjA8L0FzY1MzPg0KLSAgICAgICAgPGFTZXIzPjA8L2FTZXIzPg0KLSAgICAgICAgPGVQcm9mPjA8L2VQcm9mPg0KLSAgICAgICAgPGFMYT4wPC9hTGE+DQotICAgICAgICA8YVBhMT4wPC9hUGExPg0KLSAgICAgICAgPEFzY1M0PjA8L0FzY1M0Pg0KLSAgICAgICAgPGFTZXI0PjE8L2FTZXI0Pg0KLSAgICAgICAgPFN0a0xvYz4wPC9TdGtMb2M+DQotICAgICAgICA8VHJjV2luPjA8L1RyY1dpbj4NCi0gICAgICAgIDxuZXdDcHU+MDwvbmV3Q3B1Pg0KLSAgICAgICAgPHVQcm90PjA8L3VQcm90Pg0KLSAgICAgIDwvRGVidWdGbGFnPg0KLSAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPg0KLSAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPg0KLSAgICAgIDxiTGludEF1dG8+MDwvYkxpbnRBdXRvPg0KLSAgICAgIDxEZWJ1Z0Rlc2NyaXB0aW9uPg0KLSAgICAgICAgPEVuYWJsZT4xPC9FbmFibGU+DQotICAgICAgICA8RW5hYmxlTG9nPjA8L0VuYWJsZUxvZz4NCi0gICAgICAgIDxQcm90b2NvbD4yPC9Qcm90b2NvbD4NCi0gICAgICAgIDxEYmdDbG9jaz4xMDAwMDAwMDwvRGJnQ2xvY2s+DQotICAgICAgPC9EZWJ1Z0Rlc2NyaXB0aW9uPg0KLSAgICA8L1RhcmdldE9wdGlvbj4NCi0gIDwvVGFyZ2V0Pg0KLQ0KLSAgPEdyb3VwPg0KLSAgICA8R3JvdXBOYW1lPlN5c3RlbTwvR3JvdXBOYW1lPg0KLSAgICA8dHZFeHA+MTwvdHZFeHA+DQotICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgPGNiU2VsPjA8L2NiU2VsPg0KLSAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjE8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi5cc3lzdGVtLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3lzdGVtLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MjwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MjwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxzdGFydHVwX0FSTUNNNC5TPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0YXJ0dXBfQVJNQ000LlM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgPC9Hcm91cD4NCi0NCi0gIDxHcm91cD4NCi0gICAgPEdyb3VwTmFtZT5tYWluX2FuZF9jb25maWc8L0dyb3VwTmFtZT4NCi0gICAgPHR2RXhwPjE8L3R2RXhwPg0KLSAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgIDxjYlNlbD4wPC9jYlNlbD4NCi0gICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4yPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4zPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxtYWluLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+bWFpbi5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjI8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjQ8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjU8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXEZyZWVSVE9TQ29uZmlnLmg8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+RnJlZVJUT1NDb25maWcuaDwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4yPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj41PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXFJlZ1Rlc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5SZWdUZXN0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgPC9Hcm91cD4NCi0NCi0gIDxHcm91cD4NCi0gICAgPEdyb3VwTmFtZT5GcmVlUlRPU19Tb3VyY2U8L0dyb3VwTmFtZT4NCi0gICAgPHR2RXhwPjE8L3R2RXhwPg0KLSAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgIDxjYlNlbD4wPC9jYlNlbD4NCi0gICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj42PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcZXZlbnRfZ3JvdXBzLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+ZXZlbnRfZ3JvdXBzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+NzwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXGxpc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5saXN0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+ODwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHF1ZXVlLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cXVldWUuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj45PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcdGFza3MuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD50YXNrcy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjEwPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+dGltZXJzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTE8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmhlYXBfNC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjEyPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcQ29tbW9uXG1wdV93cmFwcGVycy5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm1wdV93cmFwcGVycy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTRfTVBVXHBvcnQuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5wb3J0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgPC9Hcm91cD4NCi0NCi0gIDxHcm91cD4NCi0gICAgPEdyb3VwTmFtZT5wZXJpcGhlcmFsX2xpYnJhcnk8L0dyb3VwTmFtZT4NCi0gICAgPHR2RXhwPjE8L3R2RXhwPg0KLSAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgIDxjYlNlbD4wPC9jYlNlbD4NCi0gICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4xNDwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5idGltZXJfYXBpLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTU8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+YnRpbWVyX3BlcnBobC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjE2PC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4NCi0gICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5pbnRlcnJ1cHRfYXBpLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTc8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+aW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTg8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X252aWNfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+aW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgICA8RmlsZT4NCi0gICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+DQotICAgICAgPEZpbGVOdW1iZXI+MTk8L0ZpbGVOdW1iZXI+DQotICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgIDx0dkV4cD4wPC90dkV4cD4NCi0gICAgICA8Rm9jdXM+MDwvRm9jdXM+DQotICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPg0KLSAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPg0KLSAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxwY3JccGNyX2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPg0KLSAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnBjcl9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4NCi0gICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4NCi0gICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPg0KLSAgICA8L0ZpbGU+DQotICAgIDxGaWxlPg0KLSAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4NCi0gICAgICA8RmlsZU51bWJlcj4yMDwvRmlsZU51bWJlcj4NCi0gICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgPHR2RXhwPjA8L3R2RXhwPg0KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4NCi0gICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+DQotICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+DQotICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+cGNyX3BlcnBobC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPg0KLSAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPg0KLSAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+DQotICAgIDwvRmlsZT4NCi0gICAgPEZpbGU+DQotICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPg0KLSAgICAgIDxGaWxlTnVtYmVyPjIxPC9GaWxlTnVtYmVyPg0KLSAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICA8dHZFeHA+MDwvdHZFeHA+DQotICAgICAgPEZvY3VzPjA8L0ZvY3VzPg0KLSAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4NCi0gICAgICA8YkRhdmUyPjA8L2JEYXZlMj4NCi0gICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcc3lzdGVtX2ludGVybmFsLmM8L1BhdGhXaXRoRmlsZU5hbWU+DQotICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3lzdGVtX2ludGVybmFsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+DQotICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+DQotICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4NCi0gICAgPC9GaWxlPg0KLSAgPC9Hcm91cD4NCi0NCi08L1Byb2plY3RPcHQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/PgorPFByb2plY3RPcHQgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InByb2plY3Rfb3B0eC54c2QiPgorCisgIDxTY2hlbWFWZXJzaW9uPjEuMDwvU2NoZW1hVmVyc2lvbj4KKworICA8SGVhZGVyPiMjIyB1VmlzaW9uIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlPC9IZWFkZXI+CisKKyAgPEV4dGVuc2lvbnM+CisgICAgPGNFeHQ+Ki5jOyouUzwvY0V4dD4KKyAgICA8YUV4dD48L2FFeHQ+CisgICAgPG9FeHQ+Ki5vYmo7ICoubzwvb0V4dD4KKyAgICA8bEV4dD4qLmxpYjwvbEV4dD4KKyAgICA8dEV4dD4qLnR4dDsgKi5oOyAqLmluYzwvdEV4dD4KKyAgICA8cEV4dD4qLnBsbTwvcEV4dD4KKyAgICA8Q3BwWD4qLmNwcDwvQ3BwWD4KKyAgICA8bk1pZ3JhdGU+MDwvbk1pZ3JhdGU+CisgIDwvRXh0ZW5zaW9ucz4KKworICA8RGF2ZVRtPgorICAgIDxkd0xvd0RhdGVUaW1lPjA8L2R3TG93RGF0ZVRpbWU+CisgICAgPGR3SGlnaERhdGVUaW1lPjA8L2R3SGlnaERhdGVUaW1lPgorICA8L0RhdmVUbT4KKworICA8VGFyZ2V0PgorICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vX0dDQ19NUFU8L1RhcmdldE5hbWU+CisgICAgPFRvb2xzZXROdW1iZXI+MHgzPC9Ub29sc2V0TnVtYmVyPgorICAgIDxUb29sc2V0TmFtZT5BUk0tR05VPC9Ub29sc2V0TmFtZT4KKyAgICA8VGFyZ2V0T3B0aW9uPgorICAgICAgPENMS0FSTT4xMjAwMDAwMDwvQ0xLQVJNPgorICAgICAgPE9QVFRUPgorICAgICAgICA8Z0ZsYWdzPjE8L2dGbGFncz4KKyAgICAgICAgPEJlZXBBdEVuZD4xPC9CZWVwQXRFbmQ+CisgICAgICAgIDxSdW5TaW0+MDwvUnVuU2ltPgorICAgICAgICA8UnVuVGFyZ2V0PjE8L1J1blRhcmdldD4KKyAgICAgICAgPFJ1bkFiVWM+MDwvUnVuQWJVYz4KKyAgICAgIDwvT1BUVFQ+CisgICAgICA8T1BUSFg+CisgICAgICAgIDxIZXhTZWxlY3Rpb24+MTwvSGV4U2VsZWN0aW9uPgorICAgICAgICA8Rmxhc2hCeXRlPjY1NTM1PC9GbGFzaEJ5dGU+CisgICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPgorICAgICAgICA8SGV4UmFuZ2VIaWdoQWRkcmVzcz4wPC9IZXhSYW5nZUhpZ2hBZGRyZXNzPgorICAgICAgICA8SGV4T2Zmc2V0PjA8L0hleE9mZnNldD4KKyAgICAgIDwvT1BUSFg+CisgICAgICA8T1BUTEVYPgorICAgICAgICA8UGFnZVdpZHRoPjEyMDwvUGFnZVdpZHRoPgorICAgICAgICA8UGFnZUxlbmd0aD42NTwvUGFnZUxlbmd0aD4KKyAgICAgICAgPFRhYlN0b3A+ODwvVGFiU3RvcD4KKyAgICAgICAgPExpc3RpbmdQYXRoPi5cTGlzdGluZ3NcPC9MaXN0aW5nUGF0aD4KKyAgICAgIDwvT1BUTEVYPgorICAgICAgPExpc3RpbmdQYWdlPgorICAgICAgICA8Q3JlYXRlQ0xpc3Rpbmc+MTwvQ3JlYXRlQ0xpc3Rpbmc+CisgICAgICAgIDxDcmVhdGVBTGlzdGluZz4xPC9DcmVhdGVBTGlzdGluZz4KKyAgICAgICAgPENyZWF0ZUxMaXN0aW5nPjE8L0NyZWF0ZUxMaXN0aW5nPgorICAgICAgICA8Q3JlYXRlSUxpc3Rpbmc+MDwvQ3JlYXRlSUxpc3Rpbmc+CisgICAgICAgIDxBc21Db25kPjE8L0FzbUNvbmQ+CisgICAgICAgIDxBc21TeW1iPjE8L0FzbVN5bWI+CisgICAgICAgIDxBc21YcmVmPjA8L0FzbVhyZWY+CisgICAgICAgIDxDQ29uZD4xPC9DQ29uZD4KKyAgICAgICAgPENDb2RlPjA8L0NDb2RlPgorICAgICAgICA8Q0xpc3RJbmM+MDwvQ0xpc3RJbmM+CisgICAgICAgIDxDU3ltYj4wPC9DU3ltYj4KKyAgICAgICAgPExpbmtlckNvZGVMaXN0aW5nPjA8L0xpbmtlckNvZGVMaXN0aW5nPgorICAgICAgPC9MaXN0aW5nUGFnZT4KKyAgICAgIDxPUFRYTD4KKyAgICAgICAgPExNYXA+MTwvTE1hcD4KKyAgICAgICAgPExDb21tZW50cz4xPC9MQ29tbWVudHM+CisgICAgICAgIDxMR2VuZXJhdGVTeW1ib2xzPjE8L0xHZW5lcmF0ZVN5bWJvbHM+CisgICAgICAgIDxMTGliU3ltPjE8L0xMaWJTeW0+CisgICAgICAgIDxMTGluZXM+MTwvTExpbmVzPgorICAgICAgICA8TExvY1N5bT4xPC9MTG9jU3ltPgorICAgICAgICA8TFB1YlN5bT4xPC9MUHViU3ltPgorICAgICAgICA8TFhyZWY+MDwvTFhyZWY+CisgICAgICAgIDxMRXhwU2VsPjA8L0xFeHBTZWw+CisgICAgICA8L09QVFhMPgorICAgICAgPE9QVEZMPgorICAgICAgICA8dHZFeHA+MTwvdHZFeHA+CisgICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgICAgPElzQ3VycmVudFRhcmdldD4xPC9Jc0N1cnJlbnRUYXJnZXQ+CisgICAgICA8L09QVEZMPgorICAgICAgPENwdUNvZGU+NzwvQ3B1Q29kZT4KKyAgICAgIDxEZWJ1Z09wdD4KKyAgICAgICAgPHVTaW0+MDwvdVNpbT4KKyAgICAgICAgPHVUcmc+MTwvdVRyZz4KKyAgICAgICAgPHNMZEFwcD4xPC9zTGRBcHA+CisgICAgICAgIDxzR29tYWluPjE8L3NHb21haW4+CisgICAgICAgIDxzUmJyZWFrPjE8L3NSYnJlYWs+CisgICAgICAgIDxzUndhdGNoPjE8L3NSd2F0Y2g+CisgICAgICAgIDxzUm1lbT4xPC9zUm1lbT4KKyAgICAgICAgPHNSZnVuYz4xPC9zUmZ1bmM+CisgICAgICAgIDxzUmJveD4xPC9zUmJveD4KKyAgICAgICAgPHRMZEFwcD4xPC90TGRBcHA+CisgICAgICAgIDx0R29tYWluPjE8L3RHb21haW4+CisgICAgICAgIDx0UmJyZWFrPjE8L3RSYnJlYWs+CisgICAgICAgIDx0UndhdGNoPjE8L3RSd2F0Y2g+CisgICAgICAgIDx0Um1lbT4xPC90Um1lbT4KKyAgICAgICAgPHRSZnVuYz4wPC90UmZ1bmM+CisgICAgICAgIDx0UmJveD4xPC90UmJveD4KKyAgICAgICAgPHRSdHJhY2U+MTwvdFJ0cmFjZT4KKyAgICAgICAgPHNSU3lzVnc+MTwvc1JTeXNWdz4KKyAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4KKyAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KKyAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgorICAgICAgICA8blRzZWw+MDwvblRzZWw+CisgICAgICAgIDxzRGxsPjwvc0RsbD4KKyAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KKyAgICAgICAgPHNEbGdEbGw+PC9zRGxnRGxsPgorICAgICAgICA8c0RsZ1BhPjwvc0RsZ1BhPgorICAgICAgICA8c0lmaWxlPjwvc0lmaWxlPgorICAgICAgICA8dERsbD48L3REbGw+CisgICAgICAgIDx0RGxsUGE+PC90RGxsUGE+CisgICAgICAgIDx0RGxnRGxsPjwvdERsZ0RsbD4KKyAgICAgICAgPHREbGdQYT48L3REbGdQYT4KKyAgICAgICAgPHRJZmlsZT5pbml0X2FwcC5pbmk8L3RJZmlsZT4KKyAgICAgICAgPHBNb24+QklOXFVMMkNNMy5ETEw8L3BNb24+CisgICAgICA8L0RlYnVnT3B0PgorICAgICAgPFRhcmdldERyaXZlckRsbFJlZ2lzdHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5KTDJDTTM8L0tleT4KKyAgICAgICAgICA8TmFtZT4tVTU5MTAxNzg5IC1PMzA0NyAtUzIgLVpUSUZTcGVlZFNlbDUwMDAgLUEwIC1DMCAtSlUxIC1KSTEyNy4wLjAuMSAtSlAwIC1SU1QwIC1OMDAoIkFSTSBDb3JlU2lnaHQgU1ctRFAiKSAtRDAwKDJCQTAxNDc3KSAtTDAwKDApIC1UTzE5IC1UQzQ4MDAwMDAwIC1UUDIxIC1URFM4MDA2IC1URFQwIC1UREMxRiAtVElFMSAtVElQOCAtVEIxIC1URkUwIC1GTzExIC1GRDExODAwMCAtRkM4MDAwIC1GTjEgLUZGME5FV19ERVZJQ0UuRkxNIC1GUzBFMDAwMCAtRkwwMzgwMDAgLUZQMCgkJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxGbGFzaFxORVdfREVWSUNFLkZMTSk8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkRMR0RBUk08L0tleT4KKyAgICAgICAgICA8TmFtZT4oMTAxMD0tMSwtMSwtMSwtMSwwKSgxMDA3PS0xLC0xLC0xLC0xLDApKDEwMDg9LTEsLTEsLTEsLTEsMCkoMTAwOT0tMSwtMSwtMSwtMSwwKSgxMDEyPS0xLC0xLC0xLC0xLDApPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5BUk1SVFhFVkVOVEZMQUdTPC9LZXk+CisgICAgICAgICAgPE5hbWU+LUw3MCAtWjE4IC1DMCAtTTAgLVQxPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5ETEdUQVJNPC9LZXk+CisgICAgICAgICAgPE5hbWU+KDEwMTA9LTEsLTEsLTEsLTEsMCkoMTAwNz0tMSwtMSwtMSwtMSwwKSgxMDA4PS0xLC0xLC0xLC0xLDApKDEwMDk9MTIwLDE0OSwzNTQsNjgzLDApKDEwMTI9MTM3NywxMzEsMTg0Miw0MzEsMCk8L05hbWU+CisgICAgICAgIDwvU2V0UmVnRW50cnk+CisgICAgICAgIDxTZXRSZWdFbnRyeT4KKyAgICAgICAgICA8TnVtYmVyPjA8L051bWJlcj4KKyAgICAgICAgICA8S2V5PkFSTURCR0ZMQUdTPC9LZXk+CisgICAgICAgICAgPE5hbWU+LVQwPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgICA8U2V0UmVnRW50cnk+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPEtleT5ETEdVQVJNPC9LZXk+CisgICAgICAgICAgPE5hbWU+KDEwNT0tMSwtMSwtMSwtMSwwKTwvTmFtZT4KKyAgICAgICAgPC9TZXRSZWdFbnRyeT4KKyAgICAgICAgPFNldFJlZ0VudHJ5PgorICAgICAgICAgIDxOdW1iZXI+MDwvTnVtYmVyPgorICAgICAgICAgIDxLZXk+VUwyQ00zPC9LZXk+CisgICAgICAgICAgPE5hbWU+LVVWMTExNVNBRSAtTzMwNDcgLVMwIC1DMCAtUDAwIC1OMDAoIkFSTSBDb3JlU2lnaHQgU1ctRFAiKSAtRDAwKDJCQTAxNDc3KSAtTDAwKDApIC1UTzE5IC1UQzQ4MDAwMDAwIC1UUDIxIC1URFM4MDI4IC1URFQwIC1UREMxRiAtVElFMSAtVElQOCAtRk8xMSAtRkQxMTgwMDAgLUZDODAwMCAtRk4xIC1GRjBORVdfREVWSUNFLkZMTSAtRlMwRTAwMDAgLUZMMDM4MDAwIC1GUDAoJCREZXZpY2U6QVJNQ000X0ZQJERldmljZVxBUk1cRmxhc2hcTkVXX0RFVklDRS5GTE0pPC9OYW1lPgorICAgICAgICA8L1NldFJlZ0VudHJ5PgorICAgICAgPC9UYXJnZXREcml2ZXJEbGxSZWdpc3RyeT4KKyAgICAgIDxCcmVha3BvaW50PgorICAgICAgICA8QnA+CisgICAgICAgICAgPE51bWJlcj4wPC9OdW1iZXI+CisgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICA8TGluZU51bWJlcj4yNDI4PC9MaW5lTnVtYmVyPgorICAgICAgICAgIDxFbmFibGVkRmxhZz4xPC9FbmFibGVkRmxhZz4KKyAgICAgICAgICA8QWRkcmVzcz45MjYxODQ8L0FkZHJlc3M+CisgICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4KKyAgICAgICAgICA8SHR4VHlwZT4wPC9IdHhUeXBlPgorICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4KKyAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4KKyAgICAgICAgICA8QnJlYWtCeUFjY2Vzcz4wPC9CcmVha0J5QWNjZXNzPgorICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+CisgICAgICAgICAgPEZpbGVuYW1lPkM6XEVcRGV2XEZyZWVSVE9TXFRyaWFsXEFjdGl2ZVxNaWNyb2NoaXBfQ0VDMTMwMlxXb3JraW5nQ29weVxTb3VyY2VcdGFza3MuYzwvRmlsZW5hbWU+CisgICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+CisgICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi8uLi8uLi9Tb3VyY2UvdGFza3MuY1wyNDI4PC9FeHByZXNzaW9uPgorICAgICAgICA8L0JwPgorICAgICAgICA8QnA+CisgICAgICAgICAgPE51bWJlcj4xPC9OdW1iZXI+CisgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICA8TGluZU51bWJlcj44NTE8L0xpbmVOdW1iZXI+CisgICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPgorICAgICAgICAgIDxBZGRyZXNzPjk1MzE0MDwvQWRkcmVzcz4KKyAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0PgorICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+CisgICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPgorICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0PgorICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+CisgICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4KKyAgICAgICAgICA8RmlsZW5hbWU+QzpcRVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXE1pY3JvY2hpcF9DRUMxMzAyXFdvcmtpbmdDb3B5XERlbW9cQ09SVEVYX01QVV9NRUMxNzAxX0tlaWxfR0NDXG1haW4uYzwvRmlsZW5hbWU+CisgICAgICAgICAgPEV4ZWNDb21tYW5kPjwvRXhlY0NvbW1hbmQ+CisgICAgICAgICAgPEV4cHJlc3Npb24+XFxSVE9TRGVtb1wuLi9tYWluLmNcODUxPC9FeHByZXNzaW9uPgorICAgICAgICA8L0JwPgorICAgICAgICA8QnA+CisgICAgICAgICAgPE51bWJlcj4yPC9OdW1iZXI+CisgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICA8TGluZU51bWJlcj4zMDc8L0xpbmVOdW1iZXI+CisgICAgICAgICAgPEVuYWJsZWRGbGFnPjE8L0VuYWJsZWRGbGFnPgorICAgICAgICAgIDxBZGRyZXNzPjkzOTE0ODwvQWRkcmVzcz4KKyAgICAgICAgICA8Qnl0ZU9iamVjdD4wPC9CeXRlT2JqZWN0PgorICAgICAgICAgIDxIdHhUeXBlPjA8L0h0eFR5cGU+CisgICAgICAgICAgPE1hbnlPYmplY3RzPjA8L01hbnlPYmplY3RzPgorICAgICAgICAgIDxTaXplT2ZPYmplY3Q+MDwvU2l6ZU9mT2JqZWN0PgorICAgICAgICAgIDxCcmVha0J5QWNjZXNzPjA8L0JyZWFrQnlBY2Nlc3M+CisgICAgICAgICAgPEJyZWFrSWZSQ291bnQ+MTwvQnJlYWtJZlJDb3VudD4KKyAgICAgICAgICA8RmlsZW5hbWU+QzpcRVxEZXZcRnJlZVJUT1NcVHJpYWxcQWN0aXZlXE1pY3JvY2hpcF9DRUMxMzAyXFdvcmtpbmdDb3B5XFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9GaWxlbmFtZT4KKyAgICAgICAgICA8RXhlY0NvbW1hbmQ+PC9FeGVjQ29tbWFuZD4KKyAgICAgICAgICA8RXhwcmVzc2lvbj5cXFJUT1NEZW1vXC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNF9NUFUvcG9ydC5jXDMwNzwvRXhwcmVzc2lvbj4KKyAgICAgICAgPC9CcD4KKyAgICAgICAgPEJwPgorICAgICAgICAgIDxOdW1iZXI+MzwvTnVtYmVyPgorICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgPExpbmVOdW1iZXI+OTE2PC9MaW5lTnVtYmVyPgorICAgICAgICAgIDxFbmFibGVkRmxhZz4xPC9FbmFibGVkRmxhZz4KKyAgICAgICAgICA8QWRkcmVzcz45NTMyMzI8L0FkZHJlc3M+CisgICAgICAgICAgPEJ5dGVPYmplY3Q+MDwvQnl0ZU9iamVjdD4KKyAgICAgICAgICA8SHR4VHlwZT4wPC9IdHhUeXBlPgorICAgICAgICAgIDxNYW55T2JqZWN0cz4wPC9NYW55T2JqZWN0cz4KKyAgICAgICAgICA8U2l6ZU9mT2JqZWN0PjA8L1NpemVPZk9iamVjdD4KKyAgICAgICAgICA8QnJlYWtCeUFjY2Vzcz4wPC9CcmVha0J5QWNjZXNzPgorICAgICAgICAgIDxCcmVha0lmUkNvdW50PjE8L0JyZWFrSWZSQ291bnQ+CisgICAgICAgICAgPEZpbGVuYW1lPkM6XEVcRGV2XEZyZWVSVE9TXFRyaWFsXEFjdGl2ZVxNaWNyb2NoaXBfQ0VDMTMwMlxXb3JraW5nQ29weVxEZW1vXENPUlRFWF9NUFVfTUVDMTcwMV9LZWlsX0dDQ1xtYWluLmM8L0ZpbGVuYW1lPgorICAgICAgICAgIDxFeGVjQ29tbWFuZD48L0V4ZWNDb21tYW5kPgorICAgICAgICAgIDxFeHByZXNzaW9uPlxcUlRPU0RlbW9cLi4vbWFpbi5jXDkxNjwvRXhwcmVzc2lvbj4KKyAgICAgICAgPC9CcD4KKyAgICAgIDwvQnJlYWtwb2ludD4KKyAgICAgIDxXYXRjaFdpbmRvdzE+CisgICAgICAgIDxXdz4KKyAgICAgICAgICA8Y291bnQ+MDwvY291bnQ+CisgICAgICAgICAgPFdpbk51bWJlcj4xPC9XaW5OdW1iZXI+CisgICAgICAgICAgPEl0ZW1UZXh0PnhUaWNrQ291bnQ8L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjE8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD5weEN1cnJlbnRUQ0I8L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjI8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD4qcGNTdHJpbmc8L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgICA8V3c+CisgICAgICAgICAgPGNvdW50PjM8L2NvdW50PgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxJdGVtVGV4dD4mYW1wO3hTY2hlZHVsZXJSdW5uaW5nPC9JdGVtVGV4dD4KKyAgICAgICAgPC9Xdz4KKyAgICAgICAgPFd3PgorICAgICAgICAgIDxjb3VudD40PC9jb3VudD4KKyAgICAgICAgICA8V2luTnVtYmVyPjE8L1dpbk51bWJlcj4KKyAgICAgICAgICA8SXRlbVRleHQ+eFNjaGVkdWxlclJ1bm5pbmc8L0l0ZW1UZXh0PgorICAgICAgICA8L1d3PgorICAgICAgPC9XYXRjaFdpbmRvdzE+CisgICAgICA8TWVtb3J5V2luZG93MT4KKyAgICAgICAgPE1tPgorICAgICAgICAgIDxXaW5OdW1iZXI+MTwvV2luTnVtYmVyPgorICAgICAgICAgIDxTdWJUeXBlPjI8L1N1YlR5cGU+CisgICAgICAgICAgPEl0ZW1UZXh0PjB4MTAwMDAwPC9JdGVtVGV4dD4KKyAgICAgICAgICA8QWNjU2l6ZVg+NDwvQWNjU2l6ZVg+CisgICAgICAgIDwvTW0+CisgICAgICA8L01lbW9yeVdpbmRvdzE+CisgICAgICA8VHJhY2Vwb2ludD4KKyAgICAgICAgPFRIRGVsYXk+MDwvVEhEZWxheT4KKyAgICAgIDwvVHJhY2Vwb2ludD4KKyAgICAgIDxEZWJ1Z0ZsYWc+CisgICAgICAgIDx0cmFjZT4wPC90cmFjZT4KKyAgICAgICAgPHBlcmlvZGljPjE8L3BlcmlvZGljPgorICAgICAgICA8YUx3aW4+MTwvYUx3aW4+CisgICAgICAgIDxhQ292ZXI+MDwvYUNvdmVyPgorICAgICAgICA8YVNlcjE+MDwvYVNlcjE+CisgICAgICAgIDxhU2VyMj4wPC9hU2VyMj4KKyAgICAgICAgPGFQYT4wPC9hUGE+CisgICAgICAgIDx2aWV3bW9kZT4xPC92aWV3bW9kZT4KKyAgICAgICAgPHZyU2VsPjA8L3ZyU2VsPgorICAgICAgICA8YVN5bT4wPC9hU3ltPgorICAgICAgICA8YVRib3g+MDwvYVRib3g+CisgICAgICAgIDxBc2NTMT4wPC9Bc2NTMT4KKyAgICAgICAgPEFzY1MyPjA8L0FzY1MyPgorICAgICAgICA8QXNjUzM+MDwvQXNjUzM+CisgICAgICAgIDxhU2VyMz4wPC9hU2VyMz4KKyAgICAgICAgPGVQcm9mPjA8L2VQcm9mPgorICAgICAgICA8YUxhPjA8L2FMYT4KKyAgICAgICAgPGFQYTE+MDwvYVBhMT4KKyAgICAgICAgPEFzY1M0PjA8L0FzY1M0PgorICAgICAgICA8YVNlcjQ+MTwvYVNlcjQ+CisgICAgICAgIDxTdGtMb2M+MDwvU3RrTG9jPgorICAgICAgICA8VHJjV2luPjA8L1RyY1dpbj4KKyAgICAgICAgPG5ld0NwdT4wPC9uZXdDcHU+CisgICAgICAgIDx1UHJvdD4wPC91UHJvdD4KKyAgICAgIDwvRGVidWdGbGFnPgorICAgICAgPExpbnRFeGVjdXRhYmxlPjwvTGludEV4ZWN1dGFibGU+CisgICAgICA8TGludENvbmZpZ0ZpbGU+PC9MaW50Q29uZmlnRmlsZT4KKyAgICAgIDxiTGludEF1dG8+MDwvYkxpbnRBdXRvPgorICAgICAgPGJBdXRvR2VuRD4wPC9iQXV0b0dlbkQ+CisgICAgICA8TG50RXhGbGFncz4wPC9MbnRFeEZsYWdzPgorICAgICAgPHBNaXNyYU5hbWU+PC9wTWlzcmFOYW1lPgorICAgICAgPHBzek1ydWxlPjwvcHN6TXJ1bGU+CisgICAgICA8cFNpbmdDbWRzPjwvcFNpbmdDbWRzPgorICAgICAgPHBNdWx0Q21kcz48L3BNdWx0Q21kcz4KKyAgICAgIDxwTWlzcmFOYW1lcD48L3BNaXNyYU5hbWVwPgorICAgICAgPHBzek1ydWxlcD48L3Bzek1ydWxlcD4KKyAgICAgIDxwU2luZ0NtZHNwPjwvcFNpbmdDbWRzcD4KKyAgICAgIDxwTXVsdENtZHNwPjwvcE11bHRDbWRzcD4KKyAgICAgIDxEZWJ1Z0Rlc2NyaXB0aW9uPgorICAgICAgICA8RW5hYmxlPjE8L0VuYWJsZT4KKyAgICAgICAgPEVuYWJsZUxvZz4wPC9FbmFibGVMb2c+CisgICAgICAgIDxQcm90b2NvbD4yPC9Qcm90b2NvbD4KKyAgICAgICAgPERiZ0Nsb2NrPjEwMDAwMDAwPC9EYmdDbG9jaz4KKyAgICAgIDwvRGVidWdEZXNjcmlwdGlvbj4KKyAgICA8L1RhcmdldE9wdGlvbj4KKyAgPC9UYXJnZXQ+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+U3lzdGVtPC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjE8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MTwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uXHN5c3RlbS5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3lzdGVtLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjE8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4yPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxzdGFydHVwX0FSTUNNNC5TPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RhcnR1cF9BUk1DTTQuUzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+bWFpbl9hbmRfY29uZmlnPC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjE8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MjwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4zPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxtYWluLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5tYWluLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjI8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT41PC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cRnJlZVJUT1NDb25maWcuaDwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPkZyZWVSVE9TQ29uZmlnLmg8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjI8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxSZWdUZXN0LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5SZWdUZXN0LmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICA8L0dyb3VwPgorCisgIDxHcm91cD4KKyAgICA8R3JvdXBOYW1lPkZyZWVSVE9TX1NvdXJjZTwvR3JvdXBOYW1lPgorICAgIDx0dkV4cD4xPC90dkV4cD4KKyAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgPGNiU2VsPjA8L2NiU2VsPgorICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+ZXZlbnRfZ3JvdXBzLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+NzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXGxpc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmxpc3QuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj44PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccXVldWUuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnF1ZXVlLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+OTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHRhc2tzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD50YXNrcy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEwPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD50aW1lcnMuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xMTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5oZWFwXzQuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xMjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPm1wdV93cmFwcGVycy5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTRfTVBVXHBvcnQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnBvcnQuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNDwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0cmVhbV9idWZmZXIuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgIDwvR3JvdXA+CisKKyAgPEdyb3VwPgorICAgIDxHcm91cE5hbWU+cGVyaXBoZXJhbF9saWJyYXJ5PC9Hcm91cE5hbWU+CisgICAgPHR2RXhwPjE8L3R2RXhwPgorICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICA8Y2JTZWw+MDwvY2JTZWw+CisgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmJ0aW1lcl9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmJ0aW1lcl9wZXJwaGwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfYXBpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5pbnRlcnJ1cHRfYXBpLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTg8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5pbnRlcnJ1cHRfZWNpYV9wZXJwaGwuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xOTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPmludGVycnVwdF9udmljX3BlcnBobC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjIwPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9hcGkuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnBjcl9hcGkuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yMTwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5wY3JfcGVycGhsLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MjI8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxzeXN0ZW1faW50ZXJuYWwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN5c3RlbV9pbnRlcm5hbC5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KKyAgPC9Hcm91cD4KKworPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CmluZGV4IGYzNWI1ZTEuLjFhMTM3ZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKQEAgLTEsNDQzICsxLDQxNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIiA/Pg0KLTxQcm9qZWN0IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJwcm9qZWN0X3Byb2p4LnhzZCI+DQotDQotICA8U2NoZW1hVmVyc2lvbj4yLjE8L1NjaGVtYVZlcnNpb24+DQotDQotICA8SGVhZGVyPiMjIyB1VmlzaW9uIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlPC9IZWFkZXI+DQotDQotICA8VGFyZ2V0cz4NCi0gICAgPFRhcmdldD4NCi0gICAgICA8VGFyZ2V0TmFtZT5SVE9TRGVtb19HQ0NfTVBVPC9UYXJnZXROYW1lPg0KLSAgICAgIDxUb29sc2V0TnVtYmVyPjB4MzwvVG9vbHNldE51bWJlcj4NCi0gICAgICA8VG9vbHNldE5hbWU+QVJNLUdOVTwvVG9vbHNldE5hbWU+DQotICAgICAgPFRhcmdldE9wdGlvbj4NCi0gICAgICAgIDxUYXJnZXRDb21tb25PcHRpb24+DQotICAgICAgICAgIDxEZXZpY2U+QVJNQ000X0ZQPC9EZXZpY2U+DQotICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+DQotICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjQuMy4wPC9QYWNrSUQ+DQotICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+DQotICAgICAgICAgIDxDcHU+SVJPTSgweDAwMDAwMDAwLDB4ODAwMDApIElSQU0oMHgyMDAwMDAwMCwweDIwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTQiKSBGUFUyIENMT0NLKDEyMDAwMDAwKSBFU0VMIEVMSVRUTEU8L0NwdT4NCi0gICAgICAgICAgPEZsYXNoVXRpbFNwZWM+PC9GbGFzaFV0aWxTcGVjPg0KLSAgICAgICAgICA8U3RhcnR1cEZpbGU+PC9TdGFydHVwRmlsZT4NCi0gICAgICAgICAgPEZsYXNoRHJpdmVyRGxsPlVMMkNNMygtUzAgLUMwIC1QMCAtRkQyMDAwMDAwMCAtRkMxMDAwIC1GTjEgLUZGME5FV19ERVZJQ0UgLUZTMDAgLUZMMDgwMDAwIC1GUDAoJCREZXZpY2U6QVJNQ000X0ZQJERldmljZVxBUk1cRmxhc2hcTkVXX0RFVklDRS5GTE0pKTwvRmxhc2hEcml2ZXJEbGw+DQotICAgICAgICAgIDxEZXZpY2VJZD4wPC9EZXZpY2VJZD4NCi0gICAgICAgICAgPFJlZ2lzdGVyRmlsZT4kJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxBUk1DTTRcSW5jbHVkZVxBUk1DTTRfRlAuaDwvUmVnaXN0ZXJGaWxlPg0KLSAgICAgICAgICA8TWVtb3J5RW52PjwvTWVtb3J5RW52Pg0KLSAgICAgICAgICA8Q21wPjwvQ21wPg0KLSAgICAgICAgICA8QXNtPjwvQXNtPg0KLSAgICAgICAgICA8TGlua2VyPjwvTGlua2VyPg0KLSAgICAgICAgICA8T0hTdHJpbmc+PC9PSFN0cmluZz4NCi0gICAgICAgICAgPEluZmluaW9uT3B0aW9uRGxsPjwvSW5maW5pb25PcHRpb25EbGw+DQotICAgICAgICAgIDxTTEU2NkNNaXNjPjwvU0xFNjZDTWlzYz4NCi0gICAgICAgICAgPFNMRTY2QU1pc2M+PC9TTEU2NkFNaXNjPg0KLSAgICAgICAgICA8U0xFNjZMaW5rZXJNaXNjPjwvU0xFNjZMaW5rZXJNaXNjPg0KLSAgICAgICAgICA8U0ZERmlsZT4kJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxTVkRcQVJNQ000LnN2ZDwvU0ZERmlsZT4NCi0gICAgICAgICAgPGJDdXN0U3ZkPjA8L2JDdXN0U3ZkPg0KLSAgICAgICAgICA8VXNlRW52PjA8L1VzZUVudj4NCi0gICAgICAgICAgPEJpblBhdGg+PC9CaW5QYXRoPg0KLSAgICAgICAgICA8SW5jbHVkZVBhdGg+PC9JbmNsdWRlUGF0aD4NCi0gICAgICAgICAgPExpYlBhdGg+PC9MaWJQYXRoPg0KLSAgICAgICAgICA8UmVnaXN0ZXJGaWxlUGF0aD48L1JlZ2lzdGVyRmlsZVBhdGg+DQotICAgICAgICAgIDxEQlJlZ2lzdGVyRmlsZVBhdGg+PC9EQlJlZ2lzdGVyRmlsZVBhdGg+DQotICAgICAgICAgIDxUYXJnZXRTdGF0dXM+DQotICAgICAgICAgICAgPEVycm9yPjA8L0Vycm9yPg0KLSAgICAgICAgICAgIDxFeGl0Q29kZVN0b3A+MDwvRXhpdENvZGVTdG9wPg0KLSAgICAgICAgICAgIDxCdXR0b25TdG9wPjA8L0J1dHRvblN0b3A+DQotICAgICAgICAgICAgPE5vdEdlbmVyYXRlZD4wPC9Ob3RHZW5lcmF0ZWQ+DQotICAgICAgICAgICAgPEludmFsaWRGbGFzaD4xPC9JbnZhbGlkRmxhc2g+DQotICAgICAgICAgIDwvVGFyZ2V0U3RhdHVzPg0KLSAgICAgICAgICA8T3V0cHV0RGlyZWN0b3J5Pi5cT2JqZWN0c1w8L091dHB1dERpcmVjdG9yeT4NCi0gICAgICAgICAgPE91dHB1dE5hbWU+UlRPU0RlbW88L091dHB1dE5hbWU+DQotICAgICAgICAgIDxDcmVhdGVFeGVjdXRhYmxlPjE8L0NyZWF0ZUV4ZWN1dGFibGU+DQotICAgICAgICAgIDxDcmVhdGVMaWI+MDwvQ3JlYXRlTGliPg0KLSAgICAgICAgICA8Q3JlYXRlSGV4RmlsZT4wPC9DcmVhdGVIZXhGaWxlPg0KLSAgICAgICAgICA8RGVidWdJbmZvcm1hdGlvbj4xPC9EZWJ1Z0luZm9ybWF0aW9uPg0KLSAgICAgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+MDwvQnJvd3NlSW5mb3JtYXRpb24+DQotICAgICAgICAgIDxMaXN0aW5nUGF0aD4uXExpc3RpbmdzXDwvTGlzdGluZ1BhdGg+DQotICAgICAgICAgIDxIZXhGb3JtYXRTZWxlY3Rpb24+MTwvSGV4Rm9ybWF0U2VsZWN0aW9uPg0KLSAgICAgICAgICA8TWVyZ2UzMks+MDwvTWVyZ2UzMks+DQotICAgICAgICAgIDxDcmVhdGVCYXRjaEZpbGU+MDwvQ3JlYXRlQmF0Y2hGaWxlPg0KLSAgICAgICAgICA8QmVmb3JlQ29tcGlsZT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cxPjA8L1J1blVzZXJQcm9nMT4NCi0gICAgICAgICAgICA8UnVuVXNlclByb2cyPjA8L1J1blVzZXJQcm9nMj4NCi0gICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+DQotICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzFEb3MxNk1vZGU+MDwvVXNlclByb2cxRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPg0KLSAgICAgICAgICAgIDxuU3RvcFUxWD4wPC9uU3RvcFUxWD4NCi0gICAgICAgICAgICA8blN0b3BVMlg+MDwvblN0b3BVMlg+DQotICAgICAgICAgIDwvQmVmb3JlQ29tcGlsZT4NCi0gICAgICAgICAgPEJlZm9yZU1ha2U+DQotICAgICAgICAgICAgPFJ1blVzZXJQcm9nMT4wPC9SdW5Vc2VyUHJvZzE+DQotICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+DQotICAgICAgICAgICAgPFVzZXJQcm9nMU5hbWU+PC9Vc2VyUHJvZzFOYW1lPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4NCi0gICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4NCi0gICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4NCi0gICAgICAgICAgICA8blN0b3BCMVg+MDwvblN0b3BCMVg+DQotICAgICAgICAgICAgPG5TdG9wQjJYPjA8L25TdG9wQjJYPg0KLSAgICAgICAgICA8L0JlZm9yZU1ha2U+DQotICAgICAgICAgIDxBZnRlck1ha2U+DQotICAgICAgICAgICAgPFJ1blVzZXJQcm9nMT4wPC9SdW5Vc2VyUHJvZzE+DQotICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+DQotICAgICAgICAgICAgPFVzZXJQcm9nMU5hbWU+PC9Vc2VyUHJvZzFOYW1lPg0KLSAgICAgICAgICAgIDxVc2VyUHJvZzJOYW1lPjwvVXNlclByb2cyTmFtZT4NCi0gICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4NCi0gICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4NCi0gICAgICAgICAgICA8blN0b3BBMVg+MDwvblN0b3BBMVg+DQotICAgICAgICAgICAgPG5TdG9wQTJYPjA8L25TdG9wQTJYPg0KLSAgICAgICAgICA8L0FmdGVyTWFrZT4NCi0gICAgICAgICAgPFNlbGVjdGVkRm9yQmF0Y2hCdWlsZD4wPC9TZWxlY3RlZEZvckJhdGNoQnVpbGQ+DQotICAgICAgICAgIDxTVkNTSWRTdHJpbmc+PC9TVkNTSWRTdHJpbmc+DQotICAgICAgICA8L1RhcmdldENvbW1vbk9wdGlvbj4NCi0gICAgICAgIDxDb21tb25Qcm9wZXJ0eT4NCi0gICAgICAgICAgPFVzZUNQUENvbXBpbGVyPjA8L1VzZUNQUENvbXBpbGVyPg0KLSAgICAgICAgICA8UlZDVENvZGVDb25zdD4wPC9SVkNUQ29kZUNvbnN0Pg0KLSAgICAgICAgICA8UlZDVFpJPjA8L1JWQ1RaST4NCi0gICAgICAgICAgPFJWQ1RPdGhlckRhdGE+MDwvUlZDVE90aGVyRGF0YT4NCi0gICAgICAgICAgPE1vZHVsZVNlbGVjdGlvbj4wPC9Nb2R1bGVTZWxlY3Rpb24+DQotICAgICAgICAgIDxJbmNsdWRlSW5CdWlsZD4xPC9JbmNsdWRlSW5CdWlsZD4NCi0gICAgICAgICAgPEFsd2F5c0J1aWxkPjA8L0Fsd2F5c0J1aWxkPg0KLSAgICAgICAgICA8R2VuZXJhdGVBc3NlbWJseUZpbGU+MDwvR2VuZXJhdGVBc3NlbWJseUZpbGU+DQotICAgICAgICAgIDxBc3NlbWJsZUFzc2VtYmx5RmlsZT4wPC9Bc3NlbWJsZUFzc2VtYmx5RmlsZT4NCi0gICAgICAgICAgPFB1YmxpY3NPbmx5PjA8L1B1YmxpY3NPbmx5Pg0KLSAgICAgICAgICA8U3RvcE9uRXhpdENvZGU+MzwvU3RvcE9uRXhpdENvZGU+DQotICAgICAgICAgIDxDdXN0b21Bcmd1bWVudD48L0N1c3RvbUFyZ3VtZW50Pg0KLSAgICAgICAgICA8SW5jbHVkZUxpYnJhcnlNb2R1bGVzPjwvSW5jbHVkZUxpYnJhcnlNb2R1bGVzPg0KLSAgICAgICAgICA8Q29tcHJJbWc+MTwvQ29tcHJJbWc+DQotICAgICAgICA8L0NvbW1vblByb3BlcnR5Pg0KLSAgICAgICAgPERsbE9wdGlvbj4NCi0gICAgICAgICAgPFNpbURsbE5hbWU+U0FSTUNNMy5ETEw8L1NpbURsbE5hbWU+DQotICAgICAgICAgIDxTaW1EbGxBcmd1bWVudHM+ICAtTVBVPC9TaW1EbGxBcmd1bWVudHM+DQotICAgICAgICAgIDxTaW1EbGdEbGw+RENNLkRMTDwvU2ltRGxnRGxsPg0KLSAgICAgICAgICA8U2ltRGxnRGxsQXJndW1lbnRzPi1wQ000PC9TaW1EbGdEbGxBcmd1bWVudHM+DQotICAgICAgICAgIDxUYXJnZXREbGxOYW1lPlNBUk1DTTMuRExMPC9UYXJnZXREbGxOYW1lPg0KLSAgICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPiAtTVBVPC9UYXJnZXREbGxBcmd1bWVudHM+DQotICAgICAgICAgIDxUYXJnZXREbGdEbGw+VENNLkRMTDwvVGFyZ2V0RGxnRGxsPg0KLSAgICAgICAgICA8VGFyZ2V0RGxnRGxsQXJndW1lbnRzPi1wQ000PC9UYXJnZXREbGdEbGxBcmd1bWVudHM+DQotICAgICAgICA8L0RsbE9wdGlvbj4NCi0gICAgICAgIDxEZWJ1Z09wdGlvbj4NCi0gICAgICAgICAgPE9QVEhYPg0KLSAgICAgICAgICAgIDxIZXhTZWxlY3Rpb24+MTwvSGV4U2VsZWN0aW9uPg0KLSAgICAgICAgICAgIDxIZXhSYW5nZUxvd0FkZHJlc3M+MDwvSGV4UmFuZ2VMb3dBZGRyZXNzPg0KLSAgICAgICAgICAgIDxIZXhSYW5nZUhpZ2hBZGRyZXNzPjA8L0hleFJhbmdlSGlnaEFkZHJlc3M+DQotICAgICAgICAgICAgPEhleE9mZnNldD4wPC9IZXhPZmZzZXQ+DQotICAgICAgICAgICAgPE9oMTY2UmVjTGVuPjE2PC9PaDE2NlJlY0xlbj4NCi0gICAgICAgICAgPC9PUFRIWD4NCi0gICAgICAgICAgPFNpbXVsYXRvcj4NCi0gICAgICAgICAgICA8VXNlU2ltdWxhdG9yPjA8L1VzZVNpbXVsYXRvcj4NCi0gICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4NCi0gICAgICAgICAgICA8UnVuVG9NYWluPjE8L1J1blRvTWFpbj4NCi0gICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4NCi0gICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4NCi0gICAgICAgICAgICA8UmVzdG9yZU1lbW9yeURpc3BsYXk+MTwvUmVzdG9yZU1lbW9yeURpc3BsYXk+DQotICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MTwvUmVzdG9yZUZ1bmN0aW9ucz4NCi0gICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+DQotICAgICAgICAgICAgPExpbWl0U3BlZWRUb1JlYWxUaW1lPjA8L0xpbWl0U3BlZWRUb1JlYWxUaW1lPg0KLSAgICAgICAgICAgIDxSZXN0b3JlU3lzVnc+MTwvUmVzdG9yZVN5c1Z3Pg0KLSAgICAgICAgICA8L1NpbXVsYXRvcj4NCi0gICAgICAgICAgPFRhcmdldD4NCi0gICAgICAgICAgICA8VXNlVGFyZ2V0PjE8L1VzZVRhcmdldD4NCi0gICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4NCi0gICAgICAgICAgICA8UnVuVG9NYWluPjE8L1J1blRvTWFpbj4NCi0gICAgICAgICAgICA8UmVzdG9yZUJyZWFrcG9pbnRzPjE8L1Jlc3RvcmVCcmVha3BvaW50cz4NCi0gICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4NCi0gICAgICAgICAgICA8UmVzdG9yZU1lbW9yeURpc3BsYXk+MTwvUmVzdG9yZU1lbW9yeURpc3BsYXk+DQotICAgICAgICAgICAgPFJlc3RvcmVGdW5jdGlvbnM+MDwvUmVzdG9yZUZ1bmN0aW9ucz4NCi0gICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+DQotICAgICAgICAgICAgPFJlc3RvcmVUcmFjZXBvaW50cz4xPC9SZXN0b3JlVHJhY2Vwb2ludHM+DQotICAgICAgICAgICAgPFJlc3RvcmVTeXNWdz4xPC9SZXN0b3JlU3lzVnc+DQotICAgICAgICAgIDwvVGFyZ2V0Pg0KLSAgICAgICAgICA8UnVuRGVidWdBZnRlckJ1aWxkPjA8L1J1bkRlYnVnQWZ0ZXJCdWlsZD4NCi0gICAgICAgICAgPFRhcmdldFNlbGVjdGlvbj4xPC9UYXJnZXRTZWxlY3Rpb24+DQotICAgICAgICAgIDxTaW1EbGxzPg0KLSAgICAgICAgICAgIDxDcHVEbGw+PC9DcHVEbGw+DQotICAgICAgICAgICAgPENwdURsbEFyZ3VtZW50cz48L0NwdURsbEFyZ3VtZW50cz4NCi0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbD48L1BlcmlwaGVyYWxEbGw+DQotICAgICAgICAgICAgPFBlcmlwaGVyYWxEbGxBcmd1bWVudHM+PC9QZXJpcGhlcmFsRGxsQXJndW1lbnRzPg0KLSAgICAgICAgICAgIDxJbml0aWFsaXphdGlvbkZpbGU+PC9Jbml0aWFsaXphdGlvbkZpbGU+DQotICAgICAgICAgIDwvU2ltRGxscz4NCi0gICAgICAgICAgPFRhcmdldERsbHM+DQotICAgICAgICAgICAgPENwdURsbD48L0NwdURsbD4NCi0gICAgICAgICAgICA8Q3B1RGxsQXJndW1lbnRzPjwvQ3B1RGxsQXJndW1lbnRzPg0KLSAgICAgICAgICAgIDxQZXJpcGhlcmFsRGxsPjwvUGVyaXBoZXJhbERsbD4NCi0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbEFyZ3VtZW50cz48L1BlcmlwaGVyYWxEbGxBcmd1bWVudHM+DQotICAgICAgICAgICAgPEluaXRpYWxpemF0aW9uRmlsZT5pbml0X2FwcC5pbmk8L0luaXRpYWxpemF0aW9uRmlsZT4NCi0gICAgICAgICAgICA8RHJpdmVyPkJJTlxVTDJDTTMuRExMPC9Ecml2ZXI+DQotICAgICAgICAgIDwvVGFyZ2V0RGxscz4NCi0gICAgICAgIDwvRGVidWdPcHRpb24+DQotICAgICAgICA8VXRpbGl0aWVzPg0KLSAgICAgICAgICA8Rmxhc2gxPg0KLSAgICAgICAgICAgIDxVc2VUYXJnZXREbGw+MTwvVXNlVGFyZ2V0RGxsPg0KLSAgICAgICAgICAgIDxVc2VFeHRlcm5hbFRvb2w+MDwvVXNlRXh0ZXJuYWxUb29sPg0KLSAgICAgICAgICAgIDxSdW5JbmRlcGVuZGVudD4wPC9SdW5JbmRlcGVuZGVudD4NCi0gICAgICAgICAgICA8VXBkYXRlRmxhc2hCZWZvcmVEZWJ1Z2dpbmc+MTwvVXBkYXRlRmxhc2hCZWZvcmVEZWJ1Z2dpbmc+DQotICAgICAgICAgICAgPENhcGFiaWxpdHk+MTwvQ2FwYWJpbGl0eT4NCi0gICAgICAgICAgICA8RHJpdmVyU2VsZWN0aW9uPjQwOTY8L0RyaXZlclNlbGVjdGlvbj4NCi0gICAgICAgICAgPC9GbGFzaDE+DQotICAgICAgICAgIDxiVXNlVERSPjE8L2JVc2VURFI+DQotICAgICAgICAgIDxGbGFzaDI+QklOXFVMMkNNMy5ETEw8L0ZsYXNoMj4NCi0gICAgICAgICAgPEZsYXNoMz4iIiAoKTwvRmxhc2gzPg0KLSAgICAgICAgICA8Rmxhc2g0PjwvRmxhc2g0Pg0KLSAgICAgICAgICA8cEZjYXJtT3V0PjwvcEZjYXJtT3V0Pg0KLSAgICAgICAgICA8cEZjYXJtR3JwPjwvcEZjYXJtR3JwPg0KLSAgICAgICAgICA8cEZjQXJtUm9vdD48L3BGY0FybVJvb3Q+DQotICAgICAgICAgIDxGY0FybUxzdD4wPC9GY0FybUxzdD4NCi0gICAgICAgIDwvVXRpbGl0aWVzPg0KLSAgICAgICAgPFRhcmdldEFybT4NCi0gICAgICAgICAgPEFybU1pc2M+DQotICAgICAgICAgICAgPGFzTHN0PjE8L2FzTHN0Pg0KLSAgICAgICAgICAgIDxhc0hsbD4xPC9hc0hsbD4NCi0gICAgICAgICAgICA8YXNBc20+MTwvYXNBc20+DQotICAgICAgICAgICAgPGFzTWFjWD4xPC9hc01hY1g+DQotICAgICAgICAgICAgPGFzU3ltcz4xPC9hc1N5bXM+DQotICAgICAgICAgICAgPGFzRmFscz4xPC9hc0ZhbHM+DQotICAgICAgICAgICAgPGFzRGJnRD4xPC9hc0RiZ0Q+DQotICAgICAgICAgICAgPGFzRm9ybT4xPC9hc0Zvcm0+DQotICAgICAgICAgICAgPGxkTHN0PjE8L2xkTHN0Pg0KLSAgICAgICAgICAgIDxsZG1tPjE8L2xkbW0+DQotICAgICAgICAgICAgPGxkWHJlZj4xPC9sZFhyZWY+DQotICAgICAgICAgICAgPEJpZ0VuZD4wPC9CaWdFbmQ+DQotICAgICAgICAgICAgPEdDUFVUWVA+IkNvcnRleC1NNCI8L0dDUFVUWVA+DQotICAgICAgICAgICAgPG1PUz4wPC9tT1M+DQotICAgICAgICAgICAgPHVvY1JvbT4wPC91b2NSb20+DQotICAgICAgICAgICAgPHVvY1JhbT4wPC91b2NSYW0+DQotICAgICAgICAgICAgPGhhZElST00+MTwvaGFkSVJPTT4NCi0gICAgICAgICAgICA8aGFkSVJBTT4xPC9oYWRJUkFNPg0KLSAgICAgICAgICAgIDxoYWRYUkFNPjA8L2hhZFhSQU0+DQotICAgICAgICAgICAgPHVvY1hSYW0+MDwvdW9jWFJhbT4NCi0gICAgICAgICAgICA8UnZkc1ZQPjI8L1J2ZHNWUD4NCi0gICAgICAgICAgICA8aGFkSVJBTTI+MDwvaGFkSVJBTTI+DQotICAgICAgICAgICAgPGhhZElST00yPjA8L2hhZElST00yPg0KLSAgICAgICAgICAgIDxPbkNoaXBNZW1vcmllcz4NCi0gICAgICAgICAgICAgIDxPY20xPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+DQotICAgICAgICAgICAgICA8L09jbTE+DQotICAgICAgICAgICAgICA8T2NtMj4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9PY20yPg0KLSAgICAgICAgICAgICAgPE9jbTM+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvT2NtMz4NCi0gICAgICAgICAgICAgIDxPY200Pg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+DQotICAgICAgICAgICAgICA8L09jbTQ+DQotICAgICAgICAgICAgICA8T2NtNT4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9PY201Pg0KLSAgICAgICAgICAgICAgPE9jbTY+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvT2NtNj4NCi0gICAgICAgICAgICAgIDxJUkFNPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwMDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgyMDAwMDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvSVJBTT4NCi0gICAgICAgICAgICAgIDxJUk9NPg0KLSAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPg0KLSAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDgwMDAwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9JUk9NPg0KLSAgICAgICAgICAgICAgPFhSQU0+DQotICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+DQotICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4NCi0gICAgICAgICAgICAgIDwvWFJBTT4NCi0gICAgICAgICAgICAgIDxJUkFNMj4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPg0KLSAgICAgICAgICAgICAgPC9JUkFNMj4NCi0gICAgICAgICAgICAgIDxJUk9NMj4NCi0gICAgICAgICAgICAgICAgPFR5cGU+MTwvVHlwZT4NCi0gICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDIwMDAwMDwvU3RhcnRBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8U2l6ZT4weDQwMDA8L1NpemU+DQotICAgICAgICAgICAgICA8L0lST00yPg0KLSAgICAgICAgICAgIDwvT25DaGlwTWVtb3JpZXM+DQotICAgICAgICAgIDwvQXJtTWlzYz4NCi0gICAgICAgICAgPENhcm0+DQotICAgICAgICAgICAgPGFycGNzPjE8L2FycGNzPg0KLSAgICAgICAgICAgIDxzdGtjaGs+MDwvc3RrY2hrPg0KLSAgICAgICAgICAgIDxyZWVudHI+MDwvcmVlbnRyPg0KLSAgICAgICAgICAgIDxpbnRlcnc+MTwvaW50ZXJ3Pg0KLSAgICAgICAgICAgIDxiaWdlbmQ+MDwvYmlnZW5kPg0KLSAgICAgICAgICAgIDxTdHJpY3Q+MDwvU3RyaWN0Pg0KLSAgICAgICAgICAgIDxPcHRpbT4xPC9PcHRpbT4NCi0gICAgICAgICAgICA8d0xldmVsPjM8L3dMZXZlbD4NCi0gICAgICAgICAgICA8dVRodW1iPjE8L3VUaHVtYj4NCi0gICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPg0KLSAgICAgICAgICAgICAgPE1pc2NDb250cm9scz4tbWZsb2F0LWFiaT1zb2Z0ZnAgLW1mcHU9ZnB2NC1zcC1kMTYgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLU8wIC1nPC9NaXNjQ29udHJvbHM+DQotICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPg0KLSAgICAgICAgICAgICAgPFVuZGVmaW5lPjwvVW5kZWZpbmU+DQotICAgICAgICAgICAgICA8SW5jbHVkZVBhdGg+Li47Li5cLi5cLi5cU291cmNlXGluY2x1ZGU7Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVTsuLlwuLlxDb21tb25caW5jbHVkZTsuLlxwZXJpcGhlcmFsX2xpYnJhcnk7Li5cQ01TSVM7Li5cbWFpbl9mdWxsOy4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHQ8L0luY2x1ZGVQYXRoPg0KLSAgICAgICAgICAgIDwvVmFyaW91c0NvbnRyb2xzPg0KLSAgICAgICAgICA8L0Nhcm0+DQotICAgICAgICAgIDxBYXJtPg0KLSAgICAgICAgICAgIDxiQkU+MDwvYkJFPg0KLSAgICAgICAgICAgIDxpbnRlcnc+MTwvaW50ZXJ3Pg0KLSAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+DQotICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPg0KLSAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4NCi0gICAgICAgICAgICAgIDxVbmRlZmluZT48L1VuZGVmaW5lPg0KLSAgICAgICAgICAgICAgPEluY2x1ZGVQYXRoPjwvSW5jbHVkZVBhdGg+DQotICAgICAgICAgICAgPC9WYXJpb3VzQ29udHJvbHM+DQotICAgICAgICAgIDwvQWFybT4NCi0gICAgICAgICAgPExEYXJtPg0KLSAgICAgICAgICAgIDx1bWZUYXJnPjE8L3VtZlRhcmc+DQotICAgICAgICAgICAgPGVuYUdhcmI+MDwvZW5hR2FyYj4NCi0gICAgICAgICAgICA8bm9TdGFydD4xPC9ub1N0YXJ0Pg0KLSAgICAgICAgICAgIDxub1N0TGliPjA8L25vU3RMaWI+DQotICAgICAgICAgICAgPHVNYXRoTGliPjA8L3VNYXRoTGliPg0KLSAgICAgICAgICAgIDxUZXh0QWRkcmVzc1JhbmdlPjwvVGV4dEFkZHJlc3NSYW5nZT4NCi0gICAgICAgICAgICA8RGF0YUFkZHJlc3NSYW5nZT48L0RhdGFBZGRyZXNzUmFuZ2U+DQotICAgICAgICAgICAgPEJTU0FkZHJlc3NSYW5nZT48L0JTU0FkZHJlc3NSYW5nZT4NCi0gICAgICAgICAgICA8SW5jbHVkZUxpYnM+PC9JbmNsdWRlTGlicz4NCi0gICAgICAgICAgICA8SW5jbHVkZURpcj48L0luY2x1ZGVEaXI+DQotICAgICAgICAgICAgPE1pc2M+LVhsaW5rZXIgLS1nYy1zZWN0aW9uczwvTWlzYz4NCi0gICAgICAgICAgICA8U2NhdHRlckZpbGU+LlxzZWN0aW9ucy5sZDwvU2NhdHRlckZpbGU+DQotICAgICAgICAgIDwvTERhcm0+DQotICAgICAgICA8L1RhcmdldEFybT4NCi0gICAgICA8L1RhcmdldE9wdGlvbj4NCi0gICAgICA8R3JvdXBzPg0KLSAgICAgICAgPEdyb3VwPg0KLSAgICAgICAgICA8R3JvdXBOYW1lPlN5c3RlbTwvR3JvdXBOYW1lPg0KLSAgICAgICAgICA8RmlsZXM+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+c3lzdGVtLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cc3lzdGVtLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5zdGFydHVwX0FSTUNNNC5TPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4yPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uXHN0YXJ0dXBfQVJNQ000LlM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgPC9GaWxlcz4NCi0gICAgICAgIDwvR3JvdXA+DQotICAgICAgICA8R3JvdXA+DQotICAgICAgICAgIDxHcm91cE5hbWU+bWFpbl9hbmRfY29uZmlnPC9Hcm91cE5hbWU+DQotICAgICAgICAgIDxGaWxlcz4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5tYWluLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXG1haW4uYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPkZyZWVSVE9TQ29uZmlnLmg8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjU8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXEZyZWVSVE9TQ29uZmlnLmg8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5SZWdUZXN0LmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cUmVnVGVzdC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgIDwvRmlsZXM+DQotICAgICAgICA8L0dyb3VwPg0KLSAgICAgICAgPEdyb3VwPg0KLSAgICAgICAgICA8R3JvdXBOYW1lPkZyZWVSVE9TX1NvdXJjZTwvR3JvdXBOYW1lPg0KLSAgICAgICAgICA8RmlsZXM+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+ZXZlbnRfZ3JvdXBzLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPmxpc3QuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXGxpc3QuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnF1ZXVlLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxxdWV1ZS5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+dGFza3MuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHRhc2tzLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT50aW1lcnMuYzwvRmlsZU5hbWU+DQotICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+DQotICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHRpbWVycy5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+aGVhcF80LmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+bXB1X3dyYXBwZXJzLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxDb21tb25cbXB1X3dyYXBwZXJzLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5wb3J0LmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgIDwvRmlsZXM+DQotICAgICAgICA8L0dyb3VwPg0KLSAgICAgICAgPEdyb3VwPg0KLSAgICAgICAgICA8R3JvdXBOYW1lPnBlcmlwaGVyYWxfbGlicmFyeTwvR3JvdXBOYW1lPg0KLSAgICAgICAgICA8RmlsZXM+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+YnRpbWVyX2FwaS5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX2FwaS5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+YnRpbWVyX3BlcnBobC5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX3BlcnBobC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X2FwaS5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9hcGkuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPmludGVycnVwdF9lY2lhX3BlcnBobC5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9lY2lhX3BlcnBobC5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgICA8RmlsZT4NCi0gICAgICAgICAgICAgIDxGaWxlTmFtZT5wY3JfYXBpLmM8L0ZpbGVOYW1lPg0KLSAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPg0KLSAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxwY3JccGNyX2FwaS5jPC9GaWxlUGF0aD4NCi0gICAgICAgICAgICA8L0ZpbGU+DQotICAgICAgICAgICAgPEZpbGU+DQotICAgICAgICAgICAgICA8RmlsZU5hbWU+cGNyX3BlcnBobC5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9wZXJwaGwuYzwvRmlsZVBhdGg+DQotICAgICAgICAgICAgPC9GaWxlPg0KLSAgICAgICAgICAgIDxGaWxlPg0KLSAgICAgICAgICAgICAgPEZpbGVOYW1lPnN5c3RlbV9pbnRlcm5hbC5jPC9GaWxlTmFtZT4NCi0gICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4NCi0gICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcc3lzdGVtX2ludGVybmFsLmM8L0ZpbGVQYXRoPg0KLSAgICAgICAgICAgIDwvRmlsZT4NCi0gICAgICAgICAgPC9GaWxlcz4NCi0gICAgICAgIDwvR3JvdXA+DQotICAgICAgPC9Hcm91cHM+DQotICAgIDwvVGFyZ2V0Pg0KLSAgPC9UYXJnZXRzPg0KLQ0KLTwvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgc3RhbmRhbG9uZT0ibm8iID8+Cis8UHJvamVjdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0icHJvamVjdF9wcm9qeC54c2QiPgorCisgIDxTY2hlbWFWZXJzaW9uPjIuMTwvU2NoZW1hVmVyc2lvbj4KKworICA8SGVhZGVyPiMjIyB1VmlzaW9uIFByb2plY3QsIChDKSBLZWlsIFNvZnR3YXJlPC9IZWFkZXI+CisKKyAgPFRhcmdldHM+CisgICAgPFRhcmdldD4KKyAgICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vX0dDQ19NUFU8L1RhcmdldE5hbWU+CisgICAgICA8VG9vbHNldE51bWJlcj4weDM8L1Rvb2xzZXROdW1iZXI+CisgICAgICA8VG9vbHNldE5hbWU+QVJNLUdOVTwvVG9vbHNldE5hbWU+CisgICAgICA8dUFDNj4wPC91QUM2PgorICAgICAgPFRhcmdldE9wdGlvbj4KKyAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KKyAgICAgICAgICA8RGV2aWNlPkFSTUNNNF9GUDwvRGV2aWNlPgorICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+CisgICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjE8L1BhY2tJRD4KKyAgICAgICAgICA8UGFja1VSTD5odHRwOi8vd3d3LmtlaWwuY29tL3BhY2svPC9QYWNrVVJMPgorICAgICAgICAgIDxDcHU+SVJPTSgweDAwMDAwMDAwLDB4ODAwMDApIElSQU0oMHgyMDAwMDAwMCwweDIwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTQiKSBGUFUyIENMT0NLKDEyMDAwMDAwKSBFU0VMIEVMSVRUTEU8L0NwdT4KKyAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+CisgICAgICAgICAgPFN0YXJ0dXBGaWxlPjwvU3RhcnR1cEZpbGU+CisgICAgICAgICAgPEZsYXNoRHJpdmVyRGxsPlVMMkNNMygtUzAgLUMwIC1QMCAtRkQyMDAwMDAwMCAtRkMxMDAwIC1GTjEgLUZGME5FV19ERVZJQ0UgLUZTMDAgLUZMMDgwMDAwIC1GUDAoJCREZXZpY2U6QVJNQ000X0ZQJERldmljZVxBUk1cRmxhc2hcTkVXX0RFVklDRS5GTE0pKTwvRmxhc2hEcml2ZXJEbGw+CisgICAgICAgICAgPERldmljZUlkPjA8L0RldmljZUlkPgorICAgICAgICAgIDxSZWdpc3RlckZpbGU+JCREZXZpY2U6QVJNQ000X0ZQJERldmljZVxBUk1cQVJNQ000XEluY2x1ZGVcQVJNQ000X0ZQLmg8L1JlZ2lzdGVyRmlsZT4KKyAgICAgICAgICA8TWVtb3J5RW52PjwvTWVtb3J5RW52PgorICAgICAgICAgIDxDbXA+PC9DbXA+CisgICAgICAgICAgPEFzbT48L0FzbT4KKyAgICAgICAgICA8TGlua2VyPjwvTGlua2VyPgorICAgICAgICAgIDxPSFN0cmluZz48L09IU3RyaW5nPgorICAgICAgICAgIDxJbmZpbmlvbk9wdGlvbkRsbD48L0luZmluaW9uT3B0aW9uRGxsPgorICAgICAgICAgIDxTTEU2NkNNaXNjPjwvU0xFNjZDTWlzYz4KKyAgICAgICAgICA8U0xFNjZBTWlzYz48L1NMRTY2QU1pc2M+CisgICAgICAgICAgPFNMRTY2TGlua2VyTWlzYz48L1NMRTY2TGlua2VyTWlzYz4KKyAgICAgICAgICA8U0ZERmlsZT4kJERldmljZTpBUk1DTTRfRlAkRGV2aWNlXEFSTVxTVkRcQVJNQ000LnN2ZDwvU0ZERmlsZT4KKyAgICAgICAgICA8YkN1c3RTdmQ+MDwvYkN1c3RTdmQ+CisgICAgICAgICAgPFVzZUVudj4wPC9Vc2VFbnY+CisgICAgICAgICAgPEJpblBhdGg+PC9CaW5QYXRoPgorICAgICAgICAgIDxJbmNsdWRlUGF0aD48L0luY2x1ZGVQYXRoPgorICAgICAgICAgIDxMaWJQYXRoPjwvTGliUGF0aD4KKyAgICAgICAgICA8UmVnaXN0ZXJGaWxlUGF0aD48L1JlZ2lzdGVyRmlsZVBhdGg+CisgICAgICAgICAgPERCUmVnaXN0ZXJGaWxlUGF0aD48L0RCUmVnaXN0ZXJGaWxlUGF0aD4KKyAgICAgICAgICA8VGFyZ2V0U3RhdHVzPgorICAgICAgICAgICAgPEVycm9yPjA8L0Vycm9yPgorICAgICAgICAgICAgPEV4aXRDb2RlU3RvcD4wPC9FeGl0Q29kZVN0b3A+CisgICAgICAgICAgICA8QnV0dG9uU3RvcD4wPC9CdXR0b25TdG9wPgorICAgICAgICAgICAgPE5vdEdlbmVyYXRlZD4wPC9Ob3RHZW5lcmF0ZWQ+CisgICAgICAgICAgICA8SW52YWxpZEZsYXNoPjE8L0ludmFsaWRGbGFzaD4KKyAgICAgICAgICA8L1RhcmdldFN0YXR1cz4KKyAgICAgICAgICA8T3V0cHV0RGlyZWN0b3J5Pi5cT2JqZWN0c1w8L091dHB1dERpcmVjdG9yeT4KKyAgICAgICAgICA8T3V0cHV0TmFtZT5SVE9TRGVtbzwvT3V0cHV0TmFtZT4KKyAgICAgICAgICA8Q3JlYXRlRXhlY3V0YWJsZT4xPC9DcmVhdGVFeGVjdXRhYmxlPgorICAgICAgICAgIDxDcmVhdGVMaWI+MDwvQ3JlYXRlTGliPgorICAgICAgICAgIDxDcmVhdGVIZXhGaWxlPjA8L0NyZWF0ZUhleEZpbGU+CisgICAgICAgICAgPERlYnVnSW5mb3JtYXRpb24+MTwvRGVidWdJbmZvcm1hdGlvbj4KKyAgICAgICAgICA8QnJvd3NlSW5mb3JtYXRpb24+MDwvQnJvd3NlSW5mb3JtYXRpb24+CisgICAgICAgICAgPExpc3RpbmdQYXRoPi5cTGlzdGluZ3NcPC9MaXN0aW5nUGF0aD4KKyAgICAgICAgICA8SGV4Rm9ybWF0U2VsZWN0aW9uPjE8L0hleEZvcm1hdFNlbGVjdGlvbj4KKyAgICAgICAgICA8TWVyZ2UzMks+MDwvTWVyZ2UzMks+CisgICAgICAgICAgPENyZWF0ZUJhdGNoRmlsZT4wPC9DcmVhdGVCYXRjaEZpbGU+CisgICAgICAgICAgPEJlZm9yZUNvbXBpbGU+CisgICAgICAgICAgICA8UnVuVXNlclByb2cxPjA8L1J1blVzZXJQcm9nMT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzI+MDwvUnVuVXNlclByb2cyPgorICAgICAgICAgICAgPFVzZXJQcm9nMU5hbWU+PC9Vc2VyUHJvZzFOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+CisgICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4KKyAgICAgICAgICAgIDxuU3RvcFUxWD4wPC9uU3RvcFUxWD4KKyAgICAgICAgICAgIDxuU3RvcFUyWD4wPC9uU3RvcFUyWD4KKyAgICAgICAgICA8L0JlZm9yZUNvbXBpbGU+CisgICAgICAgICAgPEJlZm9yZU1ha2U+CisgICAgICAgICAgICA8UnVuVXNlclByb2cxPjA8L1J1blVzZXJQcm9nMT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzI+MDwvUnVuVXNlclByb2cyPgorICAgICAgICAgICAgPFVzZXJQcm9nMU5hbWU+PC9Vc2VyUHJvZzFOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMk5hbWU+PC9Vc2VyUHJvZzJOYW1lPgorICAgICAgICAgICAgPFVzZXJQcm9nMURvczE2TW9kZT4wPC9Vc2VyUHJvZzFEb3MxNk1vZGU+CisgICAgICAgICAgICA8VXNlclByb2cyRG9zMTZNb2RlPjA8L1VzZXJQcm9nMkRvczE2TW9kZT4KKyAgICAgICAgICAgIDxuU3RvcEIxWD4wPC9uU3RvcEIxWD4KKyAgICAgICAgICAgIDxuU3RvcEIyWD4wPC9uU3RvcEIyWD4KKyAgICAgICAgICA8L0JlZm9yZU1ha2U+CisgICAgICAgICAgPEFmdGVyTWFrZT4KKyAgICAgICAgICAgIDxSdW5Vc2VyUHJvZzE+MDwvUnVuVXNlclByb2cxPgorICAgICAgICAgICAgPFJ1blVzZXJQcm9nMj4wPC9SdW5Vc2VyUHJvZzI+CisgICAgICAgICAgICA8VXNlclByb2cxTmFtZT48L1VzZXJQcm9nMU5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cyTmFtZT48L1VzZXJQcm9nMk5hbWU+CisgICAgICAgICAgICA8VXNlclByb2cxRG9zMTZNb2RlPjA8L1VzZXJQcm9nMURvczE2TW9kZT4KKyAgICAgICAgICAgIDxVc2VyUHJvZzJEb3MxNk1vZGU+MDwvVXNlclByb2cyRG9zMTZNb2RlPgorICAgICAgICAgICAgPG5TdG9wQTFYPjA8L25TdG9wQTFYPgorICAgICAgICAgICAgPG5TdG9wQTJYPjA8L25TdG9wQTJYPgorICAgICAgICAgIDwvQWZ0ZXJNYWtlPgorICAgICAgICAgIDxTZWxlY3RlZEZvckJhdGNoQnVpbGQ+MDwvU2VsZWN0ZWRGb3JCYXRjaEJ1aWxkPgorICAgICAgICAgIDxTVkNTSWRTdHJpbmc+PC9TVkNTSWRTdHJpbmc+CisgICAgICAgIDwvVGFyZ2V0Q29tbW9uT3B0aW9uPgorICAgICAgICA8Q29tbW9uUHJvcGVydHk+CisgICAgICAgICAgPFVzZUNQUENvbXBpbGVyPjA8L1VzZUNQUENvbXBpbGVyPgorICAgICAgICAgIDxSVkNUQ29kZUNvbnN0PjA8L1JWQ1RDb2RlQ29uc3Q+CisgICAgICAgICAgPFJWQ1RaST4wPC9SVkNUWkk+CisgICAgICAgICAgPFJWQ1RPdGhlckRhdGE+MDwvUlZDVE90aGVyRGF0YT4KKyAgICAgICAgICA8TW9kdWxlU2VsZWN0aW9uPjA8L01vZHVsZVNlbGVjdGlvbj4KKyAgICAgICAgICA8SW5jbHVkZUluQnVpbGQ+MTwvSW5jbHVkZUluQnVpbGQ+CisgICAgICAgICAgPEFsd2F5c0J1aWxkPjA8L0Fsd2F5c0J1aWxkPgorICAgICAgICAgIDxHZW5lcmF0ZUFzc2VtYmx5RmlsZT4wPC9HZW5lcmF0ZUFzc2VtYmx5RmlsZT4KKyAgICAgICAgICA8QXNzZW1ibGVBc3NlbWJseUZpbGU+MDwvQXNzZW1ibGVBc3NlbWJseUZpbGU+CisgICAgICAgICAgPFB1YmxpY3NPbmx5PjA8L1B1YmxpY3NPbmx5PgorICAgICAgICAgIDxTdG9wT25FeGl0Q29kZT4zPC9TdG9wT25FeGl0Q29kZT4KKyAgICAgICAgICA8Q3VzdG9tQXJndW1lbnQ+PC9DdXN0b21Bcmd1bWVudD4KKyAgICAgICAgICA8SW5jbHVkZUxpYnJhcnlNb2R1bGVzPjwvSW5jbHVkZUxpYnJhcnlNb2R1bGVzPgorICAgICAgICAgIDxDb21wckltZz4xPC9Db21wckltZz4KKyAgICAgICAgPC9Db21tb25Qcm9wZXJ0eT4KKyAgICAgICAgPERsbE9wdGlvbj4KKyAgICAgICAgICA8U2ltRGxsTmFtZT5TQVJNQ00zLkRMTDwvU2ltRGxsTmFtZT4KKyAgICAgICAgICA8U2ltRGxsQXJndW1lbnRzPiAgLU1QVTwvU2ltRGxsQXJndW1lbnRzPgorICAgICAgICAgIDxTaW1EbGdEbGw+RENNLkRMTDwvU2ltRGxnRGxsPgorICAgICAgICAgIDxTaW1EbGdEbGxBcmd1bWVudHM+LXBDTTQ8L1NpbURsZ0RsbEFyZ3VtZW50cz4KKyAgICAgICAgICA8VGFyZ2V0RGxsTmFtZT5TQVJNQ00zLkRMTDwvVGFyZ2V0RGxsTmFtZT4KKyAgICAgICAgICA8VGFyZ2V0RGxsQXJndW1lbnRzPiAtTVBVPC9UYXJnZXREbGxBcmd1bWVudHM+CisgICAgICAgICAgPFRhcmdldERsZ0RsbD5UQ00uRExMPC9UYXJnZXREbGdEbGw+CisgICAgICAgICAgPFRhcmdldERsZ0RsbEFyZ3VtZW50cz4tcENNNDwvVGFyZ2V0RGxnRGxsQXJndW1lbnRzPgorICAgICAgICA8L0RsbE9wdGlvbj4KKyAgICAgICAgPERlYnVnT3B0aW9uPgorICAgICAgICAgIDxPUFRIWD4KKyAgICAgICAgICAgIDxIZXhTZWxlY3Rpb24+MTwvSGV4U2VsZWN0aW9uPgorICAgICAgICAgICAgPEhleFJhbmdlTG93QWRkcmVzcz4wPC9IZXhSYW5nZUxvd0FkZHJlc3M+CisgICAgICAgICAgICA8SGV4UmFuZ2VIaWdoQWRkcmVzcz4wPC9IZXhSYW5nZUhpZ2hBZGRyZXNzPgorICAgICAgICAgICAgPEhleE9mZnNldD4wPC9IZXhPZmZzZXQ+CisgICAgICAgICAgICA8T2gxNjZSZWNMZW4+MTY8L09oMTY2UmVjTGVuPgorICAgICAgICAgIDwvT1BUSFg+CisgICAgICAgIDwvRGVidWdPcHRpb24+CisgICAgICAgIDxVdGlsaXRpZXM+CisgICAgICAgICAgPEZsYXNoMT4KKyAgICAgICAgICAgIDxVc2VUYXJnZXREbGw+MTwvVXNlVGFyZ2V0RGxsPgorICAgICAgICAgICAgPFVzZUV4dGVybmFsVG9vbD4wPC9Vc2VFeHRlcm5hbFRvb2w+CisgICAgICAgICAgICA8UnVuSW5kZXBlbmRlbnQ+MDwvUnVuSW5kZXBlbmRlbnQ+CisgICAgICAgICAgICA8VXBkYXRlRmxhc2hCZWZvcmVEZWJ1Z2dpbmc+MTwvVXBkYXRlRmxhc2hCZWZvcmVEZWJ1Z2dpbmc+CisgICAgICAgICAgICA8Q2FwYWJpbGl0eT4xPC9DYXBhYmlsaXR5PgorICAgICAgICAgICAgPERyaXZlclNlbGVjdGlvbj40MDk2PC9Ecml2ZXJTZWxlY3Rpb24+CisgICAgICAgICAgPC9GbGFzaDE+CisgICAgICAgICAgPGJVc2VURFI+MTwvYlVzZVREUj4KKyAgICAgICAgICA8Rmxhc2gyPkJJTlxVTDJDTTMuRExMPC9GbGFzaDI+CisgICAgICAgICAgPEZsYXNoMz4iIiAoKTwvRmxhc2gzPgorICAgICAgICAgIDxGbGFzaDQ+PC9GbGFzaDQ+CisgICAgICAgICAgPHBGY2FybU91dD48L3BGY2FybU91dD4KKyAgICAgICAgICA8cEZjYXJtR3JwPjwvcEZjYXJtR3JwPgorICAgICAgICAgIDxwRmNBcm1Sb290PjwvcEZjQXJtUm9vdD4KKyAgICAgICAgICA8RmNBcm1Mc3Q+MDwvRmNBcm1Mc3Q+CisgICAgICAgIDwvVXRpbGl0aWVzPgorICAgICAgICA8VGFyZ2V0QXJtPgorICAgICAgICAgIDxBcm1NaXNjPgorICAgICAgICAgICAgPGFzTHN0PjE8L2FzTHN0PgorICAgICAgICAgICAgPGFzSGxsPjE8L2FzSGxsPgorICAgICAgICAgICAgPGFzQXNtPjE8L2FzQXNtPgorICAgICAgICAgICAgPGFzTWFjWD4xPC9hc01hY1g+CisgICAgICAgICAgICA8YXNTeW1zPjE8L2FzU3ltcz4KKyAgICAgICAgICAgIDxhc0ZhbHM+MTwvYXNGYWxzPgorICAgICAgICAgICAgPGFzRGJnRD4xPC9hc0RiZ0Q+CisgICAgICAgICAgICA8YXNGb3JtPjE8L2FzRm9ybT4KKyAgICAgICAgICAgIDxsZExzdD4xPC9sZExzdD4KKyAgICAgICAgICAgIDxsZG1tPjE8L2xkbW0+CisgICAgICAgICAgICA8bGRYcmVmPjE8L2xkWHJlZj4KKyAgICAgICAgICAgIDxCaWdFbmQ+MDwvQmlnRW5kPgorICAgICAgICAgICAgPEdDUFVUWVA+IkNvcnRleC1NNCI8L0dDUFVUWVA+CisgICAgICAgICAgICA8bU9TPjA8L21PUz4KKyAgICAgICAgICAgIDx1b2NSb20+MDwvdW9jUm9tPgorICAgICAgICAgICAgPHVvY1JhbT4wPC91b2NSYW0+CisgICAgICAgICAgICA8aGFkSVJPTT4xPC9oYWRJUk9NPgorICAgICAgICAgICAgPGhhZElSQU0+MTwvaGFkSVJBTT4KKyAgICAgICAgICAgIDxoYWRYUkFNPjA8L2hhZFhSQU0+CisgICAgICAgICAgICA8dW9jWFJhbT4wPC91b2NYUmFtPgorICAgICAgICAgICAgPFJ2ZHNWUD4yPC9SdmRzVlA+CisgICAgICAgICAgICA8aGFkSVJBTTI+MDwvaGFkSVJBTTI+CisgICAgICAgICAgICA8aGFkSVJPTTI+MDwvaGFkSVJPTTI+CisgICAgICAgICAgICA8T25DaGlwTWVtb3JpZXM+CisgICAgICAgICAgICAgIDxPY20xPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtMT4KKyAgICAgICAgICAgICAgPE9jbTI+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY20yPgorICAgICAgICAgICAgICA8T2NtMz4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTM+CisgICAgICAgICAgICAgIDxPY200PgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDA8L1N0YXJ0QWRkcmVzcz4KKyAgICAgICAgICAgICAgICA8U2l6ZT4weDA8L1NpemU+CisgICAgICAgICAgICAgIDwvT2NtND4KKyAgICAgICAgICAgICAgPE9jbTU+CisgICAgICAgICAgICAgICAgPFR5cGU+MDwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MDwvU3RhcnRBZGRyZXNzPgorICAgICAgICAgICAgICAgIDxTaXplPjB4MDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9PY201PgorICAgICAgICAgICAgICA8T2NtNj4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L09jbTY+CisgICAgICAgICAgICAgIDxJUkFNPgorICAgICAgICAgICAgICAgIDxUeXBlPjA8L1R5cGU+CisgICAgICAgICAgICAgICAgPFN0YXJ0QWRkcmVzcz4weDIwMDAwMDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgyMDAwMDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9JUkFNPgorICAgICAgICAgICAgICA8SVJPTT4KKyAgICAgICAgICAgICAgICA8VHlwZT4xPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHg4MDAwMDwvU2l6ZT4KKyAgICAgICAgICAgICAgPC9JUk9NPgorICAgICAgICAgICAgICA8WFJBTT4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L1hSQU0+CisgICAgICAgICAgICAgIDxJUkFNMj4KKyAgICAgICAgICAgICAgICA8VHlwZT4wPC9UeXBlPgorICAgICAgICAgICAgICAgIDxTdGFydEFkZHJlc3M+MHgwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHgwPC9TaXplPgorICAgICAgICAgICAgICA8L0lSQU0yPgorICAgICAgICAgICAgICA8SVJPTTI+CisgICAgICAgICAgICAgICAgPFR5cGU+MTwvVHlwZT4KKyAgICAgICAgICAgICAgICA8U3RhcnRBZGRyZXNzPjB4MjAwMDAwPC9TdGFydEFkZHJlc3M+CisgICAgICAgICAgICAgICAgPFNpemU+MHg0MDAwPC9TaXplPgorICAgICAgICAgICAgICA8L0lST00yPgorICAgICAgICAgICAgPC9PbkNoaXBNZW1vcmllcz4KKyAgICAgICAgICA8L0FybU1pc2M+CisgICAgICAgICAgPENhcm0+CisgICAgICAgICAgICA8YXJwY3M+MTwvYXJwY3M+CisgICAgICAgICAgICA8c3RrY2hrPjA8L3N0a2Noaz4KKyAgICAgICAgICAgIDxyZWVudHI+MDwvcmVlbnRyPgorICAgICAgICAgICAgPGludGVydz4xPC9pbnRlcnc+CisgICAgICAgICAgICA8YmlnZW5kPjA8L2JpZ2VuZD4KKyAgICAgICAgICAgIDxTdHJpY3Q+MDwvU3RyaWN0PgorICAgICAgICAgICAgPE9wdGltPjE8L09wdGltPgorICAgICAgICAgICAgPHdMZXZlbD4zPC93TGV2ZWw+CisgICAgICAgICAgICA8dVRodW1iPjE8L3VUaHVtYj4KKyAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CisgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+LW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PWZwdjQtc3AtZDE2IC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1PMCAtZzwvTWlzY0NvbnRyb2xzPgorICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgorICAgICAgICAgICAgICA8VW5kZWZpbmU+PC9VbmRlZmluZT4KKyAgICAgICAgICAgICAgPEluY2x1ZGVQYXRoPi4uOy4uXC4uXC4uXFNvdXJjZVxpbmNsdWRlOy4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFU7Li5cLi5cQ29tbW9uXGluY2x1ZGU7Li5ccGVyaXBoZXJhbF9saWJyYXJ5Oy4uXENNU0lTOy4uXG1haW5fZnVsbDsuLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0PC9JbmNsdWRlUGF0aD4KKyAgICAgICAgICAgIDwvVmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgIDwvQ2FybT4KKyAgICAgICAgICA8QWFybT4KKyAgICAgICAgICAgIDxiQkU+MDwvYkJFPgorICAgICAgICAgICAgPGludGVydz4xPC9pbnRlcnc+CisgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgorICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgorICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgorICAgICAgICAgICAgICA8VW5kZWZpbmU+PC9VbmRlZmluZT4KKyAgICAgICAgICAgICAgPEluY2x1ZGVQYXRoPjwvSW5jbHVkZVBhdGg+CisgICAgICAgICAgICA8L1ZhcmlvdXNDb250cm9scz4KKyAgICAgICAgICA8L0Fhcm0+CisgICAgICAgICAgPExEYXJtPgorICAgICAgICAgICAgPHVtZlRhcmc+MTwvdW1mVGFyZz4KKyAgICAgICAgICAgIDxlbmFHYXJiPjA8L2VuYUdhcmI+CisgICAgICAgICAgICA8bm9TdGFydD4xPC9ub1N0YXJ0PgorICAgICAgICAgICAgPG5vU3RMaWI+MDwvbm9TdExpYj4KKyAgICAgICAgICAgIDx1TWF0aExpYj4wPC91TWF0aExpYj4KKyAgICAgICAgICAgIDxUZXh0QWRkcmVzc1JhbmdlPjwvVGV4dEFkZHJlc3NSYW5nZT4KKyAgICAgICAgICAgIDxEYXRhQWRkcmVzc1JhbmdlPjwvRGF0YUFkZHJlc3NSYW5nZT4KKyAgICAgICAgICAgIDxCU1NBZGRyZXNzUmFuZ2U+PC9CU1NBZGRyZXNzUmFuZ2U+CisgICAgICAgICAgICA8SW5jbHVkZUxpYnM+PC9JbmNsdWRlTGlicz4KKyAgICAgICAgICAgIDxJbmNsdWRlRGlyPjwvSW5jbHVkZURpcj4KKyAgICAgICAgICAgIDxNaXNjPi1YbGlua2VyIC0tZ2Mtc2VjdGlvbnM8L01pc2M+CisgICAgICAgICAgICA8U2NhdHRlckZpbGU+LlxzZWN0aW9ucy5sZDwvU2NhdHRlckZpbGU+CisgICAgICAgICAgPC9MRGFybT4KKyAgICAgICAgPC9UYXJnZXRBcm0+CisgICAgICA8L1RhcmdldE9wdGlvbj4KKyAgICAgIDxHcm91cHM+CisgICAgICAgIDxHcm91cD4KKyAgICAgICAgICA8R3JvdXBOYW1lPlN5c3RlbTwvR3JvdXBOYW1lPgorICAgICAgICAgIDxGaWxlcz4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3lzdGVtLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uXHN5c3RlbS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RhcnR1cF9BUk1DTTQuUzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4yPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cc3RhcnR1cF9BUk1DTTQuUzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+bWFpbl9hbmRfY29uZmlnPC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5tYWluLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxtYWluLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5GcmVlUlRPU0NvbmZpZy5oPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjU8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cRnJlZVJUT1NDb25maWcuaDwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPlJlZ1Rlc3QuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi5cUmVnVGVzdC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgICA8R3JvdXA+CisgICAgICAgICAgPEdyb3VwTmFtZT5GcmVlUlRPU19Tb3VyY2U8L0dyb3VwTmFtZT4KKyAgICAgICAgICA8RmlsZXM+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmV2ZW50X2dyb3Vwcy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+bGlzdC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXGxpc3QuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnF1ZXVlLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccXVldWUuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnRhc2tzLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VcdGFza3MuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnRpbWVycy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHRpbWVycy5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+aGVhcF80LmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPm1wdV93cmFwcGVycy5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnBvcnQuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RyZWFtX2J1ZmZlci5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgPC9GaWxlcz4KKyAgICAgICAgPC9Hcm91cD4KKyAgICAgICAgPEdyb3VwPgorICAgICAgICAgIDxHcm91cE5hbWU+cGVyaXBoZXJhbF9saWJyYXJ5PC9Hcm91cE5hbWU+CisgICAgICAgICAgPEZpbGVzPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5idGltZXJfYXBpLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX2FwaS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+YnRpbWVyX3BlcnBobC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGJhc2ljX3RpbWVyXGJ0aW1lcl9wZXJwaGwuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPmludGVycnVwdF9hcGkuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2FwaS5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9lY2lhX3BlcnBobC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+aW50ZXJydXB0X252aWNfcGVycGhsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcaW50ZXJydXB0XGludGVycnVwdF9udmljX3BlcnBobC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+cGNyX2FwaS5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfYXBpLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5wY3JfcGVycGhsLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlxwZXJpcGhlcmFsX2xpYnJhcnlccGNyXHBjcl9wZXJwaGwuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN5c3RlbV9pbnRlcm5hbC5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHN5c3RlbV9pbnRlcm5hbC5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICA8L0ZpbGVzPgorICAgICAgICA8L0dyb3VwPgorICAgICAgPC9Hcm91cHM+CisgICAgPC9UYXJnZXQ+CisgIDwvVGFyZ2V0cz4KKworICA8UlRFPgorICAgIDxhcGlzLz4KKyAgICA8Y29tcG9uZW50cy8+CisgICAgPGZpbGVzLz4KKyAgPC9SVEU+CisKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggNWI0NWNlMS4uYjEwOThlYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAppbmRleCA3OTBiMWM0Li5kZDMyNDhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CkBAIC04LDcgKzgsNyBAQAogICA8RXh0ZW5zaW9ucz4KICAgICA8Y0V4dD4qLmM8L2NFeHQ+CiAgICAgPGFFeHQ+Ki5zKjsgKi5zcmM7ICouYSo8L2FFeHQ+Ci0gICAgPG9FeHQ+Ki5vYmo8L29FeHQ+CisgICAgPG9FeHQ+Ki5vYmo7ICoubzwvb0V4dD4KICAgICA8bEV4dD4qLmxpYjwvbEV4dD4KICAgICA8dEV4dD4qLnR4dDsgKi5oOyAqLmluYzwvdEV4dD4KICAgICA8cEV4dD4qLnBsbTwvcEV4dD4KQEAgLTEwMCw3ICsxMDAsOCBAQAogICAgICAgICA8dFJTeXNWdz4xPC90UlN5c1Z3PgogICAgICAgICA8c1J1bkRlYj4wPC9zUnVuRGViPgogICAgICAgICA8c0xydGltZT4wPC9zTHJ0aW1lPgotICAgICAgICA8blRzZWw+MTwvblRzZWw+CisgICAgICAgIDxiRXZSZWNPbj4xPC9iRXZSZWNPbj4KKyAgICAgICAgPG5Uc2VsPjA8L25Uc2VsPgogICAgICAgICA8c0RsbD48L3NEbGw+CiAgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CiAgICAgICAgIDxzRGxnRGxsPjwvc0RsZ0RsbD4KQEAgLTE5Myw2ICsxOTQsMTYgQEAKICAgICAgIDxMaW50RXhlY3V0YWJsZT48L0xpbnRFeGVjdXRhYmxlPgogICAgICAgPExpbnRDb25maWdGaWxlPjwvTGludENvbmZpZ0ZpbGU+CiAgICAgICA8YkxpbnRBdXRvPjA8L2JMaW50QXV0bz4KKyAgICAgIDxiQXV0b0dlbkQ+MDwvYkF1dG9HZW5EPgorICAgICAgPExudEV4RmxhZ3M+MDwvTG50RXhGbGFncz4KKyAgICAgIDxwTWlzcmFOYW1lPjwvcE1pc3JhTmFtZT4KKyAgICAgIDxwc3pNcnVsZT48L3Bzek1ydWxlPgorICAgICAgPHBTaW5nQ21kcz48L3BTaW5nQ21kcz4KKyAgICAgIDxwTXVsdENtZHM+PC9wTXVsdENtZHM+CisgICAgICA8cE1pc3JhTmFtZXA+PC9wTWlzcmFOYW1lcD4KKyAgICAgIDxwc3pNcnVsZXA+PC9wc3pNcnVsZXA+CisgICAgICA8cFNpbmdDbWRzcD48L3BTaW5nQ21kc3A+CisgICAgICA8cE11bHRDbWRzcD48L3BNdWx0Q21kc3A+CiAgICAgPC9UYXJnZXRPcHRpb24+CiAgIDwvVGFyZ2V0PgogCkBAIC0yMDcsNyArMjE4LDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjE8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MjwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi5cc3RhcnR1cF9NUFNfQ000LlM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0yMjgsNyArMjM4LDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjI8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXG1haW4uYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTI0MSw3ICsyNTAsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MzwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT41PC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cRnJlZVJUT1NDb25maWcuaDwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTI1NCw3ICsyNjIsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+NDwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+LlxSZWdUZXN0LmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0yNzUsNyArMjgyLDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjU8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTI4OCw3ICsyOTQsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+NjwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXGxpc3QuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTMwMSw3ICszMDYsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+NzwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHF1ZXVlLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0zMTQsNyArMzE4LDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjg8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVx0YXNrcy5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMzI3LDcgKzMzMCw2IEBACiAgICAgICA8RmlsZU51bWJlcj45PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VcdGltZXJzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0zNDAsNyArMzQyLDYgQEAKICAgICAgIDxGaWxlTnVtYmVyPjEwPC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2VccG9ydGFibGVcTWVtTWFuZ1xoZWFwXzQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTM1Myw3ICszNTQsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MTE8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxSVkRTXEFSTV9DTTRfTVBVXHBvcnQuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTM2Niw3ICszNjYsNiBAQAogICAgICAgPEZpbGVOdW1iZXI+MTI8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxDb21tb25cbXB1X3dyYXBwZXJzLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC0zNzQsNiArMzczLDE4IEBACiAgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KICAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CiAgICAgPC9GaWxlPgorICAgIDxGaWxlPgorICAgICAgPEdyb3VwTnVtYmVyPjM8L0dyb3VwTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTM8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICA8dHZFeHA+MDwvdHZFeHA+CisgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CisgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KKyAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L1BhdGhXaXRoRmlsZU5hbWU+CisgICAgICA8RmlsZW5hbWVXaXRob3V0UGF0aD5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVuYW1lV2l0aG91dFBhdGg+CisgICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KKyAgICAgIDxiU2hhcmVkPjA8L2JTaGFyZWQ+CisgICAgPC9GaWxlPgogICA8L0dyb3VwPgogCiAgIDxHcm91cD4KQEAgLTM4NCwxMCArMzk1LDkgQEAKICAgICA8UnRlRmxnPjA8L1J0ZUZsZz4KICAgICA8RmlsZT4KICAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KLSAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTQ8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtMzk3LDEwICs0MDcsOSBAQAogICAgIDwvRmlsZT4KICAgICA8RmlsZT4KICAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KLSAgICAgIDxGaWxlTnVtYmVyPjE0PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTU8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxpbnRlcnJ1cHRcaW50ZXJydXB0X2VjaWFfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC00MTAsMTAgKzQxOSw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTU8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xNjwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XGludGVycnVwdFxpbnRlcnJ1cHRfbnZpY19wZXJwaGwuYzwvUGF0aFdpdGhGaWxlTmFtZT4KQEAgLTQyMywxMCArNDMxLDkgQEAKICAgICA8L0ZpbGU+CiAgICAgPEZpbGU+CiAgICAgICA8R3JvdXBOdW1iZXI+NDwvR3JvdXBOdW1iZXI+Ci0gICAgICA8RmlsZU51bWJlcj4xNjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjE3PC9GaWxlTnVtYmVyPgogICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgPHR2RXhwPjA8L3R2RXhwPgotICAgICAgPEZvY3VzPjA8L0ZvY3VzPgogICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgogICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CiAgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlxwZXJpcGhlcmFsX2xpYnJhcnlcYmFzaWNfdGltZXJcYnRpbWVyX2FwaS5jPC9QYXRoV2l0aEZpbGVOYW1lPgpAQCAtNDM2LDEwICs0NDMsOSBAQAogICAgIDwvRmlsZT4KICAgICA8RmlsZT4KICAgICAgIDxHcm91cE51bWJlcj40PC9Hcm91cE51bWJlcj4KLSAgICAgIDxGaWxlTnVtYmVyPjE3PC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVOdW1iZXI+MTg8L0ZpbGVOdW1iZXI+CiAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CiAgICAgICA8dHZFeHA+MDwvdHZFeHA+Ci0gICAgICA8Rm9jdXM+MDwvRm9jdXM+CiAgICAgICA8dHZFeHBPcHREbGc+MDwvdHZFeHBPcHREbGc+CiAgICAgICA8YkRhdmUyPjA8L2JEYXZlMj4KICAgICAgIDxQYXRoV2l0aEZpbGVOYW1lPi4uXHBlcmlwaGVyYWxfbGlicmFyeVxiYXNpY190aW1lclxidGltZXJfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC00NDksMTAgKzQ1NSw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTg8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xOTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfYXBpLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC00NjIsMTAgKzQ2Nyw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MTk8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yMDwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHBjclxwY3JfcGVycGhsLmM8L1BhdGhXaXRoRmlsZU5hbWU+CkBAIC00NzUsMTAgKzQ3OSw5IEBACiAgICAgPC9GaWxlPgogICAgIDxGaWxlPgogICAgICAgPEdyb3VwTnVtYmVyPjQ8L0dyb3VwTnVtYmVyPgotICAgICAgPEZpbGVOdW1iZXI+MjA8L0ZpbGVOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4yMTwvRmlsZU51bWJlcj4KICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgIDx0dkV4cD4wPC90dkV4cD4KLSAgICAgIDxGb2N1cz4wPC9Gb2N1cz4KICAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KICAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgogICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5ccGVyaXBoZXJhbF9saWJyYXJ5XHN5c3RlbV9pbnRlcm5hbC5jPC9QYXRoV2l0aEZpbGVOYW1lPgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKaW5kZXggNGFkOGVhZS4uYmU5ODc1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CkBAIC0xMCwxMSArMTAsMTMgQEAKICAgICAgIDxUYXJnZXROYW1lPlJUT1NEZW1vPC9UYXJnZXROYW1lPgogICAgICAgPFRvb2xzZXROdW1iZXI+MHg0PC9Ub29sc2V0TnVtYmVyPgogICAgICAgPFRvb2xzZXROYW1lPkFSTS1BRFM8L1Rvb2xzZXROYW1lPgorICAgICAgPHBDQ1VzZWQ+NTA2MDUyODo6VjUuMDYgdXBkYXRlIDUgKGJ1aWxkIDUyOCk6OkFSTUNDPC9wQ0NVc2VkPgorICAgICAgPHVBQzY+MDwvdUFDNj4KICAgICAgIDxUYXJnZXRPcHRpb24+CiAgICAgICAgIDxUYXJnZXRDb21tb25PcHRpb24+CiAgICAgICAgICAgPERldmljZT5BUk1DTTRfRlA8L0RldmljZT4KICAgICAgICAgICA8VmVuZG9yPkFSTTwvVmVuZG9yPgotICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjQuMy4wPC9QYWNrSUQ+CisgICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjE8L1BhY2tJRD4KICAgICAgICAgICA8UGFja1VSTD5odHRwOi8vd3d3LmtlaWwuY29tL3BhY2svPC9QYWNrVVJMPgogICAgICAgICAgIDxDcHU+SVJPTSgweDAwMDAwMDAwLDB4ODAwMDApIElSQU0oMHgyMDAwMDAwMCwweDIwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTQiKSBGUFUyIENMT0NLKDEyMDAwMDAwKSBFU0VMIEVMSVRUTEU8L0NwdT4KICAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+CkBAIC0xMjQsNDcgKzEyNiw2IEBACiAgICAgICAgICAgICA8SGV4T2Zmc2V0PjA8L0hleE9mZnNldD4KICAgICAgICAgICAgIDxPaDE2NlJlY0xlbj4xNjwvT2gxNjZSZWNMZW4+CiAgICAgICAgICAgPC9PUFRIWD4KLSAgICAgICAgICA8U2ltdWxhdG9yPgotICAgICAgICAgICAgPFVzZVNpbXVsYXRvcj4wPC9Vc2VTaW11bGF0b3I+Ci0gICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4KLSAgICAgICAgICAgIDxSdW5Ub01haW4+MTwvUnVuVG9NYWluPgotICAgICAgICAgICAgPFJlc3RvcmVCcmVha3BvaW50cz4xPC9SZXN0b3JlQnJlYWtwb2ludHM+Ci0gICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4KLSAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4KLSAgICAgICAgICAgIDxSZXN0b3JlRnVuY3Rpb25zPjE8L1Jlc3RvcmVGdW5jdGlvbnM+Ci0gICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+Ci0gICAgICAgICAgICA8TGltaXRTcGVlZFRvUmVhbFRpbWU+MDwvTGltaXRTcGVlZFRvUmVhbFRpbWU+Ci0gICAgICAgICAgICA8UmVzdG9yZVN5c1Z3PjE8L1Jlc3RvcmVTeXNWdz4KLSAgICAgICAgICA8L1NpbXVsYXRvcj4KLSAgICAgICAgICA8VGFyZ2V0PgotICAgICAgICAgICAgPFVzZVRhcmdldD4xPC9Vc2VUYXJnZXQ+Ci0gICAgICAgICAgICA8TG9hZEFwcGxpY2F0aW9uQXRTdGFydHVwPjE8L0xvYWRBcHBsaWNhdGlvbkF0U3RhcnR1cD4KLSAgICAgICAgICAgIDxSdW5Ub01haW4+MDwvUnVuVG9NYWluPgotICAgICAgICAgICAgPFJlc3RvcmVCcmVha3BvaW50cz4xPC9SZXN0b3JlQnJlYWtwb2ludHM+Ci0gICAgICAgICAgICA8UmVzdG9yZVdhdGNocG9pbnRzPjE8L1Jlc3RvcmVXYXRjaHBvaW50cz4KLSAgICAgICAgICAgIDxSZXN0b3JlTWVtb3J5RGlzcGxheT4xPC9SZXN0b3JlTWVtb3J5RGlzcGxheT4KLSAgICAgICAgICAgIDxSZXN0b3JlRnVuY3Rpb25zPjA8L1Jlc3RvcmVGdW5jdGlvbnM+Ci0gICAgICAgICAgICA8UmVzdG9yZVRvb2xib3g+MTwvUmVzdG9yZVRvb2xib3g+Ci0gICAgICAgICAgICA8UmVzdG9yZVRyYWNlcG9pbnRzPjE8L1Jlc3RvcmVUcmFjZXBvaW50cz4KLSAgICAgICAgICAgIDxSZXN0b3JlU3lzVnc+MTwvUmVzdG9yZVN5c1Z3PgotICAgICAgICAgIDwvVGFyZ2V0PgotICAgICAgICAgIDxSdW5EZWJ1Z0FmdGVyQnVpbGQ+MDwvUnVuRGVidWdBZnRlckJ1aWxkPgotICAgICAgICAgIDxUYXJnZXRTZWxlY3Rpb24+MTwvVGFyZ2V0U2VsZWN0aW9uPgotICAgICAgICAgIDxTaW1EbGxzPgotICAgICAgICAgICAgPENwdURsbD48L0NwdURsbD4KLSAgICAgICAgICAgIDxDcHVEbGxBcmd1bWVudHM+PC9DcHVEbGxBcmd1bWVudHM+Ci0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbD48L1BlcmlwaGVyYWxEbGw+Ci0gICAgICAgICAgICA8UGVyaXBoZXJhbERsbEFyZ3VtZW50cz48L1BlcmlwaGVyYWxEbGxBcmd1bWVudHM+Ci0gICAgICAgICAgICA8SW5pdGlhbGl6YXRpb25GaWxlPjwvSW5pdGlhbGl6YXRpb25GaWxlPgotICAgICAgICAgIDwvU2ltRGxscz4KLSAgICAgICAgICA8VGFyZ2V0RGxscz4KLSAgICAgICAgICAgIDxDcHVEbGw+PC9DcHVEbGw+Ci0gICAgICAgICAgICA8Q3B1RGxsQXJndW1lbnRzPjwvQ3B1RGxsQXJndW1lbnRzPgotICAgICAgICAgICAgPFBlcmlwaGVyYWxEbGw+PC9QZXJpcGhlcmFsRGxsPgotICAgICAgICAgICAgPFBlcmlwaGVyYWxEbGxBcmd1bWVudHM+PC9QZXJpcGhlcmFsRGxsQXJndW1lbnRzPgotICAgICAgICAgICAgPEluaXRpYWxpemF0aW9uRmlsZT5pbml0X2FwcC5pbmk8L0luaXRpYWxpemF0aW9uRmlsZT4KLSAgICAgICAgICAgIDxEcml2ZXI+QklOXFVMMkNNMy5ETEw8L0RyaXZlcj4KLSAgICAgICAgICA8L1RhcmdldERsbHM+CiAgICAgICAgIDwvRGVidWdPcHRpb24+CiAgICAgICAgIDxVdGlsaXRpZXM+CiAgICAgICAgICAgPEZsYXNoMT4KQEAgLTIyOSw2ICsxOTAsNyBAQAogICAgICAgICAgICAgPHVzZVVsaWI+MTwvdXNlVWxpYj4KICAgICAgICAgICAgIDxFbmRTZWw+MTwvRW5kU2VsPgogICAgICAgICAgICAgPHVMdGNnPjA8L3VMdGNnPgorICAgICAgICAgICAgPG5TZWN1cmU+MDwvblNlY3VyZT4KICAgICAgICAgICAgIDxSb1NlbEQ+MzwvUm9TZWxEPgogICAgICAgICAgICAgPFJ3U2VsRD4zPC9Sd1NlbEQ+CiAgICAgICAgICAgICA8Q29kZVNlbD4wPC9Db2RlU2VsPgpAQCAtMzY1LDYgKzMyNywxMSBAQAogICAgICAgICAgICAgPHVzZVhPPjA8L3VzZVhPPgogICAgICAgICAgICAgPHY2TGFuZz4wPC92Nkxhbmc+CiAgICAgICAgICAgICA8djZMYW5nUD4wPC92NkxhbmdQPgorICAgICAgICAgICAgPHZTaG9ydEVuPjE8L3ZTaG9ydEVuPgorICAgICAgICAgICAgPHZTaG9ydFdjaD4xPC92U2hvcnRXY2g+CisgICAgICAgICAgICA8djZMdG8+MDwvdjZMdG8+CisgICAgICAgICAgICA8djZXdEU+MDwvdjZXdEU+CisgICAgICAgICAgICA8djZSdHRpPjA8L3Y2UnR0aT4KICAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CkBAIC0zODIsNiArMzQ5LDcgQEAKICAgICAgICAgICAgIDxOb1dhcm4+MDwvTm9XYXJuPgogICAgICAgICAgICAgPHVTdXJwSW5jPjA8L3VTdXJwSW5jPgogICAgICAgICAgICAgPHVzZVhPPjA8L3VzZVhPPgorICAgICAgICAgICAgPHVDbGFuZ0FzPjA8L3VDbGFuZ0FzPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTQ4Miw2ICs0NTAsMTEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0cmVhbV9idWZmZXIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICAgIDxHcm91cD4KQEAgLTUzMyw0ICs1MDYsMTAgQEAKICAgICA8L1RhcmdldD4KICAgPC9UYXJnZXRzPgogCisgIDxSVEU+CisgICAgPGFwaXMvPgorICAgIDxjb21wb25lbnRzLz4KKyAgICA8ZmlsZXMvPgorICA8L1JURT4KKwogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jCmluZGV4IDkwZTE2MjUuLjE4OWQwNWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfQ0VDX01FQ18xN3h4XzUxeHhfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IDBiMGQ4NDYuLjRmYzczYjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9DRUNfTUVDXzE3eHhfNTF4eF9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX0NFQ19NRUNfMTd4eF81MXh4X0tlaWxfR0NDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNWE3MGE2Ni4uNWY4ZDM5YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KQEAgLTkwLDcgKzQ5LDcgQEAKIC8qIFRoZSBNUFUgdmVyc2lvbiBvZiBwb3J0LmMgaW5jbHVkZXMgYW5kIGV4Y2x1ZGVzIGZ1bmN0aW9ucyBkZXBlbmRpbmcgb24gdGhlDQogc2V0dGluZ3Mgd2l0aGluIHRoaXMgZmlsZS4gIFRoZXJlZm9yZSwgdG8gZW5zdXJlIGFsbCB0aGUgZnVuY3Rpb25zIGluIHBvcnQuYw0KIGJ1aWxkLCB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSBoYXMgYWxsIG9wdGlvbnMgdHVybmVkIG9uLiAqLw0KLQkNCisNCiAjZGVmaW5lIGNvbmZpZ1VTRV9QUkVFTVBUSU9OCQkJCQkxDQogI2RlZmluZSBjb25maWdUSUNLX1JBVEVfSFoJCQkJCQkoIDEwMDAgKQ0KICNkZWZpbmUgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OCTENCkBAIC0xMTIsNyArNzEsNyBAQAogI2RlZmluZSBjb25maWdVU0VfTUFMTE9DX0ZBSUxFRF9IT09LCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFX0FQUExJQ0FUSU9OX1RBU0tfVEFHCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFX0NPVU5USU5HX1NFTUFQSE9SRVMJCQkxDQotI2RlZmluZSBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OCQkJMQ0KKyNkZWZpbmUgY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTgkJCTANCiAjZGVmaW5lIGNvbmZpZ1VTRV9USUNLTEVTU19JRExFCQkJCQkwDQogI2RlZmluZSBjb25maWdOVU1fVEhSRUFEX0xPQ0FMX1NUT1JBR0VfUE9JTlRFUlMJMg0KIA0KQEAgLTE2Miw3ICsxMjEsNyBAQAogCS8qIF9fQlZJQ19QUklPX0JJVFMgd2lsbCBiZSBzcGVjaWZpZWQgd2hlbiBDTVNJUyBpcyBiZWluZyB1c2VkLiAqLw0KIAkjZGVmaW5lIGNvbmZpZ1BSSU9fQklUUwkJICAgICAgIF9fTlZJQ19QUklPX0JJVFMNCiAjZWxzZQ0KLQkjZGVmaW5lIGNvbmZpZ1BSSU9fQklUUwkJICAgICAgIDQJLyogMTUgcHJpb3JpdHkgbGV2ZWxzICovDQorCSNkZWZpbmUgY29uZmlnUFJJT19CSVRTCQkgICAgICAgOAkvKiAxNSBwcmlvcml0eSBsZXZlbHMgKi8NCiAjZW5kaWYNCiANCiAvKiBUaGUgbG93ZXN0IGludGVycnVwdCBwcmlvcml0eSB0aGF0IGNhbiBiZSB1c2VkIGluIGEgY2FsbCB0byBhICJzZXQgcHJpb3JpdHkiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CmluZGV4IGIxOWVhMmYuLjM2NWViNjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKQEAgLTgsNyArOCw3IEBACiAgIDxFeHRlbnNpb25zPgogICAgIDxjRXh0PiouYzsqLlM8L2NFeHQ+CiAgICAgPGFFeHQ+PC9hRXh0PgotICAgIDxvRXh0Pioub2JqPC9vRXh0PgorICAgIDxvRXh0Pioub2JqOyAqLm88L29FeHQ+CiAgICAgPGxFeHQ+Ki5saWI8L2xFeHQ+CiAgICAgPHRFeHQ+Ki50eHQ7ICouaDsgKi5pbmM8L3RFeHQ+CiAgICAgPHBFeHQ+Ki5wbG08L3BFeHQ+CkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICAgICAgPHRSU3lzVnc+MTwvdFJTeXNWdz4KICAgICAgICAgPHNSdW5EZWI+MDwvc1J1bkRlYj4KICAgICAgICAgPHNMcnRpbWU+MDwvc0xydGltZT4KKyAgICAgICAgPGJFdlJlY09uPjE8L2JFdlJlY09uPgogICAgICAgICA8blRzZWw+MDwvblRzZWw+CiAgICAgICAgIDxzRGxsPjwvc0RsbD4KICAgICAgICAgPHNEbGxQYT48L3NEbGxQYT4KQEAgLTE3Miw3ICsxNzMsNyBAQAogICAgICAgPERlYnVnRmxhZz4KICAgICAgICAgPHRyYWNlPjA8L3RyYWNlPgogICAgICAgICA8cGVyaW9kaWM+MTwvcGVyaW9kaWM+Ci0gICAgICAgIDxhTHdpbj4wPC9hTHdpbj4KKyAgICAgICAgPGFMd2luPjE8L2FMd2luPgogICAgICAgICA8YUNvdmVyPjA8L2FDb3Zlcj4KICAgICAgICAgPGFTZXIxPjA8L2FTZXIxPgogICAgICAgICA8YVNlcjI+MDwvYVNlcjI+CkBAIC0xOTgsOSArMTk5LDE2IEBACiAgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KICAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgogICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+Ci0gICAgICA8TGluMkV4ZWN1dGFibGU+PC9MaW4yRXhlY3V0YWJsZT4KLSAgICAgIDxMaW4yQ29uZmlnRmlsZT48L0xpbjJDb25maWdGaWxlPgotICAgICAgPGJMaW4yQXV0bz4wPC9iTGluMkF1dG8+CisgICAgICA8YkF1dG9HZW5EPjA8L2JBdXRvR2VuRD4KKyAgICAgIDxMbnRFeEZsYWdzPjA8L0xudEV4RmxhZ3M+CisgICAgICA8cE1pc3JhTmFtZT48L3BNaXNyYU5hbWU+CisgICAgICA8cHN6TXJ1bGU+PC9wc3pNcnVsZT4KKyAgICAgIDxwU2luZ0NtZHM+PC9wU2luZ0NtZHM+CisgICAgICA8cE11bHRDbWRzPjwvcE11bHRDbWRzPgorICAgICAgPHBNaXNyYU5hbWVwPjwvcE1pc3JhTmFtZXA+CisgICAgICA8cHN6TXJ1bGVwPjwvcHN6TXJ1bGVwPgorICAgICAgPHBTaW5nQ21kc3A+PC9wU2luZ0NtZHNwPgorICAgICAgPHBNdWx0Q21kc3A+PC9wTXVsdENtZHNwPgogICAgICAgPERlYnVnRGVzY3JpcHRpb24+CiAgICAgICAgIDxFbmFibGU+MTwvRW5hYmxlPgogICAgICAgICA8RW5hYmxlTG9nPjA8L0VuYWJsZUxvZz4KQEAgLTM3Niw2ICszODQsMTggQEAKICAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgogICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KICAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xMzwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0cmVhbV9idWZmZXIuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CiAgIDwvR3JvdXA+CiAKIDwvUHJvamVjdE9wdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvanggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CmluZGV4IGM0OWNkYzQuLmE3MGU5NjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeApAQCAtMTEsMTEgKzExLDEyIEBACiAgICAgICA8VG9vbHNldE51bWJlcj4weDM8L1Rvb2xzZXROdW1iZXI+CiAgICAgICA8VG9vbHNldE5hbWU+QVJNLUdOVTwvVG9vbHNldE5hbWU+CiAgICAgICA8cENDVXNlZD41MDYwMDYxOjpWNS4wNiB1cGRhdGUgMSAoYnVpbGQgNjEpOjpBUk1DQzwvcENDVXNlZD4KKyAgICAgIDx1QUM2PjA8L3VBQzY+CiAgICAgICA8VGFyZ2V0T3B0aW9uPgogICAgICAgICA8VGFyZ2V0Q29tbW9uT3B0aW9uPgogICAgICAgICAgIDxEZXZpY2U+QVJNQ000X0ZQPC9EZXZpY2U+CiAgICAgICAgICAgPFZlbmRvcj5BUk08L1ZlbmRvcj4KLSAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy40LjUuMDwvUGFja0lEPgorICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjUuMC4xPC9QYWNrSUQ+CiAgICAgICAgICAgPFBhY2tVUkw+aHR0cDovL3d3dy5rZWlsLmNvbS9wYWNrLzwvUGFja1VSTD4KICAgICAgICAgICA8Q3B1PklST00oMHgwMDAwMDAwMCwweDgwMDAwKSBJUkFNKDB4MjAwMDAwMDAsMHgyMDAwMCkgQ1BVVFlQRSgiQ29ydGV4LU00IikgRlBVMiBDTE9DSygxMjAwMDAwMCkgRVNFTCBFTElUVExFPC9DcHU+CiAgICAgICAgICAgPEZsYXNoVXRpbFNwZWM+PC9GbGFzaFV0aWxTcGVjPgpAQCAtMzQ0LDEwICszNDUsMjEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ000X01QVVxwb3J0LmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICA8L0ZpbGVzPgogICAgICAgICA8L0dyb3VwPgogICAgICAgPC9Hcm91cHM+CiAgICAgPC9UYXJnZXQ+CiAgIDwvVGFyZ2V0cz4KIAorICA8UlRFPgorICAgIDxhcGlzLz4KKyAgICA8Y29tcG9uZW50cy8+CisgICAgPGZpbGVzLz4KKyAgPC9SVEU+CisKIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCA1YjQ1Y2UxLi5iMTA5OGVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAppbmRleCBmZmU1OGEwLi5lMDdmY2QyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKQEAgLTgsNyArOCw3IEBACiAgIDxFeHRlbnNpb25zPgogICAgIDxjRXh0PiouYzwvY0V4dD4KICAgICA8YUV4dD4qLnMqOyAqLnNyYzsgKi5hKjwvYUV4dD4KLSAgICA8b0V4dD4qLm9iajwvb0V4dD4KKyAgICA8b0V4dD4qLm9iajsgKi5vPC9vRXh0PgogICAgIDxsRXh0PioubGliPC9sRXh0PgogICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0PgogICAgIDxwRXh0PioucGxtPC9wRXh0PgpAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgICAgIDx0UlN5c1Z3PjE8L3RSU3lzVnc+CiAgICAgICAgIDxzUnVuRGViPjA8L3NSdW5EZWI+CiAgICAgICAgIDxzTHJ0aW1lPjA8L3NMcnRpbWU+CisgICAgICAgIDxiRXZSZWNPbj4xPC9iRXZSZWNPbj4KICAgICAgICAgPG5Uc2VsPjA8L25Uc2VsPgogICAgICAgICA8c0RsbD48L3NEbGw+CiAgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CkBAIC0yMDMsOSArMjA0LDE2IEBACiAgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KICAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgogICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+Ci0gICAgICA8TGluMkV4ZWN1dGFibGU+PC9MaW4yRXhlY3V0YWJsZT4KLSAgICAgIDxMaW4yQ29uZmlnRmlsZT48L0xpbjJDb25maWdGaWxlPgotICAgICAgPGJMaW4yQXV0bz4wPC9iTGluMkF1dG8+CisgICAgICA8YkF1dG9HZW5EPjA8L2JBdXRvR2VuRD4KKyAgICAgIDxMbnRFeEZsYWdzPjA8L0xudEV4RmxhZ3M+CisgICAgICA8cE1pc3JhTmFtZT48L3BNaXNyYU5hbWU+CisgICAgICA8cHN6TXJ1bGU+PC9wc3pNcnVsZT4KKyAgICAgIDxwU2luZ0NtZHM+PC9wU2luZ0NtZHM+CisgICAgICA8cE11bHRDbWRzPjwvcE11bHRDbWRzPgorICAgICAgPHBNaXNyYU5hbWVwPjwvcE1pc3JhTmFtZXA+CisgICAgICA8cHN6TXJ1bGVwPjwvcHN6TXJ1bGVwPgorICAgICAgPHBTaW5nQ21kc3A+PC9wU2luZ0NtZHNwPgorICAgICAgPHBNdWx0Q21kc3A+PC9wTXVsdENtZHNwPgogICAgIDwvVGFyZ2V0T3B0aW9uPgogICA8L1RhcmdldD4KIApAQCAtMzc1LDYgKzM4MywxOCBAQAogICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CiAgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgogICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEzPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RyZWFtX2J1ZmZlci5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KICAgPC9Hcm91cD4KIAogPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvanggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAppbmRleCA3MDU2ZTI1Li5hMWVmNjQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeApAQCAtMTAsMTIgKzEwLDEzIEBACiAgICAgICA8VGFyZ2V0TmFtZT5SVE9TRGVtbzwvVGFyZ2V0TmFtZT4KICAgICAgIDxUb29sc2V0TnVtYmVyPjB4NDwvVG9vbHNldE51bWJlcj4KICAgICAgIDxUb29sc2V0TmFtZT5BUk0tQURTPC9Ub29sc2V0TmFtZT4KLSAgICAgIDxwQ0NVc2VkPjUwNjAwNjE6OlY1LjA2IHVwZGF0ZSAxIChidWlsZCA2MSk6OkFSTUNDPC9wQ0NVc2VkPgorICAgICAgPHBDQ1VzZWQ+NTA2MDUyODo6VjUuMDYgdXBkYXRlIDUgKGJ1aWxkIDUyOCk6OkFSTUNDPC9wQ0NVc2VkPgorICAgICAgPHVBQzY+MDwvdUFDNj4KICAgICAgIDxUYXJnZXRPcHRpb24+CiAgICAgICAgIDxUYXJnZXRDb21tb25PcHRpb24+CiAgICAgICAgICAgPERldmljZT5BUk1DTTRfRlA8L0RldmljZT4KICAgICAgICAgICA8VmVuZG9yPkFSTTwvVmVuZG9yPgotICAgICAgICAgIDxQYWNrSUQ+QVJNLkNNU0lTLjQuNS4wPC9QYWNrSUQ+CisgICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjE8L1BhY2tJRD4KICAgICAgICAgICA8UGFja1VSTD5odHRwOi8vd3d3LmtlaWwuY29tL3BhY2svPC9QYWNrVVJMPgogICAgICAgICAgIDxDcHU+SVJPTSgweDAwMDAwMDAwLDB4ODAwMDApIElSQU0oMHgyMDAwMDAwMCwweDIwMDAwKSBDUFVUWVBFKCJDb3J0ZXgtTTQiKSBGUFUyIENMT0NLKDEyMDAwMDAwKSBFU0VMIEVMSVRUTEU8L0NwdT4KICAgICAgICAgICA8Rmxhc2hVdGlsU3BlYz48L0ZsYXNoVXRpbFNwZWM+CkBAIC0zMjgsNiArMzI5LDkgQEAKICAgICAgICAgICAgIDx2NkxhbmdQPjA8L3Y2TGFuZ1A+CiAgICAgICAgICAgICA8dlNob3J0RW4+MDwvdlNob3J0RW4+CiAgICAgICAgICAgICA8dlNob3J0V2NoPjA8L3ZTaG9ydFdjaD4KKyAgICAgICAgICAgIDx2Nkx0bz4wPC92Nkx0bz4KKyAgICAgICAgICAgIDx2Nld0RT4wPC92Nld0RT4KKyAgICAgICAgICAgIDx2NlJ0dGk+MDwvdjZSdHRpPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTM0NSw2ICszNDksNyBAQAogICAgICAgICAgICAgPE5vV2Fybj4wPC9Ob1dhcm4+CiAgICAgICAgICAgICA8dVN1cnBJbmM+MDwvdVN1cnBJbmM+CiAgICAgICAgICAgICA8dXNlWE8+MDwvdXNlWE8+CisgICAgICAgICAgICA8dUNsYW5nQXM+MDwvdUNsYW5nQXM+CiAgICAgICAgICAgICA8VmFyaW91c0NvbnRyb2xzPgogICAgICAgICAgICAgICA8TWlzY0NvbnRyb2xzPjwvTWlzY0NvbnRyb2xzPgogICAgICAgICAgICAgICA8RGVmaW5lPjwvRGVmaW5lPgpAQCAtNDQ1LDEwICs0NTAsMjEgQEAKICAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgogICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHBvcnRhYmxlXENvbW1vblxtcHVfd3JhcHBlcnMuYzwvRmlsZVBhdGg+CiAgICAgICAgICAgICA8L0ZpbGU+CisgICAgICAgICAgICA8RmlsZT4KKyAgICAgICAgICAgICAgPEZpbGVOYW1lPnN0cmVhbV9idWZmZXIuYzwvRmlsZU5hbWU+CisgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmM8L0ZpbGVQYXRoPgorICAgICAgICAgICAgPC9GaWxlPgogICAgICAgICAgIDwvRmlsZXM+CiAgICAgICAgIDwvR3JvdXA+CiAgICAgICA8L0dyb3Vwcz4KICAgICA8L1RhcmdldD4KICAgPC9UYXJnZXRzPgogCisgIDxSVEU+CisgICAgPGFwaXMvPgorICAgIDxjb21wb25lbnRzLz4KKyAgICA8ZmlsZXMvPgorICA8L1JURT4KKwogPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggOTBlMTYyNS4uMTg5ZDA1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTUgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU2ltdWxhdG9yX0tlaWxfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jCmluZGV4IDlkMTJjNDUuLjAyNDQyYzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KQEAgLTkxLDYgKzUwLDcgQEAKICNpbmNsdWRlICJzZW1waHIuaCINCiAjaW5jbHVkZSAidGltZXJzLmgiDQogI2luY2x1ZGUgImV2ZW50X2dyb3Vwcy5oIg0KKyNpbmNsdWRlICJzdHJlYW1fYnVmZmVyLmgiDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQpAQCAtMTk4LDYgKzE1OCw3IEBACiBzdGF0aWMgdm9pZCBwcnZFeGVyY2lzZUV2ZW50R3JvdXBBUEkoIHZvaWQgKTsNCiBzdGF0aWMgdm9pZCBwcnZFeGVyY2lzZVNlbWFwaG9yZUFQSSggdm9pZCApOw0KIHN0YXRpYyB2b2lkIHBydkV4ZXJjaXNlVGFza05vdGlmaWNhdGlvbkFQSSggdm9pZCApOw0KK3N0YXRpYyB2b2lkIHBydkV4ZXJjaXNlU3RyZWFtQnVmZmVyQVBJKCB2b2lkICk7DQogDQogLyoNCiAgKiBKdXN0IGNvbmZpZ3VyZXMgYW55IGNsb2NrcyBhbmQgSU8gbmVjZXNzYXJ5Lg0KQEAgLTI1Miw3ICsyMTMsMTEgQEAKIC8qIFRoZSB0aW1lciB0aGF0IHBlcmlvZGljYWxseSBzZW5kcyBkYXRhIHRvIHRoZSBjaGVjayB0YXNrIG9uIHRoZSBxdWV1ZS4gKi8NCiBzdGF0aWMgVGltZXJIYW5kbGVfdCB4VGltZXIgPSBOVUxMOw0KIA0KKy8qIEp1c3QgdXNlZCB0byBjaGVjayBzdGFydCB1cCBjb2RlIGZvciBpbml0aWFsaXNlZCBhbiB1bmluaXRpYWxpc2VkIGRhdGEuICovDQordm9sYXRpbGUgdWludDMyX3QgdWwxID0gMHgxMjMsIHVsMiA9IDA7DQorDQogI2lmIGRlZmluZWQgKCBfX0dOVUNfXyApDQorCS8qIE1lbW9yeSBtYXAgcmVhZCBkaXJlY3RsIGZyb20gbGlua2VyIHZhcmlhYmxlcy4gKi8NCiAJZXh0ZXJuIHVpbnQzMl90IF9fRkxBU0hfc2VnbWVudF9zdGFydF9fW107DQogCWV4dGVybiB1aW50MzJfdCBfX0ZMQVNIX3NlZ21lbnRfZW5kX19bXTsNCiAJZXh0ZXJuIHVpbnQzMl90IF9fU1JBTV9zZWdtZW50X3N0YXJ0X19bXTsNCkBAIC0yNjQsNiArMjI5LDcgQEAKIAlleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2Z1bmN0aW9uc19hY3R1YWxfZW5kX19bXTsNCiAJZXh0ZXJuIHVpbnQzMl90IF9fcHJpdmlsZWdlZF9kYXRhX2FjdHVhbF9lbmRfX1tdOw0KICNlbHNlDQorCS8qIE11c3QgYmUgc2V0IG1hbnVhbGx5IHRvIG1hdGNoIG1lbW9yeSBtYXAuICovDQogCWNvbnN0IHVpbnQzMl90ICogX19GTEFTSF9zZWdtZW50X3N0YXJ0X18gPSAoIHVpbnQzMl90ICogKSAweDAwVUw7DQogCWNvbnN0IHVpbnQzMl90ICogX19GTEFTSF9zZWdtZW50X2VuZF9fID0gKCB1aW50MzJfdCAqICkgMHgwMDA4MDAwMFVMOw0KIAljb25zdCB1aW50MzJfdCAqIF9fU1JBTV9zZWdtZW50X3N0YXJ0X18gPSAoIHVpbnQzMl90ICogKSAweDIwMDAwMDAwVUw7DQpAQCAtNDI4LDEwICszOTQsOSBAQAogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQotdm9sYXRpbGUgdWludDMyX3QgdWwxID0gMHgxMjMsIHVsMiA9IDA7DQotDQogaW50IG1haW4oIHZvaWQgKQ0KIHsNCisJLyogVXNlZCB0byBjaGVjayBsaW5rZXIgY29uZmlndXJhdGlvbi4gKi8NCiAJY29uZmlnQVNTRVJUKCB1bDEgPT0gMHgxMjMgKTsNCiAJY29uZmlnQVNTRVJUKCB1bDIgPT0gMCApOw0KIAlwcnZTZXR1cEhhcmR3YXJlKCk7DQpAQCAtNTE1LDcgKzQ4MCw3IEBACiB0aGF0IHRoaXMgdGFzayBoYXMgYWNjZXNzIHRvLiAqLw0KIHZvbGF0aWxlIHVpbnQzMl90ICpwdWxPdmVybGFpZENvdW50ZXIzID0gKCB1aW50MzJfdCAqICkgJiggY1JlYWRXcml0ZUFycmF5WyAwIF0gKSwgKnB1bE92ZXJsYWlkQ291bnRlcjQgPSAoIHVpbnQzMl90ICogKSAmKCBjUmVhZFdyaXRlQXJyYXlbIDQgXSApOw0KIA0KLS8qIHVsQ3ljbGVDb3VudCBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGN5Y2xlIG9mIHRoZSBjaGVjayB0YXNrLiAgSXQgY2FuIGJlIA0KKy8qIHVsQ3ljbGVDb3VudCBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGN5Y2xlIG9mIHRoZSBjaGVjayB0YXNrLiAgSXQgY2FuIGJlDQogdmlld2VkIHVwZGF0aW5nIGluIHRoZSBLZWlsIHdhdGNoIHdpbmRvdyBhcyB0aGUgc2ltdWxhdG9yIGRvZXMgbm90IHByaW50IHRvDQogdGhlIElUTSBwb3J0LiAqLw0KIHZvbGF0aWxlIHVpbnQzMl90IHVsQ3ljbGVDb3VudCA9IDA7DQpAQCAtNTg1LDcgKzU1MCw3IEBACiANCiAJCQkJCS8qKioqIFByaW50IHBjU3RhdHVzTWVzc2FnZSBoZXJlLiAqKioqLw0KIAkJCQkJKCB2b2lkICkgcGNTdGF0dXNNZXNzYWdlOw0KLQkJCQkJDQorDQogCQkJCQkvKiBUaGUgY3ljbGUgY291bnQgY2FuIGJlIHZpZXdlZCB1cGRhdGluZyBpbiB0aGUgS2VpbCB3YXRjaA0KIAkJCQkJd2luZG93IGlmIElUTSBwcmludGYgaXMgbm90IGJlaW5nIHVzZWQuICovDQogCQkJCQl1bEN5Y2xlQ291bnQrKzsNCkBAIC03OTgsNiArNzYzLDcgQEAKIAlwcnZFeGVyY2lzZUV2ZW50R3JvdXBBUEkoKTsNCiAJcHJ2RXhlcmNpc2VTZW1hcGhvcmVBUEkoKTsNCiAJcHJ2RXhlcmNpc2VUYXNrTm90aWZpY2F0aW9uQVBJKCk7DQorCXBydkV4ZXJjaXNlU3RyZWFtQnVmZmVyQVBJKCk7DQogDQogCS8qIEZvciBjb2RlIGNvdmVyYWdlIHRlc3QgcHVycG9zZXMgaXQgaXMgZGVsZXRlZCBieSB0aGUgSWRsZSB0YXNrLiAqLw0KIAljb25maWdBU1NFUlQoIHV4VGFza0dldFN0YWNrSGlnaFdhdGVyTWFyayggTlVMTCApID4gMCApOw0KQEAgLTgwNSw2ICs3NzEsNjEgQEAKIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCitzdGF0aWMgdm9pZCBwcnZFeGVyY2lzZVN0cmVhbUJ1ZmZlckFQSSggdm9pZCApDQorew0KK3VpbnQ4X3QgdWNCdWZmZXJbIDEwIF07DQorQmFzZVR5cGVfdCB4LCB4UmVhZDsNCitzaXplX3QgeFJldHVybmVkOw0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorDQorCS8qIEp1c3QgbWFrZXMgQVBJIGNhbGxzIHRvIGVuc3VyZSB0aGUgTVBVIHZlcnNpb25zIGFyZSB1c2VkLiAqLw0KKw0KKwl4U3RyZWFtQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZSggc2l6ZW9mKCB1Y0J1ZmZlciApICwgMSApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXIgKTsNCisNCisJZm9yKCB4ID0gMDsgeCA8ICggc2l6ZW9mKCB1Y0J1ZmZlciApICogMiApOyB4KysgKQ0KKwl7DQorCQkvKiBXcml0ZSBhbmQgY2hlY2sgdGhlIHZhbHVlIGlzIHdyaXR0ZW4sIHRoZW4gcmVhZCBhbmQgY2hlY2sgdGhlIHZhbHVlDQorCQlyZWFkIGlzIGV4cGVjdGVkLiAqLw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJICAgKCB2b2lkICogKSAmeCwNCisJCQkJCQkJCQkgICBzaXplb2YoIHggKSwNCisJCQkJCQkJCQkgICAwICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBzaXplb2YoIHggKSApOw0KKw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCSAgKCB2b2lkICogKSAmeFJlYWQsDQorCQkJCQkJCQkJCSAgc2l6ZW9mKCB4UmVhZCApLA0KKwkJCQkJCQkJCQkgIDAgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNpemVvZiggeFJlYWQgKSApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmVhZCA9PSB4ICk7DQorDQorCQl4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkgKCB2b2lkICogKSAmeCwNCisJCQkJCQkJCSBzaXplb2YoIHggKSwNCisJCQkJCQkJCSBOVUxMICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBzaXplb2YoIHggKSApOw0KKw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQkJCSAoIHZvaWQgKiApICZ4UmVhZCwNCisJCQkJCQkJCQkJCQkgc2l6ZW9mKCB4UmVhZCApLA0KKwkJCQkJCQkJCQkJCSBOVUxMICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBzaXplb2YoIHhSZWFkICkgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJlYWQgPT0geCApOw0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICkgPT0gc2l6ZW9mKCB1Y0J1ZmZlciApICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApID09IDAgKTsNCisJfQ0KKw0KKwkvKiBDYWxsIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIGV4ZXJjaXNlZCB5ZXQgYmVmb3JlIGZpbmlzaGluZyBieQ0KKwlkZWxldGluZyB0aGUgc3RyZWFtIGJ1ZmZlci4gKi8NCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsKCB4U3RyZWFtQnVmZmVyLCAwICkgPT0gcGRUUlVFICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlclJlc2V0KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRQQVNTICk7DQorCXZTdHJlYW1CdWZmZXJEZWxldGUoIHhTdHJlYW1CdWZmZXIgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQogdm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApDQogew0KIHZvbGF0aWxlIGNvbnN0IHVpbnQzMl90ICpwdWw7DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNmM2ZmQyZi4uYzI5NDYwYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKaW5kZXggYzk2NzlkMi4uY2RjNTYxMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2b3B0eAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4CkBAIC04LDcgKzgsNyBAQAogICA8RXh0ZW5zaW9ucz4KICAgICA8Y0V4dD4qLmM7Ki5TPC9jRXh0PgogICAgIDxhRXh0PjwvYUV4dD4KLSAgICA8b0V4dD4qLm9iajwvb0V4dD4KKyAgICA8b0V4dD4qLm9iajsgKi5vPC9vRXh0PgogICAgIDxsRXh0PioubGliPC9sRXh0PgogICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0PgogICAgIDxwRXh0PioucGxtPC9wRXh0PgpAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgICAgIDx0UlN5c1Z3PjE8L3RSU3lzVnc+CiAgICAgICAgIDxzUnVuRGViPjA8L3NSdW5EZWI+CiAgICAgICAgIDxzTHJ0aW1lPjA8L3NMcnRpbWU+CisgICAgICAgIDxiRXZSZWNPbj4xPC9iRXZSZWNPbj4KICAgICAgICAgPG5Uc2VsPjA8L25Uc2VsPgogICAgICAgICA8c0RsbD48L3NEbGw+CiAgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CkBAIC0xOTgsOSArMTk5LDE2IEBACiAgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KICAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgogICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+Ci0gICAgICA8TGluMkV4ZWN1dGFibGU+PC9MaW4yRXhlY3V0YWJsZT4KLSAgICAgIDxMaW4yQ29uZmlnRmlsZT48L0xpbjJDb25maWdGaWxlPgotICAgICAgPGJMaW4yQXV0bz4wPC9iTGluMkF1dG8+CisgICAgICA8YkF1dG9HZW5EPjA8L2JBdXRvR2VuRD4KKyAgICAgIDxMbnRFeEZsYWdzPjA8L0xudEV4RmxhZ3M+CisgICAgICA8cE1pc3JhTmFtZT48L3BNaXNyYU5hbWU+CisgICAgICA8cHN6TXJ1bGU+PC9wc3pNcnVsZT4KKyAgICAgIDxwU2luZ0NtZHM+PC9wU2luZ0NtZHM+CisgICAgICA8cE11bHRDbWRzPjwvcE11bHRDbWRzPgorICAgICAgPHBNaXNyYU5hbWVwPjwvcE1pc3JhTmFtZXA+CisgICAgICA8cHN6TXJ1bGVwPjwvcHN6TXJ1bGVwPgorICAgICAgPHBTaW5nQ21kc3A+PC9wU2luZ0NtZHNwPgorICAgICAgPHBNdWx0Q21kc3A+PC9wTXVsdENtZHNwPgogICAgICAgPERlYnVnRGVzY3JpcHRpb24+CiAgICAgICAgIDxFbmFibGU+MTwvRW5hYmxlPgogICAgICAgICA8RW5hYmxlTG9nPjA8L0VuYWJsZUxvZz4KQEAgLTM2NCw2ICszNzIsMTggQEAKICAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgogICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KICAgICA8L0ZpbGU+CisgICAgPEZpbGU+CisgICAgICA8R3JvdXBOdW1iZXI+MzwvR3JvdXBOdW1iZXI+CisgICAgICA8RmlsZU51bWJlcj4xMjwvRmlsZU51bWJlcj4KKyAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KKyAgICAgIDx0dkV4cD4wPC90dkV4cD4KKyAgICAgIDx0dkV4cE9wdERsZz4wPC90dkV4cE9wdERsZz4KKyAgICAgIDxiRGF2ZTI+MDwvYkRhdmUyPgorICAgICAgPFBhdGhXaXRoRmlsZU5hbWU+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvUGF0aFdpdGhGaWxlTmFtZT4KKyAgICAgIDxGaWxlbmFtZVdpdGhvdXRQYXRoPnN0cmVhbV9idWZmZXIuYzwvRmlsZW5hbWVXaXRob3V0UGF0aD4KKyAgICAgIDxSdGVGbGc+MDwvUnRlRmxnPgorICAgICAgPGJTaGFyZWQ+MDwvYlNoYXJlZD4KKyAgICA8L0ZpbGU+CiAgIDwvR3JvdXA+CiAKIDwvUHJvamVjdE9wdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKaW5kZXggNjQ1ZDQ4Mi4uYjcxZDQ0OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKQEAgLTExLDExICsxMSwxMiBAQAogICAgICAgPFRvb2xzZXROdW1iZXI+MHgzPC9Ub29sc2V0TnVtYmVyPgogICAgICAgPFRvb2xzZXROYW1lPkFSTS1HTlU8L1Rvb2xzZXROYW1lPgogICAgICAgPHBDQ1VzZWQ+NTA2MDA2MTo6VjUuMDYgdXBkYXRlIDEgKGJ1aWxkIDYxKTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8dUFDNj4wPC91QUM2PgogICAgICAgPFRhcmdldE9wdGlvbj4KICAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KICAgICAgICAgICA8RGV2aWNlPkFSTUNNNF9GUDwvRGV2aWNlPgogICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+Ci0gICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjAtQmV0YTQ8L1BhY2tJRD4KKyAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMTwvUGFja0lEPgogICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+CiAgICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1PgogICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KQEAgLTMzOSwxMCArMzQwLDIxIEBACiAgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxHQ0NcQVJNX0NNNF9NUFVccG9ydC5jPC9GaWxlUGF0aD4KICAgICAgICAgICAgIDwvRmlsZT4KKyAgICAgICAgICAgIDxGaWxlPgorICAgICAgICAgICAgICA8RmlsZU5hbWU+c3RyZWFtX2J1ZmZlci5jPC9GaWxlTmFtZT4KKyAgICAgICAgICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgICAgICAgICA8RmlsZVBhdGg+Li5cLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYzwvRmlsZVBhdGg+CisgICAgICAgICAgICA8L0ZpbGU+CiAgICAgICAgICAgPC9GaWxlcz4KICAgICAgICAgPC9Hcm91cD4KICAgICAgIDwvR3JvdXBzPgogICAgIDwvVGFyZ2V0PgogICA8L1RhcmdldHM+CiAKKyAgPFJURT4KKyAgICA8YXBpcy8+CisgICAgPGNvbXBvbmVudHMvPgorICAgIDxmaWxlcy8+CisgIDwvUlRFPgorCiA8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvR0NDX1NwZWNpZmljL1JlZ1Rlc3QuYwppbmRleCA1YjQ1Y2UxLi5iMTA5OGVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9HQ0NfU3BlY2lmaWMvUmVnVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0dDQ19TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZvcHR4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKaW5kZXggNThjZjk1Mi4uN2Q0NGI5MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dm9wdHgKQEAgLTgsNyArOCw3IEBACiAgIDxFeHRlbnNpb25zPgogICAgIDxjRXh0PiouYzwvY0V4dD4KICAgICA8YUV4dD4qLnMqOyAqLnNyYzsgKi5hKjwvYUV4dD4KLSAgICA8b0V4dD4qLm9iajwvb0V4dD4KKyAgICA8b0V4dD4qLm9iajsgKi5vPC9vRXh0PgogICAgIDxsRXh0PioubGliPC9sRXh0PgogICAgIDx0RXh0PioudHh0OyAqLmg7ICouaW5jPC90RXh0PgogICAgIDxwRXh0PioucGxtPC9wRXh0PgpAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgICAgIDx0UlN5c1Z3PjE8L3RSU3lzVnc+CiAgICAgICAgIDxzUnVuRGViPjA8L3NSdW5EZWI+CiAgICAgICAgIDxzTHJ0aW1lPjA8L3NMcnRpbWU+CisgICAgICAgIDxiRXZSZWNPbj4xPC9iRXZSZWNPbj4KICAgICAgICAgPG5Uc2VsPjA8L25Uc2VsPgogICAgICAgICA8c0RsbD48L3NEbGw+CiAgICAgICAgIDxzRGxsUGE+PC9zRGxsUGE+CkBAIC0xOTMsOSArMTk0LDE2IEBACiAgICAgICA8TGludEV4ZWN1dGFibGU+PC9MaW50RXhlY3V0YWJsZT4KICAgICAgIDxMaW50Q29uZmlnRmlsZT48L0xpbnRDb25maWdGaWxlPgogICAgICAgPGJMaW50QXV0bz4wPC9iTGludEF1dG8+Ci0gICAgICA8TGluMkV4ZWN1dGFibGU+PC9MaW4yRXhlY3V0YWJsZT4KLSAgICAgIDxMaW4yQ29uZmlnRmlsZT48L0xpbjJDb25maWdGaWxlPgotICAgICAgPGJMaW4yQXV0bz4wPC9iTGluMkF1dG8+CisgICAgICA8YkF1dG9HZW5EPjA8L2JBdXRvR2VuRD4KKyAgICAgIDxMbnRFeEZsYWdzPjA8L0xudEV4RmxhZ3M+CisgICAgICA8cE1pc3JhTmFtZT48L3BNaXNyYU5hbWU+CisgICAgICA8cHN6TXJ1bGU+PC9wc3pNcnVsZT4KKyAgICAgIDxwU2luZ0NtZHM+PC9wU2luZ0NtZHM+CisgICAgICA8cE11bHRDbWRzPjwvcE11bHRDbWRzPgorICAgICAgPHBNaXNyYU5hbWVwPjwvcE1pc3JhTmFtZXA+CisgICAgICA8cHN6TXJ1bGVwPjwvcHN6TXJ1bGVwPgorICAgICAgPHBTaW5nQ21kc3A+PC9wU2luZ0NtZHNwPgorICAgICAgPHBNdWx0Q21kc3A+PC9wTXVsdENtZHNwPgogICAgIDwvVGFyZ2V0T3B0aW9uPgogICA8L1RhcmdldD4KIApAQCAtMzUzLDYgKzM2MSwxOCBAQAogICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CiAgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgogICAgIDwvRmlsZT4KKyAgICA8RmlsZT4KKyAgICAgIDxHcm91cE51bWJlcj4zPC9Hcm91cE51bWJlcj4KKyAgICAgIDxGaWxlTnVtYmVyPjEyPC9GaWxlTnVtYmVyPgorICAgICAgPEZpbGVUeXBlPjE8L0ZpbGVUeXBlPgorICAgICAgPHR2RXhwPjA8L3R2RXhwPgorICAgICAgPHR2RXhwT3B0RGxnPjA8L3R2RXhwT3B0RGxnPgorICAgICAgPGJEYXZlMj4wPC9iRGF2ZTI+CisgICAgICA8UGF0aFdpdGhGaWxlTmFtZT4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9QYXRoV2l0aEZpbGVOYW1lPgorICAgICAgPEZpbGVuYW1lV2l0aG91dFBhdGg+c3RyZWFtX2J1ZmZlci5jPC9GaWxlbmFtZVdpdGhvdXRQYXRoPgorICAgICAgPFJ0ZUZsZz4wPC9SdGVGbGc+CisgICAgICA8YlNoYXJlZD4wPC9iU2hhcmVkPgorICAgIDwvRmlsZT4KICAgPC9Hcm91cD4KIAogPC9Qcm9qZWN0T3B0PgpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SVE9TRGVtby51dnByb2p4CmluZGV4IDNhMjU0ZGEuLjk0YWYxNzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUlRPU0RlbW8udXZwcm9qeAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9LZWlsX1NwZWNpZmljL1JUT1NEZW1vLnV2cHJvangKQEAgLTEwLDEyICsxMCwxMyBAQAogICAgICAgPFRhcmdldE5hbWU+UlRPU0RlbW88L1RhcmdldE5hbWU+CiAgICAgICA8VG9vbHNldE51bWJlcj4weDQ8L1Rvb2xzZXROdW1iZXI+CiAgICAgICA8VG9vbHNldE5hbWU+QVJNLUFEUzwvVG9vbHNldE5hbWU+Ci0gICAgICA8cENDVXNlZD41MDYwMTgzOjpWNS4wNiB1cGRhdGUgMiAoYnVpbGQgMTgzKTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8cENDVXNlZD41MDYwNTI4OjpWNS4wNiB1cGRhdGUgNSAoYnVpbGQgNTI4KTo6QVJNQ0M8L3BDQ1VzZWQ+CisgICAgICA8dUFDNj4wPC91QUM2PgogICAgICAgPFRhcmdldE9wdGlvbj4KICAgICAgICAgPFRhcmdldENvbW1vbk9wdGlvbj4KICAgICAgICAgICA8RGV2aWNlPkFSTUNNNF9GUDwvRGV2aWNlPgogICAgICAgICAgIDxWZW5kb3I+QVJNPC9WZW5kb3I+Ci0gICAgICAgICAgPFBhY2tJRD5BUk0uQ01TSVMuNS4wLjAtQmV0YTQ8L1BhY2tJRD4KKyAgICAgICAgICA8UGFja0lEPkFSTS5DTVNJUy41LjAuMTwvUGFja0lEPgogICAgICAgICAgIDxQYWNrVVJMPmh0dHA6Ly93d3cua2VpbC5jb20vcGFjay88L1BhY2tVUkw+CiAgICAgICAgICAgPENwdT5JUk9NKDB4MDAwMDAwMDAsMHg4MDAwMCkgSVJBTSgweDIwMDAwMDAwLDB4MjAwMDApIENQVVRZUEUoIkNvcnRleC1NNCIpIEZQVTIgQ0xPQ0soMTIwMDAwMDApIEVTRUwgRUxJVFRMRTwvQ3B1PgogICAgICAgICAgIDxGbGFzaFV0aWxTcGVjPjwvRmxhc2hVdGlsU3BlYz4KQEAgLTMzMCw2ICszMzEsNyBAQAogICAgICAgICAgICAgPHZTaG9ydFdjaD4wPC92U2hvcnRXY2g+CiAgICAgICAgICAgICA8djZMdG8+MDwvdjZMdG8+CiAgICAgICAgICAgICA8djZXdEU+MDwvdjZXdEU+CisgICAgICAgICAgICA8djZSdHRpPjA8L3Y2UnR0aT4KICAgICAgICAgICAgIDxWYXJpb3VzQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxNaXNjQ29udHJvbHM+PC9NaXNjQ29udHJvbHM+CiAgICAgICAgICAgICAgIDxEZWZpbmU+PC9EZWZpbmU+CkBAIC0zNDcsNiArMzQ5LDcgQEAKICAgICAgICAgICAgIDxOb1dhcm4+MDwvTm9XYXJuPgogICAgICAgICAgICAgPHVTdXJwSW5jPjA8L3VTdXJwSW5jPgogICAgICAgICAgICAgPHVzZVhPPjA8L3VzZVhPPgorICAgICAgICAgICAgPHVDbGFuZ0FzPjA8L3VDbGFuZ0FzPgogICAgICAgICAgICAgPFZhcmlvdXNDb250cm9scz4KICAgICAgICAgICAgICAgPE1pc2NDb250cm9scz48L01pc2NDb250cm9scz4KICAgICAgICAgICAgICAgPERlZmluZT48L0RlZmluZT4KQEAgLTQ0MiwxMCArNDQ1LDIxIEBACiAgICAgICAgICAgICAgIDxGaWxlVHlwZT4xPC9GaWxlVHlwZT4KICAgICAgICAgICAgICAgPEZpbGVQYXRoPi4uXC4uXC4uXFNvdXJjZVxwb3J0YWJsZVxDb21tb25cbXB1X3dyYXBwZXJzLmM8L0ZpbGVQYXRoPgogICAgICAgICAgICAgPC9GaWxlPgorICAgICAgICAgICAgPEZpbGU+CisgICAgICAgICAgICAgIDxGaWxlTmFtZT5zdHJlYW1fYnVmZmVyLmM8L0ZpbGVOYW1lPgorICAgICAgICAgICAgICA8RmlsZVR5cGU+MTwvRmlsZVR5cGU+CisgICAgICAgICAgICAgIDxGaWxlUGF0aD4uLlwuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jPC9GaWxlUGF0aD4KKyAgICAgICAgICAgIDwvRmlsZT4KICAgICAgICAgICA8L0ZpbGVzPgogICAgICAgICA8L0dyb3VwPgogICAgICAgPC9Hcm91cHM+CiAgICAgPC9UYXJnZXQ+CiAgIDwvVGFyZ2V0cz4KIAorICA8UlRFPgorICAgIDxhcGlzLz4KKyAgICA8Y29tcG9uZW50cy8+CisgICAgPGZpbGVzLz4KKyAgPC9SVEU+CisKIDwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL0tlaWxfU3BlY2lmaWMvUmVnVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKaW5kZXggOTBlMTYyNS4uMTg5ZDA1YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvS2VpbF9TcGVjaWZpYy9SZWdUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMCAtIENvcHlyaWdodCAoQykgMjAxNSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX01QVV9TdGF0aWNfU2ltdWxhdG9yX0tlaWxfR0NDL21haW4uYwppbmRleCA1MGY2Njc5Li5iMWIxZWIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9NUFVfU3RhdGljX1NpbXVsYXRvcl9LZWlsX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfTVBVX1N0YXRpY19TaW11bGF0b3JfS2VpbF9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvU3lzdGVtL0lBUi9JbnRlcnJ1cHRfRW50cnlfU3R1YnMuYXNtIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9TeXN0ZW0vSUFSL0ludGVycnVwdF9FbnRyeV9TdHVicy5hc20KaW5kZXggMmI4YzExMS4uNzQ2ZDc1NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9TeXN0ZW0vSUFSL0ludGVycnVwdF9FbnRyeV9TdHVicy5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9TeXN0ZW0vSUFSL0ludGVycnVwdF9FbnRyeV9TdHVicy5hc20KQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIAlTRUNUSU9OIGludHZlYzpDT0RFOlJPT1QoMikNCiAJQVJNDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTAzYWYzMC4uMjljMzZmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDgyNWJlMTguLmI5MjVlYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwppbmRleCAwMTdiNGRlLi4zN2EyMGU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDdiMjRjZTYuLmQ3MGY5ZDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJaL1Qgc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDJkMTcxMzcuLmYzZjZhYzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0dDQy5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0X0dDQy5TCmluZGV4IDEzZWY3Y2YuLmZmOGMyYjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9HQ0MuUworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3RfR0NDLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkuZ2xvYmFsIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9GdWxsX0RlbW8vcmVnX3Rlc3RfSUFSLmFzbSBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9JQVIuYXNtCmluZGV4IGRlNWIyM2EuLmZiZTFjZWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9JQVIuYXNtCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdF9JQVIuYXNtCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJUFVCTElDIHZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCVBVQkxJQyB2UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0Rl9SWl9UX0dDQ19JQVIvc3JjL21haW4uYwppbmRleCBiY2VhZDU5Li45NmJiMmY5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNEZfUlpfVF9HQ0NfSUFSL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRGX1JaX1RfR0NDX0lBUi9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvRnJlZVJUT1NDb25maWcuaAppbmRleCA4YTA1MWFkLi4yODcxZDVkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGUgZm9sbG93aW5nICNlcnJvciBkaXJlY3RpdmUgaXMgdG8gcmVtaW5kIHVzZXJzIHRoYXQgYSBiYXRjaCBmaWxlIG11c3QgYmUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmMKaW5kZXggMmFkMmYyMC4uMjViN2QxNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9MaWJyYXJ5L2hldC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L0xpYnJhcnkvaGV0LmgKaW5kZXggNDkxMzczMy4uYjI4NTQxMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9MaWJyYXJ5L2hldC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvTGlicmFyeS9oZXQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBfX0hFVF9IX18NCiAjZGVmaW5lIF9fSEVUX0hfXw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9QYXJUZXN0LmMKaW5kZXggNGNlZWM5OC4uYjBhZDRlYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L2Zsb3BfaGVyY3VsZXMuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvZmxvcF9oZXJjdWxlcy5jCmluZGV4IDRjOWVjNzcuLjMwYzkzMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvZmxvcF9oZXJjdWxlcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvZmxvcF9oZXJjdWxlcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYW4gKGVtdWxhdGVkKQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvZmxvcF9oZXJjdWxlcy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmgKaW5kZXggZjBkOWU0NC4uNTJlN2E3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9mbG9wX2hlcmN1bGVzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxPUF9UQVNLU19IDQogI2RlZmluZSBGTE9QX1RBU0tTX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbi5jCmluZGV4IDRkM2UwODQuLjA1YjgzODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9ibGlua3kuYwppbmRleCBlMTRkNmU0Li5hYjBmYmIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L21haW5fZnVsbC5jCmluZGV4IDE2ZmY0MDguLjhiNzQzYjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L3JlZ190ZXN0LmFzbSBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvcmVnX3Rlc3QuYXNtCmluZGV4IDYzYTYwZTcuLmI3YTkzNDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvcmVnX3Rlc3QuYXNtCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvcmVnX3Rlc3QuYXNtCkBAIC0xLDY4ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07ICAgIA0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICANCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgdHJhaW5pbmcsIGxhdGVzdCBpbmZvcm1hdGlvbiwgDQotOyAgICBsaWNlbnNlIGFuZCBjb250YWN0IGRldGFpbHMuDQotOyAgICANCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLg0KLTsNCi07ICAgIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgDQotOyAgICB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uLCBhbmQgbWlkZGxld2FyZSwgdW5kZXIgDQotOyAgICB0aGUgT3BlblJUT1MgYnJhbmQ6IGh0dHA6Ly93d3cuT3BlblJUT1MuY29tLiAgSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvDQotOyAgICBwcm92aWRlIGEgc2FmZXR5IGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiB1bmRlciANCi07ICAgIHRoZSBTYWZlUlRPUyBicmFuZDogaHR0cDovL3d3dy5TYWZlUlRPUy5jb20uDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIDsNCkBAIC04Nyw3ICs0OSw3IEBACiAJCW1vdgkJcjEsICAjMHgxMQ0KIAkJbW92CQlyMiwgICMweDIyDQogCQltb3YJCXIzLCAgIzB4MzMNCi0JCW1vdiAgICAgcjQsICAjMHg0NAkJDQorCQltb3YgICAgIHI0LCAgIzB4NDQNCiAJCW1vdiAgICAgcjUsICAjMHg1NQ0KIAkJbW92ICAgICByNiwgICMweDY2DQogCQltb3YgICAgIHI3LCAgIzB4NzcNCkBAIC0xMTgsNyArODAsNyBAQAogCQl2bW92IAlkMTUsIHI2LCByNw0KIAkuZW5kaWYNCiANCi0JDQorDQogdlJlZ1Rlc3RMb29wMToNCiANCiAJCTsgRm9yY2UgeWVpbGQNCkBAIC0yMjksMzQgKzE5MSwzNCBAQAogCQk7IGV4cGVjdGVkIGtub3duIHZhbHVlLCBqdW1waW5nIHRvIHZSZWdUZXN0RXJyb3IxIGlmIGFueSByZWdpc3RlciBjb250YWlucw0KIAkJOyBhbiB1bmV4cGVjdGVkIHZhbHVlLg0KIAkJY21wCQlyMCwgIzB4RkYNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMSwgIzB4MTENCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMiwgIzB4MjINCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMywgIzB4MzMNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyNCwgIzB4NDQNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyNSwgIzB4NTUNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyNiwgIzB4NjYNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyNywgIzB4NzcNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyOCwgIzB4ODgNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyOSwgIzB4OTkNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMTAsICMweEFBDQotCQlibmUJCXZSZWdUZXN0RXJyb3IxCQkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjENCiAJCWNtcAkJcjExLCAjMHhCQg0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMQkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQogCQljbXAJCXIxMiwgIzB4Q0MNCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjEJCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMQ0KIAkJY21wCQlyMTQsICMweEVFDQotCQlibmUJCXZSZWdUZXN0RXJyb3IxCQkNCi0JDQorCQlibmUJCXZSZWdUZXN0RXJyb3IxDQorDQogCQk7IFRoaXMgdGFzayBpcyBzdGlsbCBydW5uaW5nIHdpdGhvdXQganVtcGluZyB0byB2UmVnVGVzdEVycm9yMSwgc28gaW5jcmVtZW50DQogCQk7IHRoZSBsb29wIGNvdW50ZXIgc28gdGhlIGNoZWNrIHRhc2sga25vd3MgdGhlIHRhc2sgaXMgcnVubmluZyBlcnJvciBmcmVlLg0KIAkJc3RtZmQgICBzcCEsIHsgcjAtcjEgfQ0KQEAgLTI2NSwxMiArMjI3LDEyIEBACiAJCWFkZAkJcjEsIHIxLCAjMQ0KIAkJc3RyICAgICByMSwgW3IwXQ0KIAkJbGRtZmQgICBzcCEsIHsgcjAtcjEgfQ0KLQkJDQorDQogCQk7IExvb3AgYWdhaW4sIHBlcmZvcm1pbmcgdGhlIHNhbWUgdGVzdHMuDQogCQliCQl2UmVnVGVzdExvb3AxDQogDQogQ291bnQxQ29uc3QJLndvcmQJdWxSZWdUZXN0MUNvdW50ZXINCi0JDQorDQogdlJlZ1Rlc3RFcnJvcjE6DQogCQliICAgICAgIHZSZWdUZXN0RXJyb3IxDQogDQpAQCAtMjkzLDcgKzI1NSw3IEBACiAJCW1vdgkJcjEsICAjMHgxMTAwMDAwMA0KIAkJbW92CQlyMiwgICMweDIyMDAwMDAwDQogCQltb3YJCXIzLCAgIzB4MzMwMDAwMDANCi0JCW1vdiAgICAgcjQsICAjMHg0NDAwMDAwMAkJDQorCQltb3YgICAgIHI0LCAgIzB4NDQwMDAwMDANCiAJCW1vdiAgICAgcjUsICAjMHg1NTAwMDAwMA0KIAkJbW92ICAgICByNiwgICMweDY2MDAwMDAwDQogCQltb3YgICAgIHI3LCAgIzB4NzcwMDAwMDANCkBAIC0zMDMsNyArMjY1LDcgQEAKIAkJbW92ICAgICByMTEsICMweEJCMDAwMDAwDQogCQltb3YgICAgIHIxMiwgIzB4Q0MwMDAwMDANCiAJCW1vdiAgICAgcjE0LCAjMHhFRTAwMDAwMA0KLQkNCisNCiAJLmlmIChfX1RJX1ZGUF9TVVBQT1JUX18pDQogDQogCQk7IEZpbGwgZWFjaCBGUFUgcmVnaXN0ZXIgd2l0aCBhIGtub3duIHZhbHVlLg0KQEAgLTQzMiwzNCArMzk0LDM0IEBACiAJCTsgZXhwZWN0ZWQga25vd24gdmFsdWUsIGp1bXBpbmcgdG8gdlJlZ1Rlc3RFcnJvcjIgaWYgYW55IHJlZ2lzdGVyIGNvbnRhaW5zDQogCQk7IGFuIHVuZXhwZWN0ZWQgdmFsdWUuDQogCQljbXAJCXIwLCAjMHhGRjAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXIxLCAjMHgxMTAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjIsICMweDIyMDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyMywgIzB4MzMwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXI0LCAjMHg0NDAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjUsICMweDU1MDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyNiwgIzB4NjYwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXI3LCAjMHg3NzAwMDAwMA0KLQkJYm5lCQl2UmVnVGVzdEVycm9yMgkNCisJCWJuZQkJdlJlZ1Rlc3RFcnJvcjINCiAJCWNtcAkJcjgsICMweDg4MDAwMDAwDQotCQlibmUJCXZSZWdUZXN0RXJyb3IyCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KIAkJY21wCQlyOSwgIzB4OTkwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXIxMCwgIzB4QUEwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXIxMSwgIzB4QkIwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAJCXIxMiwgIzB4Q0MwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQorCQlibmUJCXZSZWdUZXN0RXJyb3IyDQogCQljbXAgICAgIHIxNCwgIzB4RUUwMDAwMDANCi0JCWJuZQkJdlJlZ1Rlc3RFcnJvcjIJDQotCQ0KKwkJYm5lCQl2UmVnVGVzdEVycm9yMg0KKw0KIAkJOyBUaGlzIHRhc2sgaXMgc3RpbGwgcnVubmluZyB3aXRob3V0IGp1bXBpbmcgdG8gdlJlZ1Rlc3RFcnJvcjIsIHNvIGluY3JlbWVudA0KIAkJOyB0aGUgbG9vcCBjb3VudGVyIHNvIHRoZSBjaGVjayB0YXNrIGtub3dzIHRoZSB0YXNrIGlzIHJ1bm5pbmcgZXJyb3IgZnJlZS4NCiAJCXN0bWZkICAgc3AhLCB7IHIwLXIxIH0NCkBAIC00NjgsMTYgKzQzMCwxNiBAQAogCQlhZGQJCXIxLCByMSwgIzENCiAJCXN0ciAgICAgcjEsIFtyMF0NCiAJCWxkbWZkICAgc3AhLCB7IHIwLXIxIH0NCi0JCQ0KKw0KIAkJOyBMb29wIGFnYWluLCBwZXJmb3JtaW5nIHRoZSBzYW1lIHRlc3RzLg0KIAkJYgkJdlJlZ1Rlc3RMb29wMg0KIA0KIENvdW50MkNvbnN0CS53b3JkCXVsUmVnVGVzdDJDb3VudGVyDQotCQ0KKw0KIHZSZWdUZXN0RXJyb3IyOg0KIAkJYiAgICAgICB2UmVnVGVzdEVycm9yMg0KIA0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotCQ0KLQkNCi0JDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I0X1JNNDhfVE1TNTcwX0NDUzUvc2VyaWFsLmMKaW5kZXggMTQ2MWY2MC4uNDk2NWFhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjRfUk00OF9UTVM1NzBfQ0NTNS9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNF9STTQ4X1RNUzU3MF9DQ1M1L3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBGT1IgVUFSVDAuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggYzM2M2NhNC4uMTBkN2NmOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDdmOTZjYTIuLmZiNTdiNzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnJlZVJUT1NfdGlja19jb25maWcuYwppbmRleCAyZjAzNDljLi5lNjAzNThhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GcmVlUlRPU190aWNrX2NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0ZyZWVSVE9TX3RpY2tfY29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDI4ZDFlZjMuLmZlM2U0ODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW5pdGlhbGlzZXMgdGhyZWUgdGltZXJzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCA5Mjk0YTk4Li4xZWY2OTI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL0Z1bGxfRGVtby9yZWdfdGVzdC5TIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKaW5kZXggODVlMGE2MS4uODU5MDJkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvRnVsbF9EZW1vL3JlZ190ZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLmdsb2JhbCB2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIHZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfUjVfVWx0cmFTY2FsZV9NUFNvQy9SVE9TRGVtb19SNS9zcmMvbWFpbi5jCmluZGV4IDVhMzA0ZDIuLjZlNTlkZjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1I1X1VsdHJhU2NhbGVfTVBTb0MvUlRPU0RlbW9fUjUvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9SNV9VbHRyYVNjYWxlX01QU29DL1JUT1NEZW1vX1I1L3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAwX0F0b2xsaWMvU2ltcGxlX0RlbW9fU291cmNlL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAppbmRleCBlNGUzYTdkLi4yN2NlNzk0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogVGhlIGZvbGxvd2luZyAjZXJyb3IgZGlyZWN0aXZlIGlzIHRvIHJlbWluZCB1c2VycyB0aGF0IGEgYmF0Y2ggZmlsZSBtdXN0IGJlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAwX0F0b2xsaWMvU2ltcGxlX0RlbW9fU291cmNlL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwMF9BdG9sbGljL1NpbXBsZV9EZW1vX1NvdXJjZS9tYWluLmMKaW5kZXggOGY3ZGE3YS4uNzBhMTIxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAwX0F0b2xsaWMvU2ltcGxlX0RlbW9fU291cmNlL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDBfQXRvbGxpYy9TaW1wbGVfRGVtb19Tb3VyY2UvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIFRoaXMgc2ltcGxlIGRlbW8gcHJvamVjdCBydW5zIG9uIHRoZSBTVE0zMiBEaXNjb3ZlcnkgYm9hcmQsIHdoaWNoIGlzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5jCmluZGV4IDdhMDMxZWUuLmVhYzk4YzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0RyaXZlcnMvU1RNMzJfVVNBUlQuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9Ecml2ZXJzL1NUTTMyX1VTQVJULmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUlOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0RyaXZlcnMvU1RNMzJfVVNBUlQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0RyaXZlcnMvU1RNMzJfVVNBUlQuaAppbmRleCBjNjhhN2FmLi5hMGE5YTdkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9Ecml2ZXJzL1NUTTMyX1VTQVJULmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRHJpdmVycy9TVE0zMl9VU0FSVC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNUTV8zMl9TRVJJQUxfQ09NTVNfSA0KICNkZWZpbmUgU1RNXzMyX1NFUklBTF9DT01NU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMGY3N2IwZi4uNWI1ZGE1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdF9NQ0JTVE0zMi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X01DQlNUTTMyLmMKaW5kZXggMzczNWY4OC4uMDAyZWMyOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X01DQlNUTTMyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X01DQlNUTTMyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfU1RfRXZhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvUGFyVGVzdC9QYXJUZXN0X1NUX0V2YWwuYwppbmRleCBlZjkxNjZiLi4zZWNhYWQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3RfU1RfRXZhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdF9TVF9FdmFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfR0NDX1Jvd2xleS9tYWluLmMKaW5kZXggMWQyNzIxOC4uZDhkMDY2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0dDQ19Sb3dsZXkvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19HQ0NfUm93bGV5L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGY1MGQyYy4uYjcyZjM1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBlZjkxNjZiLi4zZWNhYWQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgcGFyYWxsZWwgcG9ydCBJTyByb3V0aW5lcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvbWFpbi5jCmluZGV4IGJjY2QwYTQuLmNhYTM2MzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZDhiNmE1OS4uMGEzZjE3MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0lBUi90aW1lcnRlc3QuYwppbmRleCA4ZDRhZDIxLi5jNWQ4YTA0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfSUFSL3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19JQVIvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhmNTBkMmMuLmI3MmYzNTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGVmOTE2NmIuLjNlY2FhZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvbWFpbi5jCmluZGV4IGJjY2QwYTQuLmNhYTM2MzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX0tlaWwvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGQ4YjZhNTkuLjBhM2YxNzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSIEZPUiBVQVJUMC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfS2VpbC90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3RpbWVydGVzdC5jCmluZGV4IDhkNGFkMjEuLmM1ZDhhMDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19LZWlsL3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvRnJlZVJUT1NDb25maWcuaAppbmRleCAzYjk4ZTk3Li5hYmExN2EyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAxZjEzNjRjLi4zM2YzODM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL2JpdG1hcC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvYml0bWFwLmgKaW5kZXggNjZkZDc0Yi4uNmI5ZDMxMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvYml0bWFwLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvYml0bWFwLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TLm9yZyBMb2dvIGFzIGEgMTZiaXQgYml0bWFwLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL21haW4uYwppbmRleCAyYjQzZGZmLi44NGY2MDM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDNfUHJpbWVyX0dDQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwM19QcmltZXJfR0NDL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvdGltZXJ0ZXN0LmMKaW5kZXggOGQ0YWQyMS4uYzVkOGEwNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTAzX1ByaW1lcl9HQ0MvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGQzNDlhZjYuLmNkNGNkYTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDczYzk0M2EuLjEwYjQ0NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvbWFpbi5jCmluZGV4IDRhYTIxZWIuLmFjODk4MTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvc2NzYy50bXAgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9zY3NjLnRtcAppbmRleCAxNDM2ZWZjLi5mMjc0MTQ1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9zY3NjLnRtcAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS9zY3NjLnRtcApAQCAtMSw0OSArMSwzMCBAQAogLyoNCi0JRnJlZVJUT1MgVjUuNC4yIC0gQ29weXJpZ2h0IChDKSAyMDA5IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLQlUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLQlGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CXVuZGVyIA0KLQl0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUgDQotCUZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBhbmQgbW9kaWZpZWQgYnkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0JKipOT1RFKiogVGhlIGV4Y2VwdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlIGENCi0JY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlIHRoZSANCi0Jc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgDQotCUFsdGVybmF0aXZlIGNvbW1lcmNpYWwgbGljZW5zZSBhbmQgc3VwcG9ydCB0ZXJtcyBhcmUgYWxzbyBhdmFpbGFibGUgdXBvbiANCi0JcmVxdWVzdC4gIFNlZSB0aGUgbGljZW5zaW5nIHNlY3Rpb24gb2YgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgZm9yIGZ1bGwgDQotCWxpY2Vuc2UgZGV0YWlscy4NCi0NCi0JRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwJYnV0IFdJVEhPVVQNCi0JQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yDQotCUZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0JbW9yZSBkZXRhaWxzLg0KLQ0KLQlZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZw0KLQl3aXRoIEZyZWVSVE9TOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5DQotCVRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3ICBVU0EuDQotDQotDQotCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0JKiBMb29raW5nIGZvciBhIHF1aWNrIHN0YXJ0PyAgVGhlbiBjaGVjayBvdXQgdGhlIEZyZWVSVE9TIGVCb29rISAgICAgICAgICAqDQotCSogU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgICAgICAgICAgICAgICAgICAgKg0KLQkqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0JKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotCTEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLQlQbGVhc2UgZW5zdXJlIHRvIHJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHJlbGV2YW50IHBvcnQgc2VjdGlvbnMgb2YgdGhlDQotCW9ubGluZSBkb2N1bWVudGF0aW9uLg0KLQ0KLQlodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0JY29udGFjdCBkZXRhaWxzLg0KLQ0KLQlodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLQljcml0aWNhbCBzeXN0ZW1zLg0KLQ0KLQlodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotCWxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3RpbWVydGVzdC5jCmluZGV4IDk4OGU5ZTguLjg5YzBhZTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYwppbmRleCAxYTEzYzRjLi43N2M1ZTJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMuc2NzYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmMuc2NzYwppbmRleCBiYmU3MDBhLi4wOTZiM2JiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5jLnNjc2MKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuYy5zY3NjCkBAIC0xLDQ5ICsxLDMwIEBACiAvKg0KLQlGcmVlUlRPUyBWNS40LjIgLSBDb3B5cmlnaHQgKEMpIDIwMDkgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotCVRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotCUZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQJdW5kZXIgDQotCXRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZSANCi0JRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBtb2RpZmllZCBieSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQkqKk5PVEUqKiBUaGUgZXhjZXB0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUgYQ0KLQljb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIA0KLQlzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICANCi0JQWx0ZXJuYXRpdmUgY29tbWVyY2lhbCBsaWNlbnNlIGFuZCBzdXBwb3J0IHRlcm1zIGFyZSBhbHNvIGF2YWlsYWJsZSB1cG9uIA0KLQlyZXF1ZXN0LiAgU2VlIHRoZSBsaWNlbnNpbmcgc2VjdGlvbiBvZiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBmb3IgZnVsbCANCi0JbGljZW5zZSBkZXRhaWxzLg0KLQ0KLQlGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAlidXQgV0lUSE9VVA0KLQlBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3INCi0JRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLQltb3JlIGRldGFpbHMuDQotDQotCVlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nDQotCXdpdGggRnJlZVJUT1M7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkNCi0JVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQS4NCi0NCi0NCi0JKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLQkqIExvb2tpbmcgZm9yIGEgcXVpY2sgc3RhcnQ/ICBUaGVuIGNoZWNrIG91dCB0aGUgRnJlZVJUT1MgZUJvb2shICAgICAgICAgICoNCi0JKiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscyAgICAgICAgICAgICAgICAgICAqDQotCSogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLQkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0JMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotCVBsZWFzZSBlbnN1cmUgdG8gcmVhZCB0aGUgY29uZmlndXJhdGlvbiBhbmQgcmVsZXZhbnQgcG9ydCBzZWN0aW9ucyBvZiB0aGUNCi0Jb25saW5lIGRvY3VtZW50YXRpb24uDQotDQotCWh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLQljb250YWN0IGRldGFpbHMuDQotDQotCWh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotCWNyaXRpY2FsIHN5c3RlbXMuDQotDQotCWh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0JbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5oCmluZGV4IDU0OWRlNWQuLjYyMzkxYmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBFTUFDX19IDQogI2RlZmluZSBFTUFDX19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaC5zY3NjIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL2VtYWMuaC5zY3NjCmluZGV4IDFiOGUxZDcuLjZlM2JiY2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyRjEwN19HQ0NfUm93bGV5L3dlYnNlcnZlci9lbWFjLmguc2NzYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvZW1hYy5oLnNjc2MKQEAgLTEsNDkgKzEsMzAgQEAKIC8qDQotCUZyZWVSVE9TIFY1LjQuMiAtIENvcHlyaWdodCAoQykgMjAwOSBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0JVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0JRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAl1bmRlciANCi0JdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlIA0KLQlGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gYW5kIG1vZGlmaWVkIGJ5IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotCSoqTk9URSoqIFRoZSBleGNlcHRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZSBhDQotCWNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgDQotCXNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gIA0KLQlBbHRlcm5hdGl2ZSBjb21tZXJjaWFsIGxpY2Vuc2UgYW5kIHN1cHBvcnQgdGVybXMgYXJlIGFsc28gYXZhaWxhYmxlIHVwb24gDQotCXJlcXVlc3QuICBTZWUgdGhlIGxpY2Vuc2luZyBzZWN0aW9uIG9mIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIGZvciBmdWxsIA0KLQlsaWNlbnNlIGRldGFpbHMuDQotDQotCUZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCWJ1dCBXSVRIT1VUDQotCUFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvcg0KLQlGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotCW1vcmUgZGV0YWlscy4NCi0NCi0JWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcNCi0Jd2l0aCBGcmVlUlRPUzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OQ0KLQlUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBLg0KLQ0KLQ0KLQkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0JKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotCSogTG9va2luZyBmb3IgYSBxdWljayBzdGFydD8gIFRoZW4gY2hlY2sgb3V0IHRoZSBGcmVlUlRPUyBlQm9vayEgICAgICAgICAgKg0KLQkqIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzICAgICAgICAgICAgICAgICAgICoNCi0JKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotCSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQkxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0JUGxlYXNlIGVuc3VyZSB0byByZWFkIHRoZSBjb25maWd1cmF0aW9uIGFuZCByZWxldmFudCBwb3J0IHNlY3Rpb25zIG9mIHRoZQ0KLQlvbmxpbmUgZG9jdW1lbnRhdGlvbi4NCi0NCi0JaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotCWNvbnRhY3QgZGV0YWlscy4NCi0NCi0JaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0JY3JpdGljYWwgc3lzdGVtcy4NCi0NCi0JaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLQlsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBFTUFDX19IDQogI2RlZmluZSBFTUFDX19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJGMTA3X0dDQ19Sb3dsZXkvd2Vic2VydmVyL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCBmMWIzYjE3Li5mMjAyZmY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkYxMDdfR0NDX1Jvd2xleS93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL1NUTTMyTF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9TVE0zMkxfbG93X3Bvd2VyX3RpY2tfbWFuYWdlbWVudC5jCmluZGV4IGIxYTBhY2YuLjYzNmQ1ZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL1NUTTMyTF9sb3dfcG93ZXJfdGlja19tYW5hZ2VtZW50LmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvU1RNMzJMX2xvd19wb3dlcl90aWNrX21hbmFnZW1lbnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL2luY2x1ZGUvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL2luY2x1ZGUvRnJlZVJUT1NDb25maWcuaAppbmRleCAxMDIxYmRiLi44YTM0NmY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9pbmNsdWRlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvaW5jbHVkZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW4uYwppbmRleCAxOTUyMjVjLi44ZDY2M2ZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgbG93IHBvd2VyIHByb2plY3QgdGhhdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9mdWxsLmMKaW5kZXggZjA3ZGI1YS4uZjk0YTJjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgdGlja2xlc3MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0Rpc2NvdmVyeV9JQVIvbWFpbl9sb3dfcG93ZXIuYwppbmRleCA2Yjg0MGEyLi40YTNlZmZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfRGlzY292ZXJ5X0lBUi9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9EaXNjb3ZlcnlfSUFSL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBXaGVuIGNvbmZpZ0NSRUFURV9MT1dfUE9XRVJfREVNTyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oIG1haW4oKSB3aWxsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDRlZmYwNGUuLmFjZmMwYjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1BhclRlc3QuYwppbmRleCAzODAyM2Q0Li44MDM0ZWRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9tYWluLmMKaW5kZXggNDg3M2RiYS4uNDc0YTZkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIGF2YWlsYWJsZSBvbiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TVE0zMkwxNTJfSUFSL3NlcmlhbC5jCmluZGV4IGQ2MzUzM2MuLjhmNmI1NDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NUTTMyTDE1Ml9JQVIvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU1RNMzJMMTUyX0lBUi9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0NyZWF0ZVByb2plY3REaXJlY3RvcnlTdHJ1Y3R1cmUuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmM4YjhlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1SRU0gVGhpcyBmaWxlIHNob3VsZCBiZSBleGVjdXRlZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUgcHJpb3IgdG8gdGhlIGZpcnN0DQotUkVNIGJ1aWxkLiAgSXQgd2lsbCBiZSBuZWNlc3NhcnkgdG8gcmVmcmVzaCB0aGUgRWNsaXBzZSBwcm9qZWN0IG9uY2UgdGhlDQotUkVNIC5iYXQgZmlsZSBoYXMgYmVlbiBleGVjdXRlZCAobm9ybWFsbHkganVzdCBwcmVzcyBGNSB0byByZWZyZXNoKS4NCi0NCi1SRU0gQ29waWVzIGFsbCB0aGUgcmVxdWlyZWQgZmlsZXMgZnJvbSB0aGVpciBsb2NhdGlvbiB3aXRoaW4gdGhlIHN0YW5kYXJkDQotUkVNIEZyZWVSVE9TIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gdW5kZXIgdGhlIEVjbGlwc2UgcHJvamVjdCBkaXJlY3RvcnkuDQotUkVNIFRoaXMgcGVybWl0cyB0aGUgRWNsaXBzZSBwcm9qZWN0IHRvIGJlIHVzZWQgaW4gJ21hbmFnZWQnIG1vZGUgYW5kIHdpdGhvdXQNCi1SRU0gaGF2aW5nIHRvIHNldHVwIGFueSBsaW5rZWQgcmVzb3VyY2VzLg0KLQ0KLVJFTSBTdGFuZGFyZCBwYXRocw0KLVNFVCBGUkVFUlRPU19TT1VSQ0U9Li5cLi5cU291cmNlDQotU0VUIENPTU1PTl9TT1VSQ0U9Li5cQ29tbW9uXG1pbmltYWwNCi1TRVQgQ09NTU9OX0lOQ0xVREU9Li5cQ29tbW9uXGluY2x1ZGUNCi1TRVQgQ0xJX1NPVVJDRT0uLlwuLlwuLlxGcmVlUlRPUy1QbHVzXFNvdXJjZVxGcmVlUlRPUy1QbHVzLUNMSQ0KLVNFVCBGQVRfU09VUkNFPS4uXC4uXC4uXEZyZWVSVE9TLVBsdXNcU291cmNlXEZyZWVSVE9TLVBsdXMtRkFULVNMDQotDQotUkVNIEhhdmUgdGhlIGZpbGVzIGFscmVhZHkgYmVlbiBjb3BpZWQ/DQotSUYgRVhJU1QgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlIEdvdG8gRU5EDQotDQotICAgIFJFTSBDcmVhdGUgdGhlIHJlcXVpcmVkIGRpcmVjdG9yeSBzdHJ1Y3R1cmUuDQotICAgIE1EIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZQ0KLSAgICBNRCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VcaW5jbHVkZQ0KLSAgICBNRCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGUNCi0gICAgTUQgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlXHBvcnRhYmxlXEdDQw0KLSAgICBNRCBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VccG9ydGFibGVcR0NDXEFSTV9DTTMNCi0gICAgTUQgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlXHBvcnRhYmxlXE1lbU1hbmcNCi0NCi0gICAgUkVNIENvcHkgdGhlIGNvcmUga2VybmVsIGZpbGVzIGludG8gdGhlIHByb2plY3QgZGlyZWN0b3J5DQotICAgIGNvcHkgJUZSRUVSVE9TX1NPVVJDRSVcdGFza3MuYyBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2UNCi0gICAgY29weSAlRlJFRVJUT1NfU09VUkNFJVxxdWV1ZS5jIFJUT1NEZW1vXEZyZWVSVE9TLVNvdXJjZQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXGxpc3QuYyBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2UNCi0gICAgY29weSAlRlJFRVJUT1NfU09VUkNFJVx0aW1lcnMuYyBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2UNCi0NCi0gICAgUkVNIENvcHkgdGhlIGNvbW1vbiBoZWFkZXIgZmlsZXMgaW50byB0aGUgcHJvamVjdCBkaXJlY3RvcnkNCi0gICAgY29weSAlRlJFRVJUT1NfU09VUkNFJVxpbmNsdWRlXCouKiBSVE9TRGVtb1xGcmVlUlRPUy1Tb3VyY2VcaW5jbHVkZQ0KLQ0KLSAgICBSRU0gQ29weSB0aGUgcG9ydGFibGUgbGF5ZXIgZmlsZXMgaW50byB0aGUgcHJvamVjdCBkaXJlY3RvcnkNCi0gICAgY29weSAlRlJFRVJUT1NfU09VUkNFJVxwb3J0YWJsZVxHQ0NcQVJNX0NNM1wqLiogUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlXHBvcnRhYmxlXEdDQ1xBUk1fQ00zDQotDQotICAgIFJFTSBDb3B5IHRoZSBtZW1vcnkgYWxsb2NhdGlvbiBmaWxlcyBpbnRvIHRoZSBwcm9qZWN0IGRpcmVjdG9yeQ0KLSAgICBjb3B5ICVGUkVFUlRPU19TT1VSQ0UlXHBvcnRhYmxlXE1lbU1hbmdcaGVhcF80LmMgUlRPU0RlbW9cRnJlZVJUT1MtU291cmNlXHBvcnRhYmxlXE1lbU1hbmcNCi0NCi0gICAgUkVNIENvcHkgdGhlIGZpbGVzIHRoYXQgZGVmaW5lIHRoZSBjb21tb24gZGVtbyB0YXNrcy4NCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcZHluYW1pYy5jICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxCbG9ja1EuYyAgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXGZsYXNoX3RpbWVyLmMgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcZGVhdGguYyAgICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxibG9ja3RpbS5jICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXHNlbXRlc3QuYyAgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcUG9sbFEuYyAgICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxHZW5RVGVzdC5jICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotICAgIGNvcHkgJUNPTU1PTl9TT1VSQ0UlXHJlY211dGV4LmMgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2UNCi0gICAgY29weSAlQ09NTU9OX1NPVVJDRSVcY291bnRzZW0uYyAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXENvbW1vbi1EZW1vLVNvdXJjZQ0KLSAgICBjb3B5ICVDT01NT05fU09VUkNFJVxpbnRlZ2VyLmMgICAgICAgICBSVE9TRGVtb1xGdWxsLURlbW9cQ29tbW9uLURlbW8tU291cmNlDQotDQotICAgIFJFTSBDb3B5IHRoZSBjb21tb24gZGVtbyBmaWxlIGhlYWRlcnMuDQotICAgIGNvcHkgJUNPTU1PTl9JTkNMVURFJVwqLmggICAgICAgICAgICAgIFJUT1NEZW1vXEZ1bGwtRGVtb1xDb21tb24tRGVtby1Tb3VyY2VcaW5jbHVkZQ0KLQ0KLQlSRU0gQ29weSB0aGUgRnJlZVJUT1MrQ0xJIHNvdXJjZS4NCi0JY29weSAlQ0xJX1NPVVJDRSVcKi4qICAgICAgICAgICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXEZyZWVSVE9TLVBsdXMtQ0xJLVNvdXJjZQ0KLQ0KLQlSRU0gQ29weSB0aGUgRnJlZVJUT1MrRkFUIFNMIHNvdXJjZS4NCi0JeGNvcHkgJUZBVF9TT1VSQ0UlXCouKiAgICAgICAgICAgICAgICAgUlRPU0RlbW9cRnVsbC1EZW1vXEZyZWVSVE9TLVBsdXMtRkFULVNMLVNvdXJjZSAvUw0KLQ0KLTogRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvRGV2ZWxvcG1lbnRLaXRfaGFyZHdhcmUvREVWX0tJVF9ERU1PX3RvcF9EYXRhU2hlZXQueG1sIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvRGV2ZWxvcG1lbnRLaXRfaGFyZHdhcmUvREVWX0tJVF9ERU1PX3RvcF9EYXRhU2hlZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWZiNmMyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvTGliZXJvT3V0cHV0L0RldmVsb3BtZW50S2l0X2hhcmR3YXJlL0RFVl9LSVRfREVNT190b3BfRGF0YVNoZWV0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM1NTkgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4NCi08P3htbC1zdHlsZXNoZWV0IHR5cGU9InRleHQveHNsIiBocmVmPSJkYXRhc2hlZXQueHNsIj8+DQotPGRhdGFzaGVldD4NCi0gIDxoZWFkZXI+REVWX0tJVF9ERU1PX3RvcDwvaGVhZGVyPg0KLSAgPHByb2plY3Qtc2V0dGluZ3M+DQotICAgIDxmYW0+U21hcnRGdXNpb24yPC9mYW0+DQotICAgIDxkaWU+TTJTMDUwVF9FUzwvZGllPg0KLSAgICA8cGFja2FnZT44OTYgRkJHQTwvcGFja2FnZT4NCi0gICAgPHNwZWVkLWdyYWRlPi0xPC9zcGVlZC1ncmFkZT4NCi0gICAgPHZvbHRhZ2U+MS4yPC92b2x0YWdlPg0KLSAgICA8aGRsLXR5cGU+VmVyaWxvZzwvaGRsLXR5cGU+DQotICAgIDxwcm9qZWN0LWRlc2NyaXB0aW9uPg0KLSAgICA8L3Byb2plY3QtZGVzY3JpcHRpb24+DQotICAgIDxsb2NhdGlvbj5EOi9BY3RlbHByai9TRjJfREVWS0lUX0RFTU8vY29tcG9uZW50L3dvcmsvREVWX0tJVF9ERU1PX3RvcDwvbG9jYXRpb24+DQotICAgIDxzdGF0ZT5HRU5FUkFURUQgKCBXZWQgQXByIDI0IDE3OjA2OjE1IDIwMTMgKTwvc3RhdGU+DQotICAgIDxzd2lkZS10b29sY2hhaW4+U29mdENvbnNvbGUgd29ya3NwYWNlIGdlbmVyYXRlZCB0byBEOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cU29mdENvbnNvbGU8L3N3aWRlLXRvb2xjaGFpbj4NCi0gIDwvcHJvamVjdC1zZXR0aW5ncz4NCi0gIDxzaXRlLW1hcD4NCi0gIDwvc2l0ZS1tYXA+DQotICA8ZmlsZXNldD4NCi0gICAgPG5hbWU+SERMIEZpbGUocyk8L25hbWU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDb3JlQVBCM1w0LjAuMTAwXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3JlYXBiMy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XEFjdGVsXERpcmVjdENvcmVcQ29yZUFQQjNcNC4wLjEwMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcY29yZWFwYjNfaWFkZHJfcmVnLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDb3JlQVBCM1w0LjAuMTAwXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3JlYXBiM19tdXhwdG9iMy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XEFjdGVsXERpcmVjdENvcmVcQ09SRUFYSVwyLjAuMTAzXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxheGlfaW50ZXJjb25uZWN0LnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDT1JFQVhJXDIuMC4xMDNccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXG1hc3Rlcl9zdGFnZS52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XEFjdGVsXERpcmVjdENvcmVcQ09SRUFYSVwyLjAuMTAzXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxzbGF2ZV9zdGFnZS52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XEFjdGVsXERpcmVjdENvcmVcQ29yZVNGMkNvbmZpZ1wyLjAuMTAwXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3Jlc2YyY29uZmlnLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcRGlyZWN0Q29yZVxDb3JlU0YyUmVzZXRcMS4wLjEwMVxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcY29yZXNmMnJlc2V0LnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcQWN0ZWxcU2dDb3JlXE9TQ1wxLjAuMTAwXG9zY19jb21wcy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PXENDQ18wXERFVl9LSVRfREVNT19DQ0NfMF9GQ0NDLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9cQ09SRUFYSV8wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3JlYXhpLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9cREVWX0tJVF9ERU1PLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9cRkFCT1NDXzBcREVWX0tJVF9ERU1PX0ZBQk9TQ18wX09TQy52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX01TU1xERVZfS0lUX0RFTU9fTVNTLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fTVNTXERFVl9LSVRfREVNT19NU1NfdG1wX3N5bi52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBcY29yZXBhcmFtZXRlcnNfdGdpLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcYWNtdGFibGUudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxjb3JlYWJjLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcZGVidWdibGsudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxpbnN0cnVjdGlvbnMudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxpbnN0cnVjdG52bV9iYi52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXGluc3RydWN0cmFtLnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXENPUkVBQkNfMFxydGxcdmxvZ1xjb3JlX29iZnVzY2F0ZWRcaXJhbTUxMng5X3J0bC52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHJhbTEyOHg4X3NtYXJ0ZnVzaW9uMi52PC9maWxlPg0KLSAgICA8ZmlsZT5EOlxBY3RlbHByalxTRjJfREVWS0lUX0RFTU9cY29tcG9uZW50XHdvcmtcREVWX0tJVF9ERU1PX3RvcFxDT1JFQUJDXzBccnRsXHZsb2dcY29yZV9vYmZ1c2NhdGVkXHJhbTI1NngxNl9ydGwudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxyYW0yNTZ4OF9ydGwudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxyYW1ibG9ja3MudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcQ09SRUFCQ18wXHJ0bFx2bG9nXGNvcmVfb2JmdXNjYXRlZFxzdXBwb3J0LnY8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1xERVZfS0lUX0RFTU9fdG9wXERFVl9LSVRfREVNT190b3AudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcU0VSREVTX0lGXzBcREVWX0tJVF9ERU1PX3RvcF9TRVJERVNfSUZfMF9TRVJERVNfSUYudjwvZmlsZT4NCi0gICAgPGZpbGU+RDpcQWN0ZWxwcmpcU0YyX0RFVktJVF9ERU1PXGNvbXBvbmVudFx3b3JrXERFVl9LSVRfREVNT190b3BcU0VSREVTX0lGXzBcREVWX0tJVF9ERU1PX3RvcF9TRVJERVNfSUZfMF9TRVJERVNfSUZfc3luLnY8L2ZpbGU+DQotICA8L2ZpbGVzZXQ+DQotICA8ZmlsZXNldD4NCi0gICAgPG5hbWU+Rmxhc2ggTWVtb3J5IEZpbGUocyk8L25hbWU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1wuL0VOVk0vRU5WTS5lZmM8L2ZpbGU+DQotICAgIDxmaWxlPkQ6XEFjdGVscHJqXFNGMl9ERVZLSVRfREVNT1xjb21wb25lbnRcd29ya1wuL0VOVk0vRU5WTS5lZmNcRDovQWN0ZWxwcmovU0YyX0RFVktJVF9ERU1PL2NvbXBvbmVudC93b3JrL0RFVl9LSVRfREVNT19NU1MvRU5WTS9FTlZNLmVmYzwvZmlsZT4NCi0gIDwvZmlsZXNldD4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzNdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzExXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SRUZDTEswX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbM108L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzE1XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzEwXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkkyQ18wX1NDTDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlNQSV8wX0RJPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VVNCX1VMUElfREFUQVsxXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlRYRDBfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzZdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+UlhEM19OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVswXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMTNfRjJNPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVs4XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkxFRF82PC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkZGX0VYSVQ8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9ESVI8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQzX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzE1XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUls2XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzE1X00yRjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbOF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+U1BJXzBfU1MwPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMV9QPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfV0VfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0NTX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VVNCX1JFU0VUX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMF9QPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFbMV08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzZdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TU1VQVJUXzFfVFhEX00yRjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRU19OWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzldPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlswXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzEzXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUls1XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5MRURfMTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5TUElfMF9DTEs8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9YQ0xLPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9SRVNFVF9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fNF9GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbN108L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVszXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDFfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlsxXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzE0XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX1NUUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRU1sxXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfT0RUPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlJYRDBfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlRYRDJfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzJdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT18xX0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkNMSzBfUEFEPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzEyXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5TUElfMF9ETzwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTRdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fMl9GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzVdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9ETV9SRFFTWzFdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9CQVsxXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRU19UTUFUQ0hfMF9JTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQ0xLX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VVNCX1VMUElfREFUQVs0XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQ0FTX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT184X0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTX05bMF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5JMkNfMV9TREE8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzExXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkRFVlJTVF9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMV9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQkFbMl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT18xMV9GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQxX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RNX1JEUVNbMF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRU19UTUFUQ0hfMF9PVVQ8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9DS0U8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TU1VQVJUXzFfUlhEX0YyTTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfRFFTWzBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9CQVswXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzVdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+STJDXzBfU0RBPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9BRERSWzEzXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0NMSzwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQyX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbNF08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVsxMl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzRdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+STJDXzFfU0NMPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9SQVNfTjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5UWEQzX048L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+UkVGQ0xLMF9OPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU48L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+R1BJT18xMl9GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0FERFJbMTBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1ERFJfQUREUlsyXTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQyX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzBdPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+VFhEMl9QPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+T1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlVTQl9VTFBJX0RBVEFbMl08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9OWFQ8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzE0X00yRjwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5NRERSX0RRWzddPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8aW8+DQotICAgIDxwb3J0LW5hbWU+TUREUl9EUVs5XTwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOT1VUPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICAgIDxpby1zdGFuZGFyZD5MVkNNT1MyNTwvaW8tc3RhbmRhcmQ+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPlRYRDNfUDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk9VVDwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5SWEQwX1A8L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgICA8aW8tc3RhbmRhcmQ+TFZDTU9TMjU8L2lvLXN0YW5kYXJkPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5VU0JfVUxQSV9EQVRBWzddPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+SU5PVVQ8L2RpcmVjdGlvbj4NCi0gICAgPHBpbi1udW1iZXI+LTwvcGluLW51bWJlcj4NCi0gICAgPGlvLXN0YW5kYXJkPkxWQ01PUzI1PC9pby1zdGFuZGFyZD4NCi0gIDwvaW8+DQotICA8Y29yZSB0eXBlPSJTcGlyaXRNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+U3Bpcml0TW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5EaXJlY3RDb3JlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5DT1JFQUJDPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4zLjQuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5Db3JlQUJDIChBUEIgQnVzIENvbnRyb2xsZXIpIGlzIGEgc2ltcGxlLCBjb25maWd1cmFibGUsIGxvdyBnYXRlIGNvdW50LCBwcm9ncmFtbWFibGUgc3RhdGUgbWFjaGluZS9jb250cm9sbGVyIHByaW1hcmlseSB0YXJnZXRlZCB0b3dhcmRzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBBTUJBIChBZHZhbmNlZCBNaWNyb2NvbnRyb2xsZXIgQnVzIEFyY2hpdGVjdHVyZSkgQVBCIChBZHZhbmNlZCBQZXJpcGhlcmFsIEJ1cykgYmFzZWQgZGVzaWducy4gSXQgaXMgcGFydGljdWxhcmx5IHN1aXRhYmxlIHdoZXJlOg0KLQ0KLS0gYSBwcm9ncmFtbWFibGUgY29udHJvbGxlciBpcyByZXF1aXJlZCBidXQgYSAiZnVsbCBibG93biIgQ1BVIHN1Y2ggYXMgYSBDb3JlODA1MXMgb3IgQ29ydGV4LU0xIGlzIG5vdCBuZWVkZWQgb3IgY2Fubm90IGJlIGp1c3RpZmllZCBkdWUgdG8gY29zdCBvciByZXNvdXJjZS9zaXplIGNvbnN0cmFpbnRzOw0KLS0gYSAiZnVsbCBibG93biIgQ1BVIGJhc2VkIHN5c3RlbSByZXF1aXJlcyBhIENvcmVBQkMgYmFzZWQgcHJvZ3JhbW1hYmxlICJvZmZsb2FkIGVuZ2luZS9jb3Byb2Nlc3NvciIgc3Vic3lzdGVtIGZvciBwZXJmb3JtYW5jZSByZWFzb25zOw0KLS0gYW4gQWN0ZWwgRnVzaW9uIHN5c3RlbSB1c2luZywgZm9yIGV4YW1wbGUsIENvcmVBSSwgQ29yZVBXTSBldGMuIHJlcXVpcmVzIHByb2dyYW1tYWJsZSBjb250cm9sIGVpdGhlciBhcyBhIHN0YW5kYWxvbmUgZGVzaWduIG9yIGFzIGEgRnVzaW9uIGFuYWxvZyAib2ZmbG9hZCBlbmdpbmUvY29wcm9jZXNzb3IiIGZvciBhIGxhcmdlciBDUFUgYmFzZWQgc3lzdGVtLg0KLQ0KLUNvcmVBQkMgaXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlIExpYmVybyBJREUgSVAgQ2F0YWxvZyB0aHJvdWdoIHdoaWNoIGl0IGNhbiBiZSBkb3dubG9hZGVkIGZyb20gYSByZW1vdGUgd2ViIGJhc2VkIHJlcG9zaXRvcnkgYW5kIGluc3RhbGxlZCBpbnRvIHRoZSB1c2VyJ3MgbG9jYWwgdmF1bHQgcmVhZHkgZm9yIHVzZS4gSXQgb3BlcmF0ZXMgbmF0aXZlbHkgd2l0aGluIHRoZSBTbWFydERlc2lnbiBkZXNpZ24gZW50cnkgZW52aXJvbm1lbnQgYWxsb3dpbmcgaXQgdG8gYmUgZWFzaWx5IGluc3RhbnRpYXRlZCwgY29uZmlndXJlZCwgY29ubmVjdGVkIHRvIG90aGVyIElQIGNvcmUgaW5zdGFuY2VzIGFuZCBnZW5lcmF0ZWQgcmVhZHkgZm9yIHNpbXVsYXRpb24sIHN5bnRoZXNpcyBldGMuDQotQ29yZUFCQyBpcyBhbiBBTUJBMyBBUEIgbWFzdGVyIHdoaWNoIGNhbiBjb25uZWN0IHRvIGFuZCBtYW5hZ2UgYW55IEFQQiBzbGF2ZSBwZXJpcGhlcmFscyB2aWEgYW4gQU1CQTMgQVBCIGJ1cyBmYWJyaWMgY29tcG9uZW50IHN1Y2ggYXMgQ29yZUFQQjMuDQotDQotQ29yZUFCQyBzdXBwb3J0cyBhIGNvbXByZWhlbnNpdmUgYXNzZW1ibGVyIGJhc2VkIGNvbmZpZ3VyYWJsZSBpbnN0cnVjdGlvbiBzZXQgYXJjaGl0ZWN0dXJlIGFuZCBleHRlbnNpdmUgYW5kIGZsZXhpYmxlIGNvbmZpZ3VyYXRpb24gb2Ygc2l6ZSBhbmQgZmVhdHVyZSBvcHRpb25zIGFsbG93aW5nIGl0IHRvIGJlIHR1bmVkIHRvIG1lZXQgdGhlIHJlc291cmNlIGNvbnN0cmFpbnRzIGFuZCBwcm9jZXNzaW5nIHBvd2VyIHJlcXVpcmVtZW50cyBvZiBhIHdpZGUgdmFyaWV0eSBvZiBhcHBsaWNhdGlvbnMuDQotQ29yZUFCQyBzdXBwb3J0cyB0aHJlZSBwcm9ncmFtIHN0b3JhZ2UgbW9kZXM6DQotDQotLSAiSGFyZCIgbW9kZTogcHJvZ3JhbSBpbWFnZSBzdG9yZWQgaW4gYW4gaW50ZXJuYWwgUk9NIGltcGxlbWVudGVkIGluIEZQR0EgZmFicmljIHRpbGVzOw0KLS0gIlNvZnQiIG1vZGU6IHByb2dyYW0gaW1hZ2Ugc3RvcmVkIGluIEFjdGVsIEZQR0EgUkFNIGJsb2NrcyB3aGljaCBhcmUgaW5pdGlhbGl6ZWQgYXQgcnVudGltZSBmcm9tIHRoZSBiaW5hcnkgaW1hZ2Ugc3RvcmVkIGluIEZ1c2lvbiBOVk0gb3IgYW4gZXh0ZXJuYWwgZmxhc2ggbWVtb3J5Ow0KLS0gIk5WTSIgbW9kZSAoRnVzaW9uIG9ubHkpOiBwcm9ncmFtIGltYWdlIHN0b3JlZCBpbiBhbmQgZXhlY3V0ZWQgZGlyZWN0bHkgZnJvbSBGdXNpb24gTlZNLg0KLTwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5OVk0gd2l0aCBjYWxpYnJhdGlvbiBkYXRhOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QUNUX0NBTElCUkFUSU9OREFUQTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BUEIgU2xvdCBTaXplOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+NjRrIGxvY2F0aW9uczwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCX0FXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTY8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QVBCIERhdGEgQnVzIFdpZHRoOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+MzI8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQl9EV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjMyPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk51bWJlciBvZiBBUEIgU2xvdHM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4xNjwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCX1NERVBUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTY8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+VmVyYm9zZSBTaW11bGF0aW9uIExvZzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkRFQlVHPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkFQQldSVCBBQ008L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9BQ008L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QURELCBTVUIsIERFQywgQ01QTEVRPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9BREQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QUxVIE9wZXJhdGlvbnMgZnJvbSBNZW1vcnk6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fQUxVUkFNPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkFORCwgQklUQ0xSLCBCSVRUU1Q8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX0FORDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5DQUxMLCBSRVRVUk4sIFJFVElTUjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fQ0FMTDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TdXBwb3J0ZWQgRGF0YSBTb3VyY2VzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+QWNjdW11bGF0b3IgYW5kIEltbWVkaWF0ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fREFUQU08L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjI8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SU5DPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9JTkM8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+QVBCIEluZGlyZWN0IEFkZHJlc3Npbmc6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fSU5ESVJFQ1Q8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SW50ZXJydXB0IFN1cHBvcnQ6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5EaXNhYmxlZDwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fSU5UPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPklPUkVBRDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fSU9SRUFEPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPklPV1JUPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9JT1dSVDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5NVUxUPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5Ob3QgSW1wbGVtZW50ZWQ8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX01VTFQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+T1IsIEJJVFNFVDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fT1I8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+UFVTSCwgUE9QPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9QVVNIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkludGVybmFsIERhdGEvU3RhY2sgTWVtb3J5OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fUkFNPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNITCwgUk9MPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT50cnVlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5FTl9TSEw8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U0hSLCBST1I8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkVOX1NIUjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5YT1IsIENNUDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+dHJ1ZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+RU5fWE9SPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkZQR0EgRmFtaWx5OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+U21hcnRGdXNpb24yPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5GQU1JTFk8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE5PC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk1heGltdW0gTnVtYmVyIG9mIEluc3RydWN0aW9uczo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjY0PC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JQ1dJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT42PC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk51bWJlciBvZiBJL08gRmxhZ3M6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4wPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JRldJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk51bWJlciBvZiBJL08gSW5wdXRzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+MTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+SUlXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5JbnN0cnVjdGlvbiBNZW1vcnkgQWNjZXNzPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5Ob25lPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JTUVNX0FQQl9BQ0NFU1M8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SW5pdGlhbGl6YXRpb24gV2lkdGg6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4xMTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+SU5JVFdJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xMTwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5JbnN0cnVjdGlvbiBTdG9yZTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPkhhcmQgKEZQR0EgVGlsZXMpPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JTlNNT0RFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPk51bWJlciBvZiBJL08gT3V0cHV0czo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPjE8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklPV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjE8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+SVNSIEFkZHJlc3M6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4xPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5JU1JBRERSPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPg0KLSAgICAgIDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+MzI8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPk1BWF9OVk1EV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjMyPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlN0YWNrIFNpemU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4xNjwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U1RXSURUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+NDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5UZXN0IE1vZGU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5Vc2VyICBjb25maWd1cmVkIGNvZGU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlRFU1RNT0RFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPg0KLSAgICAgIDwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+MjY8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlVOSVFfU1RSSU5HX0xFTkdUSDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MjY8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+WiBSZWdpc3RlciBTaXplIChCaXRzKTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPkRpc2FibGVkPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5aUldJRFRIPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLW5hbWU+Q09SRUFCQ18wPC9jb3JlLW5hbWU+DQotICA8L2NvcmU+DQotICA8Y29yZSB0eXBlPSJTcGlyaXRNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+U3Bpcml0TW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5EaXJlY3RDb3JlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5Db3JlQVBCMzwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+NC4wLjEwMDwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+DQotVGhlIENvcmVBUEIzIGNvbXBvbmVudCBpbXBsZW1lbnRzIGFuIEFQQjMgKEFNQkEzIEFQQikgZmFicmljLCB3aGljaCBpcyBiYWNrd2FyZHMgY29tcGF0aWJsZSB3aXRoIEFQQjIgc2xhdmUgcGVyaXBoZXJhbHMuDQotDQotVGhlcmUgaXMgb25lIEFQQjMgTWFzdGVyIGludGVyZmFjZS4NCi0NCi0gICAgICAgIDwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5BUEIgTWFzdGVyIERhdGEgQnVzIFdpZHRoPC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4zMi1iaXQ8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQl9EV0lEVEg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjMyPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPnRydWU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1QwRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4xPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UMUVOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDI6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDJFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1QzRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgNDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UNEVOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDVFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA2OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1Q2RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgNzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5BUEJTTE9UN0VOQUJMRTwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDg6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDhFTkFCTEU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA5OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPkFQQlNMT1Q5RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTA6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDEwRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTE6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDExRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTI6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDEyRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTM6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDEzRU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTQ6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDE0RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+QVBCU0xPVDE1RU5BQkxFPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPkluZGlyZWN0IEFkZHJlc3Npbmc6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5JbmRpcmVjdCBhZGRyZXNzIHNvdXJjZWQgZnJvbSByZWdpc3RlcihzKSBpbiBzbG90IDQgc3BhY2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPklBRERSX09QVElPTjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+NjwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5OdW1iZXIgb2YgYWRkcmVzcyBiaXRzIGRyaXZlbiBieSBtYXN0ZXI6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT4yMDwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+TUFERFJfQklUUzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAwOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzA8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzE8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAyOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzI8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAzOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzM8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA0OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzQ8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA1OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA2OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzY8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA3OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzc8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA4OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzg8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCA5OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzk8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMDo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5TQ18xMDwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDExOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzExPC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTI6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMTI8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U2xvdCAxMzo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPmZhbHNlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5TQ18xMzwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5zcGlyaXQ6aHdQYXJhbWV0ZXI8L3BhcmFtLXRhZz4NCi0gICAgPC9jb3JlLXBhcmFtPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5TbG90IDE0OjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+ZmFsc2U8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlNDXzE0PC9wYXJhbS1oZGxuYW1lPg0KLSAgICAgIDxwYXJhbS1oZGx2YWx1ZT4wPC9wYXJhbS1oZGx2YWx1ZT4NCi0gICAgICA8cGFyYW0tdGFnPnNwaXJpdDpod1BhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLXBhcmFtPg0KLSAgICAgIDxwYXJhbS1uYW1lPlNsb3QgMTU6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5mYWxzZTwvcGFyYW0tdmFsdWU+DQotICAgICAgPHBhcmFtLWhkbG5hbWU+U0NfMTU8L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+UG9zaXRpb24gaW4gc2xhdmUgYWRkcmVzcyBvZiB1cHBlciA0IGJpdHMgb2YgbWFzdGVyIGFkZHJlc3M6PC9wYXJhbS1uYW1lPg0KLSAgICAgIDxwYXJhbS12YWx1ZT5bMTk6MTZdIChJZ25vcmVkIGlmIG1hc3RlciBhZGRyZXNzIHdpZHRoID49IDI0IGJpdHMpPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5VUFJfTklCQkxFX1BPU048L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjQ8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+c3Bpcml0Omh3UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtbmFtZT5Db3JlQVBCM18wPC9jb3JlLW5hbWU+DQotICA8L2NvcmU+DQotICA8Y29yZSB0eXBlPSJDb21wb25lbnRNb2R1bGUiPg0KLSAgICA8Y29yZS10eXBlPkNvbXBvbmVudE1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS1leHR0eXBlPlNtYXJ0RGVzaWduPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLWxvY2F0aW9uPkQ6L0FjdGVscHJqL1NGMl9ERVZLSVRfREVNTy9jb21wb25lbnQvd29yay9ERVZfS0lUX0RFTU88L2NvcmUtbG9jYXRpb24+DQotICAgIDxjb3JlLW5hbWU+REVWX0tJVF9ERU1PXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxjb3JlIHR5cGU9IlNwaXJpdE1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5TcGlyaXRNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPlNnQ29yZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U0VSREVTX0lGPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4xLjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgSGlnaCBTcGVlZCBTZXJpYWwgSW50ZXJmYWNlPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U0VSREVTX0lGXzA8L2NvcmUtbmFtZT4NCi0gIDwvY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX0NNU0lTPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjEuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgQ29ydGV4IE1pY3JvY29udHJvbGxlciBTb2Z0d2FyZSBJbnRlcmZhY2UgU3RhbmRhcmQgKENNU0lTKS4NCi0NCi1UaGUgZmlybXdhcmUgcGFja2FnZSBwcm92aWRlczoNCi0tIENvcnRleC1NMyBzdGFydHVwIGNvZGUuDQotLSBDTVNJUyBzdGFuZGFyZCBuYW1pbmcgZm9yIGV4Y2VwdGlvbiBhbmQgaW50ZXJydXB0IGhhbmRsZXJzLg0KLS0gQ01TSVMgc3RhbmRhcmQgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgQ29ydGV4LU0zIE5lc3RlZCBWZWN0b3JlZCBJbnRlcnJ1cHQgQ29udHJvbGxlciAoTlZJQykuDQotLSBwZXJpcGhlcmFscyByZWdpc3RlcnMgZGVzY3JpcHRpb24uDQotLSBoYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciAoSEFMKSBmb3IgRlBHQSBmYWJyaWMgc29mdC1JUCBwZXJpcGhlcmlyYWxzLg0KLQ0KLVRoZXNlIGZpbGVzIGFyZSByZXF1aXJlZCBieSB0aGUgU21hcnRGdXNpb24yIGJhcmUgbWV0YWwgcGVyaXBoZXJhbCBkcml2ZXJzIHRvIGJ1aWxkIGNvcnJlY3RseS4NCi08L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtcGFyYW0+DQotICAgICAgPHBhcmFtLW5hbWU+U29mdHdhcmUgVG9vbCBDaGFpbjo8L3BhcmFtLW5hbWU+DQotICAgICAgPHBhcmFtLXZhbHVlPlNvZnRDb25zb2xlPC9wYXJhbS12YWx1ZT4NCi0gICAgICA8cGFyYW0taGRsbmFtZT5Ub29sQ2hhaW48L3BhcmFtLWhkbG5hbWU+DQotICAgICAgPHBhcmFtLWhkbHZhbHVlPjA8L3BhcmFtLWhkbHZhbHVlPg0KLSAgICAgIDxwYXJhbS10YWc+YWN0ZWwtY2M6dmFyaWFudFBhcmFtZXRlcjwvcGFyYW0tdGFnPg0KLSAgICA8L2NvcmUtcGFyYW0+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX0NNU0lTXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19HUElPX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgR1BJTyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX0dQSU9fRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19IUERNQV9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIEhpZ2ggUGVyZm9ybWFuY2UgRE1BIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfSFBETUFfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19JMkNfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBJMkMgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19JMkNfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19JMkNfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAwPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBJMkMgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19JMkNfRHJpdmVyXzE8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19NTVVBUlRfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBNTVVBUlQgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19NTVVBUlRfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19QRE1BX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMjwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgUGVyaXBoZXJhbCBETUEgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19QRE1BX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfUlRDX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgUlRDIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfUlRDX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfU1BJX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMzwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgU1BJIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfU1BJX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfU3lzdGVtX1NlcnZpY2VzX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMzwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3Jvc29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgU3lzdGVtIFNlcnZpY2VzIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1N5c3RlbV9TZXJ2aWNlc19Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX1RpbWVyX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgVGltZXIgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19UaW1lcl9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX1VTQl9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMS4xMDA8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIFVTQiBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGUgZmlybXdhcmUgcGFja2FnZSBwcm92aWRlczoNCi0tIE1TUyBVU0IgRGV2aWNlIENvcmUgRHJpdmVyIA0KLS0gVVNCIE1TQyBEZXZpY2UgQ2xhc3MgZHJpdmVyIHdpdGggZXhhbXBsZSBwcm9qZWN0Lg0KLS0gVVNCIENEQyBEZXZpY2UgQ2xhc3MgZHJpdmVyIHdpdGggZXhhbXBsZSBwcm9qZWN0Lg0KLS0gVVNCIEhJRCBEZXZpY2UgQ2xhc3MgZHJpdmVyIHdpdGggZXhhbXBsZSBwcm9qZWN0Lg0KLQ0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfVVNCX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfV2F0Y2hkb2dfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAyPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBXYXRjaGRvZyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1dhdGNoZG9nX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8bWVtb3J5c3lzdGVtPg0KLSAgICA8dGl0bGU+TWVtb3J5IE1hcCBmb3IgREVWX0tJVF9ERU1PX3RvcDwvdGl0bGU+DQotICAgIDxkZXNjcmlwdGlvbj5UaGUgcHJvamVjdCBjb250YWlucyB0aGUgZm9sbG93aW5nIHN1YnN5c3RlbXM6PC9kZXNjcmlwdGlvbj4NCi0gICAgPHN1YnN5c3RlbXM+DQotICAgICAgPHN1YnN5c3RlbT4NCi0gICAgICAgIDxuYW1lPkNNMzwvbmFtZT4NCi0gICAgICAgIDxtYXN0ZXI+Q00zPC9tYXN0ZXI+DQotICAgICAgICA8bWFzdGVyPkZBQlJJQzJNU1NGSUMyPC9tYXN0ZXI+DQotICAgICAgICA8bWFzdGVyPkZBQlJJQ1RPTVNTRklDMF9BUEJfQlJJREdFPC9tYXN0ZXI+DQotICAgICAgICA8YWRkcmVzc05hbWVzPg0KLSAgICAgICAgICA8Y291bnQ+MTwvY291bnQ+DQotICAgICAgICAgIDxuYW1lPg0KLSAgICAgICAgICA8L25hbWU+DQotICAgICAgICA8L2FkZHJlc3NOYW1lcz4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9ONTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4RjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhGMDAwMDAwMCAtIDB4RkZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEQwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4RDAwMDAwMDAgLSAweERGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5ERFJfMF9TUEFDRV8yPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhDMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEMwMDAwMDAwIC0gMHhDRkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RERSXzBfU1BBQ0VfMTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4QjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhCMDAwMDAwMCAtIDB4QkZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEEwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4QTAwMDAwMDAgLSAweEFGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl9SRUdJT040PC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg5MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDkwMDAwMDAwIC0gMHg5RkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9OMzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4ODAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg4MDAwMDAwMCAtIDB4OEZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkFIQjJFTlZNMV9SRUdJU1RFUlM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMEMwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwQzAwMDAgLSAweDYwMEZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5BSEIyRU5WTTBfUkVHSVNURVJTPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg2MDA4MDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDYwMDgwMDAwIC0gMHg2MDBCRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwNDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RU5WTTE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMDQwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwNDAwMDAgLSAweDYwMDdGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5FTlZNMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NjAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg2MDAwMDAwMCAtIDB4NjAwM0ZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDQwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyX1JFR0lPTjE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDUwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NTAwMDAwMDAgLSAweDVGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5DQUNIRV9CQUNLRE9PUjwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDA0MDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDQwMDAwMCAtIDB4NDA0MEZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDEwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlVTQjwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwNDMwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDA0MzAwMCAtIDB4NDAwNDNGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDAxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlNZU1JFRzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMzgwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAzODAwMCAtIDB4NDAwMzhGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDAxMDAwPC9yYW5nZT4NCi0gICAgICAgICAgPG1lbW9yeU1hcD4NCi0gICAgICAgICAgICA8bmFtZT5SZWdpc3Rlck1hcDwvbmFtZT4NCi0gICAgICAgICAgICA8YWRkcmVzc0Jsb2NrPg0KLSAgICAgICAgICAgICAgPGJhc2VBZGRyZXNzPjB4MDwvYmFzZUFkZHJlc3M+DQotICAgICAgICAgICAgICA8cmFuZ2UgZm9ybWF0PSJsb25nIj4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgICAgICAgPHdpZHRoIGZvcm1hdD0ibG9uZyIgaWQ9IndpZHRoIj4zMjwvd2lkdGg+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMDA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0VTUkFNU0laRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9URVNURVNSQU0xUkVNQVBfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfVEVTVFJFTUFQRU5BQkxFX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FU1JBTUZXUkVNQVA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9TSVhfQ1lDTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fUElQRV9CWVBBU1M8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0VOVk1QT1dFUkVERE9XTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1SRU1BUFNJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU5WTV9SRU1BUF9CQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1SRU1BUEJBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fRkFCX1JFTUFQPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weEM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAwQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0VOVk1GQUJSRU1BUEJBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9QUk9UX1NJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MTA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX1BST1RSRUdJT05TSVpFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9QUk9UX0JBU0U8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MTQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxNDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX1BST1RSRUdJT05CQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5NQVRSSVhfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDE4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMTg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9XRUlHSFRFRE1PREU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9NQVNURVJFTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RFNTX1NUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgxQzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDFDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QTExMT0NLTE9TVElOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBMTExPQ0tJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FUlJPUlNUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg6NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDNfM1ZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJST1dOT1VUMV81VklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+V0RPR1RJTUVPVVRFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDTUFUQ0hFVkVOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0xSX0RTU19TVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MjA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSUExMTE9DS0xPU1RJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJQTExMT0NLSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fQ0xFQVJTVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44OjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSQlJPV05PVVQzXzNWSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJCUk9XTk9VVDFfNVZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUldET0dUSU1FT1VURVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUlJUQ01BVENIRVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkZST01fQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDI0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMjQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNZU19UT1BUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPklBUF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4Mjg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1lTX0ZDRkc8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+U09GVF9JTlRFUlJVUFQ8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MkM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAyQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U09GVElOVEVSUlVQVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+U09GVF9SRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgzMDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDMwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QQURSRVNFVEVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlVTRVJSRVNFVEFDVElWRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RVhUX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPklBUF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HUElPX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkFDRV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5JMkMxX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkkyQzBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1BJMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TUEkwX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VUFSVDFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5VQVJUMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlRJTUVSX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UERNQV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk1BQ19TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNQ19TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVTUkFNMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5ERVZJQ0VfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDM0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMzQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FHT09EX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZQR0FQUk9HUkFNTUlOR19TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9QQ19BQ0NFU1NfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ0NJQkdPT0RfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlJPV05PVVQzXzNWX1NZTkNOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDFfNVZfU1lOQ048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPlNZU1RJQ0tfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDM4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMzg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQ0xLX0RJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOToyODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVENBTElCPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjU6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTV9NVVhfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDNDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwM0M8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU1fQ09ORklHXzA8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NDA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA0MDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fQ1NGRTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XRU5CRU4wPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUldQT0wwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVdSTjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QSVBFUkROMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0lERDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjoxNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9XUklURUxBVDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDoxMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVFJFU1QwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA6NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SRExBVEZJUlNUMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY6MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QT1JUU0laRTA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX01FTVRZUEUwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NPTkZJR18xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQ0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNDQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NTRkUxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV0VOQkVOMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JXUE9MMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BJUEVXUk4xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVJETjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9JREQxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY6MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV1JJVEVMQVQxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ6MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRSRVNUMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwOjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRGSVJTVDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42OjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUE9SVFNJWkUxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9NRU1UWVBFMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DTEtfQ1RSTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0ODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDQ4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTEJESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM6MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfQUNNRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExOjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QUNMS0RJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43OjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UENMSzFESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTo0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBDTEswRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM6MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5STUlJQ0xLU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfRElWX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDRDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVlJTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWSEFMRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWUlNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVZIQUxGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWUlNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVkhBTEY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfTVVYX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDUwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5NT0RFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzE6MzA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU48L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWENGRzE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWENGRzA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWFNFTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5HTE1VWFNFTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CWVBBU1NfUExMMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9DTVVYMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRZTkNTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SWENTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVEFUQ1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJZUEFTU19QTEwyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JNVVgwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFlOQlNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJYQlNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RBVEJTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJZUEFTU19QTEwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQU1VWDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BTVVYMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FNVVgwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EWU5BU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SWEFTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQVRBU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfUExMX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDU0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QT1dFUkRPV048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ09TRUwyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkNPU0VMMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZDT1NFTDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5YRExZU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFk0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJETFkwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJTRUwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJTRUwwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY2PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY1PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVY0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RklORElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX0RMWV9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NTg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA1ODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTE0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTExPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTEwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTA0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZQTAwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0MyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0I0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0IwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0E0PC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0ExPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0EwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5DQ0NfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDVDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNUM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBMTExPQ0tfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+VlRHX0NUUkw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NjQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA2NDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QkdQU01FTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZCQVRTRUxFQ1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ0lGX0NMUlBVQklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfVlJPTkVOQUJMRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlRDSUZfRldWUk9OPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5GQUJfSUY8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NkM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA2QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCQ0FMSUJGQUlMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJDQUxJQlNUQVJUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9MQVJHRV9DVF9YUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCX0FQQjMyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJfQUhCSUY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX0FIQkNBUEFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9BSEJfQllQQVNTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5BUEJfRVhUTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDcwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5BUEIxNl9YSE9MRDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+TE9PUEJBQ0tfQ1RSTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg3NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDc0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfRU1BQ0xPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJT0xPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfSTJDTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19TUElMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX1VBUlRMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+SU9fQkFOS19DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4Nzg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3ODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlRXRVNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzoyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJURUFTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5HUElOX1NSQ19TRUw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4N0M8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTVdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTRdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTNdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTJdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTFdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMTBdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbOV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzhdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs3XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbNl08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzVdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs0XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbM108L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzJdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsxXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgPC9hZGRyZXNzQmxvY2s+DQotICAgICAgICAgIDwvbWVtb3J5TWFwPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+Q0ZHTTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPkRFVl9LSVRfREVNT19NU1NfMDpNRERSX0FQQl9TTEFWRTwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAyMDgwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDIwODAwIC0gMHg0MDAyMEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4ODAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkNPUkVTRjJDT05GSUdfMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPkRFVl9LSVRfREVNTzpTRElGMV9BUEJtc2xhdmU8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMkMwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAyQzAwMCAtIDB4NDAwMkUzRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDI0MDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UlRDPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxNzAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDE3MDAwIC0gMHg0MDAxN0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5DT01CTEs8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDE2MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTYwMDAgLSAweDQwMDE2RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkhETUE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDE0MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTQwMDAgLSAweDQwMDE0RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkdQSU88L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDEzMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMTMwMDAgLSAweDQwMDEzRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkkyQ18xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxMjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDEyMDAwIC0gMHg0MDAxMkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5NTVVBUlRfMTwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMTAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAxMDAwMCAtIDB4NDAwMTBGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+SDJGSU5URVJSVVBUPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwNjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDA2MDAwIC0gMHg0MDAwNkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5XQVRDSERPRzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDUwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwNTAwMCAtIDB4NDAwMDVGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+VElNRVI8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDA0MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDQwMDAgLSAweDQwMDA0RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlBETUE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDAzMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDMwMDAgLSAweDQwMDAzRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkkyQ18wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwMjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDAyMDAwIC0gMHg0MDAwMkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5TUElfMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDEwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwMTAwMCAtIDB4NDAwMDFGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UkVDWUNMRURfRVNSQU0xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAxMjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDEyMDAwIC0gMHgyMDAxM0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDIwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UkVDWUNMRURfRVNSQU0wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAxMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDEwMDAwIC0gMHgyMDAxMUZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDIwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RVNSQU0xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAwODAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDA4MDAwIC0gMHgyMDAwRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDgwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RVNSQU0wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgwMDA4MDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDAwMDgwMDAwIC0gMHgwMDA4N0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDgwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICA8L3N1YnN5c3RlbT4NCi0gICAgICA8c3Vic3lzdGVtPg0KLSAgICAgICAgPG5hbWU+Q09SRUFCQ18wPC9uYW1lPg0KLSAgICAgICAgPG1hc3Rlcj5DT1JFQUJDXzA8L21hc3Rlcj4NCi0gICAgICAgIDxhZGRyZXNzTmFtZXM+DQotICAgICAgICAgIDxjb3VudD4xPC9jb3VudD4NCi0gICAgICAgICAgPG5hbWU+DQotICAgICAgICAgIDwvbmFtZT4NCi0gICAgICAgIDwvYWRkcmVzc05hbWVzPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl8wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+REVWX0tJVF9ERU1PXzA6RklDXzBfQVBCX1NMQVZFPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDAwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4MDAwMDAwMDAgLSAweDAwMDBGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAxMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgIDwvc3Vic3lzdGVtPg0KLSAgICA8L3N1YnN5c3RlbXM+DQotICA8L21lbW9yeXN5c3RlbT4NCi08L2RhdGFzaGVldD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9EZXZlbG9wbWVudEtpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvRGV2ZWxvcG1lbnRLaXRfaGFyZHdhcmUvZGF0YXNoZWV0LnhzbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzhjYTQyZC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL0xpYmVyb091dHB1dC9EZXZlbG9wbWVudEtpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsCisrKyAvZGV2L251bGwKQEAgLTEsMTA3NyArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJpc28tODg1OS0xIiA/Pg0KLQ0KLTx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZGF0YXNoZWV0Ij4NCi0gICAgICAgIDxodG1sPg0KLSAgICAgICAgICAgIDxoZWFkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iY3NzIi8+DQotICAgICAgICAgICAgPC9oZWFkPg0KLSAgICAgICAgICAgIDxib2R5Pg0KLSAgICAgICAgICAgICAgICA8YSBuYW1lPSJ0b3AiLz4NCi0gICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaGVhZGVyIi8+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkc2hlZXQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InByb2plY3Qtc2V0dGluZ3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPlRhYmxlIG9mIENvbnRlbnRzPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCIgPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2VuZXJhdGVkX2ZpbGVzIj5HZW5lcmF0ZWQgRmlsZXM8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNpb3MiPklPJ3M8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNjb3JlcyI+SGFyZHdhcmUgSW5zdGFuY2VzPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZmlybXdhcmVfY29yZXMiPkZpcm13YXJlPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjbWVtbWFwIj5NZW1vcnkgTWFwPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9IntoZWFkZXJ9X01lbW9yeU1hcC54bWwiID5NZW1vcnkgTWFwPC9hPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PT09IEdlbmVyYXRlZCBGaWxlJ3MgPT09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImdlbmVyYXRlZF9maWxlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPkdlbmVyYXRlZCBGaWxlczwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZ2VuZXJhdGVkX2ZpbGVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PSBJTydzID09PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJpb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5JTydzPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9wPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJpb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT0gQ09SRVMgPT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJjb3JlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmVzDQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNvcmVzIi8+DQotDQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PSBGaXJ3bWFyZSA9PT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8cD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iZmlybXdhcmVfY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5GaXJtd2FyZTwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iZmlybXdhcmVfY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPCEtLSA9PT09PSBNRU1PUlkgTUFQID09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0ibWVtbWFwIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVtb3J5IE1hcA0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibWVtb3J5c3lzdGVtIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgPC9ib2R5Pg0KLSAgICAgICAgPC9odG1sPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iaGVhZGVyIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9InRpdGxlIj4NCi0gICAgICAgICAgICA8aDE+DQotICAgICAgICAgICAgICAgIERhdGEgU2hlZXQ6IDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgICAgICAgICAgPC9oMT4NCi0gICAgICAgICAgICA8IS0tID09PT09PT0gSU8ncyA9PT09PT09IA0KLSAgICAgIDxkaXYgY2xhc3M9ImNvcHlyaWdodCI+DQotICAgICAgICBDb3B5cmlnaHQgMjAwOCBBY3RlbCBDb3Jwb3JhdGlvbg0KLSAgICAgIDwvZGl2Pg0KLQkgIC0tPg0KLSAgICAgICAgPC9kaXY+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwcm9qZWN0LXNldHRpbmdzIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+UHJvamVjdCBTZXR0aW5nczwvZGl2Pg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjQiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+RkFNOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZmFtIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+RGllOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZGllIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+UGFja2FnZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhY2thZ2UiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5TcGVlZCBHcmFkZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InNwZWVkLWdyYWRlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+Vm9sdGFnZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InZvbHRhZ2UiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5IREw6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJoZGwtdHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlByb2plY3QgRGVzY3JpcHRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwcm9qZWN0LWRlc2NyaXB0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+TG9jYXRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJsb2NhdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlN0YXRlIChUaW1lKTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InN0YXRlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDxici8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZ2VuZXJhdGVkX2ZpbGVzIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWxlc2V0Ij4NCi0gICAgICAgICAgICAgICAgPGI+RmlsZSBzZXQ6ICA8L2I+DQotICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgIDxici8+DQotDQotICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWxlIj4NCi0gICAgICAgICAgICAgICAgICAgIDxsaT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9saT4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0gICAgPCEtLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIC0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWlvcyI+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwb3J0LW5hbWUiLz4NCi0gICAgICAgIDwvdGQ+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJkaXJlY3Rpb24iLz4NCi0gICAgICAgIDwvdGQ+DQotICAgICAgICA8dGQ+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwaW4tbnVtYmVyIi8+DQotICAgICAgICA8L3RkPg0KLSAgICAgICAgPHRkPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaW8tc3RhbmRhcmQiLz4NCi0gICAgICAgIDwvdGQ+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImlvcyI+DQotICAgICAgICA8eHNsOmNob29zZT4NCi0gICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0iY291bnQoaW8pICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iaW9zIiAgYWxpZ249ImNlbnRlciIgIGJvcmRlcj0iMSIgd2lkdGg9Ijc1JSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSI0Ij4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvcnQgTmFtZQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXJlY3Rpb24NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGluDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEkvTyBTdGFuZGFyZA0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImlvIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1pb3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gSU8ncyA8L2k+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgPC94c2w6Y2hvb3NlPg0KLSAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iZmlybXdhcmVfY29yZXMiPg0KLSAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvdW50KGZpcm13YXJlX2NvcmUpICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGI+U29mdHdhcmUgSURFOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iL2RhdGFzaGVldC9wcm9qZWN0LXNldHRpbmdzL3N3aWRlLXRvb2xjaGFpbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotDQotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5zdGFuY2VzIj5Ecml2ZXJzOjwvc3Bhbj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlybXdhcmVfY29yZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3tjb3JlLW5hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlybXdhcmVfY29yZSI+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Intjb3JlLW5hbWV9Ii8+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjb3JlcyIgd2lkdGg9Ijk3JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJvcmRlcj0iMSIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkZpcm1XYXJlTW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLXNwaXJpdCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZXMiPmluc3RhbmNlIGxpc3Q8L2E+LCA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gRmlybXdhcmUgR2VuZXJhdGVkLiAgRGVzaWduIG1heSBub3QgY29udGFpbiBhbnkgcHJvY2Vzc29yIHN1YnN5c3RlbXMsIG9yIGZpcm13YXJlIGhhdmUgbm90IGJlZW4gZG93bmxvYWRlZCB0byB5b3VyIHZhdWx0PC9pPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLSAgICA8IS0tIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAgLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iY29yZXMiPg0KLSAgICAgICAgPHhzbDpjaG9vc2U+DQotDQotICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvdW50KGNvcmUpICZndDsgMCI+DQotICAgICAgICAgICAgICAgIDwhLS0gQ29yZSBUT0MgLS0+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imluc3RhbmNlcyI+SW5zdGFuY2VzOjwvc3Bhbj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3tjb3JlLW5hbWV9Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLQ0KLSAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZSI+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Intjb3JlLW5hbWV9Ii8+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJjb3JlcyIgd2lkdGg9Ijk3JSIgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLWJvcmRlcj0iMSIgIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMTQiPiAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkNvbXBvbmVudE1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1jb21wIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJTcGlyaXRNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtc3Bpcml0Ii8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJBZGxpYk1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1hZGxpYiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iSGRsTW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWhkbCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZXMiPmluc3RhbmNlIGxpc3Q8L2E+LCA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGk+Tm8gSW5zdGFuY2VzPC9pPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWNvbXAiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlR5cGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkxvY2F0aW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1sb2NhdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1zcGlyaXQiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlR5cGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlZlbmRvcjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtdmVuZG9yIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5MaWJyYXJ5OiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1saWIiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkNvcmUgTmFtZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtaW50bmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VmVyc2lvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtdmVyIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5EZXNjcmlwdGlvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZGVzYyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+UGFyYW1ldGVyczogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtc3Bpcml0LXBhcmFtcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1zcGlyaXQtcGFyYW1zIiA+DQotICAgICAgICA8eHNsOmlmIHRlc3Q9ImNvdW50KGNvcmUtcGFyYW0pID4gMCI+DQotICAgICAgICAgICAgPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogI0YwRjBGMDsgIiA+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDx0YWJsZT4NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPHRyPg0KLSAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgIE5hbWUNCi0gICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgIFZhbHVlDQotICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgPC90cj4gLS0+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iY29yZS1wYXJhbSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmUtcGFyYW1zIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwveHNsOmlmPg0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudChjb3JlLXBhcmFtKSAmbHQ7IDEiPg0KLSAgICAgICAgICAgIDxpPk5vIHBhcmFtZXRlcnM8L2k+DQotICAgICAgICA8L3hzbDppZj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtYWRsaWIiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkNlbGwgVHlwZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZXh0dHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLQ0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1oZGwiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPk1vZHVsZSBOYW1lOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1leHR0eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5IREwgRmlsZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbG9jYXRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAwIj4NCi0gICAgICAgICAgICAgICAgPGI+SW5zdGFuY2UgTmFtZTogPC9iPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbmFtZSIvPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlLXBhcmFtcyI+DQotICAgICAgICA8dHI+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8YiBjbGFzcz0icGFyYW1zLW5hbWUiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS1oZGxuYW1lIi8+IFsgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS1uYW1lIi8+IF0NCi0gICAgICAgICAgICAgICAgPC9iPg0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InBhcmFtLWhkbHZhbHVlIi8+IFsgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS12YWx1ZSIvPiBdDQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLQ0KLSAgICA8IS0tLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLS0+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InBvcnQtbmFtZXxkaXJlY3Rpb258cGluLW51bWJlcnxpby1zdGFuZGFyZCI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcmUtbmFtZXxjb3JlLXR5cGV8Y29yZS1leHR0eXBlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY29yZS12ZW5kb3J8Y29yZS1saWJ8Y29yZS1pbnRuYW1lfGNvcmUtdmVyfGNvcmUtZGVzYyI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcmUtbG9jYXRpb24iPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJmYW18ZGllfHBhY2thZ2V8aGRsLXR5cGV8bG9jYXRpb258c3RhdGUiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwYXJhbS1uYW1lfHBhcmFtLXZhbHVlfHBhcmFtLXRhZ3xwYXJhbS1oZGxuYW1lfHBhcmFtLWhkbHZhbHVlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayI+DQotICAgICAgICA8YSBocmVmPSIjdG9wIj50b3Agb2YgcGFnZTwvYT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotDQotICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PU1FTU9SWSBNQVA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJtZW1vcnlzeXN0ZW0iPg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic3Vic3lzdGVtcyIvPg0KLSAgICAgICAgPC9kaXY+DQotDQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJzeXN0ZW1zIj4NCi0NCi0gICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJzdWJzeXN0ZW0iPg0KLSAgICAgICAgICAgIDxsaT4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIje25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJub2RlKCkiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgPC9saT4NCi0gICAgICAgIDwveHNsOmZvci1lYWNoPg0KLQ0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPGRpdiBjbGFzcz0idG9wbGlua3MiPg0KLSAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPGJyLz4NCi0NCi0gICAgICAgIDxocj48L2hyPg0KLSAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzdWJzeXN0ZW0iLz4NCi0NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InN1YnN5c3RlbSI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8aDI+DQotICAgICAgICAgICAgICAgIDxhIG5hbWU9IntuYW1lfSBNZW1vcnkgTWFwIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgIDwvYT4gU3Vic3lzdGVtDQotICAgICAgICAgICAgPC9oMj4NCi0gICAgICAgICAgICBNYXN0ZXIocykgb24gdGhpcyBidXM6DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJtYXN0ZXIiLz4NCi0gICAgICAgICAgICA8YnI+PC9icj48YnI+PC9icj4NCi0NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImFkZHJlc3NOYW1lcyIgLz4NCi0gICAgICAgICAgICA8YSBocmVmPSIjbWVtbWFwIj5zdWJzeXN0ZW0gbGlzdDwvYT4sDQotICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotDQotICAgICAgICAgICAgPGJyLz48YnIvPg0KLSAgICAgICAgICAgIDxocj48L2hyPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic2xhdmUiLz4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0idGl0bGUiPg0KLSAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiMwMDAwMDAiPg0KLSAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgIDwvc3Bhbj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImRlc2NyaXB0aW9uIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im1hc3RlciI+DQotICAgICAgICA8bGk+DQotICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDwvbGk+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJhZGRyZXNzTmFtZXMiPg0KLSAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWdzIiBib3JkZXI9IjEiIGNlbGxzcGFjZT0iMCIgY2VsbHBhZGRpbmc9IjEwIiAgYWxpZ249ImNlbnRlciIgPg0KLSAgICAgICAgICAgIDx4c2w6aWYgdGVzdD0iY291bnQgPSAxIj4NCi0gICAgICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjEiPjwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iMiI+QWRkcmVzcyBSYW5nZTwvdGg+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC94c2w6aWY+DQotICAgICAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudCAmZ3Q7IDEiPg0KLSAgICAgICAgICAgICAgICA8dHIgYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgICAgICA8dGggcm93c3Bhbj0iMiI+PC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCBjb2xzcGFuPSIyIj5BZGRyZXNzIFJhbmdlPC90aD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9Im5hbWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDppZj4NCi0NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iLi4vc2xhdmUiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGggY2VsbHNwYWNlPSIwIiBjb2xzcGFuPSIxIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIje25hbWV9X3ttZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4gOiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibWVtb3J5TWFwL25hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZnVsbEFkZHJlc3NTcGFjZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLQ0KLSAgICAgICAgPC90YWJsZT4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InNsYXZlIj4NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDxoMz4NCi0gICAgICAgICAgICAgICAgPGEgbmFtZT0ie25hbWV9X3ttZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4gOiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibWVtb3J5TWFwL25hbWUiLz4gTWVtb3J5IE1hcCBbDQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iZnVsbEFkZHJlc3NTcGFjZSIvPiBdDQotICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICA8L2gzPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8ZGl2IGNsYXNzPSJtbXJhbmdlIj4NCi0NCi0gICAgICAgICAgICA8aT5yYW5nZTogPC9pPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icmFuZ2UiLz4NCi0NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJtZW1vcnlNYXAvYWRkcmVzc0Jsb2NrL3JlZ2lzdGVyIj4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im1lbW9yeU1hcC9hZGRyZXNzQmxvY2siLz4NCi0gICAgICAgIDwveHNsOmlmPg0KLSAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uL25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgIGJhY2sgdG8gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4uL25hbWUiLz4gTWVtb3J5IE1hcA0KLSAgICAgICAgPC9hPg0KLSAgICAgICAgPGJyLz4NCi0gICAgICAgIDxici8+DQotICAgICAgICA8aHI+PC9ocj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImFkZHJlc3NCbG9jayI+DQotICAgICAgICA8dGFibGUgY2xhc3M9InJlZ3MiIGJvcmRlcj0iMiIgY2VsbHNwYWNlPSIwIiBjZWxscGFkZGluZz0iNCIgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICA8dGg+QWRkcmVzczwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4NCi0gICAgICAgICAgICAgICAgPHRoPlIvVzwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5XaWR0aDwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5SZXNldCBWYWx1ZTwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5EZXNjcmlwdGlvbjwvdGg+DQotICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0icmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPSJ0cnVlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWJzb2x1dGVBZGRyZXNzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImZpZWxkIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uLy4uLy4uL25hbWV9X3tuYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDp3aGVuPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmNob29zZT4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIiBub3dyYXA9InRydWUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhY2Nlc3MiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InNpemUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InJlc2V0VmFsdWUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgIDwvdGFibGU+DQotDQotICAgICAgICA8eHNsOmlmIHRlc3Q9InJlZ2lzdGVyL2ZpZWxkIj4NCi0gICAgICAgICAgICA8YSBjbGFzcz0idG9wbGlua3MiIGhyZWY9IiN7Li4vLi4vLi4vbmFtZX0gTWVtb3J5IE1hcCI+DQotICAgICAgICAgICAgICAgIGJhY2sgdG8gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4uLy4uLy4uL25hbWUiLz4gTWVtb3J5IE1hcA0KLSAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0icmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxoND4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0icmVnaXN0ZXItZGV0YWlscyIgbmFtZT0iey4uLy4uLy4uL25hbWV9X3tuYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+IHJlZ2lzdGVyIGRldGFpbHMgWyA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWJzb2x1dGVBZGRyZXNzIi8+IF0gOg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgICAgIDwvaDQ+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyZWd3aWR0aCI+DQotDQotICAgICAgICAgICAgICAgICAgICA8aT53aWR0aDogPC9pPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzaXplIi8+LWJpdA0KLQ0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWdzIiBib3JkZXI9IjIiIGNlbGxzcGFjZT0iMCIgY2VsbHBhZGRpbmc9IjQiIGFsaWduPSJjZW50ZXIiID4NCi0gICAgICAgICAgICAgICAgICAgIDx0ciBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGggYWxpZ249ImxlZnQiPkJpdCBOdW1iZXI8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5OYW1lPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+Ui9XPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+RGVzY3JpcHRpb248L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJmaWVsZCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImJpdE51bWJlciIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPSJ0cnVlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJhY2Nlc3MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJkZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0NCi0gICAgICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uLy4uLy4uL25hbWV9X3suLi8uLi8uLi9tZW1vcnlNYXAvbmFtZX0gUmVnaXN0ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgYmFjayB0byA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLi4vLi4vLi4vbmFtZSIvPiBSZWdpc3RlcnMNCi0gICAgICAgICAgICAgICAgPC9hPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgIDwveHNsOmlmPg0KLQ0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icmFuZ2UiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT1FTkQgTUVNT1JZIE1BUD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotDQotDQotDQotICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBDU1MgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJjc3MiPg0KLSAgICAgICAgPHN0eWxlPg0KLQ0KLSAgICAgICAgICAgIGh0bWwNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjpkYXJrZ3JheTsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgYm9keQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBmb250LWZhbWlseTphcmlhbDsNCi0gICAgICAgICAgICBmb250LXNpemU6IDExcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLmNvcmVzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjQjBCMEIwOw0KLSAgICAgICAgICAgIGJvcmRlci1zdHlsZTpzb2xpZDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5jb3JlcyB0ZA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjp0b3A7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnJlZ3MsDQotICAgICAgICAgICAgdGFibGUuaW9zDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0IwQjBCMDsNCi0gICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICBib3JkZXItc3BhY2luZzowcHg7DQotICAgICAgICAgICAgYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOw0KLSAgICAgICAgICAgIHdpZHRoPTc1JTsNCi0gICAgICAgICAgICBmb250LWZhbWlseTpjb3VyaWVybmV3Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFwdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUucmVncyB0aA0KLSAgICAgICAgICAgIHRhYmxlLmlvcyB0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNCMEIwQjA7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICBjb2xvcjogZGFya3NsYXRlZ3JheTsNCi0gICAgICAgICAgICBmb250LXdlaWdodDpib2xkOw0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICB0YWJsZS5pb3MgdGQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnBhcmFtcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNEMEQwRDA7DQotICAgICAgICAgICAgYm9yZGVyLXN0eWxlOnNvbGlkOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDowcHg7DQotICAgICAgICAgICAgYm9yZGVyLXNwYWNpbmc6MHB4Ow0KLSAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsNCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgdGFibGUucGFyYW1zIHRoDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0QwRDBEMDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MXB4Ow0KLSAgICAgICAgICAgIGNvbG9yOiBibGFjazsNCi0gICAgICAgICAgICBmb250LXdlaWdodDpib2xkOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5wYXJhbXMgdGQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGIucGFyYW1zLW5hbWUNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgY29sb3I6ICM1MDUwNTAgICA7DQotDQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIGRpdi5oZWFkZXINCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDdweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogN3B4Ow0KLSAgICAgICAgICAgIGNvbG9yOiMwMDMzOTk7DQotICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0QwRDBEMDsNCi0gICAgICAgICAgICB3aWR0aD0xMDAlOw0KLSAgICAgICAgICAgIGZvbnQtZmFtaWx5OmFyaWFsOw0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxNHB0Ow0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOw0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LnRpdGxlDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMHB4Ow0KLSAgICAgICAgICAgIG1hcmdpbjogYXV0bzsNCi0gICAgICAgICAgICBjb2xvcjojRDBEMEQwOw0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IzAwMzM5OSA7DQotDQotICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KLSAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjMwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1yaWdodDozMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYuZHNoZWV0DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHdpZHRoOiAxMDAwcHg7DQotICAgICAgICAgICAgbWFyZ2luOiBhdXRvOw0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQNCi0NCi0gICAgICAgICAgICBjb2xvcjojMDAzMzk5Ow0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOw0KLQ0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAzMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctbGVmdDozMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MzBweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmNvbnRlbnQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgcGFkZGluZy10b3A6IDEwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1sZWZ0OjEwcHg7DQotICAgICAgICAgICAgcGFkZGluZy1yaWdodDoxMHB4Ow0KLQ0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgZm9udC1zaXplOiAxM3B0Ow0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi5jb3B5cmlnaHQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpyaWdodDsNCi0gICAgICAgICAgICBmb250LXNpemU6OXB0Ow0KLSAgICAgICAgICAgIGZvbnQtc3R5bGU6aXRhbGljOw0KLSAgICAgICAgICAgIGZvbnQtd2VpZ2h0Om5vcm1hbDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmxpbmtzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtYWxpZ246bGVmdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgYg0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBjb2xvcjpkYXJrc2xhdGVncmF5DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGhyDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHdpZHRoPTEwMCU7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5pbnN0YW5jZXMNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgZm9udC1zaXplOjE0cHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAudG9wbGlua3MNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgZm9udC1zaXplOjEwcHQ7DQotICAgICAgICAgICAgdGV4dC1hbGlnbjpsZWZ0Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAucmVnaXN0ZXItZGV0YWlscw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoyMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAubW1yYW5nZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoxMHB4Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxMXB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7DQotDQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC5yZWd3aWR0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWluZGVudDoyNHB0Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxMXB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDIwcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgPC9zdHlsZT4NCi0NCi0gICAgICAgIDwhLS09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSBFTkQgQ1NTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLTwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9SVE9TRGVtb19EYXRhU2hlZXQueG1sIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9SVE9TRGVtb19EYXRhU2hlZXQueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTMyZDU0Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvTGliZXJvT3V0cHV0L1N0YXJ0ZXJLaXRfaGFyZHdhcmUvUlRPU0RlbW9fRGF0YVNoZWV0LnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDIyMjMgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSIgPz4NCi08P3htbC1zdHlsZXNoZWV0IHR5cGU9InRleHQveHNsIiBocmVmPSJkYXRhc2hlZXQueHNsIj8+DQotPGRhdGFzaGVldD4NCi0gIDxoZWFkZXI+UlRPU0RlbW88L2hlYWRlcj4NCi0gIDxwcm9qZWN0LXNldHRpbmdzPg0KLSAgICA8ZmFtPlNtYXJ0RnVzaW9uMjwvZmFtPg0KLSAgICA8ZGllPk0yUzA1MFRfRVM8L2RpZT4NCi0gICAgPHBhY2thZ2U+ODk2IEZCR0E8L3BhY2thZ2U+DQotICAgIDxzcGVlZC1ncmFkZT5TVEQ8L3NwZWVkLWdyYWRlPg0KLSAgICA8dm9sdGFnZT4xLjI8L3ZvbHRhZ2U+DQotICAgIDxoZGwtdHlwZT5WZXJpbG9nPC9oZGwtdHlwZT4NCi0gICAgPHByb2plY3QtZGVzY3JpcHRpb24+DQotICAgIDwvcHJvamVjdC1kZXNjcmlwdGlvbj4NCi0gICAgPGxvY2F0aW9uPmM6L2Rldi9GcmVlUlRPUy9TbWFydEZ1c3Rpb24yL0xpYmVyby9SVE9TRGVtby9jb21wb25lbnQvd29yay9SVE9TRGVtbzwvbG9jYXRpb24+DQotICAgIDxzdGF0ZT5HRU5FUkFURUQgKCBTdW4gTWF5IDA1IDEzOjIzOjIyIDIwMTMgKTwvc3RhdGU+DQotICAgIDxzd2lkZS10b29sY2hhaW4+U29mdENvbnNvbGUgd29ya3NwYWNlIGdlbmVyYXRlZCB0byBjOlxkZXZcRnJlZVJUT1NcU21hcnRGdXN0aW9uMlxMaWJlcm9cUlRPU0RlbW9cU29mdENvbnNvbGU8L3N3aWRlLXRvb2xjaGFpbj4NCi0gIDwvcHJvamVjdC1zZXR0aW5ncz4NCi0gIDxzaXRlLW1hcD4NCi0gIDwvc2l0ZS1tYXA+DQotICA8ZmlsZXNldD4NCi0gICAgPG5hbWU+SERMIEZpbGUocyk8L25hbWU+DQotICAgIDxmaWxlPmM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xjb21wb25lbnRcQWN0ZWxcU2dDb3JlXE9TQ1wxLjAuMTAwXG9zY19jb21wcy52PC9maWxlPg0KLSAgICA8ZmlsZT5jOlxkZXZcRnJlZVJUT1NcU21hcnRGdXN0aW9uMlxMaWJlcm9cUlRPU0RlbW9cY29tcG9uZW50XHdvcmtcUlRPU0RlbW9cRkNDQ18wXFJUT1NEZW1vX0ZDQ0NfMF9GQ0NDLnY8L2ZpbGU+DQotICAgIDxmaWxlPmM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xjb21wb25lbnRcd29ya1xSVE9TRGVtb1xPU0NfMFxSVE9TRGVtb19PU0NfMF9PU0MudjwvZmlsZT4NCi0gICAgPGZpbGU+YzpcZGV2XEZyZWVSVE9TXFNtYXJ0RnVzdGlvbjJcTGliZXJvXFJUT1NEZW1vXGNvbXBvbmVudFx3b3JrXFJUT1NEZW1vXFJUT1NEZW1vLnY8L2ZpbGU+DQotICAgIDxmaWxlPmM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xjb21wb25lbnRcd29ya1xSVE9TRGVtb19NU1NcUlRPU0RlbW9fTVNTLnY8L2ZpbGU+DQotICAgIDxmaWxlPmM6XGRldlxGcmVlUlRPU1xTbWFydEZ1c3Rpb24yXExpYmVyb1xSVE9TRGVtb1xjb21wb25lbnRcd29ya1xSVE9TRGVtb19NU1NcUlRPU0RlbW9fTVNTX3RtcF9zeW4udjwvZmlsZT4NCi0gIDwvZmlsZXNldD4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzBfTTJGPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+Ti9BPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPkdQSU9fOF9GMk08L3BvcnQtbmFtZT4NCi0gICAgPGRpcmVjdGlvbj5JTjwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgPC9pbz4NCi0gIDxpbz4NCi0gICAgPHBvcnQtbmFtZT5HUElPXzFfTTJGPC9wb3J0LW5hbWU+DQotICAgIDxkaXJlY3Rpb24+Ti9BPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1NVUFSVF8wX1JYRDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPklOPC9kaXJlY3Rpb24+DQotICAgIDxwaW4tbnVtYmVyPi08L3Bpbi1udW1iZXI+DQotICA8L2lvPg0KLSAgPGlvPg0KLSAgICA8cG9ydC1uYW1lPk1NVUFSVF8wX1RYRDwvcG9ydC1uYW1lPg0KLSAgICA8ZGlyZWN0aW9uPk4vQTwvZGlyZWN0aW9uPg0KLSAgICA8cGluLW51bWJlcj4tPC9waW4tbnVtYmVyPg0KLSAgPC9pbz4NCi0gIDxjb3JlIHR5cGU9IlNwaXJpdE1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5TcGlyaXRNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPlNnQ29yZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+RkNDQzwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMDwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+ICAiU21hcnRGdXNpb24yIENsb2NrIENvbmRpdGlvbmluZyBDaXJjdWl0IChDQ0MpIiAgPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+RkNDQ18wPC9jb3JlLW5hbWU+DQotICA8L2NvcmU+DQotICA8Y29yZSB0eXBlPSJTcGlyaXRNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+U3Bpcml0TW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5TZ0NvcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPk9TQzwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+MS4wLjEwMDwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+DQotICAgIDwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPk9TQ18wPC9jb3JlLW5hbWU+DQotICA8L2NvcmU+DQotICA8Y29yZSB0eXBlPSJDb21wb25lbnRNb2R1bGUiPg0KLSAgICA8Y29yZS10eXBlPkNvbXBvbmVudE1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS1leHR0eXBlPkhpZXJTcGlyaXREZXNpZ248L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtbG9jYXRpb24+YzovZGV2L0ZyZWVSVE9TL1NtYXJ0RnVzdGlvbjIvTGliZXJvL1JUT1NEZW1vL2NvbXBvbmVudC93b3JrL1JUT1NEZW1vX01TUzwvY29yZS1sb2NhdGlvbj4NCi0gICAgPGNvcmUtbmFtZT5SVE9TRGVtb19NU1NfMDwvY29yZS1uYW1lPg0KLSAgPC9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfQ01TSVM8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMS4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBDb3J0ZXggTWljcm9jb250cm9sbGVyIFNvZnR3YXJlIEludGVyZmFjZSBTdGFuZGFyZCAoQ01TSVMpLg0KLQ0KLVRoZSBmaXJtd2FyZSBwYWNrYWdlIHByb3ZpZGVzOg0KLS0gQ29ydGV4LU0zIHN0YXJ0dXAgY29kZS4NCi0tIENNU0lTIHN0YW5kYXJkIG5hbWluZyBmb3IgZXhjZXB0aW9uIGFuZCBpbnRlcnJ1cHQgaGFuZGxlcnMuDQotLSBDTVNJUyBzdGFuZGFyZCBmdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBDb3J0ZXgtTTMgTmVzdGVkIFZlY3RvcmVkIEludGVycnVwdCBDb250cm9sbGVyIChOVklDKS4NCi0tIHBlcmlwaGVyYWxzIHJlZ2lzdGVycyBkZXNjcmlwdGlvbi4NCi0tIGhhcmR3YXJlIGFic3RyYWN0aW9uIGxheWVyIChIQUwpIGZvciBGUEdBIGZhYnJpYyBzb2Z0LUlQIHBlcmlwaGVyaXJhbHMuDQotDQotVGhlc2UgZmlsZXMgYXJlIHJlcXVpcmVkIGJ5IHRoZSBTbWFydEZ1c2lvbjIgYmFyZSBtZXRhbCBwZXJpcGhlcmFsIGRyaXZlcnMgdG8gYnVpbGQgY29ycmVjdGx5Lg0KLTwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1wYXJhbT4NCi0gICAgICA8cGFyYW0tbmFtZT5Tb2Z0d2FyZSBUb29sIENoYWluOjwvcGFyYW0tbmFtZT4NCi0gICAgICA8cGFyYW0tdmFsdWU+U29mdENvbnNvbGU8L3BhcmFtLXZhbHVlPg0KLSAgICAgIDxwYXJhbS1oZGxuYW1lPlRvb2xDaGFpbjwvcGFyYW0taGRsbmFtZT4NCi0gICAgICA8cGFyYW0taGRsdmFsdWU+MDwvcGFyYW0taGRsdmFsdWU+DQotICAgICAgPHBhcmFtLXRhZz5hY3RlbC1jYzp2YXJpYW50UGFyYW1ldGVyPC9wYXJhbS10YWc+DQotICAgIDwvY29yZS1wYXJhbT4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfQ01TSVNfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0dQSU9fRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBHUElPIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfR1BJT19Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX0hQRE1BX0RyaXZlcjwvY29yZS1pbnRuYW1lPg0KLSAgICA8Y29yZS12ZXI+Mi4wLjEwMTwvY29yZS12ZXI+DQotICAgIDxjb3JlLWRlc2M+U21hcnRGdXNpb24yIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gKE1TUykgSGlnaCBQZXJmb3JtYW5jZSBETUEgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19IUERNQV9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX01NVUFSVF9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDE8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIE1NVUFSVCBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX01NVUFSVF9Ecml2ZXJfMDwvY29yZS1uYW1lPg0KLSAgPC9maXJtd2FyZV9jb3JlPg0KLSAgPGZpcm13YXJlX2NvcmUgdHlwZT0iRmlybVdhcmVNb2R1bGUiPg0KLSAgICA8Y29yZS1leHR0eXBlPklQPC9jb3JlLWV4dHR5cGU+DQotICAgIDxjb3JlLXR5cGU+RmlybVdhcmVNb2R1bGU8L2NvcmUtdHlwZT4NCi0gICAgPGNvcmUtdmVuZG9yPkFjdGVsPC9jb3JlLXZlbmRvcj4NCi0gICAgPGNvcmUtbGliPkZpcm13YXJlPC9jb3JlLWxpYj4NCi0gICAgPGNvcmUtaW50bmFtZT5TbWFydEZ1c2lvbjJfTVNTX05WTV9Ecml2ZXI8L2NvcmUtaW50bmFtZT4NCi0gICAgPGNvcmUtdmVyPjIuMC4xMDM8L2NvcmUtdmVyPg0KLSAgICA8Y29yZS1kZXNjPlNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIGVOVk0gYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19OVk1fRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19SVENfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBSVEMgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIuDQotDQotVGhpcyBkcml2ZXIgcmVxdWlyZXMgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllciB0byBidWlsZCBjb3JyZWN0bHkuPC9jb3JlLWRlc2M+DQotICAgIDxjb3JlLW5hbWU+U21hcnRGdXNpb24yX01TU19SVENfRHJpdmVyXzA8L2NvcmUtbmFtZT4NCi0gIDwvZmlybXdhcmVfY29yZT4NCi0gIDxmaXJtd2FyZV9jb3JlIHR5cGU9IkZpcm1XYXJlTW9kdWxlIj4NCi0gICAgPGNvcmUtZXh0dHlwZT5JUDwvY29yZS1leHR0eXBlPg0KLSAgICA8Y29yZS10eXBlPkZpcm1XYXJlTW9kdWxlPC9jb3JlLXR5cGU+DQotICAgIDxjb3JlLXZlbmRvcj5BY3RlbDwvY29yZS12ZW5kb3I+DQotICAgIDxjb3JlLWxpYj5GaXJtd2FyZTwvY29yZS1saWI+DQotICAgIDxjb3JlLWludG5hbWU+U21hcnRGdXNpb24yX01TU19TeXN0ZW1fU2VydmljZXNfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAzPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9zb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBTeXN0ZW0gU2VydmljZXMgc29mdHdhcmUgZHJpdmVyLg0KLQ0KLVRoaXMgZHJpdmVyIHJlcXVpcmVzIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgdG8gYnVpbGQgY29ycmVjdGx5LjwvY29yZS1kZXNjPg0KLSAgICA8Y29yZS1uYW1lPlNtYXJ0RnVzaW9uMl9NU1NfU3lzdGVtX1NlcnZpY2VzX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8ZmlybXdhcmVfY29yZSB0eXBlPSJGaXJtV2FyZU1vZHVsZSI+DQotICAgIDxjb3JlLWV4dHR5cGU+SVA8L2NvcmUtZXh0dHlwZT4NCi0gICAgPGNvcmUtdHlwZT5GaXJtV2FyZU1vZHVsZTwvY29yZS10eXBlPg0KLSAgICA8Y29yZS12ZW5kb3I+QWN0ZWw8L2NvcmUtdmVuZG9yPg0KLSAgICA8Y29yZS1saWI+RmlybXdhcmU8L2NvcmUtbGliPg0KLSAgICA8Y29yZS1pbnRuYW1lPlNtYXJ0RnVzaW9uMl9NU1NfVGltZXJfRHJpdmVyPC9jb3JlLWludG5hbWU+DQotICAgIDxjb3JlLXZlcj4yLjAuMTAxPC9jb3JlLXZlcj4NCi0gICAgPGNvcmUtZGVzYz5TbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBUaW1lciBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlci4NCi0NCi1UaGlzIGRyaXZlciByZXF1aXJlcyB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIHRvIGJ1aWxkIGNvcnJlY3RseS48L2NvcmUtZGVzYz4NCi0gICAgPGNvcmUtbmFtZT5TbWFydEZ1c2lvbjJfTVNTX1RpbWVyX0RyaXZlcl8wPC9jb3JlLW5hbWU+DQotICA8L2Zpcm13YXJlX2NvcmU+DQotICA8bWVtb3J5c3lzdGVtPg0KLSAgICA8dGl0bGU+TWVtb3J5IE1hcCBmb3IgUlRPU0RlbW88L3RpdGxlPg0KLSAgICA8ZGVzY3JpcHRpb24+VGhlIHByb2plY3QgY29udGFpbnMgdGhlIGZvbGxvd2luZyBzdWJzeXN0ZW1zOjwvZGVzY3JpcHRpb24+DQotICAgIDxzdWJzeXN0ZW1zPg0KLSAgICAgIDxzdWJzeXN0ZW0+DQotICAgICAgICA8bmFtZT5DTTM8L25hbWU+DQotICAgICAgICA8bWFzdGVyPkNNMzwvbWFzdGVyPg0KLSAgICAgICAgPGFkZHJlc3NOYW1lcz4NCi0gICAgICAgICAgPGNvdW50PjE8L2NvdW50Pg0KLSAgICAgICAgICA8bmFtZT4NCi0gICAgICAgICAgPC9uYW1lPg0KLSAgICAgICAgPC9hZGRyZXNzTmFtZXM+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyX1JFR0lPTjU8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEYwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4RjAwMDAwMDAgLSAweEZGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5ERFJfMF9TUEFDRV8zPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhEMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEQwMDAwMDAwIC0gMHhERkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RERSXzBfU1BBQ0VfMjwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4QzAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHhDMDAwMDAwMCAtIDB4Q0ZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkREUl8wX1NQQUNFXzE8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weEIwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4QjAwMDAwMDAgLSAweEJGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5ERFJfMF9TUEFDRV8wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHhBMDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weEEwMDAwMDAwIC0gMHhBRkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RklDMzJfUkVHSU9ONDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4OTAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg5MDAwMDAwMCAtIDB4OUZGRkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDAwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkZJQzMyX1JFR0lPTjM8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDgwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4ODAwMDAwMDAgLSAweDhGRkZGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5BSEIyRU5WTTFfUkVHSVNURVJTPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg2MDBDMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDYwMEMwMDAwIC0gMHg2MDBGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwNDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+QUhCMkVOVk0wX1JFR0lTVEVSUzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NjAwODAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg2MDA4MDAwMCAtIDB4NjAwQkZGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDAwMDQwMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPkVOVk0xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg2MDA0MDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDYwMDQwMDAwIC0gMHg2MDA3RkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwNDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RU5WTTA8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDYwMDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NjAwMDAwMDAgLSAweDYwMDNGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDA0MDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5GSUMzMl9SRUdJT04xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg1MDAwMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDUwMDAwMDAwIC0gMHg1RkZGRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDAwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+Q0FDSEVfQkFDS0RPT1I8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwNDAwMDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDA0MDAwMDAgLSAweDQwNDBGRkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAxMDAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5TWVNSRUc8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDM4MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMzgwMDAgLSAweDQwMDM4RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgwMDAwMTAwMDwvcmFuZ2U+DQotICAgICAgICAgIDxtZW1vcnlNYXA+DQotICAgICAgICAgICAgPG5hbWU+UmVnaXN0ZXJNYXA8L25hbWU+DQotICAgICAgICAgICAgPGFkZHJlc3NCbG9jaz4NCi0gICAgICAgICAgICAgIDxiYXNlQWRkcmVzcz4weDA8L2Jhc2VBZGRyZXNzPg0KLSAgICAgICAgICAgICAgPHJhbmdlIGZvcm1hdD0ibG9uZyI+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgICAgICAgIDx3aWR0aCBmb3JtYXQ9ImxvbmciIGlkPSJ3aWR0aCI+MzI8L3dpZHRoPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FU1JBTV9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDAwPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9FU1JBTVNJWkU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40OjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfVEVTVEVTUkFNMVJFTUFQX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkYyX1RFU1RSRU1BUEVOQUJMRV9TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fRVNSQU1GV1JFTUFQPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMDQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fU0lYX0NZQ0xFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX1BJUEVfQllQQVNTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9FTlZNUE9XRVJFRERPV048L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FTlZNUkVNQVBTSVpFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVOVk1fUkVNQVBfQkFTRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMDg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FTlZNUkVNQVBCQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX0ZBQl9SRU1BUDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHhDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMEM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9FTlZNRkFCUkVNQVBCQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTk6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5GQUJfUFJPVF9TSVpFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDEwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMTA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9QUk9UUkVHSU9OU0laRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5GQUJfUFJPVF9CQVNFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDE0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMTQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNPTV9QUk9UUkVHSU9OQkFTRTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjMxOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+TUFUUklYX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgxODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDE4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fV0VJR0hURURNT0RFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fTUFTVEVSRU5BQkxFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkRTU19TVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MUM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAxQzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UExMTE9DS0xPU1RJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QTExMT0NLSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DT01fRVJST1JTVEFUVVM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj44OjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlJPV05PVVQzXzNWSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CUk9XTk9VVDFfNVZJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPldET0dUSU1FT1VURVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ01BVENIRVZFTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNMUl9EU1NfU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDIwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMjA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUlBMTExPQ0tMT1NUSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSUExMTE9DS0lOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q09NX0NMRUFSU1RBVFVTPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODo0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkNMUkJST1dOT1VUM18zVklOVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Q0xSQlJPV05PVVQxXzVWSU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJXRE9HVElNRU9VVEVWRU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5DTFJSVENNQVRDSEVWRU5UPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5GUk9NX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgyNDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDI0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TWVNfVE9QVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5JQVBfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDI4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMjg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNZU19GQ0ZHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPlNPRlRfSU5URVJSVVBUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDJDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwMkM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNPRlRJTlRFUlJVUFQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPlNPRlRfUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4MzA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODAzMDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UEFEUkVTRVRFTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5VU0VSUkVTRVRBQ1RJVkU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GUEdBX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVYVF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5JQVBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R1BJT19TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5BQ0VfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+STJDMV9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5JMkMwX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNQSTFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1BJMF9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlVBUlQxX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VUFSVDBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5USU1FUl9TT0ZUUkVTRVQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBETUFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5NQUNfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTUNfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FU1JBTTFfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FU1JBTTBfU09GVFJFU0VUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTlZNX1NPRlRSRVNFVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+REVWSUNFX1NUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgzNDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDM0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GUEdBR09PRF9TWU5DPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GUEdBUFJPR1JBTU1JTkdfU1lOQzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfUENfQUNDRVNTX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40OjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkNDSUJHT09EX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJST1dOT1VUM18zVl9TWU5DTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QlJPV05PVVQxXzVWX1NZTkNOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5TWVNUSUNLX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgzODwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDM4PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVENMS19ESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+Mjk6Mjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RDQUxJQjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI1OjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RU1fTVVYX0NPTkZJRzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHgzQzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDNDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9TRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NPTkZJR18wPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDQwPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNDA8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX0NTRkUwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV0VOQkVOMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JXUE9MMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BJUEVXUk4wPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUElQRVJETjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9JREQwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTY6MTU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fV1JJVEVMQVQwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTQ6MTE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRSRVNUMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwOjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUkRMQVRGSVJTVDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42OjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fUE9SVFNJWkUwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9NRU1UWVBFMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE6MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgPHJlZ2lzdGVyPg0KLSAgICAgICAgICAgICAgICA8bmFtZT5FTV9DT05GSUdfMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg0NDwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDQ0PC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9DU0ZFMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1dFTkJFTjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9SV1BPTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5FTV9QSVBFV1JOMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BJUEVSRE4xPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fSUREMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2OjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1dSSVRFTEFUMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0OjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JETEFUUkVTVDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDo3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1JETEFURklSU1QxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjozPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVNX1BPUlRTSVpFMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RU1fTUVNVFlQRTE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0xLX0NUUkw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NDg8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA0ODwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R0xCRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzOjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ0lGX0FDTURJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTo4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkFDTEtESVZJU09SPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+Nzo2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlBDTEsxRElWSVNPUjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU6NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QQ0xLMERJVklTT1I8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zOjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+Uk1JSUNMS1NFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX0RJVl9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NEM8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA0QzwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0NESVZSU1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVkhBTEY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ0RJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQkRJVlJTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWSEFMRjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CRElWMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0JESVYwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVlJTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVZIQUxGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FESVYyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQURJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BRElWMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX01VWF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NTA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA1MDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+TU9ERTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjMxOjMwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkVOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+Mjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R0xNVVhDRkcxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+Mjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R0xNVVhDRkcwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R0xNVVhTRUwxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+R0xNVVhTRUwwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QllQQVNTX1BMTDM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ01VWDI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ01VWDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQ01VWDA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EWU5DU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlhDU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+U1RBVENTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CWVBBU1NfUExMMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CTVVYMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CTVVYMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9CTVVYMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRZTkJTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SWEJTRUw8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj45PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlNUQVRCU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CWVBBU1NfUExMMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+T0FNVVgyPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5PQU1VWDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPk9BTVVYMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFlOQVNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UlhBU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5TVEFUQVNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX1BMTF9DT05GSUc8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NTQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA1NDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+UE9XRVJET1dOPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+VkNPU0VMMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlZDT1NFTDE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yMzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQ09TRUwwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+WERMWVNFTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRExZNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRExZMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRExZMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRExZMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRExZMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCU0VMMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCU0VMMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWNjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWNTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZCRElWMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkJESVYxPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+ODwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQkRJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjY8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj42PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj41PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4zPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjI8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZJTkRJVjA8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkNDQ19ETFlfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDU4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNTg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUExNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUExMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUExMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUExMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIxPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUExMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjIwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUEwNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE5PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUEwMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE4PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUEwMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE3PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUEwMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE2PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUEwMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0MzPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENDMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRMWUhDQzE8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xMTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5ETFlIQ0MwPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENCNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjk8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENCMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENCMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjc8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENCMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENCMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENBNDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENBMzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENBMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENBMTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RExZSENBMDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+Q0NDX1NUQVRVUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgPGFkZHJlc3NPZmZzZXQ+MHg1QzwvYWRkcmVzc09mZnNldD4NCi0gICAgICAgICAgICAgICAgPGFic29sdXRlQWRkcmVzcz4weDQwMDM4MDVDPC9hYnNvbHV0ZUFkZHJlc3M+DQotICAgICAgICAgICAgICAgIDxzaXplPjMyPC9zaXplPg0KLSAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICA8cmVzZXRWYWx1ZT4weDA8L3Jlc2V0VmFsdWU+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5QTExMT0NLX1NZTkM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPlZUR19DVFJMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDY0PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNjQ8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJHUFNNRU5BQkxFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5WQkFUU0VMRUNUPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5SVENJRl9DTFJQVUJJTlQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4yPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ0lGX1ZST05FTkFCTEU8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPlJUQ0lGX0ZXVlJPTjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+RkFCX0lGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDZDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNkM8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQkNBTElCRkFJTDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjY8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCQ0FMSUJTVEFSVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RjJfTEFSR0VfQ1RfWFM8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkZBQl9BUEIzMjwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RkFCX0FIQklGPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GMl9BSEJDQVBBQkxFPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5GQUJfQUhCX0JZUEFTUzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+QVBCX0VYVE48L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NzA8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3MDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+QVBCMTZfWEhPTEQ8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xNTowPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPkxPT1BCQUNLX0NUUkw8L25hbWU+DQotICAgICAgICAgICAgICAgIDxhZGRyZXNzT2Zmc2V0PjB4NzQ8L2FkZHJlc3NPZmZzZXQ+DQotICAgICAgICAgICAgICAgIDxhYnNvbHV0ZUFkZHJlc3M+MHg0MDAzODA3NDwvYWJzb2x1dGVBZGRyZXNzPg0KLSAgICAgICAgICAgICAgICA8c2l6ZT4zMjwvc2l6ZT4NCi0gICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgPHJlc2V0VmFsdWU+MHgwPC9yZXNldFZhbHVlPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0VNQUNMT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjQ8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU9MT09QQkFDSzwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0kyQ0xPT1BCQUNLPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfU1BJTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19VQVJUTE9PUEJBQ0s8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4wPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgIDwvcmVnaXN0ZXI+DQotICAgICAgICAgICAgICA8cmVnaXN0ZXI+DQotICAgICAgICAgICAgICAgIDxuYW1lPklPX0JBTktfQ09ORklHPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDc4PC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwNzg8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkJUV0VTVDwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjM6MjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5CVEVBU1Q8L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xOjA8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgPC9yZWdpc3Rlcj4NCi0gICAgICAgICAgICAgIDxyZWdpc3Rlcj4NCi0gICAgICAgICAgICAgICAgPG5hbWU+R1BJTl9TUkNfU0VMPC9uYW1lPg0KLSAgICAgICAgICAgICAgICA8YWRkcmVzc09mZnNldD4weDdDPC9hZGRyZXNzT2Zmc2V0Pg0KLSAgICAgICAgICAgICAgICA8YWJzb2x1dGVBZGRyZXNzPjB4NDAwMzgwN0M8L2Fic29sdXRlQWRkcmVzcz4NCi0gICAgICAgICAgICAgICAgPHNpemU+MzI8L3NpemU+DQotICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgIDxyZXNldFZhbHVlPjB4MDwvcmVzZXRWYWx1ZT4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzE1XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE1PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzE0XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjE0PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzEzXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEzPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzEyXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEyPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzExXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjExPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzEwXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjEwPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzldPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+OTwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs4XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjg8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbN108L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj43PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzZdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+NjwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVs1XTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjU8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbNF08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj40PC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzNdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MzwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICAgIDxmaWVsZD4NCi0gICAgICAgICAgICAgICAgICA8bmFtZT5EU1NfR1BJTlNPVVJDRVsyXTwvbmFtZT4NCi0gICAgICAgICAgICAgICAgICA8Yml0TnVtYmVyPjI8L2JpdE51bWJlcj4NCi0gICAgICAgICAgICAgICAgICA8YWNjZXNzPlIvVzwvYWNjZXNzPg0KLSAgICAgICAgICAgICAgICAgIDxkZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgICA8L2Rlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICA8L2ZpZWxkPg0KLSAgICAgICAgICAgICAgICA8ZmllbGQ+DQotICAgICAgICAgICAgICAgICAgPG5hbWU+RFNTX0dQSU5TT1VSQ0VbMV08L25hbWU+DQotICAgICAgICAgICAgICAgICAgPGJpdE51bWJlcj4xPC9iaXROdW1iZXI+DQotICAgICAgICAgICAgICAgICAgPGFjY2Vzcz5SL1c8L2FjY2Vzcz4NCi0gICAgICAgICAgICAgICAgICA8ZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgICAgPC9kZXNjcmlwdGlvbj4NCi0gICAgICAgICAgICAgICAgPC9maWVsZD4NCi0gICAgICAgICAgICAgICAgPGZpZWxkPg0KLSAgICAgICAgICAgICAgICAgIDxuYW1lPkRTU19HUElOU09VUkNFWzBdPC9uYW1lPg0KLSAgICAgICAgICAgICAgICAgIDxiaXROdW1iZXI+MDwvYml0TnVtYmVyPg0KLSAgICAgICAgICAgICAgICAgIDxhY2Nlc3M+Ui9XPC9hY2Nlc3M+DQotICAgICAgICAgICAgICAgICAgPGRlc2NyaXB0aW9uPg0KLSAgICAgICAgICAgICAgICAgIDwvZGVzY3JpcHRpb24+DQotICAgICAgICAgICAgICAgIDwvZmllbGQ+DQotICAgICAgICAgICAgICA8L3JlZ2lzdGVyPg0KLSAgICAgICAgICAgIDwvYWRkcmVzc0Jsb2NrPg0KLSAgICAgICAgICA8L21lbW9yeU1hcD4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlJUQzwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMTcwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAxNzAwMCAtIDB4NDAwMTdGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+Q09NQkxLPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxNjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDE2MDAwIC0gMHg0MDAxNkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5IRE1BPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxNDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDE0MDAwIC0gMHg0MDAxNEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5HUElPPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAxMzAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDEzMDAwIC0gMHg0MDAxM0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5IMkZJTlRFUlJVUFQ8L25hbWU+DQotICAgICAgICAgIDxmdWxsUGluTmFtZT4NCi0gICAgICAgICAgPC9mdWxsUGluTmFtZT4NCi0gICAgICAgICAgPHJlbWFwQWRkcmVzcz4weDQwMDA2MDAwPC9yZW1hcEFkZHJlc3M+DQotICAgICAgICAgIDxmdWxsQWRkcmVzc1NwYWNlPjB4NDAwMDYwMDAgLSAweDQwMDA2RkZGPC9mdWxsQWRkcmVzc1NwYWNlPg0KLSAgICAgICAgICA8cmFuZ2U+MHgxMDAwPC9yYW5nZT4NCi0gICAgICAgIDwvc2xhdmU+DQotICAgICAgICA8c2xhdmU+DQotICAgICAgICAgIDxuYW1lPlRJTUVSPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHg0MDAwNDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDQwMDA0MDAwIC0gMHg0MDAwNEZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MTAwMDwvcmFuZ2U+DQotICAgICAgICA8L3NsYXZlPg0KLSAgICAgICAgPHNsYXZlPg0KLSAgICAgICAgICA8bmFtZT5NTVVBUlRfMDwvbmFtZT4NCi0gICAgICAgICAgPGZ1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8L2Z1bGxQaW5OYW1lPg0KLSAgICAgICAgICA8cmVtYXBBZGRyZXNzPjB4NDAwMDAwMDA8L3JlbWFwQWRkcmVzcz4NCi0gICAgICAgICAgPGZ1bGxBZGRyZXNzU3BhY2U+MHg0MDAwMDAwMCAtIDB4NDAwMDBGRkY8L2Z1bGxBZGRyZXNzU3BhY2U+DQotICAgICAgICAgIDxyYW5nZT4weDEwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UkVDWUNMRURfRVNSQU0xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAxMjAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDEyMDAwIC0gMHgyMDAxM0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDIwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+UkVDWUNMRURfRVNSQU0wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAxMDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDEwMDAwIC0gMHgyMDAxMUZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDIwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RVNSQU0xPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgyMDAwODAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDIwMDA4MDAwIC0gMHgyMDAwRkZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDgwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICAgIDxzbGF2ZT4NCi0gICAgICAgICAgPG5hbWU+RVNSQU0wPC9uYW1lPg0KLSAgICAgICAgICA8ZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDwvZnVsbFBpbk5hbWU+DQotICAgICAgICAgIDxyZW1hcEFkZHJlc3M+MHgwMDA4MDAwMDwvcmVtYXBBZGRyZXNzPg0KLSAgICAgICAgICA8ZnVsbEFkZHJlc3NTcGFjZT4weDAwMDgwMDAwIC0gMHgwMDA4N0ZGRjwvZnVsbEFkZHJlc3NTcGFjZT4NCi0gICAgICAgICAgPHJhbmdlPjB4MDAwMDgwMDA8L3JhbmdlPg0KLSAgICAgICAgPC9zbGF2ZT4NCi0gICAgICA8L3N1YnN5c3RlbT4NCi0gICAgPC9zdWJzeXN0ZW1zPg0KLSAgPC9tZW1vcnlzeXN0ZW0+DQotPC9kYXRhc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9MaWJlcm9PdXRwdXQvU3RhcnRlcktpdF9oYXJkd2FyZS9kYXRhc2hlZXQueHNsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGNhNDJkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvTGliZXJvT3V0cHV0L1N0YXJ0ZXJLaXRfaGFyZHdhcmUvZGF0YXNoZWV0LnhzbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNzcgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSIgPz4NCi0NCi08eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4wIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImRhdGFzaGVldCI+DQotICAgICAgICA8aHRtbD4NCi0gICAgICAgICAgICA8aGVhZD4NCi0gICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImNzcyIvPg0KLSAgICAgICAgICAgIDwvaGVhZD4NCi0gICAgICAgICAgICA8Ym9keT4NCi0gICAgICAgICAgICAgICAgPGEgbmFtZT0idG9wIi8+DQotICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImhlYWRlciIvPg0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZHNoZWV0Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwcm9qZWN0LXNldHRpbmdzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5UYWJsZSBvZiBDb250ZW50czwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiID4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dlbmVyYXRlZF9maWxlcyI+R2VuZXJhdGVkIEZpbGVzPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW9zIj5JTydzPC9hPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjY29yZXMiPkhhcmR3YXJlIEluc3RhbmNlczwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2Zpcm13YXJlX2NvcmVzIj5GaXJtd2FyZTwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI21lbW1hcCI+TWVtb3J5IE1hcDwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8YSBocmVmPSJ7aGVhZGVyfV9NZW1vcnlNYXAueG1sIiA+TWVtb3J5IE1hcDwvYT4gLS0+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT09PSBHZW5lcmF0ZWQgRmlsZSdzID09PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJnZW5lcmF0ZWRfZmlsZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVhZGVyIj5HZW5lcmF0ZWQgRmlsZXM8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3A+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImdlbmVyYXRlZF9maWxlcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgICAgICA8IS0tID09PT09PT0gSU8ncyA9PT09PT09IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8cD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iaW9zIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+SU8nczwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iaW9zIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8IS0tID09PT09IENPUkVTID09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iY29yZXMiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3Jlcw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJjb3JlcyIvPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgICAgICA8IS0tID09PT09PT0gRmlyd21hcmUgPT09PT09PSAtLT4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXY+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9ImZpcm13YXJlX2NvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+RmlybXdhcmU8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3A+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9ImZpcm13YXJlX2NvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgICAgIDwhLS0gPT09PT0gTUVNT1JZIE1BUCA9PT09PT0gLS0+DQotICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIG5hbWU9Im1lbW1hcCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlYWRlciI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbW9yeSBNYXANCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im1lbW9yeXN5c3RlbSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgIDwvYm9keT4NCi0gICAgICAgIDwvaHRtbD4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImhlYWRlciI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+DQotICAgICAgICAgICAgPGgxPg0KLSAgICAgICAgICAgICAgICBEYXRhIFNoZWV0OiA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICAgICAgICAgIDwvaDE+DQotICAgICAgICAgICAgPCEtLSA9PT09PT09IElPJ3MgPT09PT09PSANCi0gICAgICA8ZGl2IGNsYXNzPSJjb3B5cmlnaHQiPg0KLSAgICAgICAgQ29weXJpZ2h0IDIwMDggQWN0ZWwgQ29ycG9yYXRpb24NCi0gICAgICA8L2Rpdj4NCi0JICAtLT4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icHJvamVjdC1zZXR0aW5ncyI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPlByb2plY3QgU2V0dGluZ3M8L2Rpdj4NCi0NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSI0Ij4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPkZBTTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImZhbSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPkRpZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImRpZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlBhY2thZ2U6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYWNrYWdlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+U3BlZWQgR3JhZGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzcGVlZC1ncmFkZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPlZvbHRhZ2U6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJ2b2x0YWdlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLQ0KLSAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+SERMOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iaGRsLXR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5Qcm9qZWN0IERlc2NyaXB0aW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icHJvamVjdC1kZXNjcmlwdGlvbiIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxiPkxvY2F0aW9uOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibG9jYXRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotDQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8Yj5TdGF0ZSAoVGltZSk6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJzdGF0ZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8YnIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPCEtLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIC0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImdlbmVyYXRlZF9maWxlcyI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlsZXNldCI+DQotICAgICAgICAgICAgICAgIDxiPkZpbGUgc2V0OiAgPC9iPg0KLSAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLQ0KLSAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmlsZSI+DQotICAgICAgICAgICAgICAgICAgICA8bGk+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvbGk+DQotICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgPC9kaXY+DQotICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotDQotICAgIDwhLS0gLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vICAtLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1pb3MiPg0KLSAgICAgICAgPHRkPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icG9ydC1uYW1lIi8+DQotICAgICAgICA8L3RkPg0KLSAgICAgICAgPHRkPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZGlyZWN0aW9uIi8+DQotICAgICAgICA8L3RkPg0KLSAgICAgICAgPHRkPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGluLW51bWJlciIvPg0KLSAgICAgICAgPC90ZD4NCi0gICAgICAgIDx0ZD4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImlvLXN0YW5kYXJkIi8+DQotICAgICAgICA8L3RkPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJpb3MiPg0KLSAgICAgICAgPHhzbDpjaG9vc2U+DQotICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9ImNvdW50KGlvKSAmZ3Q7IDAiPg0KLSAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9ImlvcyIgIGFsaWduPSJjZW50ZXIiICBib3JkZXI9IjEiIHdpZHRoPSI3NSUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iNCI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3J0IE5hbWUNCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlyZWN0aW9uDQotICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBJL08gU3RhbmRhcmQNCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJpbyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtaW9zIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgPHhzbDpvdGhlcndpc2U+DQotICAgICAgICAgICAgICAgIDxpPk5vIElPJ3MgPC9pPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOm90aGVyd2lzZT4NCi0gICAgICAgIDwveHNsOmNob29zZT4NCi0gICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0gICAgPCEtLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIC0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImZpcm13YXJlX2NvcmVzIj4NCi0gICAgICAgIDx4c2w6Y2hvb3NlPg0KLSAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb3VudChmaXJtd2FyZV9jb3JlKSAmZ3Q7IDAiPg0KLSAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxiPlNvZnR3YXJlIElERTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii9kYXRhc2hlZXQvcHJvamVjdC1zZXR0aW5ncy9zd2lkZS10b29sY2hhaW4iLz4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Imluc3RhbmNlcyI+RHJpdmVyczo8L3NwYW4+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZpcm13YXJlX2NvcmUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN7Y29yZS1uYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3JlLW5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGxpbmtzIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZpcm13YXJlX2NvcmUiPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb3JlIFRPQyAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJ7Y29yZS1uYW1lfSIvPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY29yZXMiIHdpZHRoPSI5NyUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxNCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1ib3JkZXI9IjEiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4gLS0+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJGaXJtV2FyZU1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1zcGlyaXQiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOmNob29zZT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGxpbmtzIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvcmVzIj5pbnN0YW5jZSBsaXN0PC9hPiwgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgPHhzbDpvdGhlcndpc2U+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxpPk5vIEZpcm13YXJlIEdlbmVyYXRlZC4gIERlc2lnbiBtYXkgbm90IGNvbnRhaW4gYW55IHByb2Nlc3NvciBzdWJzeXN0ZW1zLCBvciBmaXJtd2FyZSBoYXZlIG5vdCBiZWVuIGRvd25sb2FkZWQgdG8geW91ciB2YXVsdDwvaT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgPC94c2w6Y2hvb3NlPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0NCi0gICAgPCEtLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gIC0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9ImNvcmVzIj4NCi0gICAgICAgIDx4c2w6Y2hvb3NlPg0KLQ0KLSAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJjb3VudChjb3JlKSAmZ3Q7IDAiPg0KLSAgICAgICAgICAgICAgICA8IS0tIENvcmUgVE9DIC0tPg0KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJpbnN0YW5jZXMiPkluc3RhbmNlczo8L3NwYW4+DQotICAgICAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvcmUiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN7Y29yZS1uYW1lfSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJjb3JlLW5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+DQotDQotICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGxpbmtzIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0NCi0gICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvcmUiPg0KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBDb3JlIFRPQyAtLT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8YSBuYW1lPSJ7Y29yZS1uYW1lfSIvPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iY29yZXMiIHdpZHRoPSI5NyUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxNCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS1ib3JkZXI9IjEiICBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjE0Ij4gLS0+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2hvb3NlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp3aGVuIHRlc3Q9J0B0eXBlPSJDb21wb25lbnRNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtY29tcCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iU3Bpcml0TW9kdWxlIic+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLXNwaXJpdCIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSdAdHlwZT0iQWRsaWJNb2R1bGUiJz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtYWRsaWIiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOndoZW4gdGVzdD0nQHR5cGU9IkhkbE1vZHVsZSInPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1oZGwiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwveHNsOmNob29zZT4NCi0NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGxpbmtzIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2NvcmVzIj5pbnN0YW5jZSBsaXN0PC9hPiwgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDwveHNsOmZvci1lYWNoPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDwveHNsOndoZW4+DQotICAgICAgICAgICAgPHhzbDpvdGhlcndpc2U+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxpPk5vIEluc3RhbmNlczwvaT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgICAgIDxici8+DQotICAgICAgICAgICAgPC94c2w6b3RoZXJ3aXNlPg0KLSAgICAgICAgPC94c2w6Y2hvb3NlPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3Jlcy1jb21wIj4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5UeXBlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1leHR0eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5Mb2NhdGlvbjogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbG9jYXRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtc3Bpcml0Ij4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5UeXBlOiA8L2I+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iY29yZS1leHR0eXBlIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5WZW5kb3I6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLXZlbmRvciIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+TGlicmFyeTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtbGliIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5Db3JlIE5hbWU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWludG5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlZlcnNpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLXZlciIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+RGVzY3JpcHRpb246IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWRlc2MiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPlBhcmFtZXRlcnM6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LXNwaXJpdC1wYXJhbXMiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtc3Bpcml0LXBhcmFtcyIgPg0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJjb3VudChjb3JlLXBhcmFtKSA+IDAiPg0KLSAgICAgICAgICAgIDxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNGMEYwRjA7ICIgPg0KLSAgICAgICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgICAgICA8dGFibGU+DQotICAgICAgICAgICAgICAgICAgICA8IS0tIDx0cj4NCi0gICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICBOYW1lDQotICAgICAgICAgICAgPC90aD4NCi0gICAgICAgICAgICA8dGg+DQotICAgICAgICAgICAgICBWYWx1ZQ0KLSAgICAgICAgICAgIDwvdGg+DQotICAgICAgICAgIDwvdHI+IC0tPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImNvcmUtcGFyYW0iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJwcmludC1jb3JlLXBhcmFtcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICA8L3hzbDppZj4NCi0gICAgICAgIDx4c2w6aWYgdGVzdD0iY291bnQoY29yZS1wYXJhbSkgJmx0OyAxIj4NCi0gICAgICAgICAgICA8aT5ObyBwYXJhbWV0ZXJzPC9pPg0KLSAgICAgICAgPC94c2w6aWY+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzLWFkbGliIj4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5DZWxsIFR5cGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWV4dHR5cGUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICAgICAgPC90YWJsZT4NCi0NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZXMtaGRsIj4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQ+DQotICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzIi8+DQotICAgICAgICAgICAgICAgICAgICA8dHI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5Nb2R1bGUgTmFtZTogPC9iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9ImNvcmUtZXh0dHlwZSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+SERMIEZpbGU6IDwvYj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLWxvY2F0aW9uIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgIDwvdHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG5hbWU9InByaW50LWNvcmVzIj4NCi0gICAgICAgIDx0cj4NCi0gICAgICAgICAgICA8dGQgd2lkdGg9IjIwMCI+DQotICAgICAgICAgICAgICAgIDxiPkluc3RhbmNlIE5hbWU6IDwvYj4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJjb3JlLW5hbWUiLz4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgPC90cj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0icHJpbnQtY29yZS1wYXJhbXMiPg0KLSAgICAgICAgPHRyPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPGIgY2xhc3M9InBhcmFtcy1uYW1lIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGFyYW0taGRsbmFtZSIvPiBbIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGFyYW0tbmFtZSIvPiBdDQotICAgICAgICAgICAgICAgIDwvYj4NCi0gICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgIDx0ZD4NCi0gICAgICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJwYXJhbS1oZGx2YWx1ZSIvPiBbIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0icGFyYW0tdmFsdWUiLz4gXQ0KLSAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICA8L3RyPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0NCi0NCi0gICAgPCEtLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy0tPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJwb3J0LW5hbWV8ZGlyZWN0aW9ufHBpbi1udW1iZXJ8aW8tc3RhbmRhcmQiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JlLW5hbWV8Y29yZS10eXBlfGNvcmUtZXh0dHlwZSI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9ImNvcmUtdmVuZG9yfGNvcmUtbGlifGNvcmUtaW50bmFtZXxjb3JlLXZlcnxjb3JlLWRlc2MiPg0KLSAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4iLz4NCi0gICAgPC94c2w6dGVtcGxhdGUgPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJjb3JlLWxvY2F0aW9uIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iZmFtfGRpZXxwYWNrYWdlfGhkbC10eXBlfGxvY2F0aW9ufHN0YXRlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0icGFyYW0tbmFtZXxwYXJhbS12YWx1ZXxwYXJhbS10YWd8cGFyYW0taGRsbmFtZXxwYXJhbS1oZGx2YWx1ZSI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iLiIvPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZSA+DQotDQotDQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0idG9wLWxpbmsiPg0KLSAgICAgICAgPGEgaHJlZj0iI3RvcCI+dG9wIG9mIHBhZ2U8L2E+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLQ0KLQ0KLSAgICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT1NRU1PUlkgTUFQPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibWVtb3J5c3lzdGVtIj4NCi0NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0iZGVzY3JpcHRpb24iLz4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPGRpdj4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InN1YnN5c3RlbXMiLz4NCi0gICAgICAgIDwvZGl2Pg0KLQ0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ic3Vic3lzdGVtcyI+DQotDQotICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0ic3Vic3lzdGVtIj4NCi0gICAgICAgICAgICA8bGk+DQotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3tuYW1lfSBNZW1vcnkgTWFwIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibm9kZSgpIi8+DQotICAgICAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgICAgIDwvZGl2Pg0KLSAgICAgICAgICAgIDwvbGk+DQotICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0NCi0gICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9InRvcGxpbmtzIj4NCi0gICAgICAgICAgICAgICAgPHhzbDpjYWxsLXRlbXBsYXRlIG5hbWU9InRvcC1saW5rIi8+DQotICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDxici8+DQotDQotICAgICAgICA8aHI+PC9ocj4NCi0gICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic3Vic3lzdGVtIi8+DQotDQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJzdWJzeXN0ZW0iPg0KLSAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgPGgyPg0KLSAgICAgICAgICAgICAgICA8YSBuYW1lPSJ7bmFtZX0gTWVtb3J5IE1hcCI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPg0KLSAgICAgICAgICAgICAgICA8L2E+IFN1YnN5c3RlbQ0KLSAgICAgICAgICAgIDwvaDI+DQotICAgICAgICAgICAgTWFzdGVyKHMpIG9uIHRoaXMgYnVzOg0KLSAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibWFzdGVyIi8+DQotICAgICAgICAgICAgPGJyPjwvYnI+PGJyPjwvYnI+DQotDQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJhZGRyZXNzTmFtZXMiIC8+DQotICAgICAgICAgICAgPGEgaHJlZj0iI21lbW1hcCI+c3Vic3lzdGVtIGxpc3Q8L2E+LA0KLSAgICAgICAgICAgIDx4c2w6Y2FsbC10ZW1wbGF0ZSBuYW1lPSJ0b3AtbGluayIvPg0KLQ0KLSAgICAgICAgICAgIDxici8+PGJyLz4NCi0gICAgICAgICAgICA8aHI+PC9ocj4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InNsYXZlIi8+DQotICAgICAgICA8L2Rpdj4NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InRpdGxlIj4NCi0gICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjojMDAwMDAwIj4NCi0gICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgICAgICA8L3NwYW4+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJkZXNjcmlwdGlvbiI+DQotICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJtYXN0ZXIiPg0KLSAgICAgICAgPGxpPg0KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRlbnQiPg0KLSAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0idGV4dCgpIi8+DQotICAgICAgICAgICAgPC9kaXY+DQotICAgICAgICA8L2xpPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi0gICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iYWRkcmVzc05hbWVzIj4NCi0gICAgICAgIDx0YWJsZSBjbGFzcz0icmVncyIgYm9yZGVyPSIxIiBjZWxsc3BhY2U9IjAiIGNlbGxwYWRkaW5nPSIxMCIgIGFsaWduPSJjZW50ZXIiID4NCi0gICAgICAgICAgICA8eHNsOmlmIHRlc3Q9ImNvdW50ID0gMSI+DQotICAgICAgICAgICAgICAgIDx0ciBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgICAgIDx0aCByb3dzcGFuPSIxIj48L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIGNvbHNwYW49IjIiPkFkZHJlc3MgUmFuZ2U8L3RoPg0KLSAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgIDwveHNsOmlmPg0KLSAgICAgICAgICAgIDx4c2w6aWYgdGVzdD0iY291bnQgJmd0OyAxIj4NCi0gICAgICAgICAgICAgICAgPHRyIGJnY29sb3I9IiNhYWFhY2MiPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIHJvd3NwYW49IjIiPjwvdGg+DQotICAgICAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iMiI+QWRkcmVzcyBSYW5nZTwvdGg+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Zm9yLWVhY2ggc2VsZWN0PSJuYW1lIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJ0ZXh0KCkiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC94c2w6aWY+DQotDQotICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9Ii4uL3NsYXZlIj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRoIGNlbGxzcGFjZT0iMCIgY29sc3Bhbj0iMSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BsaW5rcyIgaHJlZj0iI3tuYW1lfV97bWVtb3J5TWFwL25hbWV9IFJlZ2lzdGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+IDogPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im1lbW9yeU1hcC9uYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2I+DQotICAgICAgICAgICAgICAgICAgICA8L3RoPg0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9ImZ1bGxBZGRyZXNzU3BhY2UiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9InRleHQoKSIvPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICAgICAgPC90cj4NCi0gICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0NCi0gICAgICAgIDwvdGFibGU+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJzbGF2ZSI+DQotICAgICAgICA8ZGl2IGNsYXNzPSJjb250ZW50Ij4NCi0gICAgICAgICAgICA8aDM+DQotICAgICAgICAgICAgICAgIDxhIG5hbWU9IntuYW1lfV97bWVtb3J5TWFwL25hbWV9IFJlZ2lzdGVyIj4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+IDogPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im1lbW9yeU1hcC9uYW1lIi8+IE1lbW9yeSBNYXAgWw0KLSAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImZ1bGxBZGRyZXNzU3BhY2UiLz4gXQ0KLSAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgPC9oMz4NCi0gICAgICAgIDwvZGl2Pg0KLSAgICAgICAgPGRpdiBjbGFzcz0ibW1yYW5nZSI+DQotDQotICAgICAgICAgICAgPGk+cmFuZ2U6IDwvaT4NCi0gICAgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9InJhbmdlIi8+DQotDQotICAgICAgICA8L2Rpdj4NCi0gICAgICAgIDx4c2w6aWYgdGVzdD0ibWVtb3J5TWFwL2FkZHJlc3NCbG9jay9yZWdpc3RlciI+DQotICAgICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJtZW1vcnlNYXAvYWRkcmVzc0Jsb2NrIi8+DQotICAgICAgICA8L3hzbDppZj4NCi0gICAgICAgIDxhIGNsYXNzPSJ0b3BsaW5rcyIgaHJlZj0iI3suLi9uYW1lfSBNZW1vcnkgTWFwIj4NCi0gICAgICAgICAgICBiYWNrIHRvIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuLi9uYW1lIi8+IE1lbW9yeSBNYXANCi0gICAgICAgIDwvYT4NCi0gICAgICAgIDxici8+DQotICAgICAgICA8YnIvPg0KLSAgICAgICAgPGhyPjwvaHI+DQotICAgIDwveHNsOnRlbXBsYXRlPg0KLQ0KLSAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJhZGRyZXNzQmxvY2siPg0KLSAgICAgICAgPHRhYmxlIGNsYXNzPSJyZWdzIiBib3JkZXI9IjIiIGNlbGxzcGFjZT0iMCIgY2VsbHBhZGRpbmc9IjQiIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgIDx0ciBiZ2NvbG9yPSIjYWFhYWNjIj4NCi0gICAgICAgICAgICAgICAgPHRoPkFkZHJlc3M8L3RoPg0KLSAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+DQotICAgICAgICAgICAgICAgIDx0aD5SL1c8L3RoPg0KLSAgICAgICAgICAgICAgICA8dGg+V2lkdGg8L3RoPg0KLSAgICAgICAgICAgICAgICA8dGg+UmVzZXQgVmFsdWU8L3RoPg0KLSAgICAgICAgICAgICAgICA8dGg+RGVzY3JpcHRpb248L3RoPg0KLSAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9InJlZ2lzdGVyIj4NCi0gICAgICAgICAgICAgICAgPHRyPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIG5vd3JhcD0idHJ1ZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImFic29sdXRlQWRkcmVzcyIvPg0KLSAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6Y2hvb3NlPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6d2hlbiB0ZXN0PSJmaWVsZCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0iY2VudGVyIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BsaW5rcyIgaHJlZj0iI3suLi8uLi8uLi9uYW1lfV97bmFtZX0iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJuYW1lIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPC94c2w6d2hlbj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOm90aGVyd2lzZT4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3hzbDpvdGhlcndpc2U+DQotICAgICAgICAgICAgICAgICAgICA8L3hzbDpjaG9vc2U+DQotICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImNlbnRlciIgbm93cmFwPSJ0cnVlIj4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWNjZXNzIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJzaXplIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJyZXNldFZhbHVlIi8+DQotICAgICAgICAgICAgICAgICAgICA8L3RkPg0KLSAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iZGVzY3JpcHRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICA8L3RhYmxlPg0KLQ0KLSAgICAgICAgPHhzbDppZiB0ZXN0PSJyZWdpc3Rlci9maWVsZCI+DQotICAgICAgICAgICAgPGEgY2xhc3M9InRvcGxpbmtzIiBocmVmPSIjey4uLy4uLy4uL25hbWV9IE1lbW9yeSBNYXAiPg0KLSAgICAgICAgICAgICAgICBiYWNrIHRvIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuLi8uLi8uLi9uYW1lIi8+IE1lbW9yeSBNYXANCi0gICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgPHhzbDpmb3ItZWFjaCBzZWxlY3Q9InJlZ2lzdGVyIj4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGVudCI+DQotICAgICAgICAgICAgICAgICAgICA8aDQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9InJlZ2lzdGVyLWRldGFpbHMiIG5hbWU9InsuLi8uLi8uLi9uYW1lfV97bmFtZX0iPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0ibmFtZSIvPiByZWdpc3RlciBkZXRhaWxzIFsgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImFic29sdXRlQWRkcmVzcyIvPiBdIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+DQotICAgICAgICAgICAgICAgICAgICA8L2g0Pg0KLSAgICAgICAgICAgICAgICA8L2Rpdj4NCi0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVnd2lkdGgiPg0KLQ0KLSAgICAgICAgICAgICAgICAgICAgPGk+d2lkdGg6IDwvaT4NCi0gICAgICAgICAgICAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ic2l6ZSIvPi1iaXQNCi0NCi0gICAgICAgICAgICAgICAgPC9kaXY+DQotDQotICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0icmVncyIgYm9yZGVyPSIyIiBjZWxsc3BhY2U9IjAiIGNlbGxwYWRkaW5nPSI0IiBhbGlnbj0iY2VudGVyIiA+DQotICAgICAgICAgICAgICAgICAgICA8dHIgYmdjb2xvcj0iI2FhYWFjYyI+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGFsaWduPSJsZWZ0Ij5CaXQgTnVtYmVyPC90aD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlIvVzwvdGg+DQotICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkRlc2NyaXB0aW9uPC90aD4NCi0gICAgICAgICAgICAgICAgICAgIDwvdHI+DQotICAgICAgICAgICAgICAgICAgICA8eHNsOmZvci1lYWNoIHNlbGVjdD0iZmllbGQiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSJiaXROdW1iZXIiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiPg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Im5hbWUiLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJjZW50ZXIiIG5vd3JhcD0idHJ1ZSI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iYWNjZXNzIi8+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8eHNsOnZhbHVlLW9mIHNlbGVjdD0iZGVzY3JpcHRpb24iLz4NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCi0gICAgICAgICAgICAgICAgICAgICAgICA8L3RyPg0KLSAgICAgICAgICAgICAgICAgICAgPC94c2w6Zm9yLWVhY2g+DQotICAgICAgICAgICAgICAgIDwvdGFibGU+DQotDQotICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJ0b3BsaW5rcyIgaHJlZj0iI3suLi8uLi8uLi9uYW1lfV97Li4vLi4vLi4vbWVtb3J5TWFwL25hbWV9IFJlZ2lzdGVyIj4NCi0gICAgICAgICAgICAgICAgICAgIGJhY2sgdG8gPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9Ii4uLy4uLy4uL25hbWUiLz4gUmVnaXN0ZXJzDQotICAgICAgICAgICAgICAgIDwvYT4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICAgICAgPGJyLz4NCi0gICAgICAgICAgICA8L3hzbDpmb3ItZWFjaD4NCi0gICAgICAgICAgICA8YnIvPg0KLSAgICAgICAgICAgIDxici8+DQotICAgICAgICA8L3hzbDppZj4NCi0NCi0gICAgPC94c2w6dGVtcGxhdGU+DQotDQotICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9InJhbmdlIj4NCi0gICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIuIi8+DQotICAgIDwveHNsOnRlbXBsYXRlID4NCi0NCi0gICAgPCEtLT09PT09PT09PT09PT09PT09PT09PT09PT09RU5EIE1FTU9SWSBNQVA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPg0KLQ0KLQ0KLQ0KLSAgICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gQ1NTID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09LS0+DQotICAgIDx4c2w6dGVtcGxhdGUgbmFtZT0iY3NzIj4NCi0gICAgICAgIDxzdHlsZT4NCi0NCi0gICAgICAgICAgICBodG1sDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ZGFya2dyYXk7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGJvZHkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgZm9udC1mYW1pbHk6YXJpYWw7DQotICAgICAgICAgICAgZm9udC1zaXplOiAxMXB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyOw0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICB0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5jb3Jlcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGMEYwOw0KLSAgICAgICAgICAgIGJvcmRlci1jb2xvcjogI0IwQjBCMDsNCi0gICAgICAgICAgICBib3JkZXItc3R5bGU6c29saWQ7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUuY29yZXMgdGQNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdmVydGljYWwtYWxpZ246dG9wOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICB0YWJsZS5yZWdzLA0KLSAgICAgICAgICAgIHRhYmxlLmlvcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNCMEIwQjA7DQotICAgICAgICAgICAgYm9yZGVyLXN0eWxlOnNvbGlkOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDoxcHg7DQotICAgICAgICAgICAgYm9yZGVyLXNwYWNpbmc6MHB4Ow0KLSAgICAgICAgICAgIGJvcmRlci1jb2xsYXBzZTpjb2xsYXBzZTsNCi0gICAgICAgICAgICB3aWR0aD03NSU7DQotICAgICAgICAgICAgZm9udC1mYW1pbHk6Y291cmllcm5ldzsNCi0gICAgICAgICAgICBmb250LXNpemU6IDExcHQ7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnJlZ3MgdGgNCi0gICAgICAgICAgICB0YWJsZS5pb3MgdGgNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjQjBCMEIwOw0KLSAgICAgICAgICAgIGJvcmRlci13aWR0aDoxcHg7DQotICAgICAgICAgICAgY29sb3I6IGRhcmtzbGF0ZWdyYXk7DQotICAgICAgICAgICAgZm9udC13ZWlnaHQ6Ym9sZDsNCi0gICAgICAgICAgICB9DQotDQotDQotICAgICAgICAgICAgdGFibGUuaW9zIHRkDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyOw0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICB0YWJsZS5wYXJhbXMNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAjRDBEMEQwOw0KLSAgICAgICAgICAgIGJvcmRlci1zdHlsZTpzb2xpZDsNCi0gICAgICAgICAgICBib3JkZXItd2lkdGg6MHB4Ow0KLSAgICAgICAgICAgIGJvcmRlci1zcGFjaW5nOjBweDsNCi0gICAgICAgICAgICBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7DQotICAgICAgICAgICAgfQ0KLQ0KLQ0KLSAgICAgICAgICAgIHRhYmxlLnBhcmFtcyB0aA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBib3JkZXItY29sb3I6ICNEMEQwRDA7DQotICAgICAgICAgICAgYm9yZGVyLXdpZHRoOjFweDsNCi0gICAgICAgICAgICBjb2xvcjogYmxhY2s7DQotICAgICAgICAgICAgZm9udC13ZWlnaHQ6Ym9sZDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgdGFibGUucGFyYW1zIHRkDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtYWxpZ246Y2VudGVyOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBiLnBhcmFtcy1uYW1lDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGNvbG9yOiAjNTA1MDUwICAgOw0KLQ0KLSAgICAgICAgICAgIH0NCi0NCi0NCi0gICAgICAgICAgICBkaXYuaGVhZGVyDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiA3cHg7DQotICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDdweDsNCi0gICAgICAgICAgICBjb2xvcjojMDAzMzk5Ow0KLSAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNEMEQwRDA7DQotICAgICAgICAgICAgd2lkdGg9MTAwJTsNCi0gICAgICAgICAgICBmb250LWZhbWlseTphcmlhbDsNCi0gICAgICAgICAgICBmb250LXNpemU6MTRwdDsNCi0gICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi50aXRsZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICBwYWRkaW5nLXRvcDogMzBweDsNCi0gICAgICAgICAgICBtYXJnaW46IGF1dG87DQotICAgICAgICAgICAgY29sb3I6I0QwRDBEMDsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiMwMDMzOTkgOw0KLQ0KLSAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCi0gICAgICAgICAgICB3aWR0aDogMTAwMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctbGVmdDozMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MzBweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgZGl2LmRzaGVldA0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB3aWR0aDogMTAwMHB4Ow0KLSAgICAgICAgICAgIG1hcmdpbjogYXV0bzsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0DQotDQotICAgICAgICAgICAgY29sb3I6IzAwMzM5OTsNCi0gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsNCi0NCi0gICAgICAgICAgICBwYWRkaW5nLXRvcDogMzBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMzBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MzBweDsNCi0gICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OjMwcHg7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi5jb250ZW50DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHBhZGRpbmctdG9wOiAxMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctbGVmdDoxMHB4Ow0KLSAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6MTBweDsNCi0NCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KLSAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNwdDsNCi0gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBkaXYuY29weXJpZ2h0DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIHRleHQtYWxpZ246cmlnaHQ7DQotICAgICAgICAgICAgZm9udC1zaXplOjlwdDsNCi0gICAgICAgICAgICBmb250LXN0eWxlOml0YWxpYzsNCi0gICAgICAgICAgICBmb250LXdlaWdodDpub3JtYWw7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRpdi5saW5rcw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGINCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgY29sb3I6ZGFya3NsYXRlZ3JheQ0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICBocg0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICB3aWR0aD0xMDAlOw0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAuaW5zdGFuY2VzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxNHB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246bGVmdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLnRvcGxpbmtzDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgIGZvbnQtc2l6ZToxMHB0Ow0KLSAgICAgICAgICAgIHRleHQtYWxpZ246bGVmdDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLnJlZ2lzdGVyLWRldGFpbHMNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1pbmRlbnQ6MjBweDsNCi0gICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgLm1tcmFuZ2UNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1pbmRlbnQ6MTBweDsNCi0gICAgICAgICAgICBmb250LXNpemU6MTFwdDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KLSAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4Ow0KLQ0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAucmVnd2lkdGgNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgdGV4dC1pbmRlbnQ6MjRwdDsNCi0gICAgICAgICAgICBmb250LXNpemU6MTFwdDsNCi0gICAgICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0Ow0KLSAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4Ow0KLSAgICAgICAgICAgIH0NCi0NCi0gICAgICAgIDwvc3R5bGU+DQotDQotICAgICAgICA8IS0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gRU5EIENTUyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tPg0KLSAgICA8L3hzbDp0ZW1wbGF0ZT4NCi0NCi08L3hzbDpzdHlsZXNoZWV0Pg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vLmNwcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby8uY3Byb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjMTM4NzQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby8uY3Byb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSw0ODUgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQotPD9maWxlVmVyc2lvbiA0LjAuMD8+DQotDQotPGNwcm9qZWN0IHN0b3JhZ2VfdHlwZV9pZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuWG1sUHJvamVjdERlc2NyaXB0aW9uU3RvcmFnZSI+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIj4NCi08Y2NvbmZpZ3VyYXRpb24gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNDM3NjExOTYwIj4NCi08c3RvcmFnZU1vZHVsZSBidWlsZFN5c3RlbUlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5jb25maWd1cmF0aW9uRGF0YVByb3ZpZGVyIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjAiIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5zZXR0aW5ncyIgbmFtZT0iRGVidWciPg0KLTxleHRlcm5hbFNldHRpbmdzLz4NCi08ZXh0ZW5zaW9ucz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FTEYiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5CaW5hcnlQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5NYWtlRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkdDQ0Vycm9yUGFyc2VyIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRXJyb3JQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HQVNFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0xERXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTwvZXh0ZW5zaW9ucz4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQotPGNvbmZpZ3VyYXRpb24gYXJ0aWZhY3ROYW1lPSJSVE9TRGVtbyIgYnVpbGRBcnRlZmFjdFR5cGU9Im9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlLmV4ZSIgYnVpbGRQcm9wZXJ0aWVzPSJvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZFR5cGU9b3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlLmRlYnVnLG9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlPW9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkQXJ0ZWZhY3RUeXBlLmV4ZSIgY2xlYW5Db21tYW5kPSJybSAtcmYiIGRlc2NyaXB0aW9uPSIiIGlkPSJjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjQzNzYxMTk2MCIgbmFtZT0iRGVidWciIHBhcmVudD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyI+DQotPGZvbGRlckluZm8gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNDM3NjExOTYwLiIgbmFtZT0iLyIgcmVzb3VyY2VQYXRoPSIiPg0KLTx0b29sQ2hhaW4gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTY0ODE1Njk2NSIgbmFtZT0iTWljcm9zZW1pIENvcnRleC1NMyBUb29scyIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sY2hhaW4uZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyI+DQotPHRhcmdldFBsYXRmb3JtIGFyY2hMaXN0PSJhbGwiIGJpbmFyeVBhcnNlcj0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRUxGIiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LnBsYXRmb3JtLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy43NzU0NTExOTciIG5hbWU9IkRlYnVnIFBsYXRmb3JtIiBvc0xpc3Q9ImFsbCIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LnBsYXRmb3JtLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyIvPg0KLTxidWlsZGVyIGJ1aWxkUGF0aD0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtby9EZWJ1Z30iIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUuYnVpbGRlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTIwNDQ2MTEwNiIga2VlcEVudmlyb25tZW50SW5CdWlsZGZpbGU9ImZhbHNlIiBtYW5hZ2VkQnVpbGRPbj0idHJ1ZSIgbmFtZT0iR251IE1ha2UgQnVpbGRlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmJ1aWxkZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIi8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNTAzNjYzMTUyIiBuYW1lPSJHTlUgQyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1ZyI+DQotPG9wdGlvbiBkZWZhdWx0VmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiBpZD0iZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuMTU4NDgzODk4NSIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGRlZmF1bHRWYWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIGlkPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC43NDkzMTA0MDYiIG5hbWU9IkRlYnVnIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbCIgdmFsdWU9ImdudS5jLmRlYnVnZ2luZy5sZXZlbC5tYXgiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxvcHRpb24gaWQ9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5pbmNsdWRlLnBhdGhzLjIzNzM4OTEzOSIgbmFtZT0iSW5jbHVkZSBwYXRocyAoLUkpIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5vcHRpb24uaW5jbHVkZS5wYXRocyIgdmFsdWVUeXBlPSJpbmNsdWRlUGF0aCI+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0Z1bGwtRGVtb30mcXVvdDsiLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtby9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEktU291cmNlfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC1Tb3VyY2UvYXBpfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZX0mcXVvdDsiLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtby9GcmVlUlRPUy1Tb3VyY2UvaW5jbHVkZX0mcXVvdDsiLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtby9GcmVlUlRPUy1Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTN9JnF1b3Q7Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW99JnF1b3Q7Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2N9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ncGlvfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bX0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3RpbWVyfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnR9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWd9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZ30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWx9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlV9Ii8+DQotPC9vcHRpb24+DQotPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIub3B0aW9uLm1pc2MudmVyYm9zZS4xMzUxNzk5Nzk5IiBuYW1lPSJWZXJib3NlICgtdikiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5taXNjLnZlcmJvc2UiIHZhbHVlPSJ0cnVlIiB2YWx1ZVR5cGU9ImJvb2xlYW4iLz4NCi08b3B0aW9uIGlkPSJnbnUuYy5jb21waWxlci5vcHRpb24ub3B0aW1pemF0aW9uLmZsYWdzLjQzNTk5ODQwOCIgbmFtZT0iT3RoZXIgb3B0aW1pemF0aW9uIGZsYWdzIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5vcHRpb24ub3B0aW1pemF0aW9uLmZsYWdzIiB2YWx1ZT0iLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIub3B0aW9uLm1pc2Mub3RoZXIuMTAwMTc1NDkxNCIgbmFtZT0iT3RoZXIgZmxhZ3MiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5taXNjLm90aGVyIiB2YWx1ZT0iLWMgLWZtZXNzYWdlLWxlbmd0aD0wIC1XZXh0cmEiIHZhbHVlVHlwZT0ic3RyaW5nIi8+DQotPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmlucHV0LjIwMzYyMTc2NDYiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjYxMjY0MjEzMCIgbmFtZT0iR05VIEMrKyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIj4NCi08b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjE0MTQ2ODkzNCIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsIiB2YWx1ZT0iZ251LmNwcC5jb21waWxlci5vcHRpbWl6YXRpb24ubGV2ZWwubm9uZSIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC4xODcwNDA3MTU0IiBuYW1lPSJEZWJ1ZyBMZXZlbCIgc3VwZXJDbGFzcz0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbCIgdmFsdWU9ImdudS5jcHAuY29tcGlsZXIuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPC90b29sPg0KLTx0b29sIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIC1tdGh1bWIgLW1jcHU9Y29ydGV4LW0zICIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5saW5rZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjIxMDU3ODI3NjciIG5hbWU9IkdOVSBDIExpbmtlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciPg0KLTxvcHRpb24gaWQ9ImdudS5jLmxpbmsub3B0aW9uLmxpYnMuMjU5NTU4NjY2IiBuYW1lPSJMaWJyYXJpZXMgKC1sKSIgc3VwZXJDbGFzcz0iZ251LmMubGluay5vcHRpb24ubGlicyIgdmFsdWVUeXBlPSJsaWJzIj4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0iLz4NCi08L29wdGlvbj4NCi08b3B0aW9uIGlkPSJnbnUuYy5saW5rLm9wdGlvbi5wYXRocy43MTI5NDMyOSIgbmFtZT0iTGlicmFyeSBzZWFyY2ggcGF0aCAoLUwpIiBzdXBlckNsYXNzPSJnbnUuYy5saW5rLm9wdGlvbi5wYXRocyIgdmFsdWVUeXBlPSJsaWJQYXRocyI+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiZxdW90OyR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vRGVidWd9JnF1b3Q7Ii8+DQotPC9vcHRpb24+DQotPG9wdGlvbiBpZD0iZ251LmMubGluay5vcHRpb24ubGRmbGFncy45ODg1NDM0NDYiIG5hbWU9IkxpbmtlciBmbGFncyIgc3VwZXJDbGFzcz0iZ251LmMubGluay5vcHRpb24ubGRmbGFncyIgdmFsdWU9Ii1ULi4vLi4vUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvZGVidWctaW4tbWljcm9zZW1pLXNtYXJ0ZnVzaW9uMi1lbnZtLmxkIiB2YWx1ZVR5cGU9InN0cmluZyIvPg0KLTxvcHRpb24gaWQ9ImdudS5jLmxpbmsub3B0aW9uLnVzZXJvYmpzLjEyMjc0NjUxNzgiIG5hbWU9Ik90aGVyIG9iamVjdHMiIHN1cGVyQ2xhc3M9ImdudS5jLmxpbmsub3B0aW9uLnVzZXJvYmpzIiB2YWx1ZVR5cGU9InVzZXJPYmpzIj4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJnF1b3Q7JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9EZWJ1Zy9DTVNJUy9zdGFydHVwX2djYy9zdGFydHVwX20yc3h4eC5vfSZxdW90OyIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSImcXVvdDske3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0RlYnVnL0NNU0lTL3N0YXJ0dXBfZ2NjL25ld2xpYl9zdHVicy5vfSZxdW90OyIvPg0KLTwvb3B0aW9uPg0KLTxvcHRpb24gaWQ9ImdudS5jLmxpbmsub3B0aW9uLm90aGVyLjczNzI3ODgwOSIgbmFtZT0iT3RoZXIgb3B0aW9ucyAoLVhsaW5rZXIgW29wdGlvbl0pIiBzdXBlckNsYXNzPSJnbnUuYy5saW5rLm9wdGlvbi5vdGhlciIgdmFsdWVUeXBlPSJzdHJpbmdMaXN0Ij4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iLWdjLXNlY3Rpb25zIi8+DQotPC9vcHRpb24+DQotPGlucHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5pbnB1dC4xNzQ5ODkzOTQxIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMubGlua2VyLmlucHV0Ij4NCi08YWRkaXRpb25hbElucHV0IGtpbmQ9ImFkZGl0aW9uYWxpbnB1dGRlcGVuZGVuY3kiIHBhdGhzPSIkKFVTRVJfT0JKUykiLz4NCi08YWRkaXRpb25hbElucHV0IGtpbmQ9ImFkZGl0aW9uYWxpbnB1dCIgcGF0aHM9IiQoTElCUykiLz4NCi08L2lucHV0VHlwZT4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMTMwMjExNjc0OCIgbmFtZT0iR05VIEMrKyBMaW5rZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciLz4NCi08dG9vbCBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyAtYyAtbXRodW1iIC1tY3B1PWNvcnRleC1tMyIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xMjMxNzA0NTI0IiBuYW1lPSJHTlUgQXNzZW1ibGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciPg0KLTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0LjIwNjAwMTg1MDIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0Ii8+DQotPC90b29sPg0KLTx0b29sIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUubWVtb3J5LW1hcC5nZW4uY3Jvc3MuY29ydGV4bTMueG1sLmRlYnVnLjE1MTQ1NzIwNjQiIG5hbWU9Ik1lbW9yeSBtYXAgZ2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUubWVtb3J5LW1hcC5nZW4uY3Jvc3MuY29ydGV4bTMueG1sLmRlYnVnIi8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqY29weS5jcm9zcy5jb3J0ZXhtMy5paGV4LmRlYnVnLjE4MzU3NDA3MTciIG5hbWU9IkdOVSBJbnRlbCBIZXggRmlsZSBHZW5lcmF0b3IiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqY29weS5jcm9zcy5jb3J0ZXhtMy5paGV4LmRlYnVnIi8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqY29weS5jcm9zcy5jb3J0ZXhtMy5zcmVjLmRlYnVnLjQ2MDQ0MzQ4NiIgbmFtZT0iR05VIFMtUmVjb3JkIEdlbmVyYXRvciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLnNyZWMuZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpkdW1wLmNyb3NzLmNvcnRleG0zLmxzdC5kZWJ1Zy41NDEyNzk3NDkiIG5hbWU9IkdOVSBMaXN0aW5nIEdlbmVyYXRvciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpkdW1wLmNyb3NzLmNvcnRleG0zLmxzdC5kZWJ1ZyIvPg0KLTwvdG9vbENoYWluPg0KLTwvZm9sZGVySW5mbz4NCi08Zm9sZGVySW5mbyBpZD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy40Mzc2MTE5NjAuODgxMTM4MDg0IiBuYW1lPSIvIiByZXNvdXJjZVBhdGg9IkZ1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC1Tb3VyY2UiPg0KLTx0b29sQ2hhaW4gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbGNoYWluLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNjIxNTY5MDY3IiBuYW1lPSJNaWNyb3NlbWkgQ29ydGV4LU0zIFRvb2xzIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIiB1bnVzZWRDaGlsZHJlbj0iIj4NCi08dGFyZ2V0UGxhdGZvcm0gYXJjaExpc3Q9ImFsbCIgYmluYXJ5UGFyc2VyPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FTEYiIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUucGxhdGZvcm0uY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnIiBuYW1lPSJEZWJ1ZyBQbGF0Zm9ybSIgb3NMaXN0PSJhbGwiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWciLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xMzAwNjQ2NTE2IiBuYW1lPSJHTlUgQyBDb21waWxlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy41MDM2NjMxNTIiPg0KLTxvcHRpb24gZGVmYXVsdFZhbHVlPSJnbnUuYy5vcHRpbWl6YXRpb24ubGV2ZWwubm9uZSIgaWQ9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjY5NzU4MzMzNiIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGRlZmF1bHRWYWx1ZT0iZ251LmMub3B0aW1pemF0aW9uLmxldmVsLm5vbmUiIGlkPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbC44MDkzMzc2NjkiIG5hbWU9IkRlYnVnIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcub3B0aW9uLmRlYnVnZ2luZy5sZXZlbCIgdmFsdWU9ImdudS5jLmRlYnVnZ2luZy5sZXZlbC5tYXgiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5pbnB1dC4xNTcwNjgwNjczIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQiLz4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy44MzA1NDYwNDUiIG5hbWU9IkdOVSBDKysgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy42MTI2NDIxMzAiPg0KLTxvcHRpb24gaWQ9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwuNzYzNzMxMjA4IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsLjEwNTg2NDg3NzkiIG5hbWU9IkRlYnVnIExldmVsIiBzdXBlckNsYXNzPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB2YWx1ZT0iZ251LmNwcC5jb21waWxlci5kZWJ1Z2dpbmcubGV2ZWwubWF4IiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5saW5rZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjE0MDkxNDk1MDMiIG5hbWU9IkdOVSBDIExpbmtlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5jLmxpbmtlci5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuMjEwNTc4Mjc2NyIvPg0KLTx0b29sIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5saW5rZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjE1OTgzOTc1ODciIG5hbWU9IkdOVSBDKysgTGlua2VyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmNwcC5saW5rZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjEzMDIxMTY3NDgiLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hc3NlbWJsZXIuY3Jvc3MuY29ydGV4bTMuZXhlLmRlYnVnLjEzNTAwODEzNTEiIG5hbWU9IkdOVSBBc3NlbWJsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmNyb3NzLmNvcnRleG0zLmV4ZS5kZWJ1Zy4xMjMxNzA0NTI0Ij4NCi08aW5wdXRUeXBlIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5pbnB1dC4xNTEwMTg2ODI2IiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5pbnB1dCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLm1lbW9yeS1tYXAuZ2VuLmNyb3NzLmNvcnRleG0zLnhtbC5kZWJ1Zy41NjI0NjE3NjgiIG5hbWU9Ik1lbW9yeSBtYXAgZ2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUubWVtb3J5LW1hcC5nZW4uY3Jvc3MuY29ydGV4bTMueG1sLmRlYnVnLjE1MTQ1NzIwNjQiLz4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLmloZXguZGVidWcuOTExNDIyMTY2IiBuYW1lPSJHTlUgSW50ZWwgSGV4IEZpbGUgR2VuZXJhdG9yIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251Lm9iamNvcHkuY3Jvc3MuY29ydGV4bTMuaWhleC5kZWJ1Zy4xODM1NzQwNzE3Ii8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqY29weS5jcm9zcy5jb3J0ZXhtMy5zcmVjLmRlYnVnLjM4MDIxMjAzNSIgbmFtZT0iR05VIFMtUmVjb3JkIEdlbmVyYXRvciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5vYmpjb3B5LmNyb3NzLmNvcnRleG0zLnNyZWMuZGVidWcuNDYwNDQzNDg2Ii8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqZHVtcC5jcm9zcy5jb3J0ZXhtMy5sc3QuZGVidWcuNzMyNDYwODU1IiBuYW1lPSJHTlUgTGlzdGluZyBHZW5lcmF0b3IiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUub2JqZHVtcC5jcm9zcy5jb3J0ZXhtMy5sc3QuZGVidWcuNTQxMjc5NzQ5Ii8+DQotPC90b29sQ2hhaW4+DQotPC9mb2xkZXJJbmZvPg0KLTxzb3VyY2VFbnRyaWVzPg0KLTxlbnRyeSBmbGFncz0iVkFMVUVfV09SS1NQQUNFX1BBVEh8UkVTT0xWRUQiIGtpbmQ9InNvdXJjZVBhdGgiIG5hbWU9IiIvPg0KLTwvc291cmNlRW50cmllcz4NCi08L2NvbmZpZ3VyYXRpb24+DQotPC9zdG9yYWdlTW9kdWxlPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJzY2FubmVyQ29uZmlndXJhdGlvbiI+DQotPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIi8+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5hcm0uQWN0ZWxBUk1NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcmU4MDUxcy5TRENDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0iZmFsc2UiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9ImZhbHNlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItViAtRSAtV3AgLVAgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJzZGNjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0xLkFjdGVsQ29ydGV4TTFNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0zLkFjdGVsQ29ydGV4TTNNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlckZpbGVQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJtYWtlZmlsZUdlbmVyYXRvciI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1mICR7cHJvamVjdF9uYW1lfV9zY2QubWsiIGNvbW1hbmQ9Im1ha2UiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwIiBjb21tYW5kPSJnKysiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jIiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2crKyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNDM3NjExOTYwO2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUuZGVidWcuNDM3NjExOTYwLiI+DQotPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiLz4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmFybS5BY3RlbEFSTU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTEuQWN0ZWxDb3J0ZXhNMU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyRmlsZVByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9Im1ha2VmaWxlR2VuZXJhdG9yIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWYgJHtwcm9qZWN0X25hbWV9X3NjZC5tayIgY29tbWFuZD0ibWFrZSIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAiIGNvbW1hbmQ9ImcrKyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMiIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9JnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZysrIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPC9zY2FubmVyQ29uZmlnQnVpbGRJbmZvPg0KLTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUucmVsZWFzZS4xNTg2Nzg4MzE5O2NkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5leGUucmVsZWFzZS4xNTg2Nzg4MzE5LiI+DQotPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiLz4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmFybS5BY3RlbEFSTU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29yZTgwNTFzLlNEQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJmYWxzZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0iZmFsc2UiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1WIC1FIC1XcCAtUCAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9InNkY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTEuQWN0ZWxDb3J0ZXhNMU1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuY29ydGV4bTMuQWN0ZWxDb3J0ZXhNM01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iYXJtLW5vbmUtZWFiaS1nY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyRmlsZVByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9Im1ha2VmaWxlR2VuZXJhdG9yIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWYgJHtwcm9qZWN0X25hbWV9X3NjZC5tayIgY29tbWFuZD0ibWFrZSIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAiIGNvbW1hbmQ9ImcrKyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMiIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9JnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZysrIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmMmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPC9zY2FubmVyQ29uZmlnQnVpbGRJbmZvPg0KLTwvc3RvcmFnZU1vZHVsZT4NCi08c3RvcmFnZU1vZHVsZSBtb2R1bGVJZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuZXh0ZXJuYWxTZXR0aW5ncyIvPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5sYW5ndWFnZS5tYXBwaW5nIi8+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5pbnRlcm5hbC51aS50ZXh0LmNvbW1lbnRPd25lclByb2plY3RNYXBwaW5ncyIvPg0KLTwvY2NvbmZpZ3VyYXRpb24+DQotPC9zdG9yYWdlTW9kdWxlPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJjZHRCdWlsZFN5c3RlbSIgdmVyc2lvbj0iNC4wLjAiPg0KLTxwcm9qZWN0IGlkPSJSVE9TRGVtby5jZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUuY3Jvc3MuY29ydGV4bTMuZXhlLjM0MDIwMTg2NiIgbmFtZT0iRXhlY3V0YWJsZSAoTWFuYWdlZCBNYWtlKSIgcHJvamVjdFR5cGU9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5jcm9zcy5jb3J0ZXhtMy5leGUiLz4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPC9jcHJvamVjdD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vLy5wcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3NGZjYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08cHJvamVjdERlc2NyaXB0aW9uPg0KLQk8bmFtZT5SVE9TRGVtbzwvbmFtZT4NCi0JPGNvbW1lbnQ+PC9jb21tZW50Pg0KLQk8cHJvamVjdHM+DQotICAgICAgICA8cHJvamVjdD4gUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0gPC9wcm9qZWN0Pg0KLQk8L3Byb2plY3RzPg0KLQk8YnVpbGRTcGVjPg0KLQkJPGJ1aWxkQ29tbWFuZD4NCi0JCQk8bmFtZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5nZW5tYWtlYnVpbGRlcjwvbmFtZT4NCi0JCQk8YXJndW1lbnRzPg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+P25hbWU/PC9rZXk+DQotCQkJCQk8dmFsdWU+PC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5hcHBlbmRfZW52aXJvbm1lbnQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5hdXRvQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5hbGw8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkQXJndW1lbnRzPC9rZXk+DQotCQkJCQk8dmFsdWU+PC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZENvbW1hbmQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5tYWtlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5idWlsZExvY2F0aW9uPC9rZXk+DQotCQkJCQk8dmFsdWU+JHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtby9EZWJ1Z308L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmNsZWFuQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5jbGVhbjwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuY29udGVudHM8L2tleT4NCi0JCQkJCTx2YWx1ZT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmFjdGl2ZUNvbmZpZ1NldHRpbmdzPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVBdXRvQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVDbGVhbkJ1aWxkPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZW5hYmxlRnVsbEJ1aWxkPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuZnVsbEJ1aWxkVGFyZ2V0PC9rZXk+DQotCQkJCQk8dmFsdWU+YWxsPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5zdG9wT25FcnJvcjwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLnVzZURlZmF1bHRCdWlsZENtZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJPC9hcmd1bWVudHM+DQotCQk8L2J1aWxkQ29tbWFuZD4NCi0JCTxidWlsZENvbW1hbmQ+DQotCQkJPG5hbWU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuU2Nhbm5lckNvbmZpZ0J1aWxkZXI8L25hbWU+DQotCQkJPGFyZ3VtZW50cz4NCi0JCQk8L2FyZ3VtZW50cz4NCi0JCTwvYnVpbGRDb21tYW5kPg0KLQk8L2J1aWxkU3BlYz4NCi0JPG5hdHVyZXM+DQotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5jb3JlLmNuYXR1cmU8L25hdHVyZT4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUubWFuYWdlZEJ1aWxkTmF0dXJlPC9uYXR1cmU+DQotCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLlNjYW5uZXJDb25maWdOYXR1cmU8L25hdHVyZT4NCi0JPC9uYXR1cmVzPg0KLTwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vQmxpbmt5LURlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vQmxpbmt5LURlbW8vbWFpbl9ibGlua3kuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y3MTEwOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0JsaW5reS1EZW1vL21haW5fYmxpbmt5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCi0gKiBwcm9qZWN0LCBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KLSAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIGluIEZyZWVSVE9TQ29uaWZnLmggaXMgdXNlZCB0bw0KLSAqIHNlbGVjdCBiZXR3ZWVuIHRoZSB0d28uICBTZWUgdGhlIG5vdGVzIG9uIHVzaW5nDQotICogY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGluIG1haW4uYy4gIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZQ0KLSAqIHNpbXBseSBibGlua3kgc3R5bGUgdmVyc2lvbi4NCi0gKg0KLSAqIE5PVEUgMjogIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQ0KLSAqIGJhc2ljIGRlbW8uICBHZW5lcmljIGZ1bmN0aW9ucywgc3VjaCBGcmVlUlRPUyBob29rIGZ1bmN0aW9ucywgYW5kIGZ1bmN0aW9ucw0KLSAqIHJlcXVpcmVkIHRvIGNvbmZpZ3VyZSB0aGUgaGFyZHdhcmUsIGFyZSBkZWZpbmVkIGluIG1haW4uYy4NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICoNCi0gKiBtYWluX2JsaW5reSgpIGNyZWF0ZXMgb25lIHF1ZXVlLCBhbmQgdHdvIHRhc2tzLiAgSXQgdGhlbiBzdGFydHMgdGhlDQotICogc2NoZWR1bGVyLg0KLSAqDQotICogVGhlIFF1ZXVlIFNlbmQgVGFzazoNCi0gKiBUaGUgcXVldWUgc2VuZCB0YXNrIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBwcnZRdWV1ZVNlbmRUYXNrKCkgZnVuY3Rpb24gaW4NCi0gKiB0aGlzIGZpbGUuICBwcnZRdWV1ZVNlbmRUYXNrKCkgc2l0cyBpbiBhIGxvb3AgdGhhdCBjYXVzZXMgaXQgdG8gcmVwZWF0ZWRseQ0KLSAqIGJsb2NrIGZvciAyMDAgbWlsbGlzZWNvbmRzLCBiZWZvcmUgc2VuZGluZyB0aGUgdmFsdWUgMTAwIHRvIHRoZSBxdWV1ZSB0aGF0DQotICogd2FzIGNyZWF0ZWQgd2l0aGluIG1haW5fYmxpbmt5KCkuICBPbmNlIHRoZSB2YWx1ZSBpcyBzZW50LCB0aGUgdGFzayBsb29wcw0KLSAqIGJhY2sgYXJvdW5kIHRvIGJsb2NrIGZvciBhbm90aGVyIDIwMCBtaWxsaXNlY29uZHMuDQotICoNCi0gKiBUaGUgUXVldWUgUmVjZWl2ZSBUYXNrOg0KLSAqIFRoZSBxdWV1ZSByZWNlaXZlIHRhc2sgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIHBydlF1ZXVlUmVjZWl2ZVRhc2soKSBmdW5jdGlvbg0KLSAqIGluIHRoaXMgZmlsZS4gIHBydlF1ZXVlUmVjZWl2ZVRhc2soKSBzaXRzIGluIGEgbG9vcCB3aGVyZSBpdCByZXBlYXRlZGx5DQotICogYmxvY2tzIG9uIGF0dGVtcHRzIHRvIHJlYWQgZGF0YSBmcm9tIHRoZSBxdWV1ZSB0aGF0IHdhcyBjcmVhdGVkIHdpdGhpbg0KLSAqIG1haW5fYmxpbmt5KCkuICBXaGVuIGRhdGEgaXMgcmVjZWl2ZWQsIHRoZSB0YXNrIGNoZWNrcyB0aGUgdmFsdWUgb2YgdGhlDQotICogZGF0YSwgYW5kIGlmIHRoZSB2YWx1ZSBlcXVhbHMgdGhlIGV4cGVjdGVkIDEwMCwgdG9nZ2xlcyB0aGUgTEVELiAgVGhlICdibG9jaw0KLSAqIHRpbWUnIHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIHF1ZXVlIHJlY2VpdmUgZnVuY3Rpb24gc3BlY2lmaWVzIHRoYXQgdGhlDQotICogdGFzayBzaG91bGQgYmUgaGVsZCBpbiB0aGUgQmxvY2tlZCBzdGF0ZSBpbmRlZmluaXRlbHkgdG8gd2FpdCBmb3IgZGF0YSB0bw0KLSAqIGJlIGF2YWlsYWJsZSBvbiB0aGUgcXVldWUuICBUaGUgcXVldWUgcmVjZWl2ZSB0YXNrIHdpbGwgb25seSBsZWF2ZSB0aGUNCi0gKiBCbG9ja2VkIHN0YXRlIHdoZW4gdGhlIHF1ZXVlIHNlbmQgdGFzayB3cml0ZXMgdG8gdGhlIHF1ZXVlLiAgQXMgdGhlIHF1ZXVlDQotICogc2VuZCB0YXNrIHdyaXRlcyB0byB0aGUgcXVldWUgZXZlcnkgMjAwIG1pbGxpc2Vjb25kcywgdGhlIHF1ZXVlIHJlY2VpdmUNCi0gKiB0YXNrIGxlYXZlcyB0aGUgQmxvY2tlZCBzdGF0ZSBldmVyeSAyMDAgbWlsbGlzZWNvbmRzLCBhbmQgdGhlcmVmb3JlIHRvZ2dsZXMNCi0gKiB0aGUgTEVEIGV2ZXJ5IDIwMCBtaWxsaXNlY29uZHMuDQotICovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotDQotLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotI2luY2x1ZGUgInNlbXBoci5oIg0KLQ0KLS8qIENvbW1vbiBkZW1vIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJwYXJ0ZXN0LmgiDQotDQotLyogUHJpb3JpdGllcyBhdCB3aGljaCB0aGUgdGFza3MgYXJlIGNyZWF0ZWQuICovDQotI2RlZmluZSBtYWluUVVFVUVfUkVDRUlWRV9UQVNLX1BSSU9SSVRZCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyICkNCi0jZGVmaW5lCW1haW5RVUVVRV9TRU5EX1RBU0tfUFJJT1JJVFkJCSggdHNrSURMRV9QUklPUklUWSArIDEgKQ0KLQ0KLS8qIFRoZSByYXRlIGF0IHdoaWNoIGRhdGEgaXMgc2VudCB0byB0aGUgcXVldWUuICBUaGUgMjAwbXMgdmFsdWUgaXMgY29udmVydGVkDQotdG8gdGlja3MgdXNpbmcgdGhlIHBvcnRUSUNLX1BFUklPRF9NUyBjb25zdGFudC4gKi8NCi0jZGVmaW5lIG1haW5RVUVVRV9TRU5EX0ZSRVFVRU5DWV9NUwkJCSggMjAwIC8gcG9ydFRJQ0tfUEVSSU9EX01TICkNCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoZSBxdWV1ZSBjYW4gaG9sZC4gIFRoaXMgaXMgMSBhcyB0aGUgcmVjZWl2ZSB0YXNrDQotd2lsbCByZW1vdmUgaXRlbXMgYXMgdGhleSBhcmUgYWRkZWQsIG1lYW5pbmcgdGhlIHNlbmQgdGFzayBzaG91bGQgYWx3YXlzIGZpbmQNCi10aGUgcXVldWUgZW1wdHkuICovDQotI2RlZmluZSBtYWluUVVFVUVfTEVOR1RICQkJCQkoIDEgKQ0KLQ0KLS8qIFZhbHVlcyBwYXNzZWQgdG8gdGhlIHR3byB0YXNrcyBqdXN0IHRvIGNoZWNrIHRoZSB0YXNrIHBhcmFtZXRlcg0KLWZ1bmN0aW9uYWxpdHkuICovDQotI2RlZmluZSBtYWluUVVFVUVfU0VORF9QQVJBTUVURVIJCQkoIDB4MTExMVVMICkNCi0jZGVmaW5lIG1haW5RVUVVRV9SRUNFSVZFX1BBUkFNRVRFUgkJCSggMHgyMlVMICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRoZSB0YXNrcyBhcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlUmVjZWl2ZVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlU2VuZFRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KLQ0KLS8qDQotICogQ2FsbGVkIGJ5IG1haW4oKSB0byBjcmVhdGUgdGhlIHNpbXBseSBibGlua3kgc3R5bGUgYXBwbGljYXRpb24gaWYNCi0gKiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgc2V0IHRvIDEuDQotICovDQotdm9pZCBtYWluX2JsaW5reSggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIFRoZSBxdWV1ZSB1c2VkIGJ5IGJvdGggdGFza3MuICovDQotc3RhdGljIFF1ZXVlSGFuZGxlX3QgeFF1ZXVlID0gTlVMTDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIG1haW5fYmxpbmt5KCB2b2lkICkNCi17DQotCS8qIENyZWF0ZSB0aGUgcXVldWUuICovDQotCXhRdWV1ZSA9IHhRdWV1ZUNyZWF0ZSggbWFpblFVRVVFX0xFTkdUSCwgc2l6ZW9mKCB1bnNpZ25lZCBsb25nICkgKTsNCi0NCi0JaWYoIHhRdWV1ZSAhPSBOVUxMICkNCi0Jew0KLQkJLyogU3RhcnQgdGhlIHR3byB0YXNrcyBhcyBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgdGhpcw0KLQkJZmlsZS4gKi8NCi0JCXhUYXNrQ3JlYXRlKCBwcnZRdWV1ZVJlY2VpdmVUYXNrLAkJCQkJLyogVGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUgdGFzay4gKi8NCi0JCQkJCSJSeCIsIAkJCQkJCQkJCS8qIFRoZSB0ZXh0IG5hbWUgYXNzaWduZWQgdG8gdGhlIHRhc2sgLSBmb3IgZGVidWcgb25seSBhcyBpdCBpcyBub3QgdXNlZCBieSB0aGUga2VybmVsLiAqLw0KLQkJCQkJY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAJCQkJLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIHRvIGFsbG9jYXRlIHRvIHRoZSB0YXNrLiAqLw0KLQkJCQkJKCB2b2lkICogKSBtYWluUVVFVUVfUkVDRUlWRV9QQVJBTUVURVIsIC8qIFRoZSBwYXJhbWV0ZXIgcGFzc2VkIHRvIHRoZSB0YXNrIC0ganVzdCB0byBjaGVjayB0aGUgZnVuY3Rpb25hbGl0eS4gKi8NCi0JCQkJCW1haW5RVUVVRV9SRUNFSVZFX1RBU0tfUFJJT1JJVFksIAkJLyogVGhlIHByaW9yaXR5IGFzc2lnbmVkIHRvIHRoZSB0YXNrLiAqLw0KLQkJCQkJTlVMTCApOwkJCQkJCQkJCS8qIFRoZSB0YXNrIGhhbmRsZSBpcyBub3QgcmVxdWlyZWQsIHNvIE5VTEwgaXMgcGFzc2VkLiAqLw0KLQ0KLQkJeFRhc2tDcmVhdGUoIHBydlF1ZXVlU2VuZFRhc2ssICJUWCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgKCB2b2lkICogKSBtYWluUVVFVUVfU0VORF9QQVJBTUVURVIsIG1haW5RVUVVRV9TRU5EX1RBU0tfUFJJT1JJVFksIE5VTEwgKTsNCi0NCi0JCS8qIFN0YXJ0IHRoZSB0YXNrcyBhbmQgdGltZXIgcnVubmluZy4gKi8NCi0JCXZUYXNrU3RhcnRTY2hlZHVsZXIoKTsNCi0JfQ0KLQ0KLQkvKiBJZiBhbGwgaXMgd2VsbCwgdGhlIHNjaGVkdWxlciB3aWxsIG5vdyBiZSBydW5uaW5nLCBhbmQgdGhlIGZvbGxvd2luZw0KLQlsaW5lIHdpbGwgbmV2ZXIgYmUgcmVhY2hlZC4gIElmIHRoZSBmb2xsb3dpbmcgbGluZSBkb2VzIGV4ZWN1dGUsIHRoZW4NCi0JdGhlcmUgd2FzIGluc3VmZmljaWVudCBGcmVlUlRPUyBoZWFwIG1lbW9yeSBhdmFpbGFibGUgZm9yIHRoZSBpZGxlIGFuZC9vcg0KLQl0aW1lciB0YXNrcwl0byBiZSBjcmVhdGVkLiAgU2VlIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBzZWN0aW9uIG9uIHRoZQ0KLQlGcmVlUlRPUyB3ZWIgc2l0ZSBmb3IgbW9yZSBkZXRhaWxzLiAqLw0KLQlmb3IoIDs7ICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlF1ZXVlU2VuZFRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQotew0KLVRpY2tUeXBlX3QgeE5leHRXYWtlVGltZTsNCi1jb25zdCB1bnNpZ25lZCBsb25nIHVsVmFsdWVUb1NlbmQgPSAxMDBVTDsNCi0NCi0JLyogQ2hlY2sgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGFzIGV4cGVjdGVkLiAqLw0KLQljb25maWdBU1NFUlQoICggKCB1bnNpZ25lZCBsb25nICkgcHZQYXJhbWV0ZXJzICkgPT0gbWFpblFVRVVFX1NFTkRfUEFSQU1FVEVSICk7DQotDQotCS8qIEluaXRpYWxpc2UgeE5leHRXYWtlVGltZSAtIHRoaXMgb25seSBuZWVkcyB0byBiZSBkb25lIG9uY2UuICovDQotCXhOZXh0V2FrZVRpbWUgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KLQ0KLQlmb3IoIDs7ICkNCi0Jew0KLQkJLyogUGxhY2UgdGhpcyB0YXNrIGluIHRoZSBibG9ja2VkIHN0YXRlIHVudGlsIGl0IGlzIHRpbWUgdG8gcnVuIGFnYWluLg0KLQkJVGhlIGJsb2NrIHRpbWUgaXMgc3BlY2lmaWVkIGluIHRpY2tzLCB0aGUgY29uc3RhbnQgdXNlZCBjb252ZXJ0cyB0aWNrcw0KLQkJdG8gbXMuICBXaGlsZSBpbiB0aGUgQmxvY2tlZCBzdGF0ZSB0aGlzIHRhc2sgd2lsbCBub3QgY29uc3VtZSBhbnkgQ1BVDQotCQl0aW1lLiAqLw0KLQkJdlRhc2tEZWxheVVudGlsKCAmeE5leHRXYWtlVGltZSwgbWFpblFVRVVFX1NFTkRfRlJFUVVFTkNZX01TICk7DQotDQotCQkvKiBTZW5kIHRvIHRoZSBxdWV1ZSAtIGNhdXNpbmcgdGhlIHF1ZXVlIHJlY2VpdmUgdGFzayB0byB1bmJsb2NrIGFuZA0KLQkJdG9nZ2xlIHRoZSBMRUQuICAwIGlzIHVzZWQgYXMgdGhlIGJsb2NrIHRpbWUgc28gdGhlIHNlbmRpbmcgb3BlcmF0aW9uDQotCQl3aWxsIG5vdCBibG9jayAtIGl0IHNob3VsZG4ndCBuZWVkIHRvIGJsb2NrIGFzIHRoZSBxdWV1ZSBzaG91bGQgYWx3YXlzDQotCQliZSBlbXB0eSBhdCB0aGlzIHBvaW50IGluIHRoZSBjb2RlLiAqLw0KLQkJeFF1ZXVlU2VuZCggeFF1ZXVlLCAmdWxWYWx1ZVRvU2VuZCwgMFUgKTsNCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZRdWV1ZVJlY2VpdmVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KLXsNCi11bnNpZ25lZCBsb25nIHVsUmVjZWl2ZWRWYWx1ZTsNCi0NCi0JLyogQ2hlY2sgdGhlIHRhc2sgcGFyYW1ldGVyIGlzIGFzIGV4cGVjdGVkLiAqLw0KLQljb25maWdBU1NFUlQoICggKCB1bnNpZ25lZCBsb25nICkgcHZQYXJhbWV0ZXJzICkgPT0gbWFpblFVRVVFX1JFQ0VJVkVfUEFSQU1FVEVSICk7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBXYWl0IHVudGlsIHNvbWV0aGluZyBhcnJpdmVzIGluIHRoZSBxdWV1ZSAtIHRoaXMgdGFzayB3aWxsIGJsb2NrDQotCQlpbmRlZmluaXRlbHkgcHJvdmlkZWQgSU5DTFVERV92VGFza1N1c3BlbmQgaXMgc2V0IHRvIDEgaW4NCi0JCUZyZWVSVE9TQ29uZmlnLmguICovDQotCQl4UXVldWVSZWNlaXZlKCB4UXVldWUsICZ1bFJlY2VpdmVkVmFsdWUsIHBvcnRNQVhfREVMQVkgKTsNCi0NCi0JCS8qICBUbyBnZXQgaGVyZSBzb21ldGhpbmcgbXVzdCBoYXZlIGJlZW4gcmVjZWl2ZWQgZnJvbSB0aGUgcXVldWUsIGJ1dA0KLQkJaXMgaXQgdGhlIGV4cGVjdGVkIHZhbHVlPyAgSWYgaXQgaXMsIHRvZ2dsZSB0aGUgTEVELiAqLw0KLQkJaWYoIHVsUmVjZWl2ZWRWYWx1ZSA9PSAxMDBVTCApDQotCQl7DQotCQkJdlBhclRlc3RUb2dnbGVMRUQoIDAgKTsNCi0JCQl1bFJlY2VpdmVkVmFsdWUgPSAwVTsNCi0JCX0NCi0JfQ0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwOTNiZmYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLQ0KLSNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCi0jZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQotDQotLyoNCi0gKiBUaGUgZm9sbG93aW5nICNlcnJvciBkaXJlY3RpdmUgaXMgdG8gcmVtaW5kIHVzZXJzIHRoYXQgYSBiYXRjaCBmaWxlIG11c3QgYmUNCi0gKiBleGVjdXRlZCBwcmlvciB0byB0aGlzIHByb2plY3QgYmVpbmcgYnVpbHQuICBPbmNlIGl0IGhhcyBiZWVuIGV4ZWN1dGVkDQotICogcmVtb3ZlIHRoZSAjZXJyb3IgbGluZSBiZWxvdy4NCi0gKi8NCi0vLyNlcnJvciBFbnN1cmUgQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQgaGFzIGJlZW4gZXhlY3V0ZWQgYmVmb3JlIGJ1aWxkaW5nLiAgU2VlIGNvbW1lbnQgaW1tZWRpYXRlbHkgYWJvdmUuDQotDQotLyoNCi0gKiBTZXQgY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHRvIG9uZSB0byBydW4gdGhlIHNpbXBsZSBibGlua3kgZGVtbywNCi0gKiBvciAwIHRvIHJ1biB0aGUgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uDQotICovDQotI2RlZmluZSBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkJMA0KLQ0KLS8qDQotICogU2V0IGNvbmZpZ0JVSUxEX0ZPUl9ERVZFTE9QTUVOVF9LSVQgdG8gMSB0byBydW4gdGhlIGRlbW8gb24gdGhlIFNtYXJ0RnVzaW9uMg0KLSAqIGRldmVsb3BtZW50IGtpdCwgb3IgMCB0byBydW4gdGhlIGRlbW8gb24gdGhlIFNtYXJ0RnVzaW9uMiBzdGFydGVyIGtpdC4gIFJlZmVyDQotICogdG8gdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIG9uIHRoZSBGcmVlUlRPUy5vcmcgd2Vic2l0ZSBmb3INCi0gKiBpbnN0cnVjdGlvbiBvbiBzd2l0Y2hpbmcgYmV0d2VlbiB0aGUgdHdvIGhhcmR3YXJlIHBsYXRmb3Jtcy4NCi0gKi8NCi0jZGVmaW5lIGNvbmZpZ0JVSUxEX0ZPUl9ERVZFTE9QTUVOVF9LSVQgMA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBBcHBsaWNhdGlvbiBzcGVjaWZpYyBkZWZpbml0aW9ucy4NCi0gKg0KLSAqIFRoZXNlIGRlZmluaXRpb25zIHNob3VsZCBiZSBhZGp1c3RlZCBmb3IgeW91ciBwYXJ0aWN1bGFyIGhhcmR3YXJlIGFuZA0KLSAqIGFwcGxpY2F0aW9uIHJlcXVpcmVtZW50cy4NCi0gKg0KLSAqIFRIRVNFIFBBUkFNRVRFUlMgQVJFIERFU0NSSUJFRCBXSVRISU4gVEhFICdDT05GSUdVUkFUSU9OJyBTRUNUSU9OIE9GIFRIRQ0KLSAqIEZyZWVSVE9TIEFQSSBET0NVTUVOVEFUSU9OIEFWQUlMQUJMRSBPTiBUSEUgRnJlZVJUT1Mub3JnIFdFQiBTSVRFLg0KLSAqDQotICogU2VlIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMC5odG1sLg0KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLWV4dGVybiB1aW50MzJfdCBTeXN0ZW1Db3JlQ2xvY2s7DQotDQotI2RlZmluZSBjb25maWdVU0VfUFJFRU1QVElPTgkJCTENCi0jZGVmaW5lIGNvbmZpZ1VTRV9JRExFX0hPT0sJCQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX1RJQ0tfSE9PSwkJCQkwDQotI2RlZmluZSBjb25maWdDUFVfQ0xPQ0tfSFoJCQkJKCBTeXN0ZW1Db3JlQ2xvY2sgKQ0KLSNkZWZpbmUgY29uZmlnVElDS19SQVRFX0haCQkJCSggKCBUaWNrVHlwZV90ICkgMTAwMCApDQotI2RlZmluZSBjb25maWdNQVhfUFJJT1JJVElFUwkJCSggNSApDQotI2RlZmluZSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUJCSggKCB1bnNpZ25lZCBzaG9ydCApIDgwICkNCi0jZGVmaW5lIGNvbmZpZ1RPVEFMX0hFQVBfU0laRQkJCSggKCBzaXplX3QgKSAoIDI1MDAwICkgKQ0KLSNkZWZpbmUgY29uZmlnTUFYX1RBU0tfTkFNRV9MRU4JCQkoIDEwICkNCi0jZGVmaW5lIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFXzE2X0JJVF9USUNLUwkJCTANCi0jZGVmaW5lIGNvbmZpZ0lETEVfU0hPVUxEX1lJRUxECQkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX01VVEVYRVMJCQkJMQ0KLSNkZWZpbmUgY29uZmlnUVVFVUVfUkVHSVNUUllfU0laRQkJMA0KLSNkZWZpbmUgY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XCTINCi0jZGVmaW5lIGNvbmZpZ1VTRV9SRUNVUlNJVkVfTVVURVhFUwkJMQ0KLSNkZWZpbmUgY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSwkxDQotI2RlZmluZSBjb25maWdVU0VfQVBQTElDQVRJT05fVEFTS19UQUcJMA0KLSNkZWZpbmUgY29uZmlnVVNFX0NPVU5USU5HX1NFTUFQSE9SRVMJMQ0KLQ0KLS8qIENvLXJvdXRpbmUgZGVmaW5pdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfQ09fUk9VVElORVMgCQkJMA0KLSNkZWZpbmUgY29uZmlnTUFYX0NPX1JPVVRJTkVfUFJJT1JJVElFUyAoIDIgKQ0KLQ0KLS8qIFNvZnR3YXJlIHRpbWVyIGRlZmluaXRpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnVVNFX1RJTUVSUwkJCQkxDQotI2RlZmluZSBjb25maWdUSU1FUl9UQVNLX1BSSU9SSVRZCQkoIDIgKQ0KLSNkZWZpbmUgY29uZmlnVElNRVJfUVVFVUVfTEVOR1RICQk1DQotI2RlZmluZSBjb25maWdUSU1FUl9UQVNLX1NUQUNLX0RFUFRICSggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFICogMiApDQotDQotLyogUnVuIHRpbWUgc3RhdHMgZ2F0aGVyaW5nIGRlZmluaXRpb25zLiAqLw0KLXZvaWQgdkNvbmZpZ3VyZVRpbWVyRm9yUnVuVGltZVN0YXRzKCB2b2lkICk7DQotdWludDMyX3QgdWxHZXRSdW5UaW1lQ291bnRlclZhbHVlKCB2b2lkICk7DQotI2RlZmluZSBjb25maWdHRU5FUkFURV9SVU5fVElNRV9TVEFUUwkxDQotI2RlZmluZSBwb3J0Q09ORklHVVJFX1RJTUVSX0ZPUl9SVU5fVElNRV9TVEFUUygpIHZDb25maWd1cmVUaW1lckZvclJ1blRpbWVTdGF0cygpDQotI2RlZmluZSBwb3J0R0VUX1JVTl9USU1FX0NPVU5URVJfVkFMVUUoKSB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoKQ0KLQ0KLS8qIFNldCB0aGUgZm9sbG93aW5nIGRlZmluaXRpb25zIHRvIDEgdG8gaW5jbHVkZSB0aGUgQVBJIGZ1bmN0aW9uLCBvciB6ZXJvDQotdG8gZXhjbHVkZSB0aGUgQVBJIGZ1bmN0aW9uLiAqLw0KLSNkZWZpbmUgSU5DTFVERV92VGFza1ByaW9yaXR5U2V0CQkxDQotI2RlZmluZSBJTkNMVURFX3V4VGFza1ByaW9yaXR5R2V0CQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsZXRlCQkJCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tDbGVhblVwUmVzb3VyY2VzCTENCi0jZGVmaW5lIElOQ0xVREVfdlRhc2tTdXNwZW5kCQkJMQ0KLSNkZWZpbmUgSU5DTFVERV92VGFza0RlbGF5VW50aWwJCQkxDQotI2RlZmluZSBJTkNMVURFX3ZUYXNrRGVsYXkJCQkJMQ0KLQ0KLS8qIFRoaXMgZGVtbyBtYWtlcyB1c2Ugb2Ygb25lIG9yIG1vcmUgZXhhbXBsZSBzdGF0cyBmb3JtYXR0aW5nIGZ1bmN0aW9ucy4gIFRoZXNlDQotZm9ybWF0IHRoZSByYXcgZGF0YSBwcm92aWRlZCBieSB0aGUgdXhUYXNrR2V0U3lzdGVtU3RhdGUoKSBmdW5jdGlvbiBpbiB0byBodW1hbg0KLXJlYWRhYmxlIEFTQ0lJIGZvcm0uICBTZWUgdGhlIG5vdGVzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB2VGFza0xpc3QoKSB3aXRoaW4NCi1GcmVlUlRPUy9Tb3VyY2UvdGFza3MuYyBmb3IgbGltaXRhdGlvbnMuICovDQotI2RlZmluZSBjb25maWdVU0VfU1RBVFNfRk9STUFUVElOR19GVU5DVElPTlMJMQ0KLQ0KLS8qIFRoZSBzaXplIG9mIHRoZSBnbG9iYWwgb3V0cHV0IGJ1ZmZlciB0aGF0IGlzIGF2YWlsYWJsZSBmb3IgdXNlIHdoZW4gdGhlcmUNCi1hcmUgbXVsdGlwbGUgY29tbWFuZCBpbnRlcnByZXRlcnMgcnVubmluZyBhdCBvbmNlIChmb3IgZXhhbXBsZSwgb25lIG9uIGEgVUFSVA0KLWFuZCBvbmUgb24gVENQL0lQKS4gIFRoaXMgaXMgZG9uZSB0byBwcmV2ZW50IGFuIG91dHB1dCBidWZmZXIgYmVpbmcgZGVmaW5lZCBieQ0KLWVhY2ggaW1wbGVtZW50YXRpb24gLSB3aGljaCB3b3VsZCB3YXN0ZSBSQU0uICBJbiB0aGlzIGNhc2UsIHRoZXJlIGlzIG9ubHkgb25lDQotY29tbWFuZCBpbnRlcnByZXRlciBydW5uaW5nLiAqLw0KLSNkZWZpbmUgY29uZmlnQ09NTUFORF9JTlRfTUFYX09VVFBVVF9TSVpFIDIwNDgNCi0NCi0vKiBDb3J0ZXgtTSBzcGVjaWZpYyBkZWZpbml0aW9ucy4gKi8NCi0jaWZkZWYgX19OVklDX1BSSU9fQklUUw0KLQkvKiBfX0JWSUNfUFJJT19CSVRTIHdpbGwgYmUgc3BlY2lmaWVkIHdoZW4gQ01TSVMgaXMgYmVpbmcgdXNlZC4gKi8NCi0JI2RlZmluZSBjb25maWdQUklPX0JJVFMgICAgICAgCQlfX05WSUNfUFJJT19CSVRTDQotI2Vsc2UNCi0JI2RlZmluZSBjb25maWdQUklPX0JJVFMgICAgICAgCQk0ICAgICAgICAvKiAxNSBwcmlvcml0eSBsZXZlbHMgKi8NCi0jZW5kaWYNCi0NCi0vKiBUaGUgbG93ZXN0IGludGVycnVwdCBwcmlvcml0eSB0aGF0IGNhbiBiZSB1c2VkIGluIGEgY2FsbCB0byBhICJzZXQgcHJpb3JpdHkiDQotZnVuY3Rpb24uICovDQotI2RlZmluZSBjb25maWdMSUJSQVJZX0xPV0VTVF9JTlRFUlJVUFRfUFJJT1JJVFkJCQkweDBmDQotDQotLyogVGhlIGhpZ2hlc3QgaW50ZXJydXB0IHByaW9yaXR5IHRoYXQgY2FuIGJlIHVzZWQgYnkgYW55IGludGVycnVwdCBzZXJ2aWNlDQotcm91dGluZSB0aGF0IG1ha2VzIGNhbGxzIHRvIGludGVycnVwdCBzYWZlIEZyZWVSVE9TIEFQSSBmdW5jdGlvbnMuICBETyBOT1QgQ0FMTA0KLUlOVEVSUlVQVCBTQUZFIEZSRUVSVE9TIEFQSSBGVU5DVElPTlMgRlJPTSBBTlkgSU5URVJSVVBUIFRIQVQgSEFTIEEgSElHSEVSDQotUFJJT1JJVFkgVEhBTiBUSElTISAoaGlnaGVyIHByaW9yaXRpZXMgYXJlIGxvd2VyIG51bWVyaWMgdmFsdWVzLiAqLw0KLSNkZWZpbmUgY29uZmlnTElCUkFSWV9NQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkJMTANCi0NCi0vKiBJbnRlcnJ1cHQgcHJpb3JpdGllcyB1c2VkIGJ5IHRoZSBrZXJuZWwgcG9ydCBsYXllciBpdHNlbGYuICBUaGVzZSBhcmUgZ2VuZXJpYw0KLXRvIGFsbCBDb3J0ZXgtTSBwb3J0cywgYW5kIGRvIG5vdCByZWx5IG9uIGFueSBwYXJ0aWN1bGFyIGxpYnJhcnkgZnVuY3Rpb25zLiAqLw0KLSNkZWZpbmUgY29uZmlnS0VSTkVMX0lOVEVSUlVQVF9QUklPUklUWSAJCSggY29uZmlnTElCUkFSWV9MT1dFU1RfSU5URVJSVVBUX1BSSU9SSVRZIDw8ICg4IC0gY29uZmlnUFJJT19CSVRTKSApDQotLyogISEhISBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgbXVzdCBub3QgYmUgc2V0IHRvIHplcm8gISEhIQ0KLVNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9SVE9TLUNvcnRleC1NMy1NNC5odG1sLiAqLw0KLSNkZWZpbmUgY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZIAkoIGNvbmZpZ0xJQlJBUllfTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZIDw8ICg4IC0gY29uZmlnUFJJT19CSVRTKSApDQotDQotLyogTm9ybWFsIGFzc2VydCgpIHNlbWFudGljcyB3aXRob3V0IHJlbHlpbmcgb24gdGhlIHByb3Zpc2lvbiBvZiBhbiBhc3NlcnQuaA0KLWhlYWRlciBmaWxlLiAqLw0KLSNkZWZpbmUgY29uZmlnQVNTRVJUKCB4ICkgaWYoICggeCApID09IDAgKSB7IHRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsgZm9yKCA7OyApOyB9DQotDQotLyogRGVmaW5pdGlvbnMgdGhhdCBtYXAgdGhlIEZyZWVSVE9TIHBvcnQgaW50ZXJydXB0IGhhbmRsZXJzIHRvIHRoZWlyIENNU0lTDQotc3RhbmRhcmQgbmFtZXMuICovDQotI2RlZmluZSB2UG9ydFNWQ0hhbmRsZXIgU1ZDX0hhbmRsZXINCi0jZGVmaW5lIHhQb3J0UGVuZFNWSGFuZGxlciBQZW5kU1ZfSGFuZGxlcg0KLSNkZWZpbmUgeFBvcnRTeXNUaWNrSGFuZGxlciBTeXNUaWNrX0hhbmRsZXINCi0NCi0jZW5kaWYgLyogRlJFRVJUT1NfQ09ORklHX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvUmVhZE1lLnR4dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9SZWFkTWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTk3NDlmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0NvbW1vbi1EZW1vLVNvdXJjZS9SZWFkTWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUnVuIHRoZSBDcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBiYXRjaCBmaWxlIHRvIHBvcHVsYXRlIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBidWlsZGluZyB0aGUgZGVtby4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9SZWFkTWUudHh0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vQ29tbW9uLURlbW8tU291cmNlL2luY2x1ZGUvUmVhZE1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5NzQ5Zi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9Db21tb24tRGVtby1Tb3VyY2UvaW5jbHVkZS9SZWFkTWUudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotUnVuIHRoZSBDcmVhdGVQcm9qZWN0RGlyZWN0b3J5U3RydWN0dXJlLmJhdCBiYXRjaCBmaWxlIHRvIHBvcHVsYXRlIHRoaXMgZGlyZWN0b3J5IGJlZm9yZSBidWlsZGluZyB0aGUgZGVtby4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRmlsZS1yZWxlYXRlZC1DTEktY29tbWFuZHMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTVjODU5OS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GaWxlLXJlbGVhdGVkLUNMSS1jb21tYW5kcy5jCisrKyAvZGV2L251bGwKQEAgLTEsNTcxICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLSNpbmNsdWRlIDxzdGRsaWIuaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyogRnJlZVJUT1MrQ0xJIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0NCi0vKiBGaWxlIHN5c3RlbSBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiZmF0X3NsLmgiDQotI2luY2x1ZGUgImFwaV9tZHJpdmVyX3JhbS5oIg0KLQ0KLSNpZmRlZiBfV0lORE9XU18NCi0JI2RlZmluZSBzbnByaW50ZiBfc25wcmludGYNCi0jZW5kaWYNCi0NCi0jZGVmaW5lIGNsaU5FV19MSU5FCQkiXHJcbiINCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFNlZSB0aGUgVVJMIGluIHRoZSBjb21tZW50cyB3aXRoaW4gbWFpbi5jIGZvciB0aGUgbG9jYXRpb24gb2YgdGhlIG9ubGluZQ0KLSAqIGRvY3VtZW50YXRpb24uDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKg0KLSAqIFByaW50IG91dCBpbmZvcm1hdGlvbiBvbiBhIHNpbmdsZSBmaWxlLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBjaGFyICpwY0J1ZmZlciwgRl9GSU5EICpweEZpbmRTdHJ1Y3QgKTsNCi0NCi0vKg0KLSAqIENvcGllcyBhbiBleGlzdGluZyBmaWxlIGludG8gYSBuZXdseSBjcmVhdGVkIGZpbGUuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UGVyZm9ybUNvcHkoIGNvbnN0IGNoYXIgKnBjU291cmNlRmlsZSwNCi0JCQkJCQkJCQlpbnQzMl90IGxTb3VyY2VGaWxlTGVuZ3RoLA0KLQkJCQkJCQkJCWNvbnN0IGNoYXIgKnBjRGVzdGluYXRpb25GaWxlLA0KLQkJCQkJCQkJCWNoYXIgKnB4V3JpdGVCdWZmZXIsDQotCQkJCQkJCQkJc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgRElSIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2RElSQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBDRCBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkNEQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBERUwgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZERUxDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKTsNCi0NCi0vKg0KLSAqIEltcGxlbWVudHMgdGhlIFRZUEUgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUWVBFQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBDT1BZIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q09QWUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIERJUiBjb21tYW5kIGxpbmUgY29tbWFuZCwgd2hpY2ggbGlzdHMgYWxsIHRoZQ0KLWZpbGVzIGluIHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhESVIgPQ0KLXsNCi0JImRpciIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRpcjpcclxuIExpc3RzIHRoZSBmaWxlcyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnlcclxuIiwNCi0JcHJ2RElSQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENEIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBjaGFuZ2VzIHRoZQ0KLXdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENEID0NCi17DQotCSJjZCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmNkIDxkaXIgbmFtZT46XHJcbiBDaGFuZ2VzIHRoZSB3b3JraW5nIGRpcmVjdG9yeVxyXG4iLA0KLQlwcnZDRENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIFRZUEUgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIHByaW50cyB0aGUNCi1jb250ZW50cyBvZiBhIGZpbGUgdG8gdGhlIGNvbnNvbGUuICovDQotc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4VFlQRSA9DQotew0KLQkidHlwZSIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbnR5cGUgPGZpbGVuYW1lPjpcclxuIFByaW50cyBmaWxlIGNvbnRlbnRzIHRvIHRoZSB0ZXJtaW5hbFxyXG4iLA0KLQlwcnZUWVBFQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgREVMIGNvbW1hbmQgbGluZSBjb21tYW5kLCB3aGljaCBkZWxldGVzIGEgZmlsZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhERUwgPQ0KLXsNCi0JImRlbCIsIC8qIFRoZSBjb21tYW5kIHN0cmluZyB0byB0eXBlLiAqLw0KLQkiXHJcbmRlbCA8ZmlsZW5hbWU+OlxyXG4gZGVsZXRlcyBhIGZpbGUgb3IgZGlyZWN0b3J5XHJcbiIsDQotCXBydkRFTENvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTEgLyogT25lIHBhcmFtZXRlciBpcyBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlIENPUFkgY29tbWFuZCBsaW5lIGNvbW1hbmQsIHdoaWNoIGRlbGV0ZXMgYSBmaWxlLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeENPUFkgPQ0KLXsNCi0JImNvcHkiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5jb3B5IDxzb3VyY2UgZmlsZT4gPGRlc3QgZmlsZT46XHJcbiBDb3BpZXMgPHNvdXJjZSBmaWxlPiB0byA8ZGVzdCBmaWxlPlxyXG4iLA0KLQlwcnZDT1BZQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMiAvKiBUd28gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcyggdm9pZCApDQotew0KLQkvKiBSZWdpc3RlciBhbGwgdGhlIGNvbW1hbmQgbGluZSBjb21tYW5kcyBkZWZpbmVkIGltbWVkaWF0ZWx5IGFib3ZlLiAqLw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4RElSICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDRCApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VFlQRSApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4REVMICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhDT1BZICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRZUEVDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgsIHhSZXR1cm4gPSBwZFRSVUU7DQotc3RhdGljIEZfRklMRSAqcHhGaWxlID0gTlVMTDsNCi1pbnQgaUNoYXI7DQotc2l6ZV90IHhCeXRlOw0KLXNpemVfdCB4Q29sdW1ucyA9IDUwVTsNCi0NCi0JLyogRW5zdXJlIHRoZXJlIGlzIGFsd2F5cyBhIG51bGwgdGVybWluYXRvciBhZnRlciBlYWNoIGNoYXJhY3RlciB3cml0dGVuLiAqLw0KLQltZW1zZXQoIHBjV3JpdGVCdWZmZXIsIDB4MDAsIHhXcml0ZUJ1ZmZlckxlbiApOw0KLQ0KLQkvKiBFbnN1cmUgdGhlIGJ1ZmZlciBsZWF2ZXMgc3BhY2UgZm9yIHRoZSBcclxuLiAqLw0KLQljb25maWdBU1NFUlQoIHhXcml0ZUJ1ZmZlckxlbiA+ICggc3RybGVuKCBjbGlORVdfTElORSApICogMiApICk7DQotCXhXcml0ZUJ1ZmZlckxlbiAtPSBzdHJsZW4oIGNsaU5FV19MSU5FICk7DQotDQotCWlmKCB4V3JpdGVCdWZmZXJMZW4gPCB4Q29sdW1ucyApDQotCXsNCi0JCS8qIEVuc3VyZSB0aGUgbG9vcCB0aGF0IHVzZXMgeENvbHVtbnMgYXMgYW4gZW5kIGNvbmRpdGlvbiBkb2VzIG5vdA0KLQkJd3JpdGUgb2ZmIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlci4gKi8NCi0JCXhDb2x1bW5zID0geFdyaXRlQnVmZmVyTGVuOw0KLQl9DQotDQotCWlmKCBweEZpbGUgPT0gTlVMTCApDQotCXsNCi0JCS8qIFRoZSBmaWxlIGhhcyBub3QgYmVlbiBvcGVuZWQgeWV0LiAgRmluZCB0aGUgZmlsZSBuYW1lLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJKA0KLQkJCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJCSk7DQotDQotCQkvKiBTYW5pdHkgY2hlY2sgc29tZXRoaW5nIHdhcyByZXR1cm5lZC4gKi8NCi0JCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JCS8qIEF0dGVtcHQgdG8gb3BlbiB0aGUgcmVxdWVzdGVkIGZpbGUuICovDQotCQlweEZpbGUgPSBmX29wZW4oIHBjUGFyYW1ldGVyLCAiciIgKTsNCi0JfQ0KLQ0KLQlpZiggcHhGaWxlICE9IE5VTEwgKQ0KLQl7DQotCQkvKiBSZWFkIHRoZSBuZXh0IGNodW5rIG9mIGRhdGEgZnJvbSB0aGUgZmlsZS4gKi8NCi0JCWZvciggeEJ5dGUgPSAwOyB4Qnl0ZSA8IHhDb2x1bW5zOyB4Qnl0ZSsrICkNCi0JCXsNCi0JCQlpQ2hhciA9IGZfZ2V0YyggcHhGaWxlICk7DQotDQotCQkJaWYoIGlDaGFyID09IC0xICkNCi0JCQl7DQotCQkJCS8qIE5vIG1vcmUgY2hhcmFjdGVycyB0byByZXR1cm4uICovDQotCQkJCWZfY2xvc2UoIHB4RmlsZSApOw0KLQkJCQlweEZpbGUgPSBOVUxMOw0KLQkJCQlicmVhazsNCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJcGNXcml0ZUJ1ZmZlclsgeEJ5dGUgXSA9ICggY2hhciApIGlDaGFyOw0KLQkJCX0NCi0JCX0NCi0JfQ0KLQ0KLQlpZiggcHhGaWxlID09IE5VTEwgKQ0KLQl7DQotCQkvKiBFaXRoZXIgdGhlIGZpbGUgd2FzIG5vdCBvcGVuZWQsIG9yIGFsbCB0aGUgZGF0YSBmcm9tIHRoZSBmaWxlIGhhcw0KLQkJYmVlbiByZXR1cm5lZCBhbmQgdGhlIGZpbGUgaXMgbm93IGNsb3NlZC4gKi8NCi0JCXhSZXR1cm4gPSBwZEZBTFNFOw0KLQl9DQotDQotCXN0cmNhdCggcGNXcml0ZUJ1ZmZlciwgY2xpTkVXX0xJTkUgKTsNCi0NCi0JcmV0dXJuIHhSZXR1cm47DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydkNEQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICkNCi17DQotY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotcG9ydEJBU0VfVFlQRSB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoOw0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm5lZDsNCi1zaXplX3QgeFN0cmluZ0xlbmd0aDsNCi0NCi0JLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQlwY1BhcmFtZXRlciA9IEZyZWVSVE9TX0NMSUdldFBhcmFtZXRlcg0KLQkJCQkJCSgNCi0JCQkJCQkJcGNDb21tYW5kU3RyaW5nLAkJLyogVGhlIGNvbW1hbmQgc3RyaW5nIGl0c2VsZi4gKi8NCi0JCQkJCQkJMSwJCQkJCQkvKiBSZXR1cm4gdGhlIGZpcnN0IHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCSk7DQotDQotCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCS8qIEF0dGVtcHQgdG8gbW92ZSB0byB0aGUgcmVxdWVzdGVkIGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm5lZCA9IGZfY2hkaXIoIHBjUGFyYW1ldGVyICk7DQotDQotCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiSW46ICIgKTsNCi0JCXhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIHBjV3JpdGVCdWZmZXIgKTsNCi0JCWZfZ2V0Y3dkKCAmKCBwY1dyaXRlQnVmZmVyWyB4U3RyaW5nTGVuZ3RoIF0gKSwgKCB1bnNpZ25lZCBjaGFyICkgKCB4V3JpdGVCdWZmZXJMZW4gLSB4U3RyaW5nTGVuZ3RoICkgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvciIgKTsNCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiBwZEZBTFNFOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZESVJDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1zdGF0aWMgRl9GSU5EICpweEZpbmRTdHJ1Y3QgPSBOVUxMOw0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm5lZDsNCi1wb3J0QkFTRV9UWVBFIHhSZXR1cm4gPSBwZEZBTFNFOw0KLQ0KLQkvKiBUaGlzIGFzc3VtZXMgcGNXcml0ZUJ1ZmZlciBpcyBsb25nIGVub3VnaC4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQ0KLQkvKiBFbnN1cmUgdGhlIGJ1ZmZlciBsZWF2ZXMgc3BhY2UgZm9yIHRoZSBcclxuLiAqLw0KLQljb25maWdBU1NFUlQoIHhXcml0ZUJ1ZmZlckxlbiA+ICggc3RybGVuKCBjbGlORVdfTElORSApICogMiApICk7DQotCXhXcml0ZUJ1ZmZlckxlbiAtPSBzdHJsZW4oIGNsaU5FV19MSU5FICk7DQotDQotCWlmKCBweEZpbmRTdHJ1Y3QgPT0gTlVMTCApDQotCXsNCi0JCS8qIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhpcyBmdW5jdGlvbiBoYXMgYmVlbiBleGVjdXRlZCBzaW5jZSB0aGUgRGlyDQotCQljb21tYW5kIHdhcyBydW4uICBDcmVhdGUgdGhlIGZpbmQgc3RydWN0dXJlLiAqLw0KLQkJcHhGaW5kU3RydWN0ID0gKCBGX0ZJTkQgKiApIHB2UG9ydE1hbGxvYyggc2l6ZW9mKCBGX0ZJTkQgKSApOw0KLQ0KLQkJaWYoIHB4RmluZFN0cnVjdCAhPSBOVUxMICkNCi0JCXsNCi0JCQl1Y1JldHVybmVkID0gZl9maW5kZmlyc3QoICIqLioiLCBweEZpbmRTdHJ1Y3QgKTsNCi0NCi0JCQlpZiggdWNSZXR1cm5lZCA9PSBGX05PX0VSUk9SICkNCi0JCQl7DQotCQkJCXBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBwY1dyaXRlQnVmZmVyLCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQkJeFJldHVybiA9IHBkUEFTUzsNCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJc25wcmludGYoIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiwgIkVycm9yOiBmX2ZpbmRmaXJzdCgpIGZhaWxlZC4iICk7DQotCQkJfQ0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNucHJpbnRmKCBwY1dyaXRlQnVmZmVyLCB4V3JpdGVCdWZmZXJMZW4sICJGYWlsZWQgdG8gYWxsb2NhdGUgUkFNICh1c2luZyBoZWFwXzQuYyB3aWxsIHByZXZlbnQgZnJhZ21lbnRhdGlvbikuIiApOw0KLQkJfQ0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogVGhlIGZpbmQgc3RydWN0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4gIEZpbmQgdGhlIG5leHQgZmlsZSBpbg0KLQkJdGhlIGRpcmVjdG9yeS4gKi8NCi0JCXVjUmV0dXJuZWQgPSBmX2ZpbmRuZXh0KCBweEZpbmRTdHJ1Y3QgKTsNCi0NCi0JCWlmKCB1Y1JldHVybmVkID09IEZfTk9fRVJST1IgKQ0KLQkJew0KLQkJCXBydkNyZWF0ZUZpbGVJbmZvU3RyaW5nKCBwY1dyaXRlQnVmZmVyLCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQl4UmV0dXJuID0gcGRQQVNTOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCS8qIFRoZXJlIGFyZSBubyBtb3JlIGZpbGVzLiAgRnJlZSB0aGUgZmluZCBzdHJ1Y3R1cmUuICovDQotCQkJdlBvcnRGcmVlKCBweEZpbmRTdHJ1Y3QgKTsNCi0JCQlweEZpbmRTdHJ1Y3QgPSBOVUxMOw0KLQ0KLQkJCS8qIE5vIHN0cmluZyB0byByZXR1cm4uICovDQotCQkJcGNXcml0ZUJ1ZmZlclsgMCBdID0gMHgwMDsNCi0JCX0NCi0JfQ0KLQ0KLQlzdHJjYXQoIHBjV3JpdGVCdWZmZXIsIGNsaU5FV19MSU5FICk7DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZERUxDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpwY1BhcmFtZXRlcjsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotdW5zaWduZWQgY2hhciB1Y1JldHVybmVkOw0KLQ0KLQkvKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgeFdyaXRlQnVmZmVyTGVuIGlzIGxhcmdlIGVub3VnaCEgKi8NCi0JKCB2b2lkICkgeFdyaXRlQnVmZmVyTGVuOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCXBjUGFyYW1ldGVyID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJKA0KLQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkxLAkJCQkJCS8qIFJldHVybiB0aGUgZmlyc3QgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JLyogQXR0ZW1wdCB0byBkZWxldGUgdGhlIGZpbGUuICovDQotCXVjUmV0dXJuZWQgPSBmX2RlbGV0ZSggcGNQYXJhbWV0ZXIgKTsNCi0NCi0JaWYoIHVjUmV0dXJuZWQgPT0gRl9OT19FUlJPUiApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlcyB3YXMgZGVsZXRlZCIsIHBjUGFyYW1ldGVyICk7DQotCX0NCi0JZWxzZQ0KLQl7DQotCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3IiICk7DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2Q09QWUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjRGVzdGluYXRpb25GaWxlOw0KLWNoYXIgKnBjU291cmNlRmlsZTsNCi1wb3J0QkFTRV9UWVBFIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGg7DQotbG9uZyBsU291cmNlTGVuZ3RoLCBsRGVzdGluYXRpb25MZW5ndGggPSAwOw0KLQ0KLQkvKiBPYnRhaW4gdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIGZpbGUuICovDQotCXBjRGVzdGluYXRpb25GaWxlID0gRnJlZVJUT1NfQ0xJR2V0UGFyYW1ldGVyDQotCQkJCQkJCSgNCi0JCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCQkyLAkJCQkJCS8qIFJldHVybiB0aGUgc2Vjb25kIHBhcmFtZXRlci4gKi8NCi0JCQkJCQkJCSZ4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNEZXN0aW5hdGlvbkZpbGUgKTsNCi0NCi0JLyogT2J0YWluIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZS4gKi8NCi0JcGNTb3VyY2VGaWxlID0gKCBjaGFyICogKSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkJCSgNCi0JCQkJCQkJCQlwY0NvbW1hbmRTdHJpbmcsCQkvKiBUaGUgY29tbWFuZCBzdHJpbmcgaXRzZWxmLiAqLw0KLQkJCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCQkJJnhQYXJhbWV0ZXJTdHJpbmdMZW5ndGgJLyogU3RvcmUgdGhlIHBhcmFtZXRlciBzdHJpbmcgbGVuZ3RoLiAqLw0KLQkJCQkJCQkJKTsNCi0NCi0JLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCWNvbmZpZ0FTU0VSVCggcGNTb3VyY2VGaWxlICk7DQotDQotCS8qIFRlcm1pbmF0ZSB0aGUgc3RyaW5nLiAqLw0KLQlwY1NvdXJjZUZpbGVbIHhQYXJhbWV0ZXJTdHJpbmdMZW5ndGggXSA9IDB4MDA7DQotDQotCS8qIFNlZSBpZiB0aGUgc291cmNlIGZpbGUgZXhpc3RzLCBvYnRhaW4gaXRzIGxlbmd0aCBpZiBpdCBkb2VzLiAqLw0KLQlsU291cmNlTGVuZ3RoID0gZl9maWxlbGVuZ3RoKCBwY1NvdXJjZUZpbGUgKTsNCi0NCi0JaWYoIGxTb3VyY2VMZW5ndGggPT0gMCApDQotCXsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJTb3VyY2UgZmlsZSBkb2VzIG5vdCBleGlzdCIgKTsNCi0JfQ0KLQllbHNlDQotCXsNCi0JCS8qIFNlZSBpZiB0aGUgZGVzdGluYXRpb24gZmlsZSBleGlzdHMuICovDQotCQlsRGVzdGluYXRpb25MZW5ndGggPSBmX2ZpbGVsZW5ndGgoIHBjRGVzdGluYXRpb25GaWxlICk7DQotDQotCQlpZiggbERlc3RpbmF0aW9uTGVuZ3RoICE9IDAgKQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJFcnJvcjogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cyIgKTsNCi0JCX0NCi0JfQ0KLQ0KLQkvKiBDb250aW51ZSBvbmx5IGlmIHRoZSBzb3VyY2UgZmlsZSBleGlzdHMgYW5kIHRoZSBkZXN0aW5hdGlvbiBmaWxlIGRvZXMNCi0Jbm90IGV4aXN0LiAqLw0KLQlpZiggKCBsU291cmNlTGVuZ3RoICE9IDAgKSAmJiAoIGxEZXN0aW5hdGlvbkxlbmd0aCA9PSAwICkgKQ0KLQl7DQotCQlpZiggcHJ2UGVyZm9ybUNvcHkoIHBjU291cmNlRmlsZSwgbFNvdXJjZUxlbmd0aCwgcGNEZXN0aW5hdGlvbkZpbGUsIHBjV3JpdGVCdWZmZXIsIHhXcml0ZUJ1ZmZlckxlbiApID09IHBkUEFTUyApDQotCQl7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIkNvcHkgbWFkZSIgKTsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiRXJyb3IgZHVyaW5nIGNvcHkiICk7DQotCQl9DQotCX0NCi0NCi0Jc3RyY2F0KCBwY1dyaXRlQnVmZmVyLCBjbGlORVdfTElORSApOw0KLQ0KLQlyZXR1cm4gcGRGQUxTRTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UGVyZm9ybUNvcHkoIGNvbnN0IGNoYXIgKnBjU291cmNlRmlsZSwNCi0JCQkJCQkJCQlpbnQzMl90IGxTb3VyY2VGaWxlTGVuZ3RoLA0KLQkJCQkJCQkJCWNvbnN0IGNoYXIgKnBjRGVzdGluYXRpb25GaWxlLA0KLQkJCQkJCQkJCWNoYXIgKnB4V3JpdGVCdWZmZXIsDQotCQkJCQkJCQkJc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiApDQotew0KLWludDMyX3QgbEJ5dGVzUmVhZCA9IDAsIGxCeXRlc1RvUmVhZCwgbEJ5dGVzUmVtYWluaW5nOw0KLUZfRklMRSAqcHhGaWxlOw0KLXBvcnRCQVNFX1RZUEUgeFJldHVybiA9IHBkUEFTUzsNCi0NCi0JLyogTk9URTogIEVycm9yIGhhbmRsaW5nIGhhcyBiZWVuIG9taXR0ZWQgZm9yIGNsYXJpdHkuICovDQotDQotCXdoaWxlKCBsQnl0ZXNSZWFkIDwgbFNvdXJjZUZpbGVMZW5ndGggKQ0KLQl7DQotCQkvKiBIb3cgbWFueSBieXRlcyBhcmUgbGVmdD8gKi8NCi0JCWxCeXRlc1JlbWFpbmluZyA9IGxTb3VyY2VGaWxlTGVuZ3RoIC0gbEJ5dGVzUmVhZDsNCi0NCi0JCS8qIEhvdyBtYW55IGJ5dGVzIHNob3VsZCBiZSByZWFkIHRoaXMgdGltZSBhcm91bmQgdGhlIGxvb3AuICBDYW4ndA0KLQkJcmVhZCBtb3JlIGJ5dGVzIHRoYW4gd2lsbCBmaXQgaW50byB0aGUgYnVmZmVyLiAqLw0KLQkJaWYoIGxCeXRlc1JlbWFpbmluZyA+ICggbG9uZyApIHhXcml0ZUJ1ZmZlckxlbiApDQotCQl7DQotCQkJbEJ5dGVzVG9SZWFkID0gKCBsb25nICkgeFdyaXRlQnVmZmVyTGVuOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCWxCeXRlc1RvUmVhZCA9IGxCeXRlc1JlbWFpbmluZzsNCi0JCX0NCi0NCi0JCS8qIE9wZW4gdGhlIHNvdXJjZSBmaWxlLCBzZWVrIHBhc3QgdGhlIGRhdGEgdGhhdCBoYXMgYWxyZWFkeSBiZWVuDQotCQlyZWFkIGZyb20gdGhlIGZpbGUsIHJlYWQgdGhlIG5leHQgYmxvY2sgb2YgZGF0YSwgdGhlbiBjbG9zZSB0aGUNCi0JCWZpbGUgYWdhaW4gc28gdGhlIGRlc3RpbmF0aW9uIGZpbGUgY2FuIGJlIG9wZW5lZC4gKi8NCi0JCXB4RmlsZSA9IGZfb3BlbiggcGNTb3VyY2VGaWxlLCAiciIgKTsNCi0JCWlmKCBweEZpbGUgIT0gTlVMTCApDQotCQl7DQotCQkJZl9zZWVrKCBweEZpbGUsIGxCeXRlc1JlYWQsIEZfU0VFS19TRVQgKTsNCi0JCQlmX3JlYWQoIHB4V3JpdGVCdWZmZXIsIGxCeXRlc1RvUmVhZCwgMSwgcHhGaWxlICk7DQotCQkJZl9jbG9zZSggcHhGaWxlICk7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJeFJldHVybiA9IHBkRkFJTDsNCi0JCQlicmVhazsNCi0JCX0NCi0NCi0JCS8qIE9wZW4gdGhlIGRlc3RpbmF0aW9uIGZpbGUgYW5kIHdyaXRlIHRoZSBibG9jayBvZiBkYXRhIHRvIHRoZSBlbmQgb2YNCi0JCXRoZSBmaWxlLiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBwY0Rlc3RpbmF0aW9uRmlsZSwgImEiICk7DQotCQlpZiggcHhGaWxlICE9IE5VTEwgKQ0KLQkJew0KLQkJCWZfd3JpdGUoIHB4V3JpdGVCdWZmZXIsIGxCeXRlc1RvUmVhZCwgMSwgcHhGaWxlICk7DQotCQkJZl9jbG9zZSggcHhGaWxlICk7DQotCQl9DQotCQllbHNlDQotCQl7DQotCQkJeFJldHVybiA9IHBkRkFJTDsNCi0JCQlicmVhazsNCi0JCX0NCi0NCi0JCWxCeXRlc1JlYWQgKz0gbEJ5dGVzVG9SZWFkOw0KLQl9DQotDQotCXJldHVybiB4UmV0dXJuOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZDcmVhdGVGaWxlSW5mb1N0cmluZyggY2hhciAqcGNCdWZmZXIsIEZfRklORCAqcHhGaW5kU3RydWN0ICkNCi17DQotY29uc3QgY2hhciAqcGNXcml0YWJsZUZpbGUgPSAid3JpdGFibGUgZmlsZSIsICpwY1JlYWRPbmx5RmlsZSA9ICJyZWFkIG9ubHkgZmlsZSIsICpwY0RpcmVjdG9yeSA9ICJkaXJlY3RvcnkiOw0KLWNvbnN0IGNoYXIgKiBwY0F0dHJpYjsNCi0NCi0JLyogUG9pbnQgcGNBdHRyaWIgdG8gYSBzdHJpbmcgdGhhdCBkZXNjcmliZXMgdGhlIGZpbGUuICovDQotCWlmKCAoIHB4RmluZFN0cnVjdC0+YXR0ciAmIEZfQVRUUl9ESVIgKSAhPSAwICkNCi0Jew0KLQkJcGNBdHRyaWIgPSBwY0RpcmVjdG9yeTsNCi0JfQ0KLQllbHNlIGlmKCBweEZpbmRTdHJ1Y3QtPmF0dHIgJiBGX0FUVFJfUkVBRE9OTFkgKQ0KLQl7DQotCQlwY0F0dHJpYiA9IHBjUmVhZE9ubHlGaWxlOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJcGNBdHRyaWIgPSBwY1dyaXRhYmxlRmlsZTsNCi0JfQ0KLQ0KLQkvKiBDcmVhdGUgYSBzdHJpbmcgdGhhdCBpbmNsdWRlcyB0aGUgZmlsZSBuYW1lLCB0aGUgZmlsZSBzaXplIGFuZCB0aGUNCi0JYXR0cmlidXRlcyBzdHJpbmcuICovDQotCXNwcmludGYoIHBjQnVmZmVyLCAiJXMgWyVzXSBbc2l6ZT0lZF0iLCBweEZpbmRTdHJ1Y3QtPmZpbGVuYW1lLCBwY0F0dHJpYiwgKCBpbnQgKSBweEZpbmRTdHJ1Y3QtPmZpbGVzaXplICk7DQotfQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZpbGUtc3lzdGVtLWRlbW8uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZpbGUtc3lzdGVtLWRlbW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzdhNmE1ZS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GaWxlLXN5c3RlbS1kZW1vLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNzkgKzAsMCBAQAotLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBTZWUgdGhlIFVSTCBpbiB0aGUgY29tbWVudHMgd2l0aGluIG1haW4uYyBmb3IgdGhlIGxvY2F0aW9uIG9mIHRoZSBvbmxpbmUNCi0gKiBkb2N1bWVudGF0aW9uLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotDQotLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgPHN0ZGlvLmg+DQotI2luY2x1ZGUgPHN0cmluZy5oPg0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLSNpbmNsdWRlICJ0YXNrLmgiDQotDQotLyogRmlsZSBzeXN0ZW0gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgImZhdF9zbC5oIg0KLSNpbmNsdWRlICJhcGlfbWRyaXZlcl9yYW0uaCINCi0NCi0vKiA4LjMgZm9ybWF0LCBwbHVzIG51bGwgdGVybWluYXRvci4gKi8NCi0jZGVmaW5lIGZzTUFYX0ZJTEVfTkFNRV9MRU4JCQkJMTMNCi0NCi0vKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQvd3JpdHRlbiB0byB0aGUgZXhhbXBsZSBmaWxlcyBhdCBhIHRpbWUuICovDQotI2RlZmluZSBmc1JBTV9CVUZGRVJfU0laRSAJCQkJMjAwDQotDQotLyogVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIHRoZSBmaWxlIHRoYXQgdXNlcyBmX3B1dGMoKSBhbmQgZl9nZXRjKCkuICovDQotI2RlZmluZSBmc1BVVENfRklMRV9TSVpFCQkJCTEwMA0KLQ0KLS8qIFRoZSBudW1iZXIgb2YgZmlsZXMgY3JlYXRlZCBpbiByb290LiAqLw0KLSNkZWZpbmUgZnNST09UX0ZJTEVTCQkJCQkzDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyoNCi0gKiBDcmVhdGVzIGFuZCB2ZXJpZmllcyBkaWZmZXJlbnQgZmlsZXMgb24gdGhlIHZvbHVtZSwgZGVtb25zdHJhdGluZyB0aGUgdXNlIG9mDQotICogdmFyaW91cyBkaWZmZXJlbnQgQVBJIGZ1bmN0aW9ucy4NCi0gKi8NCi12b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGEgc2V0IG9mIGV4YW1wbGUgZmlsZXMgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoZSB2b2x1bWUgdXNpbmcNCi0gKiBmX3dyaXRlKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSggdm9pZCApOw0KLQ0KLS8qDQotICogVXNlIGZfcmVhZCgpIHRvIHJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlcyB0aGF0IHdlcmUgY3JlYXRlZCBieQ0KLSAqIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfcmVhZCggdm9pZCApOw0KLQ0KLS8qDQotICogQ3JlYXRlIGFuIGV4YW1wbGUgZmlsZSBpbiBhIHN1Yi1kaXJlY3RvcnkgdXNpbmcgZl9wdXRjKCkuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIFVzZSBmX2dldGMoKSB0byByZWFkIGJhY2sgYW5kIHZlcmlmeSB0aGUgZmlsZSB0aGF0IHdhcyBjcmVhdGVkIGJ5DQotICogcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0Yyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIEEgYnVmZmVyIHVzZWQgdG8gYm90aCBjcmVhdGUgY29udGVudCB0byB3cml0ZSB0byBkaXNrLCBhbmQgcmVhZCBjb250ZW50IGJhY2sNCi1mcm9tIGEgZGlzay4gIE5vdGUgdGhlcmUgaXMgbm8gbXV0dWFsIGV4Y2x1c2lvbiBvbiB0aGlzIGJ1ZmZlci4gKi8NCi1zdGF0aWMgY2hhciBjUkFNQnVmZmVyWyBmc1JBTV9CVUZGRVJfU0laRSBdOw0KLQ0KLS8qIE5hbWVzIG9mIGRpcmVjdG9yaWVzIHRoYXQgYXJlIGNyZWF0ZWQuICovDQotc3RhdGljIGNvbnN0IGNoYXIgKnBjUm9vdCA9ICIvIiwgKnBjRGlyZWN0b3J5MSA9ICJTVUIxIiwgKnBjRGlyZWN0b3J5MiA9ICJTVUIyIiwgKnBjRnVsbFBhdGggPSAiL1NVQjEvU1VCMiI7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2Q3JlYXRlQW5kVmVyaWZ5U2FtcGxlRmlsZXMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjU3RhdHVzOw0KLQ0KLQkvKiBGaXJzdCBjcmVhdGUgdGhlIHZvbHVtZS4gKi8NCi0JdWNTdGF0dXMgPSBmX2luaXR2b2x1bWUoIHJhbV9pbml0ZnVuYyApOw0KLQ0KLQkvKiBJdCBpcyBleHBlY3RlZCB0aGF0IHRoZSB2b2x1bWUgaXMgbm90IGZvcm1hdHRlZC4gKi8NCi0JaWYoIHVjU3RhdHVzID09IEZfRVJSX05PVEZPUk1BVFRFRCApDQotCXsNCi0JCS8qIEZvcm1hdCB0aGUgY3JlYXRlZCB2b2x1bWUuICovDQotCQl1Y1N0YXR1cyA9IGZfZm9ybWF0KCBGX0ZBVDEyX01FRElBICk7DQotCX0NCi0NCi0JaWYoIHVjU3RhdHVzID09IEZfTk9fRVJST1IgKQ0KLQl7DQotCQkvKiBDcmVhdGUgYSBzZXQgb2YgZmlsZXMgdXNpbmcgZl93cml0ZSgpLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpOw0KLQ0KLQkJLyogUmVhZCBiYWNrIGFuZCB2ZXJpZnkgdGhlIGZpbGVzIHRoYXQgd2VyZSBjcmVhdGVkIHVzaW5nIGZfd3JpdGUoKS4gKi8NCi0JCXBydlZlcmlmeURlbW9GaWxlVXNpbmdfZl9yZWFkKCk7DQotDQotCQkvKiBDcmVhdGUgc3ViIGRpcmVjdG9yaWVzIHR3byBkZWVwIHRoZW4gY3JlYXRlIGEgZmlsZSB1c2luZyBwdXRjLiAqLw0KLQkJcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoKTsNCi0NCi0JCS8qIFJlYWQgYmFjayBhbmQgdmVyaWZ5IHRoZSBmaWxlIGNyZWF0ZWQgYnkNCi0JCXBydkNyZWF0ZURlbW9GaWxlVXNpbmdfZl9wdXRjKCkuICovDQotCQlwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0YygpOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydkNyZWF0ZURlbW9GaWxlc1VzaW5nX2Zfd3JpdGUoIHZvaWQgKQ0KLXsNCi1wb3J0QkFTRV9UWVBFIHhGaWxlTnVtYmVyLCB4V3JpdGVOdW1iZXI7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi1sb25nIGxJdGVtc1dyaXR0ZW47DQotRl9GSUxFICpweEZpbGU7DQotDQotCS8qIENyZWF0ZSBmc1JPT1RfRklMRVMgZmlsZXMuICBFYWNoIGNyZWF0ZWQgZmlsZSB3aWxsIGJlDQotCSggeEZpbGVOdW1iZXIgKiBmc1JBTV9CVUZGRVJfU0laRSApIGJ5dGVzIGluIGxlbmd0aCwgYW5kIGZpbGxlZA0KLQl3aXRoIGEgZGlmZmVyZW50IHJlcGVhdGluZyBjaGFyYWN0ZXIuICovDQotCWZvciggeEZpbGVOdW1iZXIgPSAxOyB4RmlsZU51bWJlciA8PSBmc1JPT1RfRklMRVM7IHhGaWxlTnVtYmVyKysgKQ0KLQl7DQotCQkvKiBHZW5lcmF0ZSBhIGZpbGUgbmFtZS4gKi8NCi0JCXNwcmludGYoIGNGaWxlTmFtZSwgInJvb3QlMDNkLnR4dCIsICggaW50ICkgeEZpbGVOdW1iZXIgKTsNCi0NCi0JCS8qIE9idGFpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kDQotCQl0aGUJZGlyZWN0b3J5IGludG8gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcgd3JpdHRlbi4gKi8NCi0JCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQkJcHJpbnRmKCAiQ3JlYXRpbmcgZmlsZSAlcyBpbiAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JCS8qIE9wZW4gdGhlIGZpbGUsIGNyZWF0aW5nIHRoZSBmaWxlIGlmIGl0IGRvZXMgbm90IGFscmVhZHkgZXhpc3QuICovDQotCQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInciICk7DQotCQljb25maWdBU1NFUlQoIHB4RmlsZSApOw0KLQ0KLQkJLyogRmlsbCB0aGUgUkFNIGJ1ZmZlciB3aXRoIGRhdGEgdGhhdCB3aWxsIGJlIHdyaXR0ZW4gdG8gdGhlIGZpbGUuICBUaGlzDQotCQlpcyBqdXN0IGEgcmVwZWF0aW5nIGFzY2lpIGNoYXJhY3RlciB0aGF0IGluZGljYXRlcyB0aGUgZmlsZSBudW1iZXIuICovDQotCQltZW1zZXQoIGNSQU1CdWZmZXIsICggaW50ICkgKCAnMCcgKyB4RmlsZU51bWJlciApLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQ0KLQkJLyogV3JpdGUgdGhlIFJBTSBidWZmZXIgdG8gdGhlIG9wZW5lZCBmaWxlIGEgbnVtYmVyIG9mIHRpbWVzLiAgVGhlDQotCQludW1iZXIgb2YgdGltZXMgdGhlIFJBTSBidWZmZXIgaXMgd3JpdHRlbiB0byB0aGUgZmlsZSBkZXBlbmRzIG9uIHRoZQ0KLQkJZmlsZSBudW1iZXIsIHNvIHRoZSBsZW5ndGggb2YgZWFjaCBjcmVhdGVkIGZpbGUgd2lsbCBiZSBkaWZmZXJlbnQuICovDQotCQlmb3IoIHhXcml0ZU51bWJlciA9IDA7IHhXcml0ZU51bWJlciA8IHhGaWxlTnVtYmVyOyB4V3JpdGVOdW1iZXIrKyApDQotCQl7DQotCQkJbEl0ZW1zV3JpdHRlbiA9IGZfd3JpdGUoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFLCAxLCBweEZpbGUgKTsNCi0JCQljb25maWdBU1NFUlQoIGxJdGVtc1dyaXR0ZW4gPT0gMSApOw0KLQkJfQ0KLQ0KLQkJLyogQ2xvc2UgdGhlIGZpbGUgc28gYW5vdGhlciBmaWxlIGNhbiBiZSBjcmVhdGVkLiAqLw0KLQkJZl9jbG9zZSggcHhGaWxlICk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2VmVyaWZ5RGVtb0ZpbGVVc2luZ19mX3JlYWQoIHZvaWQgKQ0KLXsNCi1wb3J0QkFTRV9UWVBFIHhGaWxlTnVtYmVyLCB4UmVhZE51bWJlcjsNCi1jaGFyIGNGaWxlTmFtZVsgZnNNQVhfRklMRV9OQU1FX0xFTiBdOw0KLWxvbmcgbEl0ZW1zUmVhZCwgbENoYXI7DQotRl9GSUxFICpweEZpbGU7DQotDQotCS8qIFJlYWQgYmFjayB0aGUgZmlsZXMgdGhhdCB3ZXJlIGNyZWF0ZWQgYnkNCi0JcHJ2Q3JlYXRlRGVtb0ZpbGVzVXNpbmdfZl93cml0ZSgpLiAqLw0KLQlmb3IoIHhGaWxlTnVtYmVyID0gMTsgeEZpbGVOdW1iZXIgPD0gZnNST09UX0ZJTEVTOyB4RmlsZU51bWJlcisrICkNCi0Jew0KLQkJLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0JCXNwcmludGYoIGNGaWxlTmFtZSwgInJvb3QlMDNkLnR4dCIsICggaW50ICkgeEZpbGVOdW1iZXIgKTsNCi0NCi0JCS8qIE9idGFpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhbmQgcHJpbnQgb3V0IHRoZSBmaWxlIG5hbWUgYW5kDQotCQl0aGUJZGlyZWN0b3J5IGZyb20gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcgcmVhZC4gKi8NCi0JCWZfZ2V0Y3dkKCBjUkFNQnVmZmVyLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQkJcHJpbnRmKCAiUmVhZGluZyBmaWxlICVzIGZyb20gJXNcclxuIiwgY0ZpbGVOYW1lLCBjUkFNQnVmZmVyICk7DQotDQotCQkvKiBPcGVuIHRoZSBmaWxlIGZvciByZWFkaW5nLiAqLw0KLQkJcHhGaWxlID0gZl9vcGVuKCBjRmlsZU5hbWUsICJyIiApOw0KLQkJY29uZmlnQVNTRVJUKCBweEZpbGUgKTsNCi0NCi0JCS8qIFJlYWQgdGhlIGZpbGUgaW50byB0aGUgUkFNIGJ1ZmZlciwgY2hlY2tpbmcgdGhlIGZpbGUgY29udGVudHMgYXJlIGFzDQotCQlleHBlY3RlZC4gIFRoZSBzaXplIG9mIHRoZSBmaWxlIGRlcGVuZHMgb24gdGhlIGZpbGUgbnVtYmVyLiAqLw0KLQkJZm9yKCB4UmVhZE51bWJlciA9IDA7IHhSZWFkTnVtYmVyIDwgeEZpbGVOdW1iZXI7IHhSZWFkTnVtYmVyKysgKQ0KLQkJew0KLQkJCS8qIFN0YXJ0IHdpdGggdGhlIFJBTSBidWZmZXIgY2xlYXIuICovDQotCQkJbWVtc2V0KCBjUkFNQnVmZmVyLCAweDAwLCBmc1JBTV9CVUZGRVJfU0laRSApOw0KLQ0KLQkJCWxJdGVtc1JlYWQgPSBmX3JlYWQoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFLCAxLCBweEZpbGUgKTsNCi0JCQljb25maWdBU1NFUlQoIGxJdGVtc1JlYWQgPT0gMSApOw0KLQ0KLQkJCS8qIENoZWNrIHRoZSBSQU0gYnVmZmVyIGlzIGZpbGxlZCB3aXRoIHRoZSBleHBlY3RlZCBkYXRhLiAgRWFjaA0KLQkJCWZpbGUgY29udGFpbnMgYSBkaWZmZXJlbnQgcmVwZWF0aW5nIGFzY2lpIGNoYXJhY3RlciB0aGF0IGluZGljYXRlcw0KLQkJCXRoZSBudW1iZXIgb2YgdGhlIGZpbGUuICovDQotCQkJZm9yKCBsQ2hhciA9IDA7IGxDaGFyIDwgZnNSQU1fQlVGRkVSX1NJWkU7IGxDaGFyKysgKQ0KLQkJCXsNCi0JCQkJY29uZmlnQVNTRVJUKCBjUkFNQnVmZmVyWyBsQ2hhciBdID09ICggJzAnICsgKCBjaGFyICkgeEZpbGVOdW1iZXIgKSApOw0KLQkJCX0NCi0JCX0NCi0NCi0JCS8qIENsb3NlIHRoZSBmaWxlLiAqLw0KLQkJZl9jbG9zZSggcHhGaWxlICk7DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q3JlYXRlRGVtb0ZpbGVVc2luZ19mX3B1dGMoIHZvaWQgKQ0KLXsNCi11bnNpZ25lZCBjaGFyIHVjUmV0dXJuOw0KLWludCBpQnl0ZSwgaVJldHVybmVkOw0KLUZfRklMRSAqcHhGaWxlOw0KLWNoYXIgY0ZpbGVOYW1lWyBmc01BWF9GSUxFX05BTUVfTEVOIF07DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotDQotCS8qIENyZWF0ZSBhIHN1YiBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9ta2RpciggcGNEaXJlY3RvcnkxICk7DQotCWNvbmZpZ0FTU0VSVCggdWNSZXR1cm4gPT0gRl9OT19FUlJPUiApOw0KLQ0KLQkvKiBNb3ZlIGludG8gdGhlIGNyZWF0ZWQgc3ViLWRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX2NoZGlyKCBwY0RpcmVjdG9yeTEgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkluIGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotDQotCS8qIENyZWF0ZSBhIHN1YmRpcmVjdG9yeSBpbiB0aGUgbmV3IGRpcmVjdG9yeS4gKi8NCi0JdWNSZXR1cm4gPSBmX21rZGlyKCBwY0RpcmVjdG9yeTIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE1vdmUgaW50byB0aGUgZGlyZWN0b3J5IGp1c3QgY3JlYXRlZCAtIG5vdyB0d28gZGlyZWN0b3JpZXMgZG93biBmcm9tDQotCXRoZSByb290LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoIHBjRGlyZWN0b3J5MiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiSW4gZGlyZWN0b3J5ICVzXHJcbiIsIGNSQU1CdWZmZXIgKTsNCi0JY29uZmlnQVNTRVJUKCBzdHJjbXAoIGNSQU1CdWZmZXIsIHBjRnVsbFBhdGggKSA9PSAwICk7DQotDQotCS8qIEdlbmVyYXRlIHRoZSBmaWxlIG5hbWUuICovDQotCXNwcmludGYoIGNGaWxlTmFtZSwgIiVzLnR4dCIsIHBjRGlyZWN0b3J5MiApOw0KLQ0KLQkvKiBQcmludCBvdXQgdGhlIGZpbGUgbmFtZSBhbmQgdGhlIGRpcmVjdG9yeSBpbnRvIHdoaWNoIHRoZSBmaWxlIGlzIGJlaW5nDQotCXdyaXR0ZW4uICovDQotCXByaW50ZiggIldyaXRpbmcgZmlsZSAlcyBpbiAlc1xyXG4iLCBjRmlsZU5hbWUsIGNSQU1CdWZmZXIgKTsNCi0NCi0JcHhGaWxlID0gZl9vcGVuKCBjRmlsZU5hbWUsICJ3IiApOw0KLQ0KLQkvKiBDcmVhdGUgYSBmaWxlIDEgYnl0ZSBhdCBhIHRpbWUuICBUaGUgZmlsZSBpcyBmaWxsZWQgd2l0aCBpbmNyZW1lbnRpbmcNCi0JYXNjaWkgY2hhcmFjdGVycyBzdGFydGluZyBmcm9tICcwJy4gKi8NCi0JZm9yKCBpQnl0ZSA9IDA7IGlCeXRlIDwgZnNQVVRDX0ZJTEVfU0laRTsgaUJ5dGUrKyApDQotCXsNCi0JCWlSZXR1cm5lZCA9IGZfcHV0YyggKCAoIGludCApICcwJyArIGlCeXRlICksIHB4RmlsZSApOw0KLQkJY29uZmlnQVNTRVJUKCBpUmV0dXJuZWQgPT0gICggKCBpbnQgKSAnMCcgKyBpQnl0ZSApICk7DQotCX0NCi0NCi0JLyogRmluaXNoZWQgc28gY2xvc2UgdGhlIGZpbGUuICovDQotCWZfY2xvc2UoIHB4RmlsZSApOw0KLQ0KLQkvKiBNb3ZlIGJhY2sgdG8gdGhlIHJvb3QgZGlyZWN0b3J5LiAqLw0KLQl1Y1JldHVybiA9IGZfY2hkaXIoICIuLi8uLiIgKTsNCi0JY29uZmlnQVNTRVJUKCB1Y1JldHVybiA9PSBGX05PX0VSUk9SICk7DQotDQotCS8qIE9idGFpbiBhbmQgcHJpbnQgb3V0IHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gKi8NCi0JZl9nZXRjd2QoIGNSQU1CdWZmZXIsIGZzUkFNX0JVRkZFUl9TSVpFICk7DQotCXByaW50ZiggIkJhY2sgaW4gcm9vdCBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQljb25maWdBU1NFUlQoIHN0cmNtcCggY1JBTUJ1ZmZlciwgcGNSb290ICkgPT0gMCApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZWZXJpZnlEZW1vRmlsZVVzaW5nX2ZfZ2V0Yyggdm9pZCApDQotew0KLXVuc2lnbmVkIGNoYXIgdWNSZXR1cm47DQotaW50IGlCeXRlLCBpUmV0dXJuZWQ7DQotRl9GSUxFICpweEZpbGU7DQotY2hhciBjRmlsZU5hbWVbIGZzTUFYX0ZJTEVfTkFNRV9MRU4gXTsNCi0NCi0JLyogTW92ZSBpbnRvIHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGZpbGUgd2FzIGNyZWF0ZWQuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggcGNGdWxsUGF0aCApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiQmFjayBpbiBkaXJlY3RvcnkgJXNcclxuIiwgY1JBTUJ1ZmZlciApOw0KLQljb25maWdBU1NFUlQoIHN0cmNtcCggY1JBTUJ1ZmZlciwgcGNGdWxsUGF0aCApID09IDAgKTsNCi0NCi0JLyogR2VuZXJhdGUgdGhlIGZpbGUgbmFtZS4gKi8NCi0Jc3ByaW50ZiggY0ZpbGVOYW1lLCAiJXMudHh0IiwgcGNEaXJlY3RvcnkyICk7DQotDQotCS8qIFByaW50IG91dCB0aGUgZmlsZSBuYW1lIGFuZCB0aGUgZGlyZWN0b3J5IGZyb20gd2hpY2ggdGhlIGZpbGUgaXMgYmVpbmcNCi0JcmVhZC4gKi8NCi0JcHJpbnRmKCAiUmVhZGluZyBmaWxlICVzIGluICVzXHJcbiIsIGNGaWxlTmFtZSwgY1JBTUJ1ZmZlciApOw0KLQ0KLQkvKiBUaGlzIHRpbWUgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciByZWFkaW5nLiAqLw0KLQlweEZpbGUgPSBmX29wZW4oIGNGaWxlTmFtZSwgInIiICk7DQotDQotCS8qIFJlYWQgdGhlIGZpbGUgMSBieXRlIGF0IGEgdGltZS4gKi8NCi0JZm9yKCBpQnl0ZSA9IDA7IGlCeXRlIDwgZnNQVVRDX0ZJTEVfU0laRTsgaUJ5dGUrKyApDQotCXsNCi0JCWlSZXR1cm5lZCA9IGZfZ2V0YyggcHhGaWxlICk7DQotCQljb25maWdBU1NFUlQoIGlSZXR1cm5lZCA9PSAgKCAoIGludCApICcwJyArIGlCeXRlICkgKTsNCi0JfQ0KLQ0KLQkvKiBGaW5pc2hlZCBzbyBjbG9zZSB0aGUgZmlsZS4gKi8NCi0JZl9jbG9zZSggcHhGaWxlICk7DQotDQotCS8qIE1vdmUgYmFjayB0byB0aGUgcm9vdCBkaXJlY3RvcnkuICovDQotCXVjUmV0dXJuID0gZl9jaGRpciggIi4uLy4uIiApOw0KLQljb25maWdBU1NFUlQoIHVjUmV0dXJuID09IEZfTk9fRVJST1IgKTsNCi0NCi0JLyogT2J0YWluIGFuZCBwcmludCBvdXQgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiAqLw0KLQlmX2dldGN3ZCggY1JBTUJ1ZmZlciwgZnNSQU1fQlVGRkVSX1NJWkUgKTsNCi0JcHJpbnRmKCAiQmFjayBpbiByb290IGRpcmVjdG9yeSAlc1xyXG4iLCBjUkFNQnVmZmVyICk7DQotfQ0KLQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL0ZyZWVSVE9TLVBsdXMtQ0xJLVNvdXJjZS9SZWFkTWUudHh0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEktU291cmNlL1JlYWRNZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmNjFiMDIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1DTEktU291cmNlL1JlYWRNZS50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLUNvbnRhaW5zIHNvdXJjZSBhbmQgaGVhZGVyIGZpbGVzIHRoYXQgaW1wbGVtZW50IEZyZWVSVE9TK0NMSS4gIFNlZQ0KLWh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NsaSBmb3IgZG9jdW1lbnRhdGlvbiBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbi4NCi0NCi0gClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vRnJlZVJUT1MtUGx1cy1GQVQtU0wtU291cmNlL1JlYWRNZS50eHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC1Tb3VyY2UvUmVhZE1lLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE5NzQ5Zi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9GcmVlUlRPUy1QbHVzLUZBVC1TTC1Tb3VyY2UvUmVhZE1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVJ1biB0aGUgQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQgYmF0Y2ggZmlsZSB0byBwb3B1bGF0ZSB0aGlzIGRpcmVjdG9yeSBiZWZvcmUgYnVpbGRpbmcgdGhlIGRlbW8uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vUmVhZE1lLnR4dCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1JlYWRNZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxOTc0OWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vUmVhZE1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVJ1biB0aGUgQ3JlYXRlUHJvamVjdERpcmVjdG9yeVN0cnVjdHVyZS5iYXQgYmF0Y2ggZmlsZSB0byBwb3B1bGF0ZSB0aGlzIGRpcmVjdG9yeSBiZWZvcmUgYnVpbGRpbmcgdGhlIGRlbW8uClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vU2FtcGxlLUNMSS1jb21tYW5kcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vU2FtcGxlLUNMSS1jb21tYW5kcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTAxOTZmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL1NhbXBsZS1DTEktY29tbWFuZHMuYworKysgL2Rldi9udWxsCkBAIC0xLDQyMSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0gLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqDQotICogU2VlIHRoZSBmb2xsb3dpbmcgVVJMIGZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY29tbWFuZHMgZGVmaW5lZCBpbiB0aGlzIGZpbGU6DQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cy9GcmVlUlRPU19QbHVzX1VEUC9FbWJlZGRlZF9FdGhlcm5ldF9FeGFtcGxlcy9FdGhlcm5ldF9SZWxhdGVkX0NMSV9Db21tYW5kcy5zaHRtbA0KLSAqDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0vKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyogRnJlZVJUT1MrQ0xJIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0NCi0jaWZuZGVmICBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTDQotCSNkZWZpbmUgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyAwDQotI2VuZGlmDQotDQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBydW4tdGltZS1zdGF0cyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRhc2tTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgdGFzay1zdGF0cyBjb21tYW5kLg0KLSAqLw0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlJ1blRpbWVTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLQ0KLS8qDQotICogSW1wbGVtZW50cyB0aGUgZWNoby10aHJlZS1wYXJhbWV0ZXJzIGNvbW1hbmQuDQotICovDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSBlY2hvLXBhcmFtZXRlcnMgY29tbWFuZC4NCi0gKi8NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCggY2hhciAqcGNXcml0ZUJ1ZmZlciwgc2l6ZV90IHhXcml0ZUJ1ZmZlckxlbiwgY29uc3QgY2hhciAqcGNDb21tYW5kU3RyaW5nICk7DQotDQotLyoNCi0gKiBJbXBsZW1lbnRzIHRoZSAidHJhY2Ugc3RhcnQiIGFuZCAidHJhY2Ugc3RvcCIgY29tbWFuZHM7DQotICovDQotI2lmIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgPT0gMQ0KLQlzdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZTdGFydFN0b3BUcmFjZUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApOw0KLSNlbmRpZg0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJydW4tdGltZS1zdGF0cyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICAgVGhpcw0KLWdlbmVyYXRlcyBhIHRhYmxlIHRoYXQgc2hvd3MgaG93IG11Y2ggcnVuIHRpbWUgZWFjaCB0YXNrIGhhcyAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFJ1blRpbWVTdGF0cyA9DQotew0KLQkicnVuLXRpbWUtc3RhdHMiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG5ydW4tdGltZS1zdGF0czpcclxuIERpc3BsYXlzIGEgdGFibGUgc2hvd2luZyBob3cgbXVjaCBwcm9jZXNzaW5nIHRpbWUgZWFjaCBGcmVlUlRPUyB0YXNrIGhhcyB1c2VkXHJcbiIsDQotCXBydlJ1blRpbWVTdGF0c0NvbW1hbmQsIC8qIFRoZSBmdW5jdGlvbiB0byBydW4uICovDQotCTAgLyogTm8gcGFyYW1ldGVycyBhcmUgZXhwZWN0ZWQuICovDQotfTsNCi0NCi0vKiBTdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIHRoZSAidGFzay1zdGF0cyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzIGdlbmVyYXRlcw0KLWEgdGFibGUgdGhhdCBnaXZlcyBpbmZvcm1hdGlvbiBvbiBlYWNoIHRhc2sgaW4gdGhlIHN5c3RlbS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhUYXNrU3RhdHMgPQ0KLXsNCi0JInRhc2stc3RhdHMiLCAvKiBUaGUgY29tbWFuZCBzdHJpbmcgdG8gdHlwZS4gKi8NCi0JIlxyXG50YXNrLXN0YXRzOlxyXG4gRGlzcGxheXMgYSB0YWJsZSBzaG93aW5nIHRoZSBzdGF0ZSBvZiBlYWNoIEZyZWVSVE9TIHRhc2tcclxuIiwNCi0JcHJ2VGFza1N0YXRzQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMCAvKiBObyBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZC4gKi8NCi19Ow0KLQ0KLS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJlY2hvXzNfcGFyYW1ldGVycyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzDQotdGFrZXMgZXhhY3RseSB0aHJlZSBwYXJhbWV0ZXJzIHRoYXQgdGhlIGNvbW1hbmQgc2ltcGx5IGVjaG9zIGJhY2sgb25lIGF0IGENCi10aW1lLiAqLw0KLXN0YXRpYyBjb25zdCBDTElfQ29tbWFuZF9EZWZpbml0aW9uX3QgeFRocmVlUGFyYW1ldGVyRWNobyA9DQotew0KLQkiZWNoby0zLXBhcmFtZXRlcnMiLA0KLQkiXHJcbmVjaG8tMy1wYXJhbWV0ZXJzIDxwYXJhbTE+IDxwYXJhbTI+IDxwYXJhbTM+OlxyXG4gRXhwZWN0cyB0aHJlZSBwYXJhbWV0ZXJzLCBlY2hvcyBlYWNoIGluIHR1cm5cclxuIiwNCi0JcHJ2VGhyZWVQYXJhbWV0ZXJFY2hvQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JMyAvKiBUaHJlZSBwYXJhbWV0ZXJzIGFyZSBleHBlY3RlZCwgd2hpY2ggY2FuIHRha2UgYW55IHZhbHVlLiAqLw0KLX07DQotDQotLyogU3RydWN0dXJlIHRoYXQgZGVmaW5lcyB0aGUgImVjaG9fcGFyYW1ldGVycyIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzDQotdGFrZXMgYSB2YXJpYWJsZSBudW1iZXIgb2YgcGFyYW1ldGVycyB0aGF0IHRoZSBjb21tYW5kIHNpbXBseSBlY2hvcyBiYWNrIG9uZSBhdA0KLWEgdGltZS4gKi8NCi1zdGF0aWMgY29uc3QgQ0xJX0NvbW1hbmRfRGVmaW5pdGlvbl90IHhQYXJhbWV0ZXJFY2hvID0NCi17DQotCSJlY2hvLXBhcmFtZXRlcnMiLA0KLQkiXHJcbmVjaG8tcGFyYW1ldGVycyA8Li4uPjpcclxuIFRha2UgdmFyaWFibGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMsIGVjaG9zIGVhY2ggaW4gdHVyblxyXG4iLA0KLQlwcnZQYXJhbWV0ZXJFY2hvQ29tbWFuZCwgLyogVGhlIGZ1bmN0aW9uIHRvIHJ1bi4gKi8NCi0JLTEgLyogVGhlIHVzZXIgY2FuIGVudGVyIGFueSBudW1iZXIgb2YgY29tbWFuZHMuICovDQotfTsNCi0NCi0jaWYgY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxDQotCS8qIFN0cnVjdHVyZSB0aGF0IGRlZmluZXMgdGhlICJ0cmFjZSIgY29tbWFuZCBsaW5lIGNvbW1hbmQuICBUaGlzIHRha2VzIGEgc2luZ2xlDQotCXBhcmFtZXRlciwgd2hpY2ggY2FuIGJlIGVpdGhlciAic3RhcnQiIG9yICJzdG9wIi4gKi8NCi0Jc3RhdGljIGNvbnN0IENMSV9Db21tYW5kX0RlZmluaXRpb25fdCB4U3RhcnRTdG9wVHJhY2UgPQ0KLQl7DQotCQkidHJhY2UiLA0KLQkJIlxyXG50cmFjZSBbc3RhcnQgfCBzdG9wXTpcclxuIFN0YXJ0cyBvciBzdG9wcyBhIHRyYWNlIHJlY29yZGluZyBmb3Igdmlld2luZyBpbiBGcmVlUlRPUytUcmFjZVxyXG4iLA0KLQkJcHJ2U3RhcnRTdG9wVHJhY2VDb21tYW5kLCAvKiBUaGUgZnVuY3Rpb24gdG8gcnVuLiAqLw0KLQkJMSAvKiBPbmUgcGFyYW1ldGVyIGlzIGV4cGVjdGVkLiAgVmFsaWQgdmFsdWVzIGFyZSAic3RhcnQiIGFuZCAic3RvcCIuICovDQotCX07DQotI2VuZGlmIC8qIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgKi8NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCB2b2lkICkNCi17DQotCS8qIFJlZ2lzdGVyIGFsbCB0aGUgY29tbWFuZCBsaW5lIGNvbW1hbmRzIGRlZmluZWQgaW1tZWRpYXRlbHkgYWJvdmUuICovDQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhUYXNrU3RhdHMgKTsNCi0JRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmeFJ1blRpbWVTdGF0cyApOw0KLQlGcmVlUlRPU19DTElSZWdpc3RlckNvbW1hbmQoICZ4VGhyZWVQYXJhbWV0ZXJFY2hvICk7DQotCUZyZWVSVE9TX0NMSVJlZ2lzdGVyQ29tbWFuZCggJnhQYXJhbWV0ZXJFY2hvICk7DQotDQotCSNpZiggY29uZmlnSU5DTFVERV9UUkFDRV9SRUxBVEVEX0NMSV9DT01NQU5EUyA9PSAxICkNCi0Jew0KLQkJRnJlZVJUT1NfQ0xJUmVnaXN0ZXJDb21tYW5kKCAmIHhTdGFydFN0b3BUcmFjZSApOw0KLQl9DQotCSNlbmRpZg0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZUYXNrU3RhdHNDb21tYW5kKCBjaGFyICpwY1dyaXRlQnVmZmVyLCBzaXplX3QgeFdyaXRlQnVmZmVyTGVuLCBjb25zdCBjaGFyICpwY0NvbW1hbmRTdHJpbmcgKQ0KLXsNCi1jb25zdCBjaGFyICpjb25zdCBwY0hlYWRlciA9ICJUYXNrICAgICAgICAgIFN0YXRlICBQcmlvcml0eSAgU3RhY2sJI1xyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuIjsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQkvKiBHZW5lcmF0ZSBhIHRhYmxlIG9mIHRhc2sgc3RhdHMuICovDQotCXN0cmNweSggcGNXcml0ZUJ1ZmZlciwgcGNIZWFkZXIgKTsNCi0JdlRhc2tMaXN0KCBwY1dyaXRlQnVmZmVyICsgc3RybGVuKCBwY0hlYWRlciApICk7DQotDQotCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JcGRGQUxTRS4gKi8NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlJ1blRpbWVTdGF0c0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKiBjb25zdCBwY0hlYWRlciA9ICJUYXNrICAgICAgICAgICAgQWJzIFRpbWUgICAgICAlIFRpbWVcclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4iOw0KLQ0KLQkvKiBSZW1vdmUgY29tcGlsZSB0aW1lIHdhcm5pbmdzIGFib3V0IHVudXNlZCBwYXJhbWV0ZXJzLCBhbmQgY2hlY2sgdGhlDQotCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCXdyaXRlIGJ1ZmZlciBsZW5ndGggaXMgYWRlcXVhdGUsIHNvIGRvZXMgbm90IGNoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3dzLiAqLw0KLQkoIHZvaWQgKSBwY0NvbW1hbmRTdHJpbmc7DQotCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JY29uZmlnQVNTRVJUKCBwY1dyaXRlQnVmZmVyICk7DQotDQotCS8qIEdlbmVyYXRlIGEgdGFibGUgb2YgdGFzayBzdGF0cy4gKi8NCi0Jc3RyY3B5KCBwY1dyaXRlQnVmZmVyLCBwY0hlYWRlciApOw0KLQl2VGFza0dldFJ1blRpbWVTdGF0cyggKCBjaGFyICogKSBwY1dyaXRlQnVmZmVyICsgc3RybGVuKCBwY0hlYWRlciApICk7DQotDQotCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JcGRGQUxTRS4gKi8NCi0JcmV0dXJuIHBkRkFMU0U7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyBwb3J0QkFTRV9UWVBFIHBydlRocmVlUGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCwgeFJldHVybjsNCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyTnVtYmVyID0gMDsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAwICkNCi0Jew0KLQkJLyogVGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbg0KLQkJZW50ZXJlZCBqdXN0IGEgaGVhZGVyIHN0cmluZyBpcyByZXR1cm5lZC4gKi8NCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUaGUgdGhyZWUgcGFyYW1ldGVycyB3ZXJlOlxyXG4iICk7DQotDQotCQkvKiBOZXh0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpbGwgYmUgZWNob2VkDQotCQliYWNrLiAqLw0KLQkJbFBhcmFtZXRlck51bWJlciA9IDFMOw0KLQ0KLQkJLyogVGhlcmUgaXMgbW9yZSBkYXRhIHRvIGJlIHJldHVybmVkIGFzIG5vIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGVjaG9lZA0KLQkJYmFjayB5ZXQuICovDQotCQl4UmV0dXJuID0gcGRQQVNTOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCWxQYXJhbWV0ZXJOdW1iZXIsCQkvKiBSZXR1cm4gdGhlIG5leHQgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JCS8qIFNhbml0eSBjaGVjayBzb21ldGhpbmcgd2FzIHJldHVybmVkLiAqLw0KLQkJY29uZmlnQVNTRVJUKCBwY1BhcmFtZXRlciApOw0KLQ0KLQkJLyogUmV0dXJuIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJbWVtc2V0KCBwY1dyaXRlQnVmZmVyLCAweDAwLCB4V3JpdGVCdWZmZXJMZW4gKTsNCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICIlZDogIiwgKCBpbnQgKSBsUGFyYW1ldGVyTnVtYmVyICk7DQotCQlzdHJuY2F0KCBwY1dyaXRlQnVmZmVyLCBwY1BhcmFtZXRlciwgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCApOw0KLQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgIlxyXG4iLCBzdHJsZW4oICJcclxuIiApICk7DQotDQotCQkvKiBJZiB0aGlzIGlzIHRoZSBsYXN0IG9mIHRoZSB0aHJlZSBwYXJhbWV0ZXJzIHRoZW4gdGhlcmUgYXJlIG5vIG1vcmUNCi0JCXN0cmluZ3MgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJaWYoIGxQYXJhbWV0ZXJOdW1iZXIgPT0gM0wgKQ0KLQkJew0KLQkJCS8qIElmIHRoaXMgaXMgdGhlIGxhc3Qgb2YgdGhlIHRocmVlIHBhcmFtZXRlcnMgdGhlbiB0aGVyZSBhcmUgbm8gbW9yZQ0KLQkJCXN0cmluZ3MgdG8gcmV0dXJuIGFmdGVyIHRoaXMgb25lLiAqLw0KLQkJCXhSZXR1cm4gPSBwZEZBTFNFOw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIgPSAwTDsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQkvKiBUaGVyZSBhcmUgbW9yZSBwYXJhbWV0ZXJzIHRvIHJldHVybiBhZnRlciB0aGlzIG9uZS4gKi8NCi0JCQl4UmV0dXJuID0gcGRUUlVFOw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIrKzsNCi0JCX0NCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHBvcnRCQVNFX1RZUEUgcHJ2UGFyYW1ldGVyRWNob0NvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotew0KLWNvbnN0IGNoYXIgKnBjUGFyYW1ldGVyOw0KLXBvcnRCQVNFX1RZUEUgeFBhcmFtZXRlclN0cmluZ0xlbmd0aCwgeFJldHVybjsNCi1zdGF0aWMgcG9ydEJBU0VfVFlQRSBsUGFyYW1ldGVyTnVtYmVyID0gMDsNCi0NCi0JLyogUmVtb3ZlIGNvbXBpbGUgdGltZSB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycywgYW5kIGNoZWNrIHRoZQ0KLQl3cml0ZSBidWZmZXIgaXMgbm90IE5VTEwuICBOT1RFIC0gZm9yIHNpbXBsaWNpdHksIHRoaXMgZXhhbXBsZSBhc3N1bWVzIHRoZQ0KLQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JKCB2b2lkICkgcGNDb21tYW5kU3RyaW5nOw0KLQkoIHZvaWQgKSB4V3JpdGVCdWZmZXJMZW47DQotCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQlpZiggbFBhcmFtZXRlck51bWJlciA9PSAwICkNCi0Jew0KLQkJLyogVGhlIGZpcnN0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRlciB0aGUgY29tbWFuZCBoYXMgYmVlbg0KLQkJZW50ZXJlZCBqdXN0IGEgaGVhZGVyIHN0cmluZyBpcyByZXR1cm5lZC4gKi8NCi0JCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUaGUgcGFyYW1ldGVycyB3ZXJlOlxyXG4iICk7DQotDQotCQkvKiBOZXh0IHRpbWUgdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCB0aGUgZmlyc3QgcGFyYW1ldGVyIHdpbGwgYmUgZWNob2VkDQotCQliYWNrLiAqLw0KLQkJbFBhcmFtZXRlck51bWJlciA9IDFMOw0KLQ0KLQkJLyogVGhlcmUgaXMgbW9yZSBkYXRhIHRvIGJlIHJldHVybmVkIGFzIG5vIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIGVjaG9lZA0KLQkJYmFjayB5ZXQuICovDQotCQl4UmV0dXJuID0gcGRQQVNTOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCWxQYXJhbWV0ZXJOdW1iZXIsCQkvKiBSZXR1cm4gdGhlIG5leHQgcGFyYW1ldGVyLiAqLw0KLQkJCQkJCQkmeFBhcmFtZXRlclN0cmluZ0xlbmd0aAkvKiBTdG9yZSB0aGUgcGFyYW1ldGVyIHN0cmluZyBsZW5ndGguICovDQotCQkJCQkJKTsNCi0NCi0JCWlmKCBwY1BhcmFtZXRlciAhPSBOVUxMICkNCi0JCXsNCi0JCQkvKiBSZXR1cm4gdGhlIHBhcmFtZXRlciBzdHJpbmcuICovDQotCQkJbWVtc2V0KCBwY1dyaXRlQnVmZmVyLCAweDAwLCB4V3JpdGVCdWZmZXJMZW4gKTsNCi0JCQlzcHJpbnRmKCBwY1dyaXRlQnVmZmVyLCAiJWQ6ICIsICggaW50ICkgbFBhcmFtZXRlck51bWJlciApOw0KLQkJCXN0cm5jYXQoIHBjV3JpdGVCdWZmZXIsIHBjUGFyYW1ldGVyLCB4UGFyYW1ldGVyU3RyaW5nTGVuZ3RoICk7DQotCQkJc3RybmNhdCggcGNXcml0ZUJ1ZmZlciwgIlxyXG4iLCBzdHJsZW4oICJcclxuIiApICk7DQotDQotCQkJLyogVGhlcmUgbWlnaHQgYmUgbW9yZSBwYXJhbWV0ZXJzIHRvIHJldHVybiBhZnRlciB0aGlzIG9uZS4gKi8NCi0JCQl4UmV0dXJuID0gcGRUUlVFOw0KLQkJCWxQYXJhbWV0ZXJOdW1iZXIrKzsNCi0JCX0NCi0JCWVsc2UNCi0JCXsNCi0JCQkvKiBObyBtb3JlIHBhcmFtZXRlcnMgd2VyZSBmb3VuZC4gIE1ha2Ugc3VyZSB0aGUgd3JpdGUgYnVmZmVyIGRvZXMNCi0JCQlub3QgY29udGFpbiBhIHZhbGlkIHN0cmluZy4gKi8NCi0JCQlwY1dyaXRlQnVmZmVyWyAwIF0gPSAweDAwOw0KLQ0KLQkJCS8qIE5vIG1vcmUgZGF0YSB0byByZXR1cm4uICovDQotCQkJeFJldHVybiA9IHBkRkFMU0U7DQotDQotCQkJLyogU3RhcnQgb3ZlciB0aGUgbmV4dCB0aW1lIHRoaXMgY29tbWFuZCBpcyBleGVjdXRlZC4gKi8NCi0JCQlsUGFyYW1ldGVyTnVtYmVyID0gMDsNCi0JCX0NCi0JfQ0KLQ0KLQlyZXR1cm4geFJldHVybjsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotI2lmIGNvbmZpZ0lOQ0xVREVfVFJBQ0VfUkVMQVRFRF9DTElfQ09NTUFORFMgPT0gMQ0KLQ0KLQlzdGF0aWMgcG9ydEJBU0VfVFlQRSBwcnZTdGFydFN0b3BUcmFjZUNvbW1hbmQoIGNoYXIgKnBjV3JpdGVCdWZmZXIsIHNpemVfdCB4V3JpdGVCdWZmZXJMZW4sIGNvbnN0IGNoYXIgKnBjQ29tbWFuZFN0cmluZyApDQotCXsNCi0JY29uc3QgY2hhciAqcGNQYXJhbWV0ZXI7DQotCXBvcnRCQVNFX1RZUEUgbFBhcmFtZXRlclN0cmluZ0xlbmd0aDsNCi0NCi0JCS8qIFJlbW92ZSBjb21waWxlIHRpbWUgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMsIGFuZCBjaGVjayB0aGUNCi0JCXdyaXRlIGJ1ZmZlciBpcyBub3QgTlVMTC4gIE5PVEUgLSBmb3Igc2ltcGxpY2l0eSwgdGhpcyBleGFtcGxlIGFzc3VtZXMgdGhlDQotCQl3cml0ZSBidWZmZXIgbGVuZ3RoIGlzIGFkZXF1YXRlLCBzbyBkb2VzIG5vdCBjaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93cy4gKi8NCi0JCSggdm9pZCApIHBjQ29tbWFuZFN0cmluZzsNCi0JCSggdm9pZCApIHhXcml0ZUJ1ZmZlckxlbjsNCi0JCWNvbmZpZ0FTU0VSVCggcGNXcml0ZUJ1ZmZlciApOw0KLQ0KLQkJLyogT2J0YWluIHRoZSBwYXJhbWV0ZXIgc3RyaW5nLiAqLw0KLQkJcGNQYXJhbWV0ZXIgPSBGcmVlUlRPU19DTElHZXRQYXJhbWV0ZXINCi0JCQkJCQkoDQotCQkJCQkJCXBjQ29tbWFuZFN0cmluZywJCS8qIFRoZSBjb21tYW5kIHN0cmluZyBpdHNlbGYuICovDQotCQkJCQkJCTEsCQkJCQkJLyogUmV0dXJuIHRoZSBmaXJzdCBwYXJhbWV0ZXIuICovDQotCQkJCQkJCSZsUGFyYW1ldGVyU3RyaW5nTGVuZ3RoCS8qIFN0b3JlIHRoZSBwYXJhbWV0ZXIgc3RyaW5nIGxlbmd0aC4gKi8NCi0JCQkJCQkpOw0KLQ0KLQkJLyogU2FuaXR5IGNoZWNrIHNvbWV0aGluZyB3YXMgcmV0dXJuZWQuICovDQotCQljb25maWdBU1NFUlQoIHBjUGFyYW1ldGVyICk7DQotDQotCQkvKiBUaGVyZSBhcmUgb25seSB0d28gdmFsaWQgcGFyYW1ldGVyIHZhbHVlcy4gKi8NCi0JCWlmKCBzdHJuY21wKCBwY1BhcmFtZXRlciwgInN0YXJ0Iiwgc3RybGVuKCAic3RhcnQiICkgKSA9PSAwICkNCi0JCXsNCi0JCQkvKiBTdGFydCBvciByZXN0YXJ0IHRoZSB0cmFjZS4gKi8NCi0JCQl2VHJhY2VTdG9wKCk7DQotCQkJdlRyYWNlQ2xlYXIoKTsNCi0JCQl2VHJhY2VTdGFydCgpOw0KLQ0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJUcmFjZSByZWNvcmRpbmcgKHJlKXN0YXJ0ZWQuXHJcbiIgKTsNCi0JCX0NCi0JCWVsc2UgaWYoIHN0cm5jbXAoIHBjUGFyYW1ldGVyLCAic3RvcCIsIHN0cmxlbiggInN0b3AiICkgKSA9PSAwICkNCi0JCXsNCi0JCQkvKiBFbmQgdGhlIHRyYWNlLCBpZiBvbmUgaXMgcnVubmluZy4gKi8NCi0JCQl2VHJhY2VTdG9wKCk7DQotCQkJc3ByaW50ZiggcGNXcml0ZUJ1ZmZlciwgIlN0b3BwaW5nIHRyYWNlIHJlY29yZGluZy5cclxuIiApOw0KLQkJfQ0KLQkJZWxzZQ0KLQkJew0KLQkJCXNwcmludGYoIHBjV3JpdGVCdWZmZXIsICJWYWxpZCBwYXJhbWV0ZXJzIGFyZSAnc3RhcnQnIGFuZCAnc3RvcCcuXHJcbiIgKTsNCi0JCX0NCi0NCi0JCS8qIFRoZXJlIGlzIG5vIG1vcmUgZGF0YSB0byByZXR1cm4gYWZ0ZXIgdGhpcyBzaW5nbGUgc3RyaW5nLCBzbyByZXR1cm4NCi0JCXBkRkFMU0UuICovDQotCQlyZXR1cm4gcGRGQUxTRTsNCi0JfQ0KLQ0KLSNlbmRpZiAvKiBjb25maWdJTkNMVURFX1RSQUNFX1JFTEFURURfQ0xJX0NPTU1BTkRTICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5NGExNi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuYworKysgL2Rldi9udWxsCkBAIC0xLDMxNSArMCwwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAic3RyaW5nLmgiDQotI2luY2x1ZGUgInN0ZGlvLmgiDQotDQotLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0jaW5jbHVkZSAicXVldWUuaCINCi0NCi0vKiBEcml2ZXIgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgImRyaXZlcnMvbXNzX3VhcnQvbXNzX3VhcnQuaCINCi0NCi0vKiBFeGFtcGxlIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPU19DTEkuaCINCi0jaW5jbHVkZSAiVUFSVENvbW1hbmRDb25zb2xlLmgiDQotDQotLyogRGltZW5zaW9ucyB0aGUgYnVmZmVyIGludG8gd2hpY2ggaW5wdXQgY2hhcmFjdGVycyBhcmUgcGxhY2VkLiAqLw0KLSNkZWZpbmUgY21kTUFYX0lOUFVUX1NJWkUJCTUwDQotDQotLyogVGhlIG1heGltdW0gdGltZSBpbiB0aWNrcyB0byB3YWl0IGZvciB0aGUgVUFSVCBhY2Nlc3MgbXV0ZXguICovDQotI2RlZmluZSBjbWRNQVhfTVVURVhfV0FJVAkJKCAyMDAgLyBwb3J0VElDS19QRVJJT0RfTVMgKQ0KLQ0KLS8qIENoYXJhY3RlcnMgYXJlIG9ubHkgZXZlciByZWNlaXZlZCBzbG93bHkgb24gdGhlIENMSSBzbyBpdCBpcyBvayB0byBwYXNzDQotcmVjZWl2ZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBVQVJUIGludGVycnVwdCB0byB0aGUgdGFzayBvbiBhIHF1ZXVlLiAgVGhpcyBzZXRzDQotdGhlIGxlbmd0aCBvZiB0aGUgcXVldWUgdXNlZCBmb3IgdGhhdCBwdXJwb3NlLiAqLw0KLSNkZWZpbmUgY21kUlhFRF9DSEFSU19RVUVVRV9MRU5HVEgJCQkoIDEwICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKg0KLSAqIFRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlIHByb2Nlc3NpbmcuDQotICovDQotc3RhdGljIHZvaWQgcHJ2VUFSVENvbW1hbmRDb25zb2xlVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQotDQotLyoNCi0gKiBFbnN1cmUgYSBwcmV2aW91cyBpbnRlcnJ1cHQgZHJpdmVuIFR4IGhhcyBjb21wbGV0ZWQgYmVmb3JlIHNlbmRpbmcgdGhlIG5leHQNCi0gKiBkYXRhIGJsb2NrIHRvIHRoZSBVQVJULg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlNlbmRCdWZmZXIoIGNvbnN0IGNoYXIgKiBwY0J1ZmZlciwgc2l6ZV90IHhCdWZmZXJMZW5ndGggKTsNCi0NCi0vKg0KLSAqIEEgVUFSVCBpcyB1c2VkIGZvciBwcmludGYoKSBvdXRwdXQgYW5kIENMSSBpbnB1dCBhbmQgb3V0cHV0LiAgQ29uZmlndXJlIHRoZQ0KLSAqIFVBUlQgYW5kIHJlZ2lzdGVyIHBydlVBUlRSeE5vdGlmaWNhdGlvbkhhbmRsZXIoKSB0byBoYW5kbGUgVUFSVCBSeCBldmVudHMuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q29uZmlndXJlVUFSVCggdm9pZCApOw0KLXN0YXRpYyB2b2lkIHBydlVBUlRSeE5vdGlmaWNhdGlvbkhhbmRsZXIoIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi0vKiBDb25zdCBtZXNzYWdlcyBvdXRwdXQgYnkgdGhlIGNvbW1hbmQgY29uc29sZS4gKi8NCi1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBjV2VsY29tZU1lc3NhZ2UgPSAiXHJcblxyXG5GcmVlUlRPUyBjb21tYW5kIHNlcnZlci5cclxuVHlwZSBIZWxwIHRvIHZpZXcgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgY29tbWFuZHMuXHJcblxyXG4+IjsNCi1zdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHBjRW5kT2ZPdXRwdXRNZXNzYWdlID0gIlxyXG5bUHJlc3MgRU5URVIgdG8gZXhlY3V0ZSB0aGUgcHJldmlvdXMgY29tbWFuZCBhZ2Fpbl1cclxuPiI7DQotc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBwY05ld0xpbmUgPSAiXHJcbiI7DQotDQotLyogVGhlIFVBUlQgdXNlZCBieSB0aGUgQ0xJLiAqLw0KLSNpZiBjb25maWdCVUlMRF9GT1JfREVWRUxPUE1FTlRfS0lUID09IDENCi0Jc3RhdGljIGNvbnN0IG1zc191YXJ0X2luc3RhbmNlX3QgKiBjb25zdCBweFVBUlQgPSAmZ19tc3NfdWFydDE7DQotCXN0YXRpYyBjb25zdCBJUlFuX1R5cGUgeFVBUlRfSVJRID0gVUFSVDFfSVJRbjsNCi0jZWxzZQ0KLQlzdGF0aWMgY29uc3QgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIGNvbnN0IHB4VUFSVCA9ICZnX21zc191YXJ0MDsNCi0Jc3RhdGljIGNvbnN0IElSUW5fVHlwZSB4VUFSVF9JUlEgPSBVQVJUMF9JUlFuOw0KLSNlbmRpZg0KLQ0KLS8qIEJlY2F1c2UgY2hhcmFjdGVycyBhcmUgcmVjZWl2ZWQgc2xvd2x5IChhdCB0aGUgc3BlZWQgc29tZWJvZHkgY2FuIHR5cGUpIHRoZW4NCi1pdCBpcyBvayB0byBwYXNzIHJlY2VpdmVkIGNoYXJhY3RlcnMgZnJvbSB0aGUgUnggaW50ZXJydXB0IHRvIHRoZSB0YXNrIG9uIGENCi1xdWV1ZS4gIFRoaXMgaXMgdGhlIHF1ZXVlIHVzZWQgZm9yIHRoYXQgcHVycG9zZS4gKi8NCi1zdGF0aWMgUXVldWVIYW5kbGVfdCB4UnhlZENoYXJzID0gTlVMTDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZVQVJUQ29tbWFuZENvbnNvbGVTdGFydCggdWludDE2X3QgdXNTdGFja1NpemUsIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgdXhQcmlvcml0eSApDQotew0KLQkvKiBBIFVBUlQgaXMgdXNlZCBmb3IgcHJpbnRmKCkgb3V0cHV0IGFuZCBDTEkgaW5wdXQgYW5kIG91dHB1dC4gIE5vdGUgdGhlcmUNCi0JaXMgbm8gbXV0dWFsIGV4Y2x1c2lvbiBvbiB0aGUgVUFSVCwgYnV0IHRoZSBkZW1vIGFzIGl0IHN0YW5kcyBkb2VzIG5vdA0KLQlyZXF1aXJlIG11dHVhbCBleGNsdXNpb24uICovDQotCXBydkNvbmZpZ3VyZVVBUlQoKTsNCi0NCi0JLyogQ3JlYXRlIHRoYXQgdGFzayB0aGF0IGhhbmRsZXMgdGhlIGNvbnNvbGUgaXRzZWxmLiAqLw0KLQl4VGFza0NyZWF0ZSggCXBydlVBUlRDb21tYW5kQ29uc29sZVRhc2ssCS8qIFRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZCBjb25zb2xlLiAqLw0KLQkJCQkJIkNMSSIsCQkJCQkJLyogVGV4dCBuYW1lIGFzc2lnbmVkIHRvIHRoZSB0YXNrLiAgVGhpcyBpcyBqdXN0IHRvIGFzc2lzdCBkZWJ1Z2dpbmcuICBUaGUga2VybmVsIGRvZXMgbm90IHVzZSB0aGlzIG5hbWUgaXRzZWxmLiAqLw0KLQkJCQkJdXNTdGFja1NpemUsCQkJCS8qIFRoZSBzaXplIG9mIHRoZSBzdGFjayBhbGxvY2F0ZWQgdG8gdGhlIHRhc2suICovDQotCQkJCQlOVUxMLAkJCQkJCS8qIFRoZSBwYXJhbWV0ZXIgaXMgbm90IHVzZWQsIHNvIE5VTEwgaXMgcGFzc2VkLiAqLw0KLQkJCQkJdXhQcmlvcml0eSwJCQkJCS8qIFRoZSBwcmlvcml0eSBhbGxvY2F0ZWQgdG8gdGhlIHRhc2suICovDQotCQkJCQlOVUxMICk7CQkJCQkJLyogQSBoYW5kbGUgaXMgbm90IHJlcXVpcmVkLCBzbyBqdXN0IHBhc3MgTlVMTC4gKi8NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2VUFSVENvbW1hbmRDb25zb2xlVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCi17DQotY2hhciBjUnhlZENoYXIsICpwY091dHB1dFN0cmluZzsNCi11bnNpZ25lZCBjaGFyIGNJbnB1dEluZGV4ID0gMDsNCi1zdGF0aWMgY2hhciBjSW5wdXRTdHJpbmdbIGNtZE1BWF9JTlBVVF9TSVpFIF0sIGNMYXN0SW5wdXRTdHJpbmdbIGNtZE1BWF9JTlBVVF9TSVpFIF07DQotcG9ydEJBU0VfVFlQRSB4UmV0dXJuZWQ7DQotDQotCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCi0NCi0JLyogT2J0YWluIHRoZSBhZGRyZXNzIG9mIHRoZSBvdXRwdXQgYnVmZmVyLiAgTm90ZSB0aGVyZSBpcyBubyBtdXR1YWwNCi0JZXhjbHVzaW9uIG9uIHRoaXMgYnVmZmVyIGFzIGl0IGlzIGFzc3VtZWQgb25seSBvbmUgY29tbWFuZCBjb25zb2xlDQotCWludGVyZmFjZSB3aWxsIGJlIHVzZWQgYXQgYW55IG9uZSB0aW1lLiAqLw0KLQlwY091dHB1dFN0cmluZyA9IEZyZWVSVE9TX0NMSUdldE91dHB1dEJ1ZmZlcigpOw0KLQ0KLQkvKiBTZW5kIHRoZSB3ZWxjb21lIG1lc3NhZ2UuICovDQotCXBydlNlbmRCdWZmZXIoIHBjV2VsY29tZU1lc3NhZ2UsIHN0cmxlbiggcGNXZWxjb21lTWVzc2FnZSApICk7DQotDQotCWZvciggOzsgKQ0KLQl7DQotCQkvKiBXYWl0IGZvciB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYXJyaXZlLiAqLw0KLQkJaWYoIHhRdWV1ZVJlY2VpdmUoIHhSeGVkQ2hhcnMsICZjUnhlZENoYXIsIHBvcnRNQVhfREVMQVkgKSA9PSBwZFBBU1MgKQ0KLQkJew0KLQkJCS8qIEVjaG8gdGhlIGNoYXJhY3RlciBiYWNrLiAqLw0KLQkJCXBydlNlbmRCdWZmZXIoICZjUnhlZENoYXIsIHNpemVvZiggY1J4ZWRDaGFyICkgKTsNCi0NCi0JCQkvKiBXYXMgaXQgdGhlIGVuZCBvZiB0aGUgbGluZT8gKi8NCi0JCQlpZiggY1J4ZWRDaGFyID09ICdcbicgfHwgY1J4ZWRDaGFyID09ICdccicgKQ0KLQkJCXsNCi0JCQkJLyogSnVzdCB0byBzcGFjZSB0aGUgb3V0cHV0IGZyb20gdGhlIGlucHV0LiAqLw0KLQkJCQlwcnZTZW5kQnVmZmVyKCBwY05ld0xpbmUsIHN0cmxlbiggcGNOZXdMaW5lICkgKTsNCi0NCi0JCQkJLyogU2VlIGlmIHRoZSBjb21tYW5kIGlzIGVtcHR5LCBpbmRpY2F0aW5nIHRoYXQgdGhlIGxhc3QgY29tbWFuZCBpcw0KLQkJCQl0byBiZSBleGVjdXRlZCBhZ2Fpbi4gKi8NCi0JCQkJaWYoIGNJbnB1dEluZGV4ID09IDAgKQ0KLQkJCQl7DQotCQkJCQkvKiBDb3B5IHRoZSBsYXN0IGNvbW1hbmQgYmFjayBpbnRvIHRoZSBpbnB1dCBzdHJpbmcuICovDQotCQkJCQlzdHJjcHkoIGNJbnB1dFN0cmluZywgY0xhc3RJbnB1dFN0cmluZyApOw0KLQkJCQl9DQotDQotCQkJCS8qIFBhc3MgdGhlIHJlY2VpdmVkIGNvbW1hbmQgdG8gdGhlIGNvbW1hbmQgaW50ZXJwcmV0ZXIuICBUaGUNCi0JCQkJY29tbWFuZCBpbnRlcnByZXRlciBpcyBjYWxsZWQgcmVwZWF0ZWRseSB1bnRpbCBpdCByZXR1cm5zIHBkRkFMU0UNCi0JCQkJKGluZGljYXRpbmcgdGhlcmUgaXMgbm8gbW9yZSBvdXRwdXQpIGFzIGl0IG1pZ2h0IGdlbmVyYXRlIG1vcmUgdGhhbg0KLQkJCQlvbmUgc3RyaW5nLiAqLw0KLQkJCQlkbw0KLQkJCQl7DQotCQkJCQkvKiBHZXQgdGhlIG5leHQgb3V0cHV0IHN0cmluZyBmcm9tIHRoZSBjb21tYW5kIGludGVycHJldGVyLiAqLw0KLQkJCQkJeFJldHVybmVkID0gRnJlZVJUT1NfQ0xJUHJvY2Vzc0NvbW1hbmQoIGNJbnB1dFN0cmluZywgcGNPdXRwdXRTdHJpbmcsIGNvbmZpZ0NPTU1BTkRfSU5UX01BWF9PVVRQVVRfU0laRSApOw0KLQ0KLQkJCQkJLyogV3JpdGUgdGhlIGdlbmVyYXRlZCBzdHJpbmcgdG8gdGhlIFVBUlQuICovDQotCQkJCQlwcnZTZW5kQnVmZmVyKCBwY091dHB1dFN0cmluZywgc3RybGVuKCBwY091dHB1dFN0cmluZyApICk7DQotDQotCQkJCX0gd2hpbGUoIHhSZXR1cm5lZCAhPSBwZEZBTFNFICk7DQotDQotCQkJCS8qIEFsbCB0aGUgc3RyaW5ncyBnZW5lcmF0ZWQgYnkgdGhlIGlucHV0IGNvbW1hbmQgaGF2ZSBiZWVuIHNlbnQuDQotCQkJCUNsZWFyIHRoZSBpbnB1dAlzdHJpbmcgcmVhZHkgdG8gcmVjZWl2ZSB0aGUgbmV4dCBjb21tYW5kLiAgUmVtZW1iZXINCi0JCQkJdGhlIGNvbW1hbmQgdGhhdCB3YXMganVzdCBwcm9jZXNzZWQgZmlyc3QgaW4gY2FzZSBpdCBpcyB0byBiZQ0KLQkJCQlwcm9jZXNzZWQgYWdhaW4uICovDQotCQkJCXN0cmNweSggY0xhc3RJbnB1dFN0cmluZywgY0lucHV0U3RyaW5nICk7DQotCQkJCWNJbnB1dEluZGV4ID0gMDsNCi0JCQkJbWVtc2V0KCBjSW5wdXRTdHJpbmcsIDB4MDAsIGNtZE1BWF9JTlBVVF9TSVpFICk7DQotDQotCQkJCXBydlNlbmRCdWZmZXIoIHBjRW5kT2ZPdXRwdXRNZXNzYWdlLCBzdHJsZW4oIHBjRW5kT2ZPdXRwdXRNZXNzYWdlICkgKTsNCi0JCQl9DQotCQkJZWxzZQ0KLQkJCXsNCi0JCQkJaWYoIGNSeGVkQ2hhciA9PSAnXHInICkNCi0JCQkJew0KLQkJCQkJLyogSWdub3JlIHRoZSBjaGFyYWN0ZXIuICovDQotCQkJCX0NCi0JCQkJZWxzZSBpZiggY1J4ZWRDaGFyID09ICdcYicgKQ0KLQkJCQl7DQotCQkJCQkvKiBCYWNrc3BhY2Ugd2FzIHByZXNzZWQuICBFcmFzZSB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlDQotCQkJCQlzdHJpbmcgLSBpZiBhbnkuICovDQotCQkJCQlpZiggY0lucHV0SW5kZXggPiAwICkNCi0JCQkJCXsNCi0JCQkJCQljSW5wdXRJbmRleC0tOw0KLQkJCQkJCWNJbnB1dFN0cmluZ1sgY0lucHV0SW5kZXggXSA9ICdcMCc7DQotCQkJCQl9DQotCQkJCX0NCi0JCQkJZWxzZQ0KLQkJCQl7DQotCQkJCQkvKiBBIGNoYXJhY3RlciB3YXMgZW50ZXJlZC4gIEFkZCBpdCB0byB0aGUgc3RyaW5nDQotCQkJCQllbnRlcmVkIHNvIGZhci4gIFdoZW4gYSBcbiBpcyBlbnRlcmVkIHRoZSBjb21wbGV0ZQ0KLQkJCQkJc3RyaW5nIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBjb21tYW5kIGludGVycHJldGVyLiAqLw0KLQkJCQkJaWYoICggY1J4ZWRDaGFyID49ICcgJyApICYmICggY1J4ZWRDaGFyIDw9ICd+JyApICkNCi0JCQkJCXsNCi0JCQkJCQlpZiggY0lucHV0SW5kZXggPCBjbWRNQVhfSU5QVVRfU0laRSApDQotCQkJCQkJew0KLQkJCQkJCQljSW5wdXRTdHJpbmdbIGNJbnB1dEluZGV4IF0gPSBjUnhlZENoYXI7DQotCQkJCQkJCWNJbnB1dEluZGV4Kys7DQotCQkJCQkJfQ0KLQkJCQkJfQ0KLQkJCQl9DQotCQkJfQ0KLQkJfQ0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlNlbmRCdWZmZXIoIGNvbnN0IGNoYXIgKiBwY0J1ZmZlciwgc2l6ZV90IHhCdWZmZXJMZW5ndGggKQ0KLXsNCi1jb25zdCBUaWNrVHlwZV90IHhWZXJ5U2hvcnREZWxheSA9IDJVTDsNCi0NCi0JaWYoIHhCdWZmZXJMZW5ndGggPiAwICkNCi0Jew0KLQkJTVNTX1VBUlRfaXJxX3R4KCAoIG1zc191YXJ0X2luc3RhbmNlX3QgKiApIHB4VUFSVCwgKCB1aW50OF90ICogKSBwY0J1ZmZlciwgeEJ1ZmZlckxlbmd0aCApOw0KLQ0KLQkJLyogRW5zdXJlIGFueSBwcmV2aW91cyB0cmFuc21pc3Npb25zIGhhdmUgY29tcGxldGVkLiAgVGhlIGRlZmF1bHQgVUFSVA0KLQkJaW50ZXJydXB0IGRvZXMgbm90IHByb3ZpZGUgYW4gZXZlbnQgYmFzZWQgbWV0aG9kIG9mCXNpZ25hbGx5IHRoZSBlbmQgb2YgYSBUeA0KLQkJLSB0aGlzIGlzIHRoZXJlZm9yZSBhIGNydWRlIHBvbGwgb2YgdGhlIFR4IGVuZCBzdGF0dXMuICBSZXBsYWNpbmcgdGhlDQotCQlkZWZhdWx0IFVBUlQgaGFuZGxlciB3aXRoIG9uZSB0aGF0ICdnaXZlcycgYSBzZW1hcGhvcmUgd2hlbiB0aGUgVHggaXMNCi0JCWNvbXBsZXRlIHdvdWxkIGFsbG93IHRoaXMgcG9sbCBsb29wIHRvIGJlIHJlcGxhY2VkIGJ5IGEgc2ltcGxlIHNlbWFwaG9yZQ0KLQkJYmxvY2suICovDQotCQl3aGlsZSggTVNTX1VBUlRfdHhfY29tcGxldGUoICggbXNzX3VhcnRfaW5zdGFuY2VfdCAqICkgcHhVQVJUICkgPT0gcGRGQUxTRSApDQotCQl7DQotCQkJdlRhc2tEZWxheSggeFZlcnlTaG9ydERlbGF5ICk7DQotCQl9DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q29uZmlndXJlVUFSVCggdm9pZCApDQotew0KLQkvKiBJbml0aWFsaXNlIHRoZSBVQVJUIHdoaWNoIGlzIHVzZWQgZm9yIHByaW50ZigpIGFuZCBDTEkgSU8uICovDQotCU1TU19VQVJUX2luaXQoICggbXNzX3VhcnRfaW5zdGFuY2VfdCAqICkgcHhVQVJULCBNU1NfVUFSVF8xMTUyMDBfQkFVRCwgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQgKTsNCi0NCi0JLyogQ2hhcmFjdGVycyBhcmUgb25seSBldmVyIHJlY2VpdmVkIHNsb3dseSBvbiB0aGUgQ0xJIHNvIGl0IGlzIG9rIHRvIHBhc3MNCi0JcmVjZWl2ZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBVQVJUIGludGVycnVwdCB0byB0aGUgdGFzayBvbiBhIHF1ZXVlLiAgQ3JlYXRlDQotCXRoZSBxdWV1ZSB1c2VkIGZvciB0aGF0IHB1cnBvc2UuICovDQotCXhSeGVkQ2hhcnMgPSB4UXVldWVDcmVhdGUoIGNtZFJYRURfQ0hBUlNfUVVFVUVfTEVOR1RILCBzaXplb2YoIGNoYXIgKSApOw0KLQ0KLQkvKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgbWFrZXMgdXNlIG9mIEZyZWVSVE9TIEFQSSBmdW5jdGlvbnMsIHNvIGl0cw0KLQlwcmlvcml0eSBtdXN0IGJlIGF0IG9yIGJlbG93IHRoZSBjb25maWdMSUJSQVJZX01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWQ0KLQlzZXR0aW5nICh0aGUgaGlnaGVyIHRoZSBudW1lcmljIHByaW9yaXR5LCB0aGUgbG93ZXIgdGhlIGxvZ2ljYWwgcHJpb3JpdHkpLiAqLw0KLQlOVklDX1NldFByaW9yaXR5KCB4VUFSVF9JUlEsIGNvbmZpZ0xJQlJBUllfTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZICk7DQotDQotCS8qIFNldCB0aGUgVUFSVCBSeCBub3RpZmljYXRpb24gZnVuY3Rpb24uICovDQotCU1TU19VQVJUX3NldF9yeF9oYW5kbGVyKCAoIG1zc191YXJ0X2luc3RhbmNlX3QgKiApIHB4VUFSVCwgcHJ2VUFSVFJ4Tm90aWZpY2F0aW9uSGFuZGxlciwgTVNTX1VBUlRfRklGT19TSU5HTEVfQllURSApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi1zdGF0aWMgdm9pZCBwcnZVQVJUUnhOb3RpZmljYXRpb25IYW5kbGVyKCBtc3NfdWFydF9pbnN0YW5jZV90ICogcHhVQVJUICkNCi17DQotY2hhciBjUnhlZDsNCi1wb3J0QkFTRV9UWVBFIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbjsNCi0NCi0JLyogVGhlIGNvbW1hbmQgY29uc29sZSByZWNlaXZlcyBkYXRhIHZlcnkgc2xvd2x5IChhdCB0aGUgc3BlZWQgb2Ygc29tZWJvZHkNCi0JdHlwaW5nKSwgdGhlcmVmb3JlIGl0IGlzIG9rIHRvIGp1c3QgaGFuZGxlIG9uZSBjaGFyYWN0ZXIgYXQgYSB0aW1lIGFuZCB1c2UNCi0JYSBxdWV1ZSB0byBzZW5kIHRoZSBjaGFyYWN0ZXJzIHRvIHRoZSB0YXNrLiAqLw0KLQlpZiggTVNTX1VBUlRfZ2V0X3J4KCBweFVBUlQsICggdWludDhfdCAqICkgJmNSeGVkLCBzaXplb2YoIGNSeGVkICkgKSA9PSBzaXplb2YoIGNSeGVkICkgKQ0KLQl7DQotCQl4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOw0KLQkJeFF1ZXVlU2VuZEZyb21JU1IoIHhSeGVkQ2hhcnMsICZjUnhlZCwgJnhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KLQ0KLQkJLyogcG9ydEVORF9TV0lUQ0hJTkdfSVNSKCkgb3IgcG9ydFlJRUxEX0ZST01fSVNSKCkgY2FuIGJlIHVzZWQgaGVyZS4gKi8NCi0JCXBvcnRZSUVMRF9GUk9NX0lTUiggeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQotCX0NCi19DQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vVUFSVENvbW1hbmRDb25zb2xlLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODYyOGFlOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9VQVJUQ29tbWFuZENvbnNvbGUuaAorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLSNpZm5kZWYgVUFSVF9DT01NQU5EX0NPTlNPTEVfSA0KLSNkZWZpbmUgVUFSVF9DT01NQU5EX0NPTlNPTEVfSA0KLQ0KLS8qDQotICogQ3JlYXRlIHRoZSB0YXNrIHRoYXQgaW1wbGVtZW50cyBhIGNvbW1hbmQgY29uc29sZSB1c2luZyB0aGUgVVNCIHZpcnR1YWwgY29tDQotICogcG9ydCBkcml2ZXIgZm9yIGludHB1dCBhbmQgb3V0cHV0Lg0KLSAqLw0KLXZvaWQgdlVBUlRDb21tYW5kQ29uc29sZVN0YXJ0KCB1aW50MTZfdCB1c1N0YWNrU2l6ZSwgdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eFByaW9yaXR5ICk7DQotDQotI2VuZGlmIC8qIFVBUlRfQ09NTUFORF9DT05TT0xFX0ggKi8NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2NDcwNzcuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vY29uZmlnX2ZhdF9zbC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFuIGNvbXBsZW1lbnRhcnkgY29tcG9uZW50IHByb3ZpZGVkIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gKiBMdGQuIGJ5IEhDQyBFbWJlZGRlZCBmb3IgdXNlIHdpdGggRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydCBvZg0KLSAqIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytGQVQgU0wgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwNCi0gKiBsaWNlbnNlIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkDQotICogd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgR05VIEdlbmVyYWwNCi0gKiBQdWJsaWMgbGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHRoaXMgdGV4dC4NCi0gKiBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlIGZvbGxvd2luZw0KLSAqIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyB3aXNoIHRvIGluY29ycG9yYXRlIEZyZWVSVE9TK0ZBVCBTTCBpbnRvDQotICogcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIHJlZGlzdHJpYnV0aW9uIGluIGFueSBmb3JtIG11c3QgZmlyc3Qgb2J0YWluIGENCi0gKiBjb21tZXJjaWFsIGxpY2Vuc2UgLSBhbmQgaW4tc28tZG9pbmcgc3VwcG9ydCB0aGUgbWFpbnRlbmFuY2UsIHN1cHBvcnQgYW5kDQotICogZnVydGhlciBkZXZlbG9wbWVudCBvZiB0aGUgRnJlZVJUT1MrRkFUIFNMIHByb2R1Y3QuICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbg0KLSAqIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzDQotICogdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9DT05GSUdfRkFUX1NMX0gNCi0jZGVmaW5lIF9DT05GSUdfRkFUX1NMX0gNCi0NCi0jaW5jbHVkZSAiLi4vdmVyc2lvbi92ZXJfZmF0X3NsLmgiDQotI2lmIFZFUl9GQVRfU0xfTUFKT1IgIT0gNSB8fCBWRVJfRkFUX1NMX01JTk9SICE9IDINCi0gI2Vycm9yIEluY29tcGF0aWJsZSBGQVRfU0wgdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2luY2x1ZGUgIi4uL2FwaS9hcGlfbWRyaXZlci5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSoqDQotKiogIEZBVCBTTCB1c2VyIHNldHRpbmdzDQotKioNCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEZfU0VDVE9SX1NJWkUgICAgICAgICAgIDUxMnUgIC8qIERpc2sgc2VjdG9yIHNpemUuICovDQotI2RlZmluZSBGX0ZTX1RIUkVBRF9BV0FSRSAgICAgICAxICAgICAvKiBTZXQgdG8gb25lIGlmIHRoZSBmaWxlIHN5c3RlbSB3aWxsIGJlIGFjY2VzcyBmcm9tIG1vcmUgdGhhbiBvbmUgdGFzay4gKi8NCi0jZGVmaW5lIEZfTUFYUEFUSCAgICAgICAgICAgICAgIDY0ICAgIC8qIE1heGltdW0gbGVuZ3RoIGEgZmlsZSBuYW1lIChpbmNsdWRpbmcgaXRzIGZ1bGwgcGF0aCkgY2FuIGJlLiAqLw0KLSNkZWZpbmUgRl9NQVhfTE9DS19XQUlUX1RJQ0tTICAgMjAgICAgLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIFJUT1MgdGlja3MgdG8gd2FpdCB3aGVuIGF0dGVtcHRpbmcgdG8gb2J0YWluIGEgbG9jayBvbiB0aGUgZmlsZSBzeXN0ZW0gd2hlbiBGX0ZTX1RIUkVBRF9BV0FSRSBpcyBzZXQgdG8gMS4gKi8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIF9DT05GSUdfRkFUX1NMX0ggKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfZmF0X3NsX3Rlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2xfdGVzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZjU2ZjkzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL2NvbmZpZ19mYXRfc2xfdGVzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoNCi0gKiBGcmVlUlRPUytGQVQgU0wgVjEuMC4xIChDKSAyMDE0IEhDQyBFbWJlZGRlZA0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGFuIGNvbXBsZW1lbnRhcnkgY29tcG9uZW50IHByb3ZpZGVkIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gKiBMdGQuIGJ5IEhDQyBFbWJlZGRlZCBmb3IgdXNlIHdpdGggRnJlZVJUT1MuICBJdCBpcyBub3QsIGluIGl0c2VsZiwgcGFydCBvZg0KLSAqIHRoZSBGcmVlUlRPUyBrZXJuZWwuICBGcmVlUlRPUytGQVQgU0wgaXMgbGljZW5zZWQgc2VwYXJhdGVseSBmcm9tIEZyZWVSVE9TLA0KLSAqIGFuZCB1c2VzIGEgZGlmZmVyZW50IGxpY2Vuc2UgdG8gRnJlZVJUT1MuICBGcmVlUlRPUytGQVQgU0wgdXNlcyBhIGR1YWwNCi0gKiBsaWNlbnNlIG1vZGVsLCBpbmZvcm1hdGlvbiBvbiB3aGljaCBpcyBwcm92aWRlZCBiZWxvdzoNCi0gKg0KLSAqIC0gT3BlbiBzb3VyY2UgbGljZW5zaW5nIC0NCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgYSBmcmVlIGRvd25sb2FkIGFuZCBtYXkgYmUgdXNlZCwgbW9kaWZpZWQgYW5kIGRpc3RyaWJ1dGVkDQotICogd2l0aG91dCBjaGFyZ2UgcHJvdmlkZWQgdGhlIHVzZXIgYWRoZXJlcyB0byB2ZXJzaW9uIHR3byBvZiB0aGUgR05VIEdlbmVyYWwNCi0gKiBQdWJsaWMgbGljZW5zZSAoR1BMKSBhbmQgZG9lcyBub3QgcmVtb3ZlIHRoZSBjb3B5cmlnaHQgbm90aWNlIG9yIHRoaXMgdGV4dC4NCi0gKiBUaGUgR1BMIFYyIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBnbnUub3JnIHdlYiBzaXRlLCBhbmQgb24gdGhlIGZvbGxvd2luZw0KLSAqIFVSTDogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZ3BsLTIuMC50eHQNCi0gKg0KLSAqIC0gQ29tbWVyY2lhbCBsaWNlbnNpbmcgLQ0KLSAqIEJ1c2luZXNzZXMgYW5kIGluZGl2aWR1YWxzIHdobyB3aXNoIHRvIGluY29ycG9yYXRlIEZyZWVSVE9TK0ZBVCBTTCBpbnRvDQotICogcHJvcHJpZXRhcnkgc29mdHdhcmUgZm9yIHJlZGlzdHJpYnV0aW9uIGluIGFueSBmb3JtIG11c3QgZmlyc3Qgb2J0YWluIGENCi0gKiBjb21tZXJjaWFsIGxpY2Vuc2UgLSBhbmQgaW4tc28tZG9pbmcgc3VwcG9ydCB0aGUgbWFpbnRlbmFuY2UsIHN1cHBvcnQgYW5kDQotICogZnVydGhlciBkZXZlbG9wbWVudCBvZiB0aGUgRnJlZVJUT1MrRkFUIFNMIHByb2R1Y3QuICBDb21tZXJjaWFsIGxpY2Vuc2VzIGNhbg0KLSAqIGJlIG9idGFpbmVkIGZyb20gaHR0cDovL3Nob3AuZnJlZXJ0b3Mub3JnIGFuZCBkbyBub3QgcmVxdWlyZSBhbnkgc291cmNlIGZpbGVzDQotICogdG8gYmUgY2hhbmdlZC4NCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLiAgWW91DQotICogY2Fubm90IHVzZSBGcmVlUlRPUytGQVQgU0wgdW5sZXNzIHlvdSBhZ3JlZSB0aGF0IHlvdSB1c2UgdGhlIHNvZnR3YXJlICdhcw0KLSAqIGlzJy4gIEZyZWVSVE9TK0ZBVCBTTCBpcyBwcm92aWRlZCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZQ0KLSAqIGltcGxpZWQgd2FycmFudGllcyBvZiBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQ0KLSAqIFBBUlRJQ1VMQVIgUFVSUE9TRS4gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGFuZCBIQ0MgRW1iZWRkZWQgZGlzY2xhaW1zIGFsbA0KLSAqIGNvbmRpdGlvbnMgYW5kIHRlcm1zLCBiZSB0aGV5IGltcGxpZWQsIGV4cHJlc3NlZCwgb3Igc3RhdHV0b3J5Lg0KLSAqDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCi0gKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GcmVlUlRPUy1QbHVzDQotICoNCi0gKi8NCi0NCi0jaWZuZGVmIF9DT05GSUdfRkFUX1NMX1RFU1RfSA0KLSNkZWZpbmUgX0NPTkZJR19GQVRfU0xfVEVTVF9IDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX2ZhdF9zbC5oIg0KLSNpZiBWRVJfRkFUX1NMX01BSk9SICE9IDUgfHwgVkVSX0ZBVF9TTF9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgRkFUX1NMIHZlcnNpb24gbnVtYmVyIQ0KLSNlbmRpZg0KLQ0KLQ0KLS8qDQotKiogTWF4aW11bSBzaXplIGZvciBzZWVrIHRlc3QuDQotKiogT3B0aW9uczogMTI4LCAyNTYsIDUxMiwgMTAyNCwgMjA0OCwgNDA5NiwgODE5MiwgMTYzODQsIDMyNzY4DQotKi8NCi0jZGVmaW5lIEZfTUFYX1NFRUtfVEVTVCAxNjM4NA0KLQ0KLQ0KLS8qDQotKiogRGVmaW5lcyBtZWRpYSB0eXBlIGZvciB0ZXN0aW5nLg0KLSoqIE9wdGlvbnM6IEZfRkFUMTJfTUVESUEsIEZfRkFUMTZfTUVESUEsIEZfRkFUMzJfTUVESUENCi0qLw0KLSNkZWZpbmUgRl9GQVRfVFlQRSAgICAgIEZfRkFUMTZfTUVESUENCi0NCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9DT05GSUdfU1RISU5fVEVTVF9IICovDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9GdWxsLURlbW8vY29uZmlnX21kcml2ZXJfcmFtLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfbWRyaXZlcl9yYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM0ZmVkZC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9jb25maWdfbWRyaXZlcl9yYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qDQotICogRnJlZVJUT1MrRkFUIFNMIFYxLjAuMSAoQykgMjAxNCBIQ0MgRW1iZWRkZWQNCi0gKg0KLSAqIEZyZWVSVE9TK0ZBVCBTTCBpcyBhbiBjb21wbGVtZW50YXJ5IGNvbXBvbmVudCBwcm92aWRlZCB0byBSZWFsIFRpbWUgRW5naW5lZXJzDQotICogTHRkLiBieSBIQ0MgRW1iZWRkZWQgZm9yIHVzZSB3aXRoIEZyZWVSVE9TLiAgSXQgaXMgbm90LCBpbiBpdHNlbGYsIHBhcnQgb2YNCi0gKiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgRnJlZVJUT1MrRkFUIFNMIGlzIGxpY2Vuc2VkIHNlcGFyYXRlbHkgZnJvbSBGcmVlUlRPUywNCi0gKiBhbmQgdXNlcyBhIGRpZmZlcmVudCBsaWNlbnNlIHRvIEZyZWVSVE9TLiAgRnJlZVJUT1MrRkFUIFNMIHVzZXMgYSBkdWFsDQotICogbGljZW5zZSBtb2RlbCwgaW5mb3JtYXRpb24gb24gd2hpY2ggaXMgcHJvdmlkZWQgYmVsb3c6DQotICoNCi0gKiAtIE9wZW4gc291cmNlIGxpY2Vuc2luZyAtDQotICogRnJlZVJUT1MrRkFUIFNMIGlzIGEgZnJlZSBkb3dubG9hZCBhbmQgbWF5IGJlIHVzZWQsIG1vZGlmaWVkIGFuZCBkaXN0cmlidXRlZA0KLSAqIHdpdGhvdXQgY2hhcmdlIHByb3ZpZGVkIHRoZSB1c2VyIGFkaGVyZXMgdG8gdmVyc2lvbiB0d28gb2YgdGhlIEdOVSBHZW5lcmFsDQotICogUHVibGljIGxpY2Vuc2UgKEdQTCkgYW5kIGRvZXMgbm90IHJlbW92ZSB0aGUgY29weXJpZ2h0IG5vdGljZSBvciB0aGlzIHRleHQuDQotICogVGhlIEdQTCBWMiB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZ251Lm9yZyB3ZWIgc2l0ZSwgYW5kIG9uIHRoZSBmb2xsb3dpbmcNCi0gKiBVUkw6IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2dwbC0yLjAudHh0DQotICoNCi0gKiAtIENvbW1lcmNpYWwgbGljZW5zaW5nIC0NCi0gKiBCdXNpbmVzc2VzIGFuZCBpbmRpdmlkdWFscyB3aG8gd2lzaCB0byBpbmNvcnBvcmF0ZSBGcmVlUlRPUytGQVQgU0wgaW50bw0KLSAqIHByb3ByaWV0YXJ5IHNvZnR3YXJlIGZvciByZWRpc3RyaWJ1dGlvbiBpbiBhbnkgZm9ybSBtdXN0IGZpcnN0IG9idGFpbiBhDQotICogY29tbWVyY2lhbCBsaWNlbnNlIC0gYW5kIGluLXNvLWRvaW5nIHN1cHBvcnQgdGhlIG1haW50ZW5hbmNlLCBzdXBwb3J0IGFuZA0KLSAqIGZ1cnRoZXIgZGV2ZWxvcG1lbnQgb2YgdGhlIEZyZWVSVE9TK0ZBVCBTTCBwcm9kdWN0LiAgQ29tbWVyY2lhbCBsaWNlbnNlcyBjYW4NCi0gKiBiZSBvYnRhaW5lZCBmcm9tIGh0dHA6Ly9zaG9wLmZyZWVydG9zLm9yZyBhbmQgZG8gbm90IHJlcXVpcmUgYW55IHNvdXJjZSBmaWxlcw0KLSAqIHRvIGJlIGNoYW5nZWQuDQotICoNCi0gKiBGcmVlUlRPUytGQVQgU0wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bC4gIFlvdQ0KLSAqIGNhbm5vdCB1c2UgRnJlZVJUT1MrRkFUIFNMIHVubGVzcyB5b3UgYWdyZWUgdGhhdCB5b3UgdXNlIHRoZSBzb2Z0d2FyZSAnYXMNCi0gKiBpcycuICBGcmVlUlRPUytGQVQgU0wgaXMgcHJvdmlkZWQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUNCi0gKiBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEENCi0gKiBQQVJUSUNVTEFSIFBVUlBPU0UuIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBhbmQgSENDIEVtYmVkZGVkIGRpc2NsYWltcyBhbGwNCi0gKiBjb25kaXRpb25zIGFuZCB0ZXJtcywgYmUgdGhleSBpbXBsaWVkLCBleHByZXNzZWQsIG9yIHN0YXR1dG9yeS4NCi0gKg0KLSAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQotICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRnJlZVJUT1MtUGx1cw0KLSAqDQotICovDQotDQotI2lmbmRlZiBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotI2RlZmluZSBfQ09ORklHX01EUklWRVJfUkFNX0hfDQotDQotI2luY2x1ZGUgIi4uL3ZlcnNpb24vdmVyX21kcml2ZXJfcmFtLmgiDQotI2lmIFZFUl9NRFJJVkVSX1JBTV9NQUpPUiAhPSAxIHx8IFZFUl9NRFJJVkVSX1JBTV9NSU5PUiAhPSAyDQotICNlcnJvciBJbmNvbXBhdGlibGUgTURSSVZFUl9SQU0gdmVyc2lvbiBudW1iZXIhDQotI2VuZGlmDQotDQotI2RlZmluZSBNRFJJVkVSX1JBTV9TRUNUT1JfU0laRSAgIDUxMiAgICAgICAvKiBTZWN0b3Igc2l6ZSAqLw0KLQ0KLSNkZWZpbmUgTURSSVZFUl9SQU1fVk9MVU1FMF9TSVpFICAoMjggKiAxMDI0KSAvKiBkZWZpbnRpb24gZm9yIHNpemUgb2YgcmFtZHJpdmUwICovDQotDQotI2RlZmluZSBNRFJJVkVSX01FTV9MT05HX0FDQ0VTUyAgIDEgICAgICAgICAvKiBzZXQgdGhpcyB2YWx1ZSB0byAxIGlmIDMyYml0IGFjY2VzcyBhdmFpbGFibGUgKi8NCi0NCi0jZW5kaWYgLyogaWZuZGVmIF9DT05GSUdfTURSSVZFUl9SQU1fSF8gKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL0Z1bGwtRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL21haW5fZnVsbC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMDNlOTQ5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vRnVsbC1EZW1vL21haW5fZnVsbC5jCisrKyAvZGV2L251bGwKQEAgLTEsMzYzICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQotICogcHJvamVjdCwgYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCi0gKiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgc2V0dGluZyBpbiBGcmVlUlRPU0NvbmlmZy5oIGlzIHVzZWQgdG8NCi0gKiBzZWxlY3QgYmV0d2VlbiB0aGUgdHdvLiAgU2VlIHRoZSBub3RlcyBvbiB1c2luZw0KLSAqIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpbiBtYWluLmMuICBUaGlzIGZpbGUgaW1wbGVtZW50cyB0aGUNCi0gKiBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gdmVyc2lvbi4NCi0gKg0KLSAqIE5PVEUgMjogIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIHRoZSBzb3VyY2UgY29kZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZQ0KLSAqIGZ1bGwgZGVtby4gIEdlbmVyaWMgZnVuY3Rpb25zLCBzdWNoIEZyZWVSVE9TIGhvb2sgZnVuY3Rpb25zLCBhbmQgZnVuY3Rpb25zDQotICogcmVxdWlyZWQgdG8gY29uZmlndXJlIHRoZSBoYXJkd2FyZSwgYXJlIGRlZmluZWQgaW4gbWFpbi5jLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKg0KLSAqIG1haW5fZnVsbCgpIGNyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzIGFuZCBhIHNvZnR3YXJlIHRpbWVyLCB0aGVuDQotICogc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgd2ViIGRvY3VtZW50YXRpb24gcHJvdmlkZXMgbW9yZSBkZXRhaWxzIG9mIHRoZQ0KLSAqIHN0YW5kYXJkIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHdoaWNoIHByb3ZpZGUgbm8gcGFydGljdWxhciBmdW5jdGlvbmFsaXR5LA0KLSAqIGJ1dCBkbyBwcm92aWRlIGEgZ29vZCBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIEZyZWVSVE9TIEFQSS4NCi0gKg0KLSAqIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzLCB0aGUgZm9sbG93aW5nIHRhc2tzIGFuZCB0ZXN0cyBhcmUNCi0gKiBkZWZpbmVkIGFuZC9vciBjcmVhdGVkIHdpdGhpbiB0aGlzIGZpbGU6DQotICoNCi0gKiAiQ2hlY2siIHRpbWVyIC0gVGhlIGNoZWNrIHNvZnR3YXJlIHRpbWVyIHBlcmlvZCBpcyBpbml0aWFsbHkgc2V0IHRvIHRocmVlDQotICogc2Vjb25kcy4gIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGNoZWNrIHNvZnR3YXJlIHRpbWVyDQotICogY2hlY2tzIHRoYXQgYWxsIHRoZSBzdGFuZGFyZCBkZW1vIHRhc2tzIGFyZSBub3Qgb25seSBzdGlsbCBleGVjdXRpbmcsIGJ1dA0KLSAqIGFyZSBleGVjdXRpbmcgd2l0aG91dCByZXBvcnRpbmcgYW55IGVycm9ycy4gIElmIHRoZSBjaGVjayBzb2Z0d2FyZSB0aW1lcg0KLSAqIGRpc2NvdmVycyB0aGF0IGEgdGFzayBoYXMgZWl0aGVyIHN0YWxsZWQsIG9yIHJlcG9ydGVkIGFuIGVycm9yLCB0aGVuIGl0DQotICogY2hhbmdlcyBpdHMgb3duIGV4ZWN1dGlvbiBwZXJpb2QgZnJvbSB0aGUgaW5pdGlhbCB0aHJlZSBzZWNvbmRzLCB0byBqdXN0DQotICogMjAwbXMuICBUaGUgY2hlY2sgc29mdHdhcmUgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24gYWxzbyB0b2dnbGVzIHRoZSBncmVlbg0KLSAqIExFRCBlYWNoIHRpbWUgaXQgaXMgY2FsbGVkLiAgVGhpcyBwcm92aWRlcyBhIHZpc3VhbCBpbmRpY2F0aW9uIG9mIHRoZSBzeXN0ZW0NCi0gKiBzdGF0dXM6ICBJZiB0aGUgZ3JlZW4gTEVEIHRvZ2dsZXMgZXZlcnkgdGhyZWUgc2Vjb25kcywgdGhlbiBubyBpc3N1ZXMgaGF2ZQ0KLSAqIGJlZW4gZGlzY292ZXJlZC4gIElmIHRoZSBncmVlbiBMRUQgdG9nZ2xlcyBldmVyeSAyMDBtcywgdGhlbiBhbiBpc3N1ZSBoYXMNCi0gKiBiZWVuIGRpc2NvdmVyZWQgd2l0aCBhdCBsZWFzdCBvbmUgdGFzay4NCi0gKg0KLSAqIEZyZWVSVE9TK0NMSSBjb21tYW5kIGNvbnNvbGUuICBUaGUgY29tbWFuZCBjb25zb2xlIGlzIGFjY2VzcyB0aHJvdWdoIFVBUlQwDQotICogdXNpbmcgMTE1MjAwIGJhdWQgYW5kIHRoZSBNaWNyb3NlbWkgTVNTIFVBUlQgZHJpdmVycy4gIFR5cGUgImhlbHAiIHRvIHNlZSBhDQotICogbGlzdCBvZiByZWdpc3RlcmVkIGNvbW1hbmRzLCB3aGljaCBpbmNsdWRlIHNvbWUgYmFzaWMgZmlsZSBzeXN0ZW0gY29tbWFuZHMNCi0gKiAoc2VlIEZyZWVSVE9TK0ZBVCBTTCBjb21tZW50cyBiZWxvdykuIFRoZSBGcmVlUlRPUytDTEkgbGljZW5zZSBpcyBkaWZmZXJlbnQNCi0gKiB0byB0aGUgRnJlZVJUT1MgbGljZW5zZSwgc2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2NsaSBmb3IgbGljZW5zZSBhbmQNCi0gKiB1c2FnZSBkZXRhaWxzLg0KLSAqDQotICogRnJlZVJUT1MrRkFUIFNMLiAgRnJlZVJUT1MrRkFUIFNMIGlzIGRlbW9uc3RyYXRlZCB1c2luZyBhIFJBTSBkaXNrLiAgW0F0IHRoZQ0KLSAqIHRpbWUgb2Ygd3JpdGluZ10gVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGZpbGUgc3lzdGVtIGRlbW8gaXMgaWRlbnRpY2FsIHRvDQotICogdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIEZyZWVSVE9TIFdpbjMyIHNpbXVsYXRvciBmaWxlIHN5c3RlbSBkZW1vIHdpdGggdGhlDQotICogY29tbWFuZCBjb25zb2xlIGJlaW5nIGFjY2Vzc2VkIHZpYSB0aGUgVUFSVCAoYXMgZGVzY3JpYmVkIGFib3ZlKSBpbnN0ZWFkIG9mDQotICogYSBuZXR3b3JrIHRlcm1pbmFsLiAgVGhlIEZyZWVSVE9TK0ZBVCBTTCBsaWNlbnNlIGlzIGRpZmZlcmVudCB0byB0aGUgRnJlZVJUT1MNCi0gKiBsaWNlbnNlLCBzZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvZmF0X3NsIGZvciBsaWNlbnNlIGFuZCB1c2FnZSBkZXRhaWxzLA0KLSAqIGFuZCBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmaWxlIHN5c3RlbSBkZW1vIGZ1bmN0aW9uYWxpdHkuDQotICoNCi0gKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIG9uIHRoZSBGcmVlUlRPUy5vcmcgd2ViIHNpdGUgZm9yDQotICogZnVsbCBpbmZvcm1hdGlvbiwgaW5jbHVkaW5nIGhhcmR3YXJlIHNldHVwIHJlcXVpcmVtZW50cy4NCi0gKi8NCi0NCi0vKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSA8c3RkaW8uaD4NCi0NCi0vKiBLZXJuZWwgaW5jbHVkZXMuICovDQotI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQotI2luY2x1ZGUgInRhc2suaCINCi0jaW5jbHVkZSAidGltZXJzLmgiDQotI2luY2x1ZGUgInF1ZXVlLmgiDQotDQotLyogU3RhbmRhcmQgZGVtbyBhcHBsaWNhdGlvbiBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiaW50ZWdlci5oIg0KLSNpbmNsdWRlICJQb2xsUS5oIg0KLSNpbmNsdWRlICJzZW10ZXN0LmgiDQotI2luY2x1ZGUgImR5bmFtaWMuaCINCi0jaW5jbHVkZSAiQmxvY2tRLmgiDQotI2luY2x1ZGUgImJsb2NrdGltLmgiDQotI2luY2x1ZGUgImNvdW50c2VtLmgiDQotI2luY2x1ZGUgIkdlblFUZXN0LmgiDQotI2luY2x1ZGUgInJlY211dGV4LmgiDQotI2luY2x1ZGUgImRlYXRoLmgiDQotI2luY2x1ZGUgImZsYXNoX3RpbWVyLmgiDQotI2luY2x1ZGUgInBhcnRlc3QuaCINCi0jaW5jbHVkZSAiVUFSVENvbW1hbmRDb25zb2xlLmgiDQotDQotLyogUHJpb3JpdGllcyBmb3IgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MuICovDQotI2RlZmluZSBtYWluUVVFVUVfUE9MTF9QUklPUklUWQkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyVUwgKQ0KLSNkZWZpbmUgbWFpblNFTV9URVNUX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSArIDFVTCApDQotI2RlZmluZSBtYWluQkxPQ0tfUV9QUklPUklUWQkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAyVUwgKQ0KLSNkZWZpbmUgbWFpbkNSRUFUT1JfVEFTS19QUklPUklUWQkJCSggdHNrSURMRV9QUklPUklUWSArIDNVTCApDQotI2RlZmluZSBtYWluRkxPUF9UQVNLX1BSSU9SSVRZCQkJCSggdHNrSURMRV9QUklPUklUWSApDQotDQotLyogQSBibG9jayB0aW1lIG9mIHplcm8gc2ltcGx5IG1lYW5zICJkb24ndCBibG9jayIuICovDQotI2RlZmluZSBtYWluRE9OVF9CTE9DSwkJCQkJCSggMFVMICkNCi0NCi0vKiBUaGUgcGVyaW9kIGFmdGVyIHdoaWNoIHRoZSBjaGVjayB0aW1lciB3aWxsIGV4cGlyZSwgaW4gbXMsIHByb3ZpZGVkIG5vIGVycm9ycw0KLWhhdmUgYmVlbiByZXBvcnRlZCBieSBhbnkgb2YgdGhlIHN0YW5kYXJkIGRlbW8gdGFza3MuICBtcyBhcmUgY29udmVydGVkIHRvIHRoZQ0KLWVxdWl2YWxlbnQgaW4gdGlja3MgdXNpbmcgdGhlIHBvcnRUSUNLX1BFUklPRF9NUyBjb25zdGFudC4gKi8NCi0jZGVmaW5lIG1haW5DSEVDS19USU1FUl9QRVJJT0RfTVMJCQkoIDMwMDBVTCAvIHBvcnRUSUNLX1BFUklPRF9NUyApDQotDQotLyogVGhlIHBlcmlvZCBhdCB3aGljaCB0aGUgY2hlY2sgdGltZXIgd2lsbCBleHBpcmUsIGluIG1zLCBpZiBhbiBlcnJvciBoYXMgYmVlbg0KLXJlcG9ydGVkIGluIG9uZSBvZiB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gIG1zIGFyZSBjb252ZXJ0ZWQgdG8gdGhlIGVxdWl2YWxlbnQNCi1pbiB0aWNrcyB1c2luZyB0aGUgcG9ydFRJQ0tfUEVSSU9EX01TIGNvbnN0YW50LiAqLw0KLSNkZWZpbmUgbWFpbkVSUk9SX0NIRUNLX1RJTUVSX1BFUklPRF9NUyAJKCAyMDBVTCAvIHBvcnRUSUNLX1BFUklPRF9NUyApDQotDQotLyogVGhlIHN0YW5kYXJkIGRlbW8gZmxhc2ggdGltZXJzIGNhbiBiZSB1c2VkIHRvIGZsYXNoIGFueSBudW1iZXIgb2YgTEVEcy4gIEluDQotdGhpcyBjYXNlLCBiZWNhdXNlIG9ubHkgdGhyZWUgTEVEcyBhcmUgYXZhaWxhYmxlLCBhbmQgb25lIGlzIGluIHVzZSBieSB0aGUNCi1jaGVjayB0aW1lciwgb25seSB0d28gYXJlIHVzZWQgYnkgdGhlIGZsYXNoIHRpbWVycy4gKi8NCi0jZGVmaW5lIG1haW5OVU1CRVJfT0ZfRkxBU0hfVElNRVJTX0xFRFMJCSggMSApDQotDQotLyogVGhlIExFRCB0b2dnbGVkIGJ5IHRoZSBjaGVjayB0aW1lci4gIFRoZSBmaXJzdCB0d28gTEVEcyBhcmUgdG9nZ2xlIGJ5IHRoZQ0KLXN0YW5kYXJkIGRlbW8gZmxhc2ggdGltZXJzLiAqLw0KLSNkZWZpbmUgbWFpbkNIRUNLX0xFRAkJCQkJCSggMSApDQotDQotLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFuZCB0aGUgcHJpb3JpdHkgdXNlZCBieSB0aGUgVUFSVCBjb21tYW5kIGNvbnNvbGUNCi10YXNrLiAqLw0KLSNkZWZpbmUgbWFpblVBUlRfQ09NTUFORF9DT05TT0xFX1NUQUNLX1NJWkUJCSggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFICogMiApDQotI2RlZmluZSBtYWluVUFSVF9DT01NQU5EX0NPTlNPTEVfVEFTS19QUklPUklUWQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qDQotICogVGhlIGNoZWNrIHRpbWVyIGNhbGxiYWNrIGZ1bmN0aW9uLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQotICovDQotc3RhdGljIHZvaWQgcHJ2Q2hlY2tUaW1lckNhbGxiYWNrKCBUaW1lckhhbmRsZV90IHhUaW1lciApOw0KLQ0KLS8qDQotICogUmVnaXN0ZXIgY29tbWFuZHMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIEZyZWVSVE9TK0NMSS4gIFRoZSBjb21tYW5kcyBhcmUNCi0gKiBkZWZpbmVkIGluIENMSS1Db21tYW5kcy5jIGFuZCBGaWxlLVJlbGF0ZWQtQ0xJLUNvbW1hbmQuYyByZXNwZWN0aXZlbHkuDQotICovDQotZXh0ZXJuIHZvaWQgdlJlZ2lzdGVyU2FtcGxlQ0xJQ29tbWFuZHMoIHZvaWQgKTsNCi1leHRlcm4gdm9pZCB2UmVnaXN0ZXJGaWxlU3lzdGVtQ0xJQ29tbWFuZHMoIHZvaWQgKTsNCi0NCi0vKiBQcmVwYXJlIHRvIHJ1biB0aGUgZnVsbCBkZW1vOiBDb25maWd1cmUgdGhlIElPLCByZWdpc3RlciB0aGUgQ0xJDQotICogY29tbWFuZHMsIGFuZCBkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbiwgZ2VuZXJhdGUgYSBzZXQgb2Ygc2FtcGxlIGZpbGVzIG9uDQotICogYSBSQU0gZGlzay4NCi0gKi8NCi1zdGF0aWMgdm9pZCBwcnZQcmVwYXJlRm9yRnVsbERlbW8oIHZvaWQgKTsNCi0NCi0vKg0KLSAqIENyZWF0ZXMgYW5kIHZlcmlmaWVzIGRpZmZlcmVudCBmaWxlcyBvbiB0aGUgdm9sdW1lLCBkZW1vbnN0cmF0aW5nIHRoZSB1c2Ugb2YNCi0gKiB2YXJpb3VzIGRpZmZlcmVudCBBUEkgZnVuY3Rpb25zLg0KLSAqLw0KLWV4dGVybiB2b2lkIHZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcyggdm9pZCApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgbWFpbl9mdWxsKCB2b2lkICkNCi17DQotVGltZXJIYW5kbGVfdCB4Q2hlY2tUaW1lciA9IE5VTEw7DQotDQotCS8qIFByZXBhcmUgdG8gcnVuIHRoZSBmdWxsIGRlbW86IENvbmZpZ3VyZSB0aGUgSU8sIHJlZ2lzdGVyIHRoZSBDTEkNCi0JY29tbWFuZHMsIGFuZCBkZXBlbmRpbmcgb24gY29uZmlndXJhdGlvbiwgZ2VuZXJhdGUgYSBzZXQgb2Ygc2FtcGxlIGZpbGVzIG9uDQotCWEgUkFNIGRpc2suICovDQotCXBydlByZXBhcmVGb3JGdWxsRGVtbygpOw0KLQ0KLQkvKiBTdGFydCBhbGwgdGhlIG90aGVyIHN0YW5kYXJkIGRlbW8vdGVzdCB0YXNrcy4gIFRoZSBoYXZlIG5vdCBwYXJ0aWN1bGFyDQotCWZ1bmN0aW9uYWxpdHksIGJ1dCBkbyBkZW1vbnN0cmF0ZSBob3cgdG8gdXNlIHRoZSBGcmVlUlRPUyBBUEkgYW5kIHRlc3QgdGhlDQotCWtlcm5lbCBwb3J0LiAqLw0KLQl2U3RhcnRJbnRlZ2VyTWF0aFRhc2tzKCB0c2tJRExFX1BSSU9SSVRZICk7DQotCXZTdGFydER5bmFtaWNQcmlvcml0eVRhc2tzKCk7DQotCXZTdGFydEJsb2NraW5nUXVldWVUYXNrcyggbWFpbkJMT0NLX1FfUFJJT1JJVFkgKTsNCi0JdkNyZWF0ZUJsb2NrVGltZVRhc2tzKCk7DQotCXZTdGFydENvdW50aW5nU2VtYXBob3JlVGFza3MoKTsNCi0JdlN0YXJ0R2VuZXJpY1F1ZXVlVGFza3MoIHRza0lETEVfUFJJT1JJVFkgKTsNCi0JdlN0YXJ0UmVjdXJzaXZlTXV0ZXhUYXNrcygpOw0KLQl2U3RhcnRQb2xsZWRRdWV1ZVRhc2tzKCBtYWluUVVFVUVfUE9MTF9QUklPUklUWSApOw0KLQl2U3RhcnRTZW1hcGhvcmVUYXNrcyggbWFpblNFTV9URVNUX1BSSU9SSVRZICk7DQotCXZTdGFydExFREZsYXNoVGltZXJzKCBtYWluTlVNQkVSX09GX0ZMQVNIX1RJTUVSU19MRURTICk7DQotDQotCS8qIFN0YXJ0IHRoZSB0YXNrcyB0aGF0IGltcGxlbWVudHMgdGhlIGNvbW1hbmQgY29uc29sZSBvbiB0aGUgVUFSVCwgYXMNCi0JZGVzY3JpYmVkIGFib3ZlLiAqLw0KLQl2VUFSVENvbW1hbmRDb25zb2xlU3RhcnQoIG1haW5VQVJUX0NPTU1BTkRfQ09OU09MRV9TVEFDS19TSVpFLCBtYWluVUFSVF9DT01NQU5EX0NPTlNPTEVfVEFTS19QUklPUklUWSApOw0KLQ0KLQkvKiBDcmVhdGUgdGhlIHNvZnR3YXJlIHRpbWVyIHRoYXQgcGVyZm9ybXMgdGhlICdjaGVjaycgZnVuY3Rpb25hbGl0eSwNCi0JYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLiAqLw0KLQl4Q2hlY2tUaW1lciA9IHhUaW1lckNyZWF0ZSggIkNoZWNrVGltZXIiLAkJCQkJLyogQSB0ZXh0IG5hbWUsIHB1cmVseSB0byBoZWxwIGRlYnVnZ2luZy4gKi8NCi0JCQkJCQkJCSggbWFpbkNIRUNLX1RJTUVSX1BFUklPRF9NUyApLAkvKiBUaGUgdGltZXIgcGVyaW9kLCBpbiB0aGlzIGNhc2UgMzAwMG1zICgzcykuICovDQotCQkJCQkJCQlwZFRSVUUsCQkJCQkJCS8qIFRoaXMgaXMgYW4gYXV0by1yZWxvYWQgdGltZXIsIHNvIHhBdXRvUmVsb2FkIGlzIHNldCB0byBwZFRSVUUuICovDQotCQkJCQkJCQkoIHZvaWQgKiApIDAsCQkJCQkvKiBUaGUgSUQgaXMgbm90IHVzZWQsIHNvIGNhbiBiZSBzZXQgdG8gYW55dGhpbmcuICovDQotCQkJCQkJCQlwcnZDaGVja1RpbWVyQ2FsbGJhY2sJCQkvKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gdGhhdCBpbnNwZWN0cyB0aGUgc3RhdHVzIG9mIGFsbCB0aGUgb3RoZXIgdGFza3MuICovDQotCQkJCQkJCSAgKTsNCi0NCi0JaWYoIHhDaGVja1RpbWVyICE9IE5VTEwgKQ0KLQl7DQotCQl4VGltZXJTdGFydCggeENoZWNrVGltZXIsIG1haW5ET05UX0JMT0NLICk7DQotCX0NCi0NCi0JLyogVGhlIHNldCBvZiB0YXNrcyBjcmVhdGVkIGJ5IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gY2FsbCBoYXZlIHRvIGJlDQotCWNyZWF0ZWQgbGFzdCBhcyB0aGV5IGtlZXAgYWNjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRhc2tzIHRoZXkgZXhwZWN0IHRvIHNlZQ0KLQlydW5uaW5nLiAqLw0KLQl2Q3JlYXRlU3VpY2lkYWxUYXNrcyggbWFpbkNSRUFUT1JfVEFTS19QUklPUklUWSApOw0KLQ0KLQkvKiBTdGFydCB0aGUgc2NoZWR1bGVyLiAqLw0KLQl2VGFza1N0YXJ0U2NoZWR1bGVyKCk7DQotDQotCS8qIElmIGFsbCBpcyB3ZWxsLCB0aGUgc2NoZWR1bGVyIHdpbGwgbm93IGJlIHJ1bm5pbmcsIGFuZCB0aGUgZm9sbG93aW5nIGxpbmUNCi0Jd2lsbCBuZXZlciBiZSByZWFjaGVkLiAgSWYgdGhlIGZvbGxvd2luZyBsaW5lIGRvZXMgZXhlY3V0ZSwgdGhlbiB0aGVyZSB3YXMNCi0JaW5zdWZmaWNpZW50IEZyZWVSVE9TIGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgdGhlIGlkbGUgYW5kL29yIHRpbWVyIHRhc2tzDQotCXRvIGJlIGNyZWF0ZWQuICBTZWUgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IHNlY3Rpb24gb24gdGhlIEZyZWVSVE9TIHdlYiBzaXRlDQotCWZvciBtb3JlIGRldGFpbHMuICovDQotCWZvciggOzsgKTsNCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2Q2hlY2tUaW1lckNhbGxiYWNrKCBUaW1lckhhbmRsZV90IHhUaW1lciApDQotew0KLXN0YXRpYyBsb25nIGxDaGFuZ2VkVGltZXJQZXJpb2RBbHJlYWR5ID0gcGRGQUxTRTsNCi11bnNpZ25lZCBsb25nIHVsRXJyb3JGb3VuZCA9IHBkRkFMU0U7DQotDQotCS8qIENoZWNrIGFsbCB0aGUgZGVtbyB0YXNrcyAob3RoZXIgdGhhbiB0aGUgZmxhc2ggdGFza3MpIHRvIGVuc3VyZQ0KLQl0aGV5IGFyZSBhbGwgc3RpbGwgcnVubmluZywgYW5kIHRoYXQgbm9uZSBoYXZlIGRldGVjdGVkIGFuIGVycm9yLiAqLw0KLQlpZiggeEFyZUludGVnZXJNYXRoc1Rhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQl7DQotCQl1bEVycm9yRm91bmQgPSBwZFRSVUU7DQotCX0NCi0NCi0JaWYoIHhBcmVEeW5hbWljUHJpb3JpdHlUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCXsNCi0JCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JfQ0KLQ0KLQlpZiggeEFyZUJsb2NraW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmICggeEFyZUJsb2NrVGltZVRlc3RUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCXsNCi0JCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JfQ0KLQ0KLQlpZiAoIHhBcmVHZW5lcmljUXVldWVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCXsNCi0JCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JfQ0KLQ0KLQlpZiAoIHhBcmVSZWN1cnNpdmVNdXRleFRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmKCB4SXNDcmVhdGVUYXNrU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCWlmKCB4QXJlUG9sbGluZ1F1ZXVlc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQotCXsNCi0JCXVsRXJyb3JGb3VuZCA9IHBkVFJVRTsNCi0JfQ0KLQ0KLQlpZiggeEFyZVNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0Jew0KLQkJdWxFcnJvckZvdW5kID0gcGRUUlVFOw0KLQl9DQotDQotCS8qIFRvZ2dsZSB0aGUgY2hlY2sgTEVEIHRvIGdpdmUgYW4gaW5kaWNhdGlvbiBvZiB0aGUgc3lzdGVtIHN0YXR1cy4gIElmDQotCXRoZSBMRUQgdG9nZ2xlcyBldmVyeSBtYWluQ0hFQ0tfVElNRVJfUEVSSU9EX01TIG1pbGxpc2Vjb25kcyB0aGVuDQotCWV2ZXJ5dGhpbmcgaXMgb2suICBBIGZhc3RlciB0b2dnbGUgaW5kaWNhdGVzIGFuIGVycm9yLiAqLw0KLQl2UGFyVGVzdFRvZ2dsZUxFRCggbWFpbkNIRUNLX0xFRCApOw0KLQ0KLQkvKiBIYXZlIGFueSBlcnJvcnMgYmVlbiBsYXRjaCBpbiB1bEVycm9yRm91bmQ/ICBJZiBzbywgc2hvcnRlbiB0aGUNCi0JcGVyaW9kIG9mIHRoZSBjaGVjayB0aW1lciB0byBtYWluRVJST1JfQ0hFQ0tfVElNRVJfUEVSSU9EX01TIG1pbGxpc2Vjb25kcy4NCi0JVGhpcyB3aWxsIHJlc3VsdCBpbiBhbiBpbmNyZWFzZSBpbiB0aGUgcmF0ZSBhdCB3aGljaCBtYWluQ0hFQ0tfTEVEDQotCXRvZ2dsZXMuICovDQotCWlmKCB1bEVycm9yRm91bmQgIT0gcGRGQUxTRSApDQotCXsNCi0JCWlmKCBsQ2hhbmdlZFRpbWVyUGVyaW9kQWxyZWFkeSA9PSBwZEZBTFNFICkNCi0JCXsNCi0JCQlsQ2hhbmdlZFRpbWVyUGVyaW9kQWxyZWFkeSA9IHBkVFJVRTsNCi0NCi0JCQkvKiBUaGlzIGNhbGwgdG8geFRpbWVyQ2hhbmdlUGVyaW9kKCkgdXNlcyBhIHplcm8gYmxvY2sgdGltZS4NCi0JCQlGdW5jdGlvbnMgY2FsbGVkIGZyb20gaW5zaWRlIG9mIGEgdGltZXIgY2FsbGJhY2sgZnVuY3Rpb24gbXVzdA0KLQkJCSpuZXZlciogYXR0ZW1wdAl0byBibG9jay4gKi8NCi0JCQl4VGltZXJDaGFuZ2VQZXJpb2QoIHhUaW1lciwgKCBtYWluRVJST1JfQ0hFQ0tfVElNRVJfUEVSSU9EX01TICksIG1haW5ET05UX0JMT0NLICk7DQotCQl9DQotCX0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotc3RhdGljIHZvaWQgcHJ2UHJlcGFyZUZvckZ1bGxEZW1vKCB2b2lkICkNCi17DQotCS8qIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBvbmx5IGdvaW5nIHRvIGJlIGFjY2Vzc2VkIGZyb20gb25lIHRhc2sgdGhlbg0KLQlGX0ZTX1RIUkVBRF9BV0FSRSBjYW4gYmUgc2V0IHRvIDAgYW5kIHRoZSBzZXQgb2YgZXhhbXBsZSBmaWxlcyBhcmUgY3JlYXRlZA0KLQliZWZvcmUgdGhlIFJUT1Mgc2NoZWR1bGVyIGlzIHN0YXJ0ZWQuICBJZiB0aGUgZmlsZSBzeXN0ZW0gaXMgZ29pbmcgdG8gYmUNCi0JYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrIHRoZW4gRl9GU19USFJFQURfQVdBUkUgbXVzdCBiZSBzZXQgdG8gMSBhbmQNCi0JdGhlCXNldCBvZiBzYW1wbGUgZmlsZXMgYXJlIGNyZWF0ZWQgZnJvbSB0aGUgaWRsZSB0YXNrIGhvb2sgZnVuY3Rpb24NCi0JdkFwcGxpY2F0aW9uSWRsZUhvb2soKSAtIHdoaWNoIGlzIGRlZmluZWQgaW4gdGhpcyBmaWxlLiAqLw0KLQkjaWYgRl9GU19USFJFQURfQVdBUkUgPT0gMA0KLQl7DQotCQkvKiBJbml0aWFsaXNlIHRoZSBkcml2ZSBhbmQgZmlsZSBzeXN0ZW0sIHRoZW4gY3JlYXRlIGEgZmV3IGV4YW1wbGUNCi0JCWZpbGVzLiAgVGhlIG91dHB1dCBmcm9tIHRoaXMgZnVuY3Rpb24ganVzdCBnb2VzIHRvIHRoZSBzdGRvdXQgd2luZG93LA0KLQkJYWxsb3dpbmcgdGhlIG91dHB1dCB0byBiZSB2aWV3ZWQgd2hlbiB0aGUgVURQIGNvbW1hbmQgY29uc29sZSBpcyBub3QNCi0JCWNvbm5lY3RlZC4gKi8NCi0JCXZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcygpOw0KLQl9DQotCSNlbmRpZg0KLQ0KLQkvKiBSZWdpc3RlciBib3RoIHRoZSBzdGFuZGFyZCBhbmQgZmlsZSBzeXN0ZW0gcmVsYXRlZCBDTEkgY29tbWFuZHMuICovDQotCXZSZWdpc3RlclNhbXBsZUNMSUNvbW1hbmRzKCk7DQotCXZSZWdpc3RlckZpbGVTeXN0ZW1DTElDb21tYW5kcygpOw0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vUGFyVGVzdC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODI5MDg5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCi0gKiBUaGlzIGZpbGUgaXMgY2FsbGVkIFBhclRlc3QuYyBmb3IgaGlzdG9yaWMgcmVhc29ucy4gIE9yaWdpbmFsbHkgaXQgc3Rvb2QgZm9yDQotICogUEFSYWxsZWwgcG9ydCBURVNULg0KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIERlbW8gaW5jbHVkZXMuICovDQotI2luY2x1ZGUgInBhcnRlc3QuaCINCi0NCi0vKiBMaWJyYXJ5IGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJkcml2ZXJzL21zc19ncGlvL21zc19ncGlvLmgiDQotI2luY2x1ZGUgIkNNU0lTL3N5c3RlbV9tMnN4eHguaCINCi0NCi0jZGVmaW5lIHBhcnRzdE5VTV9MRURTCTINCi0NCi0vKiBSZW1lbWJlciB0aGUgc3RhdGUgb2YgdGhlIG91dHB1dHMgZm9yIGVhc3kgdG9nZ2xpbmcuICovDQotc3RhdGljIHVuc2lnbmVkIGNoYXIgdWNQb3J0U3RhdGUgPSAwOw0KLQ0KLSNpZiBjb25maWdCVUlMRF9GT1JfREVWRUxPUE1FTlRfS0lUID09IDENCi0Jc3RhdGljIGNvbnN0IG1zc19ncGlvX2lkX3QgdWNMRURzWyBwYXJ0c3ROVU1fTEVEUyBdID0geyBNU1NfR1BJT18xNCwgTVNTX0dQSU9fMTUgfTsNCi0jZWxzZQ0KLQlzdGF0aWMgY29uc3QgbXNzX2dwaW9faWRfdCB1Y0xFRHNbIHBhcnRzdE5VTV9MRURTIF0gPSB7IE1TU19HUElPXzAsIE1TU19HUElPXzEgfTsNCi0jZW5kaWYNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZQYXJUZXN0SW5pdGlhbGlzZSggdm9pZCApDQotew0KLWxvbmcgeDsNCi0NCi0JLyogSW5pdGlhbGlzZSBNU1MgR1BJT3MuICovDQotICAgIE1TU19HUElPX2luaXQoKTsNCi0NCi0gICAgLyogRW5zdXJlIHRoZSBMRURzIGFyZSBvdXRwdXRzIGFuZCBvZmYgdG8gc3RhcnQuICovDQotICAgIGZvciggeCA9IDA7IHggPCBwYXJ0c3ROVU1fTEVEUzsgeCsrICkNCi0gICAgew0KLSAgICAJTVNTX0dQSU9fY29uZmlnKCB1Y0xFRHNbIHggXSwgTVNTX0dQSU9fT1VUUFVUX01PREUgKTsNCi0gICAgCXZQYXJUZXN0U2V0TEVEKCB4LCBwZEZBTFNFICk7DQotICAgIH0NCi19DQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2UGFyVGVzdFNldExFRCggdW5zaWduZWQgcG9ydEJBU0VfVFlQRSB1eExFRCwgc2lnbmVkIHBvcnRCQVNFX1RZUEUgeFZhbHVlICkNCi17DQotCWlmKCB1eExFRCA8IHBhcnRzdE5VTV9MRURTICkNCi0Jew0KLQkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQotCQl7DQotCQkJTVNTX0dQSU9fc2V0X291dHB1dCggdWNMRURzWyB1eExFRCBdLCB4VmFsdWUgKTsNCi0NCi0JCQkvKiBSZW1lbWJlciB0aGUgbmV3IG91dHB1dCBzdGF0ZS4gKi8NCi0JCQlpZiggeFZhbHVlID09IDAgKQ0KLQkJCXsNCi0JCQkJdWNQb3J0U3RhdGUgJj0gfiggMSA8PCB1eExFRCApOw0KLQkJCX0NCi0JCQllbHNlDQotCQkJew0KLQkJCQl1Y1BvcnRTdGF0ZSB8PSAoIDEgPDwgdXhMRUQgKTsNCi0JCQl9DQotCQl9DQotCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLQl9DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdlBhclRlc3RUb2dnbGVMRUQoIHVuc2lnbmVkIHBvcnRCQVNFX1RZUEUgdXhMRUQgKQ0KLXsNCi0JaWYoIHV4TEVEIDwgcGFydHN0TlVNX0xFRFMgKQ0KLQl7DQotCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCi0JCXsNCi0JCQl2UGFyVGVzdFNldExFRCggdXhMRUQsICEoIHVjUG9ydFN0YXRlICYgKCAxIDw8IHV4TEVEICkgKSApOw0KLQkJfQ0KLQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCi0JfQ0KLX0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL1J1blRpbWVTdGF0c1RpbWVyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MmNmZjQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtby9SdW5UaW1lU3RhdHNUaW1lci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlICJGcmVlUlRPUy5oIg0KLQ0KLS8qIFV0aWxpdHkgZnVuY3Rpb25zIHRvIGltcGxlbWVudCBydW4gdGltZSBzdGF0cyBvbiBDb3J0ZXgtTSBDUFVzLiAgVGhlIGNvbGxlY3RlZA0KLXJ1biB0aW1lIGRhdGEgY2FuIGJlIHZpZXdlZCB0aHJvdWdoIHRoZSBDTEkgaW50ZXJmYWNlLiAgU2VlIHRoZSBmb2xsb3dpbmcgVVJMIGZvcg0KLW1vcmUgaW5mb3JtYXRpb24gb24gcnVuIHRpbWUgc3RhdHM6DQotaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvcnRvcy1ydW4tdGltZS1zdGF0cy5odG1sICovDQotDQotLyogQWRkcmVzc2VzIG9mIHJlZ2lzdGVycyBpbiB0aGUgQ29ydGV4LU0gZGVidWcgaGFyZHdhcmUuICovDQotI2RlZmluZSBydHNEV1RfQ1lDQ05UIAkJCSggKiggKCB2b2xhdGlsZSB1bnNpZ25lZCBsb25nICogKSAweEUwMDAxMDA0ICkgKQ0KLSNkZWZpbmUgcnRzRFdUX0NPTlRST0wgCQkJKCAqKCAoIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiApIDB4RTAwMDEwMDAgKSApDQotI2RlZmluZSBydHNTQ0JfREVNQ1IgCQkJKCAqKCAoIHZvbGF0aWxlIHVuc2lnbmVkIGxvbmcgKiApIDB4RTAwMEVERkMgKSApDQotI2RlZmluZSBydHNUUkNFTkFfQklUCQkJKCAweDAxMDAwMDAwVUwgKQ0KLSNkZWZpbmUgcnRzQ09VTlRFUl9FTkFCTEVfQklUCSggMHgwMVVMICkNCi0NCi0vKiBTaW1wbGUgc2hpZnQgZGl2aWRlIGZvciBzY2FsaW5nIHRvIGF2b2lkIGFuIG92ZXJmbG93IG9jY3VycmluZyB0b28gc29vbi4gIFRoZQ0KLW51bWJlciBvZiBiaXRzIHRvIHNoaWZ0IGRlcGVuZHMgb24gdGhlIGNsb2NrIHNwZWVkLiAqLw0KLSNkZWZpbmUgcnVudGltZVNMT1dFUl9DTE9DS19TUEVFRFMJKCA3MDAwMDAwMFVMICkNCi0jZGVmaW5lIHJ1bnRpbWVTSElGVF8xMwkJCQkxMw0KLSNkZWZpbmUgcnVudGltZU9WRVJGTE9XX0JJVF8xMwkJKCAxVUwgPDwgKCAzMlVMIC0gcnVudGltZVNISUZUXzEzICkgKQ0KLSNkZWZpbmUgcnVudGltZVNISUZUXzE0CQkJCTE0DQotI2RlZmluZSBydW50aW1lT1ZFUkZMT1dfQklUXzE0CQkoIDFVTCA8PCAoIDMyVUwgLSBydW50aW1lU0hJRlRfMTQgKSApDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotdm9pZCB2Q29uZmlndXJlVGltZXJGb3JSdW5UaW1lU3RhdHMoIHZvaWQgKQ0KLXsNCi0JLyogRW5hYmxlIFRSQ0VOQS4gKi8NCi0JcnRzU0NCX0RFTUNSID0gcnRzU0NCX0RFTUNSIHwgcnRzVFJDRU5BX0JJVDsNCi0NCi0JLyogUmVzZXQgY291bnRlci4gKi8NCi0JcnRzRFdUX0NZQ0NOVCA9IDA7DQotDQotCS8qIEVuYWJsZSBjb3VudGVyLiAqLw0KLQlydHNEV1RfQ09OVFJPTCA9IHJ0c0RXVF9DT05UUk9MIHwgcnRzQ09VTlRFUl9FTkFCTEVfQklUOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi11aW50MzJfdCB1bEdldFJ1blRpbWVDb3VudGVyVmFsdWUoIHZvaWQgKQ0KLXsNCi1zdGF0aWMgdW5zaWduZWQgbG9uZyB1bExhc3RDb3VudGVyVmFsdWUgPSAwVUwsIHVsT3ZlcmZsb3dzID0gMDsNCi11bnNpZ25lZCBsb25nIHVsVmFsdWVOb3c7DQotDQotCXVsVmFsdWVOb3cgPSBydHNEV1RfQ1lDQ05UOw0KLQ0KLQkvKiBIYXMgdGhlIHZhbHVlIG92ZXJmbG93ZWQgc2luY2UgaXQgd2FzIGxhc3QgcmVhZC4gKi8NCi0JaWYoIHVsVmFsdWVOb3cgPCB1bExhc3RDb3VudGVyVmFsdWUgKQ0KLQl7DQotCQl1bE92ZXJmbG93cysrOw0KLQl9DQotCXVsTGFzdENvdW50ZXJWYWx1ZSA9IHVsVmFsdWVOb3c7DQotDQotCS8qIENhbm5vdCB1c2UgY29uZmlnQ1BVX0NMT0NLX0haIGRpcmVjdGx5IGFzIGl0IG1heSBpdHNlbGYgbm90IGJlIGEgY29uc3RhbnQNCi0JYnV0IGluc3RlYWQgbWFwIHRvIGEgdmFyaWFibGUgdGhhdCBob2xkcyB0aGUgY2xvY2sgc3BlZWQuICovDQotDQotCS8qIFRoZXJlIGlzIG5vIHByZXNjYWxlIG9uIHRoZSBjb3VudGVyLCBzbyBzaW11bGF0ZSBpbiBzb2Z0d2FyZS4gKi8NCi0JaWYoIGNvbmZpZ0NQVV9DTE9DS19IWiA8IHJ1bnRpbWVTTE9XRVJfQ0xPQ0tfU1BFRURTICkNCi0Jew0KLQkJdWxWYWx1ZU5vdyA+Pj0gcnVudGltZVNISUZUXzEzOw0KLQkJdWxWYWx1ZU5vdyArPSAoIHJ1bnRpbWVPVkVSRkxPV19CSVRfMTMgKiB1bE92ZXJmbG93cyApOw0KLQl9DQotCWVsc2UNCi0Jew0KLQkJdWxWYWx1ZU5vdyA+Pj0gcnVudGltZVNISUZUXzE0Ow0KLQkJdWxWYWx1ZU5vdyArPSAoIHJ1bnRpbWVPVkVSRkxPV19CSVRfMTQgKiB1bE92ZXJmbG93cyApOw0KLQl9DQotDQotCXJldHVybiB1bFZhbHVlTm93Ow0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vbWFpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg0ZTRjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW8vbWFpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsMjI0ICswLDAgQEAKLS8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQotICogYW5kIGEgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24uICBUaGUNCi0gKiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgc2V0dGluZyAoZGVmaW5lZCBpbiBGcmVlUlRPU0NvbmZpZy5oKSBpcw0KLSAqIHVzZWQgdG8gc2VsZWN0IGJldHdlZW4gdGhlIHR3by4gIFRoZSBzaW1wbHkgYmxpbmt5IGRlbW8gaXMgaW1wbGVtZW50ZWQgYW5kDQotICogZGVzY3JpYmVkIGluIG1haW5fYmxpbmt5LmMuICBUaGUgbW9yZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kIGRlbW8gYXBwbGljYXRpb24NCi0gKiBpcyBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fZnVsbC5jLg0KLSAqDQotICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIGNvZGUgdGhhdCBpcyBub3QgZGVtbyBzcGVjaWZpYywgaW5jbHVkaW5nIHRoZQ0KLSAqIGhhcmR3YXJlIHNldHVwIGFuZCBGcmVlUlRPUyBob29rIGZ1bmN0aW9ucy4NCi0gKg0KLSAqLw0KLQ0KLS8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KLSNpbmNsdWRlIDxzdGRpby5oPg0KLQ0KLS8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCi0jaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAidGFzay5oIg0KLQ0KLS8qIFN0YW5kYXJkIGRlbW8gaW5jbHVkZXMgLSBqdXN0IG5lZWRlZCBmb3IgdGhlIExFRCAoUGFyVGVzdCkgaW5pdGlhbGlzYXRpb24NCi1mdW5jdGlvbi4gKi8NCi0jaW5jbHVkZSAicGFydGVzdC5oIg0KLQ0KLS8qDQotICogU2V0IHVwIHRoZSBoYXJkd2FyZSByZWFkeSB0byBydW4gdGhpcyBkZW1vLg0KLSAqLw0KLXN0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKTsNCi0NCi0vKg0KLSAqIG1haW5fYmxpbmt5KCkgaXMgdXNlZCB3aGVuIGNvbmZpZ0NSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBzZXQgdG8gMS4NCi0gKiBtYWluX2Z1bGwoKSBpcyB1c2VkIHdoZW4gY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIHNldCB0byAwLg0KLSAqLw0KLWV4dGVybiB2b2lkIG1haW5fYmxpbmt5KCB2b2lkICk7DQotZXh0ZXJuIHZvaWQgbWFpbl9mdWxsKCB2b2lkICk7DQotDQotLyogUHJvdG90eXBlcyBmb3IgdGhlIHN0YW5kYXJkIEZyZWVSVE9TIGNhbGxiYWNrL2hvb2sgZnVuY3Rpb25zIGltcGxlbWVudGVkDQotd2l0aGluIHRoaXMgZmlsZS4gKi8NCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKTsNCi12b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICk7DQotdm9pZCB2QXBwbGljYXRpb25TdGFja092ZXJmbG93SG9vayggVGFza0hhbmRsZV90IHB4VGFzaywgY2hhciAqcGNUYXNrTmFtZSApOw0KLXZvaWQgdkFwcGxpY2F0aW9uVGlja0hvb2soIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIG9uIHRoZSBGcmVlUlRPUy5vcmcgd2ViIHNpdGUgZm9yDQotZnVsbCBpbmZvcm1hdGlvbiAtIGluY2x1ZGluZyBoYXJkd2FyZSBzZXR1cCByZXF1aXJlbWVudHMuICovDQotDQotaW50IG1haW4oIHZvaWQgKQ0KLXsNCi0JLyogUHJlcGFyZSB0aGUgaGFyZHdhcmUgdG8gcnVuIHRoaXMgZGVtby4gKi8NCi0JcHJ2U2V0dXBIYXJkd2FyZSgpOw0KLQ0KLQkvKiBUaGUgY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIHNldHRpbmcgaXMgZGVzY3JpYmVkIGF0IHRoZSB0b3ANCi0Jb2YgdGhpcyBmaWxlLiAqLw0KLQkjaWYgY29uZmlnQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZID09IDENCi0Jew0KLQkJbWFpbl9ibGlua3koKTsNCi0JfQ0KLQkjZWxzZQ0KLQl7DQotCQltYWluX2Z1bGwoKTsNCi0JfQ0KLQkjZW5kaWYNCi0NCi0JcmV0dXJuIDA7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXN0YXRpYyB2b2lkIHBydlNldHVwSGFyZHdhcmUoIHZvaWQgKQ0KLXsNCi0JLyogUGVyZm9ybSBhbnkgY29uZmlndXJhdGlvbiBuZWNlc3NhcnkgdG8gdXNlIHRoZSBQYXJUZXN0IExFRCBvdXRwdXQNCi0JZnVuY3Rpb25zLiAgVGhlIG5hbWUgUGFyVGVzdCBpcyBub3cgc29tZXdoYXQgb2Jzb2xldGUgLSBvcmlnaW5hbGx5IGl0DQotCXN0b29kIGZvciBQQVJhbGxlbCBwb3J0IFRlc3QuICovDQotCXZQYXJUZXN0SW5pdGlhbGlzZSgpOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbk1hbGxvY0ZhaWxlZEhvb2soIHZvaWQgKQ0KLXsNCi0JLyogdkFwcGxpY2F0aW9uTWFsbG9jRmFpbGVkSG9vaygpIHdpbGwgb25seSBiZSBjYWxsZWQgaWYNCi0JY29uZmlnVVNFX01BTExPQ19GQUlMRURfSE9PSyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSXQgaXMgYSBob29rDQotCWZ1bmN0aW9uIHRoYXQgd2lsbCBnZXQgY2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscy4NCi0JcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGtlcm5lbCB3aGVuZXZlciBhIHRhc2ssIHF1ZXVlLA0KLQl0aW1lciBvciBzZW1hcGhvcmUgaXMgY3JlYXRlZC4gIEl0IGlzIGFsc28gY2FsbGVkIGJ5IHZhcmlvdXMgcGFydHMgb2YgdGhlDQotCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYyBvciBoZWFwXzIuYyBhcmUgdXNlZCwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUNCi0JaGVhcCBhdmFpbGFibGUgdG8gcHZQb3J0TWFsbG9jKCkgaXMgZGVmaW5lZCBieSBjb25maWdUT1RBTF9IRUFQX1NJWkUgaW4NCi0JRnJlZVJUT1NDb25maWcuaCwgYW5kIHRoZSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpIEFQSSBmdW5jdGlvbiBjYW4gYmUgdXNlZA0KLQl0byBxdWVyeSB0aGUgc2l6ZSBvZiBmcmVlIGhlYXAgc3BhY2UgdGhhdCByZW1haW5zIChhbHRob3VnaCBpdCBkb2VzIG5vdA0KLQlwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgcmVtYWluaW5nIGhlYXAgbWlnaHQgYmUgZnJhZ21lbnRlZCkuICovDQotCXRhc2tESVNBQkxFX0lOVEVSUlVQVFMoKTsNCi0JZm9yKCA7OyApOw0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvbklkbGVIb29rKCB2b2lkICkNCi17DQotCS8qIHZBcHBsaWNhdGlvbklkbGVIb29rKCkgd2lsbCBvbmx5IGJlIGNhbGxlZCBpZiBjb25maWdVU0VfSURMRV9IT09LIGlzIHNldA0KLQl0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBJdCB3aWxsIGJlIGNhbGxlZCBvbiBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgaWRsZQ0KLQl0YXNrLiAgSXQgaXMgZXNzZW50aWFsIHRoYXQgY29kZSBhZGRlZCB0byB0aGlzIGhvb2sgZnVuY3Rpb24gbmV2ZXIgYXR0ZW1wdHMNCi0JdG8gYmxvY2sgaW4gYW55IHdheSAoZm9yIGV4YW1wbGUsIGNhbGwgeFF1ZXVlUmVjZWl2ZSgpIHdpdGggYSBibG9jayB0aW1lDQotCXNwZWNpZmllZCwgb3IgY2FsbCB2VGFza0RlbGF5KCkpLiAgSWYgdGhlIGFwcGxpY2F0aW9uIG1ha2VzIHVzZSBvZiB0aGUNCi0JdlRhc2tEZWxldGUoKSBBUEkgZnVuY3Rpb24gKGFzIHRoaXMgZGVtbyBhcHBsaWNhdGlvbiBkb2VzKSB0aGVuIGl0IGlzIGFsc28NCi0JaW1wb3J0YW50IHRoYXQgdkFwcGxpY2F0aW9uSWRsZUhvb2soKSBpcyBwZXJtaXR0ZWQgdG8gcmV0dXJuIHRvIGl0cyBjYWxsaW5nDQotCWZ1bmN0aW9uLCBiZWNhdXNlIGl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgaWRsZSB0YXNrIHRvIGNsZWFuIHVwDQotCW1lbW9yeSBhbGxvY2F0ZWQgYnkgdGhlIGtlcm5lbCB0byBhbnkgdGFzayB0aGF0IGhhcyBzaW5jZSBiZWVuIGRlbGV0ZWQuICovDQotDQotCSNpZiBjb25maWdDUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgIT0gMQ0KLQl7DQotCQkvKiBJZiB0aGUgZmlsZSBzeXN0ZW0gaXMgb25seSBnb2luZyB0byBiZSBhY2Nlc3NlZCBmcm9tIG9uZSB0YXNrIHRoZW4NCi0JCUZfRlNfVEhSRUFEX0FXQVJFIGNhbiBiZSBzZXQgdG8gMCBhbmQgdGhlIHNldCBvZiBleGFtcGxlIGZpbGVzIGlzIGNyZWF0ZWQNCi0JCWJlZm9yZSB0aGUgUlRPUyBzY2hlZHVsZXIgaXMgc3RhcnRlZC4gIElmIHRoZSBmaWxlIHN5c3RlbSBpcyBnb2luZyB0byBiZQ0KLQkJYWNjZXNzIGZyb20gbW9yZSB0aGFuIG9uZSB0YXNrIHRoZW4gRl9GU19USFJFQURfQVdBUkUgbXVzdCBiZSBzZXQgdG8gMSBhbmQNCi0JCXRoZQlzZXQgb2Ygc2FtcGxlIGZpbGVzIGFyZSBjcmVhdGVkIGZyb20gdGhlIGlkbGUgdGFzayBob29rIGZ1bmN0aW9uLiAqLw0KLQkJI2lmIEZfRlNfVEhSRUFEX0FXQVJFID09IDENCi0JCXsNCi0JCQlzdGF0aWMgcG9ydEJBU0VfVFlQRSB4Q3JlYXRlZFNhbXBsZUZpbGVzID0gcGRGQUxTRTsNCi0NCi0JCQkvKiBJbml0aWFsaXNlIHRoZSBkcml2ZSBhbmQgZmlsZSBzeXN0ZW0sIHRoZW4gY3JlYXRlIGEgZmV3IGV4YW1wbGUNCi0JCQlmaWxlcy4gIFRoZSBvdXRwdXQgZnJvbSB0aGlzIGZ1bmN0aW9uIGp1c3QgZ29lcyB0byB0aGUgc3Rkb3V0IHdpbmRvdywNCi0JCQlhbGxvd2luZyB0aGUgb3V0cHV0IHRvIGJlIHZpZXdlZCB3aGVuIHRoZSBVRFAgY29tbWFuZCBjb25zb2xlIGlzIG5vdA0KLQkJCWNvbm5lY3RlZC4gKi8NCi0JCQlpZiggeENyZWF0ZWRTYW1wbGVGaWxlcyA9PSBwZEZBTFNFICkNCi0JCQl7DQotCQkJCXZDcmVhdGVBbmRWZXJpZnlTYW1wbGVGaWxlcygpOw0KLQkJCQl4Q3JlYXRlZFNhbXBsZUZpbGVzID0gcGRUUlVFOw0KLQkJCX0NCi0JCX0NCi0JCSNlbmRpZg0KLQl9DQotCSNlbmRpZg0KLX0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi12b2lkIHZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCBUYXNrSGFuZGxlX3QgcHhUYXNrLCBjaGFyICpwY1Rhc2tOYW1lICkNCi17DQotCSggdm9pZCApIHBjVGFza05hbWU7DQotCSggdm9pZCApIHB4VGFzazsNCi0NCi0JLyogUnVuIHRpbWUgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgaXMgcGVyZm9ybWVkIGlmDQotCWNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyBpcyBkZWZpbmVkIHRvIDEgb3IgMi4gIFRoaXMgaG9vaw0KLQlmdW5jdGlvbiBpcyBjYWxsZWQgaWYgYSBzdGFjayBvdmVyZmxvdyBpcyBkZXRlY3RlZC4gKi8NCi0JdGFza0RJU0FCTEVfSU5URVJSVVBUUygpOw0KLQlmb3IoIDs7ICk7DQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLXZvaWQgdkFwcGxpY2F0aW9uVGlja0hvb2soIHZvaWQgKQ0KLXsNCi0JLyogVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBieSBlYWNoIHRpY2sgaW50ZXJydXB0IGlmDQotCWNvbmZpZ1VTRV9USUNLX0hPT0sgaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIFVzZXIgY29kZSBjYW4gYmUNCi0JYWRkZWQgaGVyZSwgYnV0IHRoZSB0aWNrIGhvb2sgaXMgY2FsbGVkIGZyb20gYW4gaW50ZXJydXB0IGNvbnRleHQsIHNvDQotCWNvZGUgbXVzdCBub3QgYXR0ZW1wdCB0byBibG9jaywgYW5kIG9ubHkgdGhlIGludGVycnVwdCBzYWZlIEZyZWVSVE9TIEFQSQ0KLQlmdW5jdGlvbnMgY2FuIGJlIHVzZWQgKHRob3NlIHRoYXQgZW5kIGluIEZyb21JU1IoKSkuICovDQotfQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vLmNwcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS8uY3Byb2plY3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3MGY1YzkuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS8uY3Byb2plY3QKKysrIC9kZXYvbnVsbApAQCAtMSwzMjAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQotPD9maWxlVmVyc2lvbiA0LjAuMD8+DQotDQotPGNwcm9qZWN0IHN0b3JhZ2VfdHlwZV9pZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuWG1sUHJvamVjdERlc2NyaXB0aW9uU3RvcmFnZSI+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIj4NCi08Y2NvbmZpZ3VyYXRpb24gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1MyI+DQotPHN0b3JhZ2VNb2R1bGUgYnVpbGRTeXN0ZW1JZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuY29uZmlndXJhdGlvbkRhdGFQcm92aWRlciIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1MyIgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLnNldHRpbmdzIiBuYW1lPSJEZWJ1ZyI+DQotPGV4dGVybmFsU2V0dGluZ3M+DQotPGV4dGVybmFsU2V0dGluZz4NCi08ZW50cnkgZmxhZ3M9IlZBTFVFX1dPUktTUEFDRV9QQVRIIiBraW5kPSJpbmNsdWRlUGF0aCIgbmFtZT0iL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtIi8+DQotPGVudHJ5IGZsYWdzPSJWQUxVRV9XT1JLU1BBQ0VfUEFUSCIga2luZD0ibGlicmFyeVBhdGgiIG5hbWU9Ii9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9EZWJ1ZyIvPg0KLTwvZXh0ZXJuYWxTZXR0aW5nPg0KLTwvZXh0ZXJuYWxTZXR0aW5ncz4NCi08ZXh0ZW5zaW9ucz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FTEYiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5CaW5hcnlQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5NYWtlRXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTxleHRlbnNpb24gaWQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkdDQ0Vycm9yUGFyc2VyIiBwb2ludD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuRXJyb3JQYXJzZXIiLz4NCi08ZXh0ZW5zaW9uIGlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5HQVNFcnJvclBhcnNlciIgcG9pbnQ9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLkVycm9yUGFyc2VyIi8+DQotPGV4dGVuc2lvbiBpZD0ib3JnLmVjbGlwc2UuY2R0LmNvcmUuR0xERXJyb3JQYXJzZXIiIHBvaW50PSJvcmcuZWNsaXBzZS5jZHQuY29yZS5FcnJvclBhcnNlciIvPg0KLTwvZXh0ZW5zaW9ucz4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQotPGNvbmZpZ3VyYXRpb24gYXJ0aWZhY3RFeHRlbnNpb249ImEiIGFydGlmYWN0TmFtZT0iUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0iIGJ1aWxkQXJ0ZWZhY3RUeXBlPSJvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZEFydGVmYWN0VHlwZS5zdGF0aWNMaWIiIGJ1aWxkUHJvcGVydGllcz0ib3JnLmVjbGlwc2UuY2R0LmJ1aWxkLmNvcmUuYnVpbGRUeXBlPW9yZy5lY2xpcHNlLmNkdC5idWlsZC5jb3JlLmJ1aWxkVHlwZS5kZWJ1ZyxvcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZEFydGVmYWN0VHlwZT1vcmcuZWNsaXBzZS5jZHQuYnVpbGQuY29yZS5idWlsZEFydGVmYWN0VHlwZS5zdGF0aWNMaWIiIGNsZWFuQ29tbWFuZD0icm0gLXJmIiBkZXNjcmlwdGlvbj0iIiBlcnJvclBhcnNlcnM9Im9yZy5lY2xpcHNlLmNkdC5jb3JlLk1ha2VFcnJvclBhcnNlcjtvcmcuZWNsaXBzZS5jZHQuY29yZS5HQ0NFcnJvclBhcnNlcjtvcmcuZWNsaXBzZS5jZHQuY29yZS5HTERFcnJvclBhcnNlcjtvcmcuZWNsaXBzZS5jZHQuY29yZS5HQVNFcnJvclBhcnNlciIgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1MyIgbmFtZT0iRGVidWciIHBhcmVudD0iY2R0Lm1hbmFnZWRidWlsZC5jb25maWcuZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyI+DQotPGZvbGRlckluZm8gaWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1My4iIG5hbWU9Ii8iIHJlc291cmNlUGF0aD0iIj4NCi08dG9vbENoYWluIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2xjaGFpbi5nbnUuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjQwOTY0MDAwNSIgbmFtZT0iTWljcm9zZW1pIENvcnRleC1NMyBUb29scyIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sY2hhaW4uZ251LmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyI+DQotPHRhcmdldFBsYXRmb3JtIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRhcmdldC5nbnUucGxhdGZvcm0uY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjMyODk3MDk3MyIgbmFtZT0iJVBsYXRmb3JtTmFtZS5EYmciIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5wbGF0Zm9ybS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWciLz4NCi08YnVpbGRlciBidWlsZFBhdGg9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vRGVidWd9IiBpZD0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmJ1aWxkZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjU2ODA3MjE5OSIga2VlcEVudmlyb25tZW50SW5CdWlsZGZpbGU9ImZhbHNlIiBtYW5hZ2VkQnVpbGRPbj0idHJ1ZSIgbmFtZT0iR251IE1ha2UgQnVpbGRlciIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50YXJnZXQuZ251LmJ1aWxkZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnIi8+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMjA2NTgxOTkyNyIgbmFtZT0iR05VIEMgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWciPg0KLTxvcHRpb24gZGVmYXVsdFZhbHVlPSJnbnUuYy5vcHRpbWl6YXRpb24ubGV2ZWwubm9uZSIgaWQ9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy5vcHRpb24ub3B0aW1pemF0aW9uLmxldmVsLjY4MTQ4OTYxMSIgbmFtZT0iT3B0aW1pemF0aW9uIExldmVsIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPG9wdGlvbiBkZWZhdWx0VmFsdWU9ImdudS5jLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiBpZD0iZ251LmMuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwuMTY4MjA4MDk1MSIgbmFtZT0iRGVidWcgTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsIiB2YWx1ZT0iZ251LmMuZGVidWdnaW5nLmxldmVsLm1heCIgdmFsdWVUeXBlPSJlbnVtZXJhdGVkIi8+DQotPG9wdGlvbiBpZD0iZ251LmMuY29tcGlsZXIub3B0aW9uLmluY2x1ZGUucGF0aHMuMTM5ODY0ODUyMCIgbmFtZT0iSW5jbHVkZSBwYXRocyAoLUkpIiBzdXBlckNsYXNzPSJnbnUuYy5jb21waWxlci5vcHRpb24uaW5jbHVkZS5wYXRocyIgdmFsdWVUeXBlPSJpbmNsdWRlUGF0aCI+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnN9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfZ3Bpb30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ocGRtYX0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19udm19Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfcnRjfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlc30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc190aW1lcn0iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0fSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWd9Ii8+DQotPGxpc3RPcHRpb25WYWx1ZSBidWlsdEluPSJmYWxzZSIgdmFsdWU9IiR7d29ya3NwYWNlX2xvYzovUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsfSIvPg0KLTxsaXN0T3B0aW9uVmFsdWUgYnVpbHRJbj0iZmFsc2UiIHZhbHVlPSIke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNM30iLz4NCi08bGlzdE9wdGlvblZhbHVlIGJ1aWx0SW49ImZhbHNlIiB2YWx1ZT0iJHt3b3Jrc3BhY2VfbG9jOi9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VfSIvPg0KLTwvb3B0aW9uPg0KLTxvcHRpb24gaWQ9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5vcHRpbWl6YXRpb24uZmxhZ3MuMjI0OTQzNDE1IiBuYW1lPSJPdGhlciBvcHRpbWl6YXRpb24gZmxhZ3MiIHN1cGVyQ2xhc3M9ImdudS5jLmNvbXBpbGVyLm9wdGlvbi5vcHRpbWl6YXRpb24uZmxhZ3MiIHZhbHVlPSItZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyIgdmFsdWVUeXBlPSJzdHJpbmciLz4NCi08aW5wdXRUeXBlIGlkPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQuOTE2ODkyNDY1IiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmMuY29tcGlsZXIuaW5wdXQiLz4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4zOTU0NzA0MDEiIG5hbWU9IkdOVSBDKysgQ29tcGlsZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1ZyI+DQotPG9wdGlvbiBpZD0iZ251LmNwcC5jb21waWxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcub3B0aW9uLm9wdGltaXphdGlvbi5sZXZlbC4xMjA1ODgzNTM2IiBuYW1lPSJPcHRpbWl6YXRpb24gTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5vcHRpbWl6YXRpb24ubGV2ZWwiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLm9wdGltaXphdGlvbi5sZXZlbC5ub25lIiB2YWx1ZVR5cGU9ImVudW1lcmF0ZWQiLz4NCi08b3B0aW9uIGlkPSJnbnUuY3BwLmNvbXBpbGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy5vcHRpb24uZGVidWdnaW5nLmxldmVsLjEyMTE5MzUxMCIgbmFtZT0iRGVidWcgTGV2ZWwiIHN1cGVyQ2xhc3M9ImdudS5jcHAuY29tcGlsZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLm9wdGlvbi5kZWJ1Z2dpbmcubGV2ZWwiIHZhbHVlPSJnbnUuY3BwLmNvbXBpbGVyLmRlYnVnZ2luZy5sZXZlbC5tYXgiIHZhbHVlVHlwZT0iZW51bWVyYXRlZCIvPg0KLTwvdG9vbD4NCi08dG9vbCBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hcmNoaXZlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMjIzNDkwMDQyIiBuYW1lPSJHTlUgQXJjaGl2ZXIiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXJjaGl2ZXIuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnIj4NCi08b3V0cHV0VHlwZSBpZD0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hcmNoaXZlci5vdXRwdXQuODgyNzIzODQ2IiBvdXRwdXRQcmVmaXg9ImxpYiIgc3VwZXJDbGFzcz0iY2R0Lm1hbmFnZWRidWlsZC50b29sLmdudS5hcmNoaXZlci5vdXRwdXQiLz4NCi08L3Rvb2w+DQotPHRvb2wgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmNyb3NzLmNvcnRleG0zLmxpYi5kZWJ1Zy4xNjQ3MTczNjY2IiBuYW1lPSJHTlUgQXNzZW1ibGVyIiBzdXBlckNsYXNzPSJjZHQubWFuYWdlZGJ1aWxkLnRvb2wuZ251LmFzc2VtYmxlci5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWciPg0KLTxpbnB1dFR5cGUgaWQ9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0LjE3Njk4ODAxMjUiIHN1cGVyQ2xhc3M9ImNkdC5tYW5hZ2VkYnVpbGQudG9vbC5nbnUuYXNzZW1ibGVyLmlucHV0Ii8+DQotPC90b29sPg0KLTwvdG9vbENoYWluPg0KLTwvZm9sZGVySW5mbz4NCi08L2NvbmZpZ3VyYXRpb24+DQotPC9zdG9yYWdlTW9kdWxlPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJzY2FubmVyQ29uZmlndXJhdGlvbiI+DQotPGF1dG9kaXNjb3ZlcnkgZW5hYmxlZD0idHJ1ZSIgcHJvYmxlbVJlcG9ydGluZ0VuYWJsZWQ9InRydWUiIHNlbGVjdGVkUHJvZmlsZUlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlclByb2plY3RQcm9maWxlIi8+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5hcm0uQWN0ZWxBUk1NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcmU4MDUxcy5TRENDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0iZmFsc2UiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9ImZhbHNlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItViAtRSAtV3AgLVAgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJzZGNjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0xLkFjdGVsQ29ydGV4TTFNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0iY29tLmFjdGVsLnNvZnRjb25zb2xlLmNvcnRleG0zLkFjdGVsQ29ydGV4TTNNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImFybS1ub25lLWVhYmktZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLkdDQ1N0YW5kYXJkTWFrZVBlckZpbGVQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJtYWtlZmlsZUdlbmVyYXRvciI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1mICR7cHJvamVjdF9uYW1lfV9zY2QubWsiIGNvbW1hbmQ9Im1ha2UiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0iIGNvbW1hbmQ9ImdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuY3BwIiBjb21tYW5kPSJnKysiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQyI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jIiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NXaW5NYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUNQUCI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2crKyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnY2MgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jJnF1b3Q7JyIgY29tbWFuZD0ic2giIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxzY2FubmVyQ29uZmlnQnVpbGRJbmZvIGluc3RhbmNlSWQ9ImNkdC5tYW5hZ2VkYnVpbGQuY29uZmlnLmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuZGVidWcuMTQ2ODU2NTg1MztjZHQubWFuYWdlZGJ1aWxkLmNvbmZpZy5nbnUuY3Jvc3MuY29ydGV4bTMubGliLmRlYnVnLjE0Njg1NjU4NTMuIj4NCi08YXV0b2Rpc2NvdmVyeSBlbmFibGVkPSJ0cnVlIiBwcm9ibGVtUmVwb3J0aW5nRW5hYmxlZD0idHJ1ZSIgc2VsZWN0ZWRQcm9maWxlSWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSIvPg0KLTxwcm9maWxlIGlkPSJjb20uYWN0ZWwuc29mdGNvbnNvbGUuYXJtLkFjdGVsQVJNTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3JlODA1MXMuU0RDQ01hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9ImZhbHNlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJmYWxzZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLVYgLUUgLVdwIC1QIC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0ic2RjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMS5BY3RlbENvcnRleE0xTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9ImNvbS5hY3RlbC5zb2Z0Y29uc29sZS5jb3J0ZXhtMy5BY3RlbENvcnRleE0zTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJhcm0tbm9uZS1lYWJpLWdjYyIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuR0NDU3RhbmRhcmRNYWtlUGVyUHJvamVjdFByb2ZpbGUiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vJHtzcGVjc19maWxlfSIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5HQ0NTdGFuZGFyZE1ha2VQZXJGaWxlUHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ibWFrZWZpbGVHZW5lcmF0b3IiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItZiAke3Byb2plY3RfbmFtZX1fc2NkLm1rIiBjb21tYW5kPSJtYWtlIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLUUgLVAgLXYgLWREICR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS8ke3NwZWNzX2ZpbGV9IiBjb21tYW5kPSJnY2MiIHVzZURlZmF1bHQ9InRydWUiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L3NjYW5uZXJJbmZvUHJvdmlkZXI+DQotPC9wcm9maWxlPg0KLTxwcm9maWxlIGlkPSJvcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5HQ0NNYW5hZ2VkTWFrZVBlclByb2plY3RQcm9maWxlQ1BQIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItRSAtUCAtdiAtZEQgJHtwbHVnaW5fc3RhdGVfbG9jYXRpb259L3NwZWNzLmNwcCIgY29tbWFuZD0iZysrIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZUMiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1FIC1QIC12IC1kRCAke3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyIgY29tbWFuZD0iZ2NjIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08cHJvZmlsZSBpZD0ib3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuR0NDV2luTWFuYWdlZE1ha2VQZXJQcm9qZWN0UHJvZmlsZSI+DQotPGJ1aWxkT3V0cHV0UHJvdmlkZXI+DQotPG9wZW5BY3Rpb24gZW5hYmxlZD0idHJ1ZSIgZmlsZVBhdGg9IiIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvYnVpbGRPdXRwdXRQcm92aWRlcj4NCi08c2Nhbm5lckluZm9Qcm92aWRlciBpZD0ic3BlY3NGaWxlIj4NCi08cnVuQWN0aW9uIGFyZ3VtZW50cz0iLWMgJ2djYyAtRSAtUCAtdiAtZEQgJnF1b3Q7JHtwbHVnaW5fc3RhdGVfbG9jYXRpb259LyR7c3BlY3NfZmlsZX0mcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDUFAiPg0KLTxidWlsZE91dHB1dFByb3ZpZGVyPg0KLTxvcGVuQWN0aW9uIGVuYWJsZWQ9InRydWUiIGZpbGVQYXRoPSIiLz4NCi08cGFyc2VyIGVuYWJsZWQ9InRydWUiLz4NCi08L2J1aWxkT3V0cHV0UHJvdmlkZXI+DQotPHNjYW5uZXJJbmZvUHJvdmlkZXIgaWQ9InNwZWNzRmlsZSI+DQotPHJ1bkFjdGlvbiBhcmd1bWVudHM9Ii1jICdnKysgLUUgLVAgLXYgLWREICZxdW90OyR7cGx1Z2luX3N0YXRlX2xvY2F0aW9ufS9zcGVjcy5jcHAmcXVvdDsnIiBjb21tYW5kPSJzaCIgdXNlRGVmYXVsdD0idHJ1ZSIvPg0KLTxwYXJzZXIgZW5hYmxlZD0idHJ1ZSIvPg0KLTwvc2Nhbm5lckluZm9Qcm92aWRlcj4NCi08L3Byb2ZpbGU+DQotPHByb2ZpbGUgaWQ9Im9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLkdDQ1dpbk1hbmFnZWRNYWtlUGVyUHJvamVjdFByb2ZpbGVDIj4NCi08YnVpbGRPdXRwdXRQcm92aWRlcj4NCi08b3BlbkFjdGlvbiBlbmFibGVkPSJ0cnVlIiBmaWxlUGF0aD0iIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9idWlsZE91dHB1dFByb3ZpZGVyPg0KLTxzY2FubmVySW5mb1Byb3ZpZGVyIGlkPSJzcGVjc0ZpbGUiPg0KLTxydW5BY3Rpb24gYXJndW1lbnRzPSItYyAnZ2NjIC1FIC1QIC12IC1kRCAmcXVvdDske3BsdWdpbl9zdGF0ZV9sb2NhdGlvbn0vc3BlY3MuYyZxdW90OyciIGNvbW1hbmQ9InNoIiB1c2VEZWZhdWx0PSJ0cnVlIi8+DQotPHBhcnNlciBlbmFibGVkPSJ0cnVlIi8+DQotPC9zY2FubmVySW5mb1Byb3ZpZGVyPg0KLTwvcHJvZmlsZT4NCi08L3NjYW5uZXJDb25maWdCdWlsZEluZm8+DQotPC9zdG9yYWdlTW9kdWxlPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5leHRlcm5hbFNldHRpbmdzIi8+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9Im9yZy5lY2xpcHNlLmNkdC5pbnRlcm5hbC51aS50ZXh0LmNvbW1lbnRPd25lclByb2plY3RNYXBwaW5ncyIvPg0KLTxzdG9yYWdlTW9kdWxlIG1vZHVsZUlkPSJvcmcuZWNsaXBzZS5jZHQuY29yZS5sYW5ndWFnZS5tYXBwaW5nIi8+DQotPC9jY29uZmlndXJhdGlvbj4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPHN0b3JhZ2VNb2R1bGUgbW9kdWxlSWQ9ImNkdEJ1aWxkU3lzdGVtIiB2ZXJzaW9uPSI0LjAuMCI+DQotPHByb2plY3QgaWQ9IlJUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLmNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5jcm9zcy5jb3J0ZXhtMy5saWIuNTk3NTAzMzA0IiBuYW1lPSJTdGF0aWMgTGlicmFyeSIgcHJvamVjdFR5cGU9ImNkdC5tYW5hZ2VkYnVpbGQudGFyZ2V0LmdudS5jcm9zcy5jb3J0ZXhtMy5saWIiLz4NCi08L3N0b3JhZ2VNb2R1bGU+DQotPC9jcHJvamVjdD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLy5wcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS8ucHJvamVjdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODc2YmJiYy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtLy5wcm9qZWN0CisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCi08cHJvamVjdERlc2NyaXB0aW9uPg0KLQk8bmFtZT5SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybTwvbmFtZT4NCi0JPGNvbW1lbnQ+PC9jb21tZW50Pg0KLQk8cHJvamVjdHM+DQotCTwvcHJvamVjdHM+DQotCTxidWlsZFNwZWM+DQotCQk8YnVpbGRDb21tYW5kPg0KLQkJCTxuYW1lPm9yZy5lY2xpcHNlLmNkdC5tYW5hZ2VkYnVpbGRlci5jb3JlLmdlbm1ha2VidWlsZGVyPC9uYW1lPg0KLQkJCTxhcmd1bWVudHM+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT4/bmFtZT88L2tleT4NCi0JCQkJCTx2YWx1ZT48L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmFwcGVuZF9lbnZpcm9ubWVudDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmF1dG9CdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmFsbDwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYnVpbGRBcmd1bWVudHM8L2tleT4NCi0JCQkJCTx2YWx1ZT48L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkQ29tbWFuZDwva2V5Pg0KLQkJCQkJPHZhbHVlPm1ha2U8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmJ1aWxkTG9jYXRpb248L2tleT4NCi0JCQkJCTx2YWx1ZT4ke3dvcmtzcGFjZV9sb2M6L1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0RlYnVnfTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuY2xlYW5CdWlsZFRhcmdldDwva2V5Pg0KLQkJCQkJPHZhbHVlPmNsZWFuPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5jb250ZW50czwva2V5Pg0KLQkJCQkJPHZhbHVlPm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUuYWN0aXZlQ29uZmlnU2V0dGluZ3M8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUF1dG9CdWlsZDwva2V5Pg0KLQkJCQkJPHZhbHVlPnRydWU8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLmVuYWJsZUNsZWFuQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5lbmFibGVGdWxsQnVpbGQ8L2tleT4NCi0JCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCi0JCQkJPC9kaWN0aW9uYXJ5Pg0KLQkJCQk8ZGljdGlvbmFyeT4NCi0JCQkJCTxrZXk+b3JnLmVjbGlwc2UuY2R0Lm1ha2UuY29yZS5mdWxsQnVpbGRUYXJnZXQ8L2tleT4NCi0JCQkJCTx2YWx1ZT5hbGw8L3ZhbHVlPg0KLQkJCQk8L2RpY3Rpb25hcnk+DQotCQkJCTxkaWN0aW9uYXJ5Pg0KLQkJCQkJPGtleT5vcmcuZWNsaXBzZS5jZHQubWFrZS5jb3JlLnN0b3BPbkVycm9yPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQkJPGRpY3Rpb25hcnk+DQotCQkJCQk8a2V5Pm9yZy5lY2xpcHNlLmNkdC5tYWtlLmNvcmUudXNlRGVmYXVsdEJ1aWxkQ21kPC9rZXk+DQotCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQotCQkJCTwvZGljdGlvbmFyeT4NCi0JCQk8L2FyZ3VtZW50cz4NCi0JCTwvYnVpbGRDb21tYW5kPg0KLQkJPGJ1aWxkQ29tbWFuZD4NCi0JCQk8bmFtZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5TY2FubmVyQ29uZmlnQnVpbGRlcjwvbmFtZT4NCi0JCQk8YXJndW1lbnRzPg0KLQkJCTwvYXJndW1lbnRzPg0KLQkJPC9idWlsZENvbW1hbmQ+DQotCTwvYnVpbGRTcGVjPg0KLQk8bmF0dXJlcz4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0LmNvcmUuY25hdHVyZTwvbmF0dXJlPg0KLQkJPG5hdHVyZT5vcmcuZWNsaXBzZS5jZHQubWFuYWdlZGJ1aWxkZXIuY29yZS5tYW5hZ2VkQnVpbGROYXR1cmU8L25hdHVyZT4NCi0JCTxuYXR1cmU+b3JnLmVjbGlwc2UuY2R0Lm1hbmFnZWRidWlsZGVyLmNvcmUuU2Nhbm5lckNvbmZpZ05hdHVyZTwvbmF0dXJlPg0KLQk8L25hdHVyZXM+DQotPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9od19yZWdfaW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvaHdfcmVnX2lvLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ZmY3YzEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9od19yZWdfaW8uaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiAgU21hcnRGdXNpb24yIENvcnRleCBNaWNyb2NvbnRyb2xsZXIgU29mdHdhcmUgSW50ZXJmYWNlIC0gUGVyaXBoZXJhbA0KLSAqICBBY2Nlc3MgTGF5ZXIuDQotICoNCi0gKiAgVGhpcyBmaWxlIHByb3ZpZGVzIGludGVyZmFjZXMgdG8gcGVyZm9ybSByZWdpc3RlciBhbmQgcmVnaXN0ZXIgYml0IGxldmVsIA0KLSAqICByZWFkIC8gd3JpdGUgb3BlcmF0aW9ucy4gVGhlc2UgaW50ZXJmYWNlcyBzdXBwb3J0IGJpdC1iYW5kaW5nIGluIGNhc2Ugb2YgDQotICogIENvcnRleC1NMyBDUFUuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MjYzICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTQ6NDQ6NTggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0jaWZuZGVmIEhXX1JFR19JT19IXw0KLSNkZWZpbmUgSFdfUkVHX0lPX0hfDQotDQotI2luY2x1ZGUgPHN0ZGludC5oPiAgICAgICAgICAgICAgICAgICAgICAgLyogSW5jbHVkZSBzdGFuZGFyZCB0eXBlcyAqLw0KLQ0KLSNpZiBkZWZpbmVkICggX19DQ19BUk0gICApDQotICAjZGVmaW5lIF9fSU5MSU5FICAgICAgICAgX19pbmxpbmUgICAgICAgLyohPCBpbmxpbmUga2V5d29yZCBmb3IgQVJNIENvbXBpbGVyICAgICAgICovDQotDQotI2VsaWYgZGVmaW5lZCAoIF9fSUNDQVJNX18gKQ0KLSAgI2RlZmluZSBfX0lOTElORSAgICAgICAgaW5saW5lICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIElBUiBDb21waWxlci4gT25seSBhdmFpYWJsZSBpbiBIaWdoIG9wdGltaXphdGlvbiBtb2RlISAqLw0KLQ0KLSNlbGlmIGRlZmluZWQgICAoICBfX0dOVUNfXyAgKQ0KLSAgI2RlZmluZSBfX0lOTElORSAgICAgICAgaW5saW5lICAgICAgICAgIC8qITwgaW5saW5lIGtleXdvcmQgZm9yIEdOVSBDb21waWxlciAgICAgICAqLw0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIERlZmluaXRpb25zIGZvciByZWdpc3RlciBhY2Nlc3MNCi0gKi8NCi0NCi0jZGVmaW5lIEhXX1JFRyhhZGRyKSAgICAgICAgICAgICgqKCh2b2xhdGlsZSB1aW50MzJfdCAqKSAoYWRkcikpKQ0KLQ0KLXN0YXRpYyBfX0lOTElORSB2b2lkIHdyaXRlX3JlZzMyKHZvbGF0aWxlIHVpbnQzMl90ICogcmVnLCB1aW50MzJfdCB2YWwpDQotew0KLSAgICBIV19SRUcocmVnKSA9IHZhbDsNCi19DQotc3RhdGljIF9fSU5MSU5FIHZvaWQgd3JpdGVfcmVnMTYodm9sYXRpbGUgdWludDE2X3QgKiByZWcsIHVpbnQxNl90IHZhbCkNCi17DQotICAgIEhXX1JFRyhyZWcpID0gdmFsOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCB3cml0ZV9yZWc4KHZvbGF0aWxlIHVpbnQ4X3QgKiByZWcsIHVpbnQ4X3QgdmFsKQ0KLXsNCi0gICAgSFdfUkVHKHJlZykgPSB2YWw7DQotfQ0KLQ0KLXN0YXRpYyBfX0lOTElORSB1aW50MzJfdCByZWFkX3JlZzMyKHZvbGF0aWxlIHVpbnQzMl90ICogcmVnKQ0KLXsNCi0gICAgcmV0dXJuICggSFdfUkVHKHJlZykgKTsNCi19DQotc3RhdGljIF9fSU5MSU5FIHVpbnQxNl90IHJlYWRfcmVnMTYodm9sYXRpbGUgdWludDE2X3QgKiByZWcpDQotew0KLSAgICByZXR1cm4gKCBIV19SRUcocmVnKSApOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdWludDhfdCByZWFkX3JlZzgodm9sYXRpbGUgdWludDhfdCAqIHJlZykNCi17DQotICAgIHJldHVybiAoIEhXX1JFRyhyZWcpICk7DQotfQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIERlZmluaXRpb25zIGZvciByZWdpc3RlciBiaXRzIGFjY2VzcyB1c2luZyBiaXQtYmFuZCBhbGlhc2VzIGZvciBDb3J0ZXgtTTMgDQotICovDQotI2RlZmluZSBCSVRCQU5EKGFkZHIsYml0bnVtKSAgICAoKCh1aW50MzJfdClhZGRyICYgMHhGMDAwMDAwMCkrMHgwMjAwMDAwMCsoKCh1aW50MzJfdClhZGRyICYgMHhGRkZGRik8PDUpKyhiaXRudW08PDIpKQ0KLSNkZWZpbmUgSFdfUkVHX0JJVChyZWcsYml0bnVtKSAgKCoodm9sYXRpbGUgdW5zaWduZWQgaW50ICopKChCSVRCQU5EKHJlZyxiaXRudW0pKSkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb25zIHRvIHNldCBhIGJpdCBmaWVsZCBpbiBDb3J0ZXgtTTMgDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgc2V0X2JpdF9yZWczMih2b2xhdGlsZSB1aW50MzJfdCAqIHJlZywgdWludDhfdCBiaXQpDQotew0KLSAgICBIV19SRUdfQklUKHJlZyxiaXQpID0gMHgxOw0KLX0NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBzZXRfYml0X3JlZzE2KHZvbGF0aWxlIHVpbnQxNl90ICogcmVnLCB1aW50OF90IGJpdCkNCi17DQotICAgIEhXX1JFR19CSVQocmVnLGJpdCkgPSAweDE7DQotfQ0KLXN0YXRpYyBfX0lOTElORSB2b2lkIHNldF9iaXRfcmVnOCh2b2xhdGlsZSB1aW50OF90ICogcmVnLCB1aW50OF90IGJpdCkNCi17DQotICAgIEhXX1JFR19CSVQocmVnLGJpdCkgPSAweDE7DQotfQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIEZ1bmN0aW9ucyB0byBjbGVhciBhIGJpdCBmaWVsZCBpbiBDb3J0ZXgtTTMNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBjbGVhcl9iaXRfcmVnMzIodm9sYXRpbGUgdWludDMyX3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgSFdfUkVHX0JJVChyZWcsYml0KSA9IDB4MDsNCi19DQotc3RhdGljIF9fSU5MSU5FIHZvaWQgY2xlYXJfYml0X3JlZzE2KHZvbGF0aWxlIHVpbnQxNl90ICogcmVnLCB1aW50OF90IGJpdCkNCi17DQotICAgIEhXX1JFR19CSVQocmVnLGJpdCkgPSAweDA7DQotfQ0KLXN0YXRpYyBfX0lOTElORSB2b2lkIGNsZWFyX2JpdF9yZWc4KHZvbGF0aWxlIHVpbnQ4X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgSFdfUkVHX0JJVChyZWcsYml0KSA9IDB4MDsNCi19DQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogRnVuY3Rpb25zIHRvIHJlYWQgYSBiaXQgZmllbGQgaW4gQ29ydGV4LU0zDQotICovDQotc3RhdGljIF9fSU5MSU5FIHVpbnQ4X3QgcmVhZF9iaXRfcmVnMzIodm9sYXRpbGUgdWludDMyX3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgcmV0dXJuIChIV19SRUdfQklUKHJlZyxiaXQpKTsNCi19DQotc3RhdGljIF9fSU5MSU5FIHVpbnQ4X3QgcmVhZF9iaXRfcmVnMTYodm9sYXRpbGUgdWludDE2X3QgKiByZWcsIHVpbnQ4X3QgYml0KQ0KLXsNCi0gICAgcmV0dXJuIChIV19SRUdfQklUKHJlZyxiaXQpKTsNCi19DQotc3RhdGljIF9fSU5MSU5FIHVpbnQ4X3QgcmVhZF9iaXRfcmVnOCh2b2xhdGlsZSB1aW50OF90ICogcmVnLCB1aW50OF90IGJpdCkNCi17DQotICAgIHJldHVybiAoSFdfUkVHX0JJVChyZWcsYml0KSk7DQotfQ0KLQ0KLSNlbmRpZiAvKiBIV19SRUdfSU9fSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL20yc3h4eC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9tMnN4eHguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJjZDcyYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL20yc3h4eC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjc0OSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiAgTWljcm9zZW1pIFNtYXJ0RnVzaW9uMiBDb3J0ZXggTWljcm9jb250cm9sbGVyIFNvZnR3YXJlIEludGVyZmFjZSAtIFBlcmlwaGVyYWwNCi0gKiAgQWNjZXNzIExheWVyLg0KLSAqDQotICogIFRoaXMgZmlsZSBkZXNjcmliZXMgdGhlIGludGVycnVwdCBhc3NpZ25tZW50IGFuZCBwZXJpcGhlcmFsIHJlZ2lzdGVycyBmb3INCi0gKiAgdGhlIFNtYXJ0RnVzaW9uMiBmYW1pbGx5IG9mIGRldmljZXMuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY3ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NDU6MzkgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIF9fU01BUlRGVVNJT04yX0NNU0lTX1BBTF9IX18NCi0jZGVmaW5lIF9fU01BUlRGVVNJT04yX0NNU0lTX1BBTF9IX18NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKg0KLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogLS0tLS0tLS0tLSBJbnRlcnJ1cHQgTnVtYmVyIERlZmluaXRpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqLw0KLQ0KLXR5cGVkZWYgZW51bSBJUlFuDQotew0KLS8qKioqKiogIENvcnRleC1NMyBQcm9jZXNzb3IgRXhjZXB0aW9ucyBOdW1iZXJzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0gIE5vbk1hc2thYmxlSW50X0lSUW4gICAgICAgICAgICAgPSAtMTQsICAgICAgLyohPCAyIE5vbiBNYXNrYWJsZSBJbnRlcnJ1cHQgLSBXYXRjaGRvZyB0aW1lb3V0IGludGVycnVwdCovDQotICBIYXJkRmF1bHRfSVJRbiAgICAgICAgICAgICAgICAgID0gLTEzLCAgICAgIC8qITwgMiBIYXJkIEZhdWx0IEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgTWVtb3J5TWFuYWdlbWVudF9JUlFuICAgICAgICAgICA9IC0xMiwgICAgICAvKiE8IDQgQ29ydGV4LU0zIE1lbW9yeSBNYW5hZ2VtZW50IEludGVycnVwdCAgICAgICAgICAgICAgKi8NCi0gIEJ1c0ZhdWx0X0lSUW4gICAgICAgICAgICAgICAgICAgPSAtMTEsICAgICAgLyohPCA1IENvcnRleC1NMyBCdXMgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICovDQotICBVc2FnZUZhdWx0X0lSUW4gICAgICAgICAgICAgICAgID0gLTEwLCAgICAgIC8qITwgNiBDb3J0ZXgtTTMgVXNhZ2UgRmF1bHQgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAqLw0KLSAgU1ZDYWxsX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IC01LCAgICAgICAvKiE8IDExIENvcnRleC1NMyBTViBDYWxsIEludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIERlYnVnTW9uaXRvcl9JUlFuICAgICAgICAgICAgICAgPSAtNCwgICAgICAgLyohPCAxMiBDb3J0ZXgtTTMgRGVidWcgTW9uaXRvciBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICovDQotICBQZW5kU1ZfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gLTIsICAgICAgIC8qITwgMTQgQ29ydGV4LU0zIFBlbmQgU1YgSW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgU3lzVGlja19JUlFuICAgICAgICAgICAgICAgICAgICA9IC0xLCAgICAgICAvKiE8IDE1IENvcnRleC1NMyBTeXN0ZW0gVGljayBJbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgKi8NCi0NCi0vKioqKioqICBTbWFydEZ1c2lvbjIgc3BlY2lmaWMgSW50ZXJydXB0IE51bWJlcnMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSAgV2RvZ1dha2V1cF9JUlFuICAgICAgICAgICAgICAgICA9IDAsICAgICAgICAvKiE8IFdhdGNoRG9nIHdha2V1cCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFJUQ19XYWtldXBfSVJRbiAgICAgICAgICAgICAgICAgPSAxLCAgICAgICAgLyohPCBSVEMgd2FrZXVwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBTUEkwX0lSUW4gICAgICAgICAgICAgICAgICAgICAgID0gMiwgICAgICAgIC8qITwgU1BJMCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgU1BJMV9JUlFuICAgICAgICAgICAgICAgICAgICAgICA9IDMsICAgICAgICAvKiE8IFNQSTEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEkyQzBfSVJRbiAgICAgICAgICAgICAgICAgICAgICAgPSA0LCAgICAgICAgLyohPCBJMkMwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBJMkMwX1NNQkFsZXJ0X0lSUW4gICAgICAgICAgICAgID0gNSwgICAgICAgIC8qITwgSTJDMCBTTUJ1cyBBbGVydCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgSTJDMF9TTUJ1c19JUlFuICAgICAgICAgICAgICAgICA9IDYsICAgICAgICAvKiE8IEkyQzAgU01CdXMgU3VzcGVuZCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEkyQzFfSVJRbiAgICAgICAgICAgICAgICAgICAgICAgPSA3LCAgICAgICAgLyohPCBJMkMxIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBJMkMxX1NNQkFsZXJ0X0lSUW4gICAgICAgICAgICAgID0gOCwgICAgICAgIC8qITwgSTJDMSBTTUJ1cyBBbGVydCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgSTJDMV9TTUJ1c19JUlFuICAgICAgICAgICAgICAgICA9IDksICAgICAgICAvKiE8IEkyQzEgU01CdXMgU3VzcGVuZCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFVBUlQwX0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSAxMCwgICAgICAgLyohPCBVQVJUMCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBVQVJUMV9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gMTEsICAgICAgIC8qITwgVUFSVDEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRXRoZXJuZXRNQUNfSVJRbiAgICAgICAgICAgICAgICA9IDEyLCAgICAgICAvKiE8IEV0aGVybmV0IE1BQyBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIERNQV9JUlFuICAgICAgICAgICAgICAgICAgICAgICAgPSAxMywgICAgICAgLyohPCBQZXJpcGhlcmFsIERNQSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBUaW1lcjFfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gMTQsICAgICAgIC8qITwgVGltZXIxIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgVGltZXIyX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDE1LCAgICAgICAvKiE8IFRpbWVyMiBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIENBTl9JUlFuICAgICAgICAgICAgICAgICAgICAgICAgPSAxNiwgICAgICAgLyohPCBDQU4gY29udHJvbGxlciBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBFTlZNMF9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gMTcsICAgICAgIC8qITwgZU5WTTAgb3BlcmF0aW9uIGNvbXBsZXRpb24gaW50ZXJydXB0ICAgICAgICAgICAgICAgICAqLw0KLSAgRU5WTTFfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDE4LCAgICAgICAvKiE8IGVOVk0xIG9wZXJhdGlvbiBjb21wbGV0aW9uIGludGVycnVwdCAgICAgICAgICAgICAgICAgKi8NCi0gIENvbUJsa19JUlFuICAgICAgICAgICAgICAgICAgICAgPSAxOSwgICAgICAgLyohPCBDT00gYmxvY2sgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBVU0JfSVJRbiAgICAgICAgICAgICAgICAgICAgICAgID0gMjAsICAgICAgIC8qITwgVVNCIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgVVNCX0RNQV9JUlFuICAgICAgICAgICAgICAgICAgICA9IDIxLCAgICAgICAvKiE8IFVTQiBETUEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIFBMTF9Mb2NrX0lSUW4gICAgICAgICAgICAgICAgICAgPSAyMiwgICAgICAgLyohPCBQTEwgbG9jayBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBQTExfTG9ja0xvc3RfSVJRbiAgICAgICAgICAgICAgID0gMjMsICAgICAgIC8qITwgUExMIGxvc3Mgb2YgbG9jayBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgQ29tbVN3aXRjaEVycm9yX0lSICAgICAgICAgICAgICA9IDI0LCAgICAgICAvKiE8IENvbW11bmljYXRpb25zIFN3aXRjaCBlcnJvciBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgKi8NCi0gIENhY2hlRXJyb3JfSVJRbiAgICAgICAgICAgICAgICAgPSAyNSwgICAgICAgLyohPCBDYWNoZSBlcnJvciBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBERFJfSVJRbiAgICAgICAgICAgICAgICAgICAgICAgID0gMjYsICAgICAgIC8qITwgRERSIGNvbnRyb2xsZXIgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgSFBETUFfQ29tcGxldGVfSVJRbiAgICAgICAgICAgICA9IDI3LCAgICAgICAvKiE8IEhpZ2ggc3BlZWQgRE1BIHRyYW5zZmVyIGNvbXBsZXRlIGludGVycnVwdCAgICAgICAgICAgKi8NCi0gIEhQRE1BX0Vycm9yX0lSUW4gICAgICAgICAgICAgICAgPSAyOCwgICAgICAgLyohPCBIaWdoIHNwZWVkIERNQSB0cmFuc2ZlciBlcnJvciBpbnRlcnJ1cHQgICAgICAgICAgICAgICovDQotICBFQ0NfRXJyb3JfSVJRbiAgICAgICAgICAgICAgICAgID0gMjksICAgICAgIC8qITwgRUNDIGVycm9yIGRldGVjdGVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgTUREUl9JT0NhbGliX0lSUW4gICAgICAgICAgICAgICA9IDMwLCAgICAgICAvKiE8IE1ERFIgQ2FsaWJyYXRpb24gZmluaXNoZWQgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgKi8NCi0gIEZBQl9QTExfTG9ja19JUlFuICAgICAgICAgICAgICAgPSAzMSwgICAgICAgLyohPCBNU1NERFIgRmFicmljIFBMTCBsb2NrIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAqLw0KLSAgRkFCX1BMTF9Mb2NrTG9zdF9JUlFuICAgICAgICAgICA9IDMyLCAgICAgICAvKiE8IE1TU0REUiBGYWJyaWMgUExMIGxvY2sgbG9zdCBpbnRlcnJ1cHQgICAgICAgICAgICAgICovDQotICBGSUM2NF9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gMzMsICAgICAgIC8qITwgRklDNjQgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMF9JUlFuICAgICAgICAgICAgICAgICA9IDM0LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTFfSVJRbiAgICAgICAgICAgICAgICAgPSAzNSwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnEyX0lSUW4gICAgICAgICAgICAgICAgID0gMzYsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxM19JUlFuICAgICAgICAgICAgICAgICA9IDM3LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTRfSVJRbiAgICAgICAgICAgICAgICAgPSAzOCwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnE1X0lSUW4gICAgICAgICAgICAgICAgID0gMzksICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxNl9JUlFuICAgICAgICAgICAgICAgICA9IDQwLCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCA2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTdfSVJRbiAgICAgICAgICAgICAgICAgPSA0MSwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnE4X0lSUW4gICAgICAgICAgICAgICAgID0gNDIsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxOV9JUlFuICAgICAgICAgICAgICAgICA9IDQzLCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCA5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTEwX0lSUW4gICAgICAgICAgICAgICAgPSA0NCwgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnExMV9JUlFuICAgICAgICAgICAgICAgID0gNDUsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDExICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMTJfSVJRbiAgICAgICAgICAgICAgICA9IDQ2LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEZhYnJpY0lycTEzX0lSUW4gICAgICAgICAgICAgICAgPSA0NywgICAgICAgLyohPCBGUEdBIGZhYnJpYyBpbnRlcnJ1cHQgMTMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBGYWJyaWNJcnExNF9JUlFuICAgICAgICAgICAgICAgID0gNDgsICAgICAgIC8qITwgRlBHQSBmYWJyaWMgaW50ZXJydXB0IDE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgRmFicmljSXJxMTVfSVJRbiAgICAgICAgICAgICAgICA9IDQ5LCAgICAgICAvKiE8IEZQR0EgZmFicmljIGludGVycnVwdCAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8gIA0KLSAgR1BJTzBfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDUwLCAgICAgICAvKiE8IEdQSU8gMCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xX0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1MSwgICAgICAgLyohPCBHUElPIDEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMl9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTIsICAgICAgIC8qITwgR1BJTyAyIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzNfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDUzLCAgICAgICAvKiE8IEdQSU8gMyBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU80X0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1NCwgICAgICAgLyohPCBHUElPIDQgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPNV9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTUsICAgICAgIC8qITwgR1BJTyA1IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzZfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDU2LCAgICAgICAvKiE8IEdQSU8gNiBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU83X0lSUW4gICAgICAgICAgICAgICAgICAgICAgPSA1NywgICAgICAgLyohPCBHUElPIDcgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPOF9JUlFuICAgICAgICAgICAgICAgICAgICAgID0gNTgsICAgICAgIC8qITwgR1BJTyA4IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzlfSVJRbiAgICAgICAgICAgICAgICAgICAgICA9IDU5LCAgICAgICAvKiE8IEdQSU8gOSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xMF9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2MCwgICAgICAgLyohPCBHUElPIDEwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMTFfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjEsICAgICAgIC8qITwgR1BJTyAxMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzEyX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDYyLCAgICAgICAvKiE8IEdQSU8gMTIgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xM19JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2MywgICAgICAgLyohPCBHUElPIDEzIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMTRfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjQsICAgICAgIC8qITwgR1BJTyAxNCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzE1X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDY1LCAgICAgICAvKiE8IEdQSU8gMTUgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xNl9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2NiwgICAgICAgLyohPCBHUElPIDE2IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMTdfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNjcsICAgICAgIC8qITwgR1BJTyAxNyBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzE4X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDY4LCAgICAgICAvKiE8IEdQSU8gMTggaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8xOV9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA2OSwgICAgICAgLyohPCBHUElPIDE5IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjBfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzAsICAgICAgIC8qITwgR1BJTyAyMCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzIxX0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDcxLCAgICAgICAvKiE8IEdQSU8gMjEgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yMl9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3MiwgICAgICAgLyohPCBHUElPIDIyIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjNfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzMsICAgICAgIC8qITwgR1BJTyAyMyBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzI0X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDc0LCAgICAgICAvKiE8IEdQSU8gMjQgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yNV9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3NSwgICAgICAgLyohPCBHUElPIDI1IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovIA0KLSAgR1BJTzI2X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDc2LCAgICAgICAvKiE8IEdQSU8gMjYgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8yN19JUlFuICAgICAgICAgICAgICAgICAgICAgPSA3NywgICAgICAgLyohPCBHUElPIDI3IGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMjhfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gNzgsICAgICAgIC8qITwgR1BJTyAyOCBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLSAgR1BJTzI5X0lSUW4gICAgICAgICAgICAgICAgICAgICA9IDc5LCAgICAgICAvKiE8IEdQSU8gMjkgaW50ZXJydXB0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0gIEdQSU8zMF9JUlFuICAgICAgICAgICAgICAgICAgICAgPSA4MCwgICAgICAgLyohPCBHUElPIDMwIGludGVycnVwdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotICBHUElPMzFfSVJRbiAgICAgICAgICAgICAgICAgICAgID0gODEgICAgICAgIC8qITwgR1BJTyAzMSBpbnRlcnJ1cHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLX0gSVJRbl9UeXBlOw0KLQ0KLS8qDQotICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiAtLS0tLS0tLS0tLSBQcm9jZXNzb3IgYW5kIENvcmUgUGVyaXBoZXJhbCBTZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICovDQotI2RlZmluZSBfX0NNM19SRVYgICAgICAgICAgICAgICAgIDB4MDIwMSAgICAvKiE8IENvcmUgcmV2aXNpb24gcjJwMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBfX01QVV9QUkVTRU5UICAgICAgICAgICAgIDEgICAgICAgICAvKiE8IE1QVSBwcmVzZW50IG9yIG5vdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotI2RlZmluZSBfX05WSUNfUFJJT19CSVRTICAgICAgICAgIDQgICAgICAgICAvKiE8IE51bWJlciBvZiBCaXRzIHVzZWQgZm9yIFByaW9yaXR5IExldmVscyAgICAgICAgICovDQotI2RlZmluZSBfX1ZlbmRvcl9TeXNUaWNrQ29uZmlnICAgIDAgICAgICAgICAvKiE8IFNldCB0byAxIGlmIGRpZmZlcmVudCBTeXNUaWNrIENvbmZpZyBpcyB1c2VkICAgICovDQotDQotI2luY2x1ZGUgPGNvcmVfY20zLmg+ICAgLyogQ29ydGV4LU0zIHByb2Nlc3NvciBhbmQgY29yZSBwZXJpcGhlcmFscyAgICAgICAgICAgKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qICAgICAgICAgICAgICAgIERldmljZSBTcGVjaWZpYyBQZXJpcGhlcmFsIHJlZ2lzdGVycyBzdHJ1Y3R1cmVzICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jaWYgZGVmaW5lZCAgICggX19DQ19BUk0gICApDQotICAvKiBFbmFibGUgYW5vbnltb3VzIHVuaW9ucyB3aGVuIGJ1aWxkaW5nIHVzaW5nIEtlaWwtTURLICovDQotICAjcHJhZ21hIGFub25fdW5pb25zDQotI2VuZGlmDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVBUlQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIHVuaW9uDQotICAgIHsNCi0gICAgICAgIF9fSSAgdWludDhfdCAgICBSQlI7DQotICAgICAgICBfX08gIHVpbnQ4X3QgICAgVEhSOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIERMUjsNCi0gICAgICAgICAgICAgdWludDMyX3QgICBSRVNFUlZFRDA7DQotICAgIH07DQotDQotICAgIHVuaW9uDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgRE1SOw0KLSAgICAgICAgX19JTyB1aW50OF90ICBJRVI7DQotICAgICAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMTsNCi0gICAgfTsNCi0NCi0gICAgdW5pb24NCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50OF90ICBJSVI7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgIEZDUjsNCi0gICAgICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQyOw0KLSAgICB9Ow0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIExDUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDNbM107DQotDQotICAgIF9fSU8gdWludDhfdCAgTUNSOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVENFszXTsNCi0NCi0gICAgX19JICB1aW50OF90ICBMU1I7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQ1WzNdOw0KLQ0KLSAgICBfX0kgIHVpbnQ4X3QgIE1TUjsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDZbM107DQotDQotICAgIF9fSU8gdWludDhfdCAgU1I7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQ3WzddOw0KLQ0KLSAgICBfX0lPIHVpbnQ4X3QgIElFTTsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDhbM107DQotDQotICAgIF9fSU8gdWludDhfdCAgSUlNOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEOVs3XTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBNTTA7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxMFszXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBNTTE7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxMVszXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBNTTI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxMlszXTsNCi0NCi0gICAgX19JTyB1aW50OF90ICBERlI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxM1s3XTsNCi0NCi0gICAgIF9fSU8gdWludDhfdCBHRlI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxNFszXTsNCi0NCi0gICAgIF9fSU8gdWludDhfdCBUVEc7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxNVszXTsNCi0NCi0gICAgIF9fSU8gdWludDhfdCBSVE87DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxNlszXTsNCi0NCi0gICAgIF9fSU8gdWludDhfdCBBRFI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxN1szXTsNCi0NCi19IFVBUlRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSTJDIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50OF90ICBDVFJMOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEMDsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDE7DQotICAgICAgICAgdWludDhfdCAgU1RBVFVTOw0KLSAgICAgICAgIHVpbnQ4X3QgIFJFU0VSVkVEMjsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDM7DQotICAgIF9fSU8gdWludDhfdCAgREFUQTsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDQ7DQotICAgICAgICAgdWludDE2X3QgUkVTRVJWRUQ1Ow0KLSAgICBfX0lPIHVpbnQ4X3QgIEFERFI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQ2Ow0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVENzsNCi0gICAgX19JTyB1aW50OF90ICBTTUJVUzsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDg7DQotICAgICAgICAgdWludDE2X3QgUkVTRVJWRUQ5Ow0KLSAgICBfX0lPIHVpbnQ4X3QgIEZSRVE7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxMDsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDExOw0KLSAgICBfX0lPIHVpbnQ4X3QgIEdMSVRDSFJFRzsNCi0gICAgICAgICB1aW50OF90ICBSRVNFUlZFRDEyOw0KLSAgICAgICAgIHVpbnQxNl90IFJFU0VSVkVEMTM7DQotICAgIF9fSU8gdWludDhfdCAgU0xBVkUxX0FERFI7DQotICAgICAgICAgdWludDhfdCAgUkVTRVJWRUQxNDsNCi0gICAgICAgICB1aW50MTZfdCBSRVNFUlZFRDE1Ow0KLX0gSTJDX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBJMkMgYml0IGJhbmQNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX0NSMDsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX0NSMTsNCi0gICAgX19JTyB1aW50MzJfdCBDVFJMX0FBOw0KLSAgICBfX0lPIHVpbnQzMl90IENUUkxfU0k7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TVE87DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TVEE7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTF9FTlMxOw0KLSAgICBfX0lPIHVpbnQzMl90IENUUkxfQ1IyOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMFs1Nl07DQotICAgIF9fSU8gdWludDMyX3QgREFUQV9ESVI7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzMxXTsNCi0gICAgX19JTyB1aW50MzJfdCBBRERSX0dDOw0KLX0gSTJDX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU1BJIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBDT05UUk9MOw0KLSAgICBfX0lPIHVpbnQzMl90IFRYUlhERl9TSVpFOw0KLSAgICBfX0kgIHVpbnQzMl90IFNUQVRVUzsNCi0gICAgX19PICB1aW50MzJfdCBJTlRfQ0xFQVI7DQotICAgIF9fSSAgdWludDMyX3QgUlhfREFUQTsNCi0gICAgX19PICB1aW50MzJfdCBUWF9EQVRBOw0KLSAgICBfX0lPIHVpbnQzMl90IENMS19HRU47DQotICAgIF9fSU8gdWludDMyX3QgU0xBVkVfU0VMRUNUOw0KLSAgICBfX0kgIHVpbnQzMl90IE1JUzsNCi0gICAgX19JICB1aW50MzJfdCBSSVM7DQotICAgIF9fSU8gdWludDMyX3QgQ09OVFJPTDI7DQotICAgIF9fSU8gdWludDMyX3QgQ09NTUFORDsNCi0gICAgX19JTyB1aW50MzJfdCBQS1RTSVpFOw0KLSAgICBfX0lPIHVpbnQzMl90IENNRFNJWkU7DQotICAgIF9fSU8gdWludDMyX3QgSFdTVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgU1RBVDg7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTDA7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTDE7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTDI7DQotICAgIF9fSU8gdWludDMyX3QgQ1RSTDM7DQotfSBTUElfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR1BJTyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzBfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMV9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yX0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzNfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fNF9DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT181X0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzZfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fN19DRkc7DQotICAgIF9fSU8gdWludDMyX3QgR1BJT184X0NGRzsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzlfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTBfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTFfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTJfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTNfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTRfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTVfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTZfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTdfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMThfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTlfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjBfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjFfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjJfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjNfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjRfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjVfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjZfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjdfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjhfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjlfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMzBfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMzFfQ0ZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fSVJROw0KLSAgICBfX0kgIHVpbnQzMl90IEdQSU9fSU47DQotICAgIF9fSU8gdWludDMyX3QgR1BJT19PVVQ7DQotfSBHUElPX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBHUElPIGJpdCBiYW5kDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18wX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18zX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT180X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT181X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT182X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT183X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT184X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT185X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xMF9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTFfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzEyX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xM19DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTRfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzE1X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xNl9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMTdfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzE4X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18xOV9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjBfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzIxX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yMl9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjNfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzI0X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yNV9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjZfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzI3X0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18yOF9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fMjlfQ0ZHWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPXzMwX0NGR1szMl07DQotICAgIF9fSU8gdWludDMyX3QgR1BJT18zMV9DRkdbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IEdQSU9fSVJRWzMyXTsNCi0gICAgX19JICB1aW50MzJfdCBHUElPX0lOWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBHUElPX09VVFszMl07DQotfSBHUElPX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhQRE1BIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQVNBUl9SRUcgICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQURBUl9SRUcgICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX1JFRyAgICAgICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQVNSX1JFRyAgICAgICAgICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQVBUUl9SRUcgICAgICAgICAgICAgIDsNCi19SFBETUFfRGVzY3JpcHRvcl9UeXBlRGVmOw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BRURSX1JFRyAgICAgICAgICAgICAgOw0KLSAgICBIUERNQV9EZXNjcmlwdG9yX1R5cGVEZWYgIERlc2NyaXB0b3JbNF0gOw0KLSAgICBfX08gIHVpbnQzMl90IEhQRE1BSUNSX1JFRyAgICAgICAgICAgICAgOw0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BRFJfUkVHICAgICAgICAgICAgICAgOw0KLX0gSFBETUFfVHlwZURlZjsNCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDBbNjRdOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfWEZSX1NJWkVbMTZdICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9EQ1BfVkFMSUQgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX0RDUF9YRlJfRElSICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfRENQX0NMUiAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9EQ1BfUEFVU0UgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIUERNQUNSX1hGUl9DTVBfSU5UICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRE1BQ1JfWEZSX0VSUl9JTlQgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSFBETUFDUl9OT05fV09SRF9JTlQgICAgIDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDFbOV07DQotDQotICAgIF9fSSAgdWludDMyX3QgSFBETUFTUl9EQ1BfQUNUSVZFICAgICAgIDsNCi0gICAgX19JICB1aW50MzJfdCBIUERNQVNSX0RDUF9DTVBMRVQgICAgICAgOw0KLSAgICBfX0kgIHVpbnQzMl90IEhQRE1BU1JfRENQX1NFUlIgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFTUl9EQ1BfREVSUiAgICAgICAgIDsNCi0gICAgICAgICB1aW50MzJfdCBSRVNFUlZFRDJbNjBdICAgICAgICAgICAgOw0KLX1IUERNQV9EZXNjcmlwdG9yX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIEhQRE1BIGJpdCBiYW5kDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFFRFJfRENQX0VNUFRZWzRdICAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFFRFJfRENQX0NNUExFVFs0XSAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFFRFJfRENQX0VSUls0XSAgICAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFFRFJfRENQX05PTl9XT1JEX0VSUls0XSAgICA7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzE2XSAgICAgICAgICAgICAgICAgICA7DQotDQotICAgIEhQRE1BX0Rlc2NyaXB0b3JfQml0QmFuZF9UeXBlRGVmIERlc2NyaXB0b3JbNF07DQotDQotICAgIF9fTyAgdWludDMyX3QgSFBETUFJQ1JfQ0xSX1hGUl9JTlRbNF0gICAgICAgICA7DQotICAgIF9fTyAgdWludDMyX3QgSFBETUFJQ1JfTk9OX1dPUkRfSU5UWzRdICAgICAgICA7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzE2XSAgICAgICAgICAgICAgICAgICA7DQotDQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9CRlJfRU1QVFkgICAgICAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9CRlJfRlVMTCAgICAgICAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9CRlJfUkRfUE5UUlszXSAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9CRlJfV1JfUE5UUiBbM10gICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9BSE0xX0NTVF9EQkdbNF0gICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9BSE0yX0NTVF9EQkdbNF0gICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9XQkNfQ1NUX0RCR1szXSAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9SQkNfQ1NUX0RCR1szXSAgICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9SUkJOX0NTVF9EQkdbNF0gICAgICAgICA7DQotICAgIF9fSSAgdWludDMyX3QgSFBETUFEUl9ETUFfQ1NUX0RCR1s0XSAgICAgICAgICA7DQotDQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQyWzRdICAgICAgICAgICAgICAgICAgICA7DQotfUhQRE1BX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUlRDIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBDT05UUk9MX1JFRyAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgTU9ERV9SRUcgICAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFBSRVNDQUxFUl9SRUcgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBBTEFSTV9MT1dFUl9SRUcgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgQUxBUk1fVVBQRVJfUkVHICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IENPTVBBUkVfTE9XRVJfUkVHICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBDT01QQVJFX1VQUEVSX1JFRyAgICAgICA7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQwICAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IERBVEVfVElNRV9MT1dFUl9SRUcgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBEQVRFX1RJTUVfVVBQRVJfUkVHICAgICA7DQotDQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQxWzJdICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFNFQ09ORFNfUkVHICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBNSU5VVEVTX1JFRyAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgSE9VUlNfUkVHICAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IERBWV9SRUcgICAgICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBNT05USF9SRUcgICAgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgWUVBUl9SRUcgICAgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFdFRUtEQVlfUkVHICAgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBXRUVLX1JFRyAgICAgICAgICAgICAgICA7DQotDQotICAgIF9fSU8gdWludDMyX3QgU0VDT05EU19DTlRfUkVHICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IE1JTlVURVNfQ05UX1JFRyAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBIT1VSU19DTlRfUkVHICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgREFZX0NOVF9SRUcgICAgICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IE1PTlRIX0NOVF9SRUcgICAgICAgICAgIDsNCi0gICAgX19JTyB1aW50MzJfdCBZRUFSX0NOVF9SRUcgICAgICAgICAgICA7DQotICAgIF9fSU8gdWludDMyX3QgV0VFS0RBWV9DTlRfUkVHICAgICAgICAgOw0KLSAgICBfX0lPIHVpbnQzMl90IFdFRUtfQ05UX1JFRyAgICAgICAgICAgIDsNCi19IFJUQ19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRpbWVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTFfVkFMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFfTE9BRFZBTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xX0JHTE9BRFZBTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0xX0NUUkw7DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9SSVM7DQotICAgIF9fSSAgdWludDMyX3QgVElNMV9NSVM7DQotDQotICAgIF9fSSAgdWludDMyX3QgVElNMl9WQUw7DQotICAgIF9fSU8gdWludDMyX3QgVElNMl9MT0FEVkFMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfQkdMT0FEVkFMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfQ1RSTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0yX1JJUzsNCi0gICAgX19JICB1aW50MzJfdCBUSU0yX01JUzsNCi0NCi0gICAgX19JICB1aW50MzJfdCBUSU02NF9WQUxfVTsNCi0gICAgX19JICB1aW50MzJfdCBUSU02NF9WQUxfTDsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9MT0FEVkFMX1U7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfTE9BRFZBTF9MOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X0JHTE9BRFZBTF9VOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X0JHTE9BRFZBTF9MOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0X0NUUkw7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfUklTOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTY0X01JUzsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9NT0RFOw0KLX0gVElNRVJfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFRpbWVyIGJpdCBiYW5kDQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgVElNMV9WQUxVRV9CSVRbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFfTE9BRFZBTFszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9CR0xPQURWQUxbMzJdOw0KLQ0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFFTkFCTEU7DQotICAgIF9fSU8gdWludDMyX3QgVElNMU1PREU7DQotICAgIF9fSU8gdWludDMyX3QgVElNMUlOVEVOOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTFfQ1RSTF9SRVNFUlZFRFsyOV07DQotICAgIF9fSU8gdWludDMyX3QgVElNMV9SSVNbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTFfTUlTWzMyXTsNCi0NCi0gICAgX19JICB1aW50MzJfdCBUSU0yX1ZBTFVFWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0yX0xPQURWQUxbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfQkdMT0FEVkFMWzMyXTsNCi0NCi0gICAgX19JTyB1aW50MzJfdCBUSU0yRU5BQkxFOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJNT0RFOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJJTlRFTjsNCi0gICAgX19JTyB1aW50MzJfdCBUSU0yX0NUUkxbMjldOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTJfUklTWzMyXTsNCi0gICAgX19JICB1aW50MzJfdCBUSU0yX01JU1szMl07DQotDQotICAgIF9fSSAgdWludDMyX3QgVElNNjRWQUxVRVVbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTY0VkFMVUVMWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NExPQURWQUxVRVVbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0TE9BRFZBTFVFTFszMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRCR0xPQURWQUxVRVVbMzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTTY0QkdMT0FEVkFMVUVMWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NEVOQUJMRTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NE1PREU7DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRJTlRFTjsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9DVFJMWzI5XTsNCi0gICAgX19JTyB1aW50MzJfdCBUSU02NF9SSVNbMzJdOw0KLSAgICBfX0kgIHVpbnQzMl90IFRJTTY0X01JU1szMl07DQotICAgIF9fSU8gdWludDMyX3QgVElNNjRfTU9ERVszMl07DQotfSBUSU1FUl9CaXRCYW5kX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBXYXRjaGRvZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIF9fSSAgdWludDMyX3QgV0RPR1ZBTFVFOw0KLSAgICBfX0kgIHVpbnQzMl90IFdET0dMT0FEOw0KLSAgICBfX0kgIHVpbnQzMl90IFdET0dNVlJQOw0KLSAgICBfX08gIHVpbnQzMl90IFdET0dSRUZSRVNIOw0KLSAgICBfX0kgIHVpbnQzMl90IFdET0dFTkFCTEU7DQotICAgIF9fSU8gdWludDMyX3QgV0RPR0NPTlRST0w7DQotICAgIF9fSSAgdWludDMyX3QgV0RPR1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBXRE9HUklTOw0KLSAgICBfX0kgIHVpbnQzMl90IFdET0dNSVM7DQotfSBXQVRDSERPR19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBSZWFsIFRpbWUgQ2xvY2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBQZXJpcGhlcmFscyBETUEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IENSVEw7DQotICAgIF9fSU8gdWludDMyX3QgU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9BX1NSQ19BRERSOw0KLSAgICBfX0lPIHVpbnQzMl90IEJVRkZFUl9BX0RFU1RfQUREUjsNCi0gICAgX19JTyB1aW50MzJfdCBCVUZGRVJfQV9UUkFOU0ZFUl9DT1VOVDsNCi0gICAgX19JTyB1aW50MzJfdCBCVUZGRVJfQl9TUkNfQUREUjsNCi0gICAgX19JTyB1aW50MzJfdCBCVUZGRVJfQl9ERVNUX0FERFI7DQotICAgIF9fSU8gdWludDMyX3QgQlVGRkVSX0JfVFJBTlNGRVJfQ09VTlQ7DQotfSBQRE1BX0NoYW5uZWxfVHlwZURlZjsNCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBSQVRJT19ISUdIX0xPVzsNCi0gICAgX19JTyB1aW50MzJfdCBCVUZGRVJfU1RBVFVTOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEWzZdOw0KLSAgICBQRE1BX0NoYW5uZWxfVHlwZURlZiBDSEFOTkVMWzhdOw0KLX0gUERNQV9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRXRoZXJuZXQgTUFDIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLQkvKiANCi0gICAgICogTUFDIHJlZ2lzdGVycyAoTUNYTUFDKQ0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBDRkcxOw0KLSAgICBfX0lPIHVpbnQzMl90IENGRzI7DQotICAgIF9fSU8gdWludDMyX3QgSUZHOw0KLSAgICBfX0lPIHVpbnQzMl90IEhBTEZfRFVQTEVYOw0KLSAgICBfX0lPIHVpbnQzMl90IE1BWF9GUkFNRV9MRU5HVEg7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQwWzJdOw0KLSAgICBfX0lPIHVpbnQzMl90IFRFU1Q7DQotICAgIF9fSU8gdWludDMyX3QgTUlJX0NPTkZJRzsNCi0gICAgX19JTyB1aW50MzJfdCBNSUlfQ09NTUFORDsNCi0gICAgX19JTyB1aW50MzJfdCBNSUlfQUREUkVTUzsNCi0gICAgX19PICB1aW50MzJfdCBNSUlfQ1RSTDsNCi0gICAgX19JICB1aW50MzJfdCBNSUlfU1RBVFVTOw0KLSAgICBfX0kgIHVpbnQzMl90IE1JSV9JTkRJQ0FUT1JTOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSRkFDRV9DVFJMOw0KLSAgICBfX0kgIHVpbnQzMl90IElOVEVSRkFDRV9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgU1RBVElPTl9BRERSRVNTMTsNCi0gICAgX19JTyB1aW50MzJfdCBTVEFUSU9OX0FERFJFU1MyOw0KLSAgICAvKiANCi0gICAgICogRklGTyBDb25maWd1cmF0aW9uIC8gQWNjZXNzIHJlZ2lzdGVycyAoTUNYRklGKQ0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX0NGRzA7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19DRkcxOw0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fQ0ZHMjsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX0NGRzM7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19DRkc0Ow0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fQ0ZHNTsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX1JBTV9BQ0NFU1MwOw0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzE7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19SQU1fQUNDRVNTMjsNCi0gICAgX19JICB1aW50MzJfdCBGSUZPX1JBTV9BQ0NFU1MzOw0KLSAgICBfX0lPIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzQ7DQotICAgIF9fSU8gdWludDMyX3QgRklGT19SQU1fQUNDRVNTNTsNCi0gICAgX19JTyB1aW50MzJfdCBGSUZPX1JBTV9BQ0NFU1M2Ow0KLSAgICBfX0kgIHVpbnQzMl90IEZJRk9fUkFNX0FDQ0VTUzc7DQotICAgIC8qDQotICAgICAqIFN0YXRpc3RpY3MgcmVnaXN0ZXJzIChNU1RBVCkNCi0gICAgICovDQotICAgIF9fSU8gdWludDMyX3QgVFI2NDsNCi0gICAgX19JTyB1aW50MzJfdCBUUjEyNzsNCi0gICAgX19JTyB1aW50MzJfdCBUUjI1NTsNCi0gICAgX19JTyB1aW50MzJfdCBUUjUxMTsNCi0gICAgX19JTyB1aW50MzJfdCBUUjFLOw0KLSAgICBfX0lPIHVpbnQzMl90IFRSTUFYOw0KLSAgICBfX0lPIHVpbnQzMl90IFRSTUdWOw0KLSAgICBfX0lPIHVpbnQzMl90IFJCWVQ7DQotICAgIF9fSU8gdWludDMyX3QgUFBLVDsNCi0gICAgX19JTyB1aW50MzJfdCBSRkNTOw0KLSAgICBfX0lPIHVpbnQzMl90IFJNQ0E7DQotICAgIF9fSU8gdWludDMyX3QgUkJDQTsNCi0gICAgX19JTyB1aW50MzJfdCBSWENGOw0KLSAgICBfX0lPIHVpbnQzMl90IFJYUEY7DQotICAgIF9fSU8gdWludDMyX3QgUlhVTzsNCi0gICAgX19JTyB1aW50MzJfdCBSQUxOOw0KLSAgICBfX0lPIHVpbnQzMl90IFJGTFI7DQotICAgIF9fSU8gdWludDMyX3QgUkNERTsNCi0gICAgX19JTyB1aW50MzJfdCBSQ1NFOw0KLSAgICBfX0lPIHVpbnQzMl90IFJVTkQ7DQotICAgIF9fSU8gdWludDMyX3QgUk9WUjsNCi0gICAgX19JTyB1aW50MzJfdCBSRlJHOw0KLSAgICBfX0lPIHVpbnQzMl90IFJKQlI7DQotICAgIF9fSU8gdWludDMyX3QgUkRSUDsNCi0gICAgX19JTyB1aW50MzJfdCBUQllUOw0KLSAgICBfX0lPIHVpbnQzMl90IFRQS1Q7DQotICAgIF9fSU8gdWludDMyX3QgVE1DQTsNCi0gICAgX19JTyB1aW50MzJfdCBUQkNBOw0KLSAgICBfX0lPIHVpbnQzMl90IFRYUEY7DQotICAgIF9fSU8gdWludDMyX3QgVERGUjsNCi0gICAgX19JTyB1aW50MzJfdCBURURGOw0KLSAgICBfX0lPIHVpbnQzMl90IFRTQ0w7DQotICAgIF9fSU8gdWludDMyX3QgVE1DTDsNCi0gICAgX19JTyB1aW50MzJfdCBUTENMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRYQ0w7DQotICAgIF9fSU8gdWludDMyX3QgVE5DTDsNCi0gICAgX19JTyB1aW50MzJfdCBUUEZIOw0KLSAgICBfX0lPIHVpbnQzMl90IFREUlA7DQotICAgIF9fSU8gdWludDMyX3QgVEpCUjsNCi0gICAgX19JTyB1aW50MzJfdCBURkNTOw0KLSAgICBfX0lPIHVpbnQzMl90IFRYQ0Y7DQotICAgIF9fSU8gdWludDMyX3QgVE9WUjsNCi0gICAgX19JTyB1aW50MzJfdCBUVU5EOw0KLSAgICBfX0lPIHVpbnQzMl90IFRGUkc7DQotICAgIF9fSSAgdWludDMyX3QgQ0FSMTsNCi0gICAgX19JICB1aW50MzJfdCBDQVIyOw0KLSAgICBfX0lPIHVpbnQzMl90IENBTTE7DQotICAgIF9fSU8gdWludDMyX3QgQ0FNMjsNCi0gICAgIHVpbnQzMl90IFJFU0VSVkVEMVsxNl07DQotICAgIC8qDQotICAgICAqIERNQSByZWdpc3RlcnMgKE1BSEJFKQ0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBETUFfVFhfQ1RSTDsNCi0gICAgX19JTyB1aW50MzJfdCBETUFfVFhfREVTQzsNCi0gICAgX19JTyB1aW50MzJfdCBETUFfVFhfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9SWF9DVFJMOw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9SWF9ERVNDOw0KLSAgICBfX0lPIHVpbnQzMl90IERNQV9SWF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgRE1BX0lSUV9NQVNLOw0KLSAgICBfX0kgIHVpbnQzMl90IERNQV9JUlE7DQotfSBNQUNfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFVTQiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MTZfdCAgIFRYX01BWF9QOw0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfQ1NSOyAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9NQVhfUDsNCi0gICAgX19JTyB1aW50MTZfdCAgIFJYX0NTUjsgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ09VTlQ7DQotICAgIF9fSU8gdWludDhfdCAgICBUWF9UWVBFOyANCi0gICAgX19JTyB1aW50OF90ICAgIFRYX0lOVEVSVkFMOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgUlhfVFlQRTsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBSWF9JTlRFUlZBTDsNCi0gICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgRklGT19TSVpFOyAgDQotfSBVU0JfZW5kcG9pbnRfcmVnc190Ow0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVFhfRlVOQ19BRERSOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVU5VU0VEMDsNCi0gICAgX19JTyB1aW50OF90ICAgIFRYX0hVQl9BRERSOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVFhfSFVCX1BPUlQ7DQotICAgIF9fSU8gdWludDhfdCAgICBSWF9GVU5DX0FERFI7DQotICAgIF9fSU8gdWludDhfdCAgICBVTlVTRUQxOw0KLSAgICBfX0lPIHVpbnQ4X3QgICAgUlhfSFVCX0FERFI7DQotICAgIF9fSU8gdWludDhfdCAgICBSWF9IVUJfUE9SVDsNCi19IFVTQl90YXJfdDsNCi0NCi10eXBlZGVmIHVuaW9uDQotew0KLSAgICBzdHJ1Y3QNCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MzJfdCAgIFZBTFVFOw0KLSAgICB9IFdPUkQ7DQotDQotICAgIHN0cnVjdA0KLSAgICB7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgVkFMVUU7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQxOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMjsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDM7DQotICAgIH0gQllURTsNCi0NCi0gICAgc3RydWN0DQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBWQUxVRTsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSRVNFUlZFRDsNCi0gICAgfSBIQUxGV09SRDsNCi19IFVTQl9maWZvX3Q7DQotDQotdHlwZWRlZiB1bmlvbg0KLXsNCi0gICAgc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX01BWF9QOyAgIA0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIENTUjA7ICAgICAgIA0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX01BWF9QOyAgIA0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX0NTUjsgICAgIA0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIENPVU5UMDsgICAgIA0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDE7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQyOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMzsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDQ7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgQ09ORklHX0RBVEE7ICANCi0gICAgfSBERVZJQ0VfRVAwOw0KLQ0KLSAgICBzdHJ1Y3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBUWF9NQVhfUDsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBUWF9DU1I7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfTUFYX1A7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ1NSOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX0NPVU5UOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDE7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgUkVTRVJWRUQyOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMzsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSRVNFUlZFRDQ7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgRklGT19TSVpFOw0KLSAgICB9IERFVklDRV9FUE47DQotDQotICAgIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBUWF9NQVhfUDsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBDU1IwOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX01BWF9QOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFJYX0NTUjsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBDT1VOVDA7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgVFlQRTA7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgTkFLX0xJTUlUMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSWF9UWVBFOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJYX0lOVEVSVkFMOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBDT05GSUdfREFUQTsNCi0gICAgfSBIT1NUX0VQMDsNCi0NCi0gICAgc3RydWN0ICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgew0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX01BWF9QOw0KLSAgICAgICAgX19JTyB1aW50MTZfdCAgIFRYX0NTUjsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSWF9NQVhfUDsNCi0gICAgICAgIF9fSU8gdWludDE2X3QgICBSWF9DU1I7DQotICAgICAgICBfX0lPIHVpbnQxNl90ICAgUlhfQ09VTlQ7DQotICAgICAgICBfX0lPIHVpbnQ4X3QgICAgVFhfVFlQRTsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBUWF9JTlRFUlZBTDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBSWF9UWVBFOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJYX0lOVEVSVkFMOw0KLSAgICAgICAgX19JTyB1aW50OF90ICAgIFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDhfdCAgICBGSUZPX1NJWkU7DQotICAgIH0gSE9TVF9FUE47DQotDQotfSBVU0JfaW5kZXhlZF9jc3JfdDsNCi0NCi10eXBlZGVmIHN0cnVjdCB7DQotICAgIF9fSU8gdWludDMyX3QgICBJUlE7ICAgIA0KLSAgICBfX0lPIHVpbnQzMl90ICAgQ05UTDsNCi0gICAgX19JTyB1aW50MzJfdCAgIEFERFI7DQotICAgIF9fSU8gdWludDMyX3QgICBDT1VOVDsNCi19IFVTQl9ETUFfY2hhbm5lbDsNCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgLyogDQotICAgICogQ29tbW9uIFVTQiBSZWdpc3RlcnMgDQotICAgICovDQotICAgIF9fSU8gdWludDhfdCAgICBGQUREUjsgICAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFBPV0VSOyAgICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfSVJROyAgICAgICAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9JUlE7ICAgICAgICAgICANCi0gICAgX19JTyB1aW50MTZfdCAgIFRYX0lSUV9FTkFCTEU7ICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgUlhfSVJRX0VOQUJMRTsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBVU0JfSVJROyAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVTQl9FTkFCTEU7ICAgICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgRlJBTUU7ICAgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBJTkRFWDsgICAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFRFU1RfTU9ERTsgICAgICAgIA0KLQ0KLSAgICAvKg0KLSAgICAqIEluZGV4ZWQgQ1NSDQotICAgICovDQotICAgIFVTQl9pbmRleGVkX2Nzcl90ICAgSU5ERVhFRF9DU1I7DQotDQotICAgIC8qDQotICAgICogRW5kcG9pbnQgRklGT3MgDQotICAgICovDQotICAgIFVTQl9maWZvX3QgICAgICBGSUZPWzE2XTsgICAgICAgICANCi0NCi0gICAgLyoNCi0gICAgKiBPVEcsIGR5bmFtaWMgRklGTyBhbmQgdmVyc2lvbiANCi0gICAgKi8NCi0gICAgX19JTyB1aW50OF90ICAgIERFVl9DVFJMOyAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgTUlTQzsgICAgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBUWF9GSUZPX1NJWkU7ICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFJYX0ZJRk9fU0laRTsgICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfRklGT19BRERSOyAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBSWF9GSUZPX0FERFI7ICAgICANCi0gICAgX19JTyB1aW50MzJfdCAgIFZCVVNfQ1NSOyAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgSFdfVkVSU0lPTjsgICAgICAgDQotICAgIF9fSU8gdWludDE2X3QgICBSRVNFUlZFRDsgICAgICAgICANCi0NCi0gICAgLyogDQotICAgICogVUxQSSBhbmQgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgDQotICAgICovDQotICAgIF9fSU8gdWludDhfdCAgICBVTFBJX1ZCVVNfQ1RSTDsgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfQ0FSS0lUX0NUUkw7IA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVUxQSV9JUlFfTUFTSzsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBVTFBJX0lSUV9TUkM7ICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfREFUQV9SRUc7ICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVUxQSV9BRERSX1JFRzsgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBVTFBJX0NUUkxfUkVHOyAgICANCi0gICAgX19JTyB1aW50OF90ICAgIFVMUElfUkFXX0RBVEE7ICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgRVBfSU5GTzsgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBSQU1fSU5GTzsgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIExJTktfSU5GTzsgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgVlBfTEVOOyAgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBIU19FT0YxOyAgICAgICAgICANCi0gICAgX19JTyB1aW50OF90ICAgIEZTX0VPRjE7ICAgICAgICAgIA0KLSAgICBfX0lPIHVpbnQ4X3QgICAgTFNfRU9GMTsgICAgICAgICAgDQotICAgIF9fSU8gdWludDhfdCAgICBTT0ZUX1JTVDsgICAgICAgICANCi0NCi0gICAgLyogDQotICAgICogVGFyZ2V0IEFkZHJlc3MgcmVnaXN0ZXJzIA0KLSAgICAqLw0KLSAgICBVU0JfdGFyX3QgICAgICAgVEFSWzE2XTsgICAgICAgICAgDQotDQotICAgIC8qIA0KLSAgICAqIEVuZHBvaW50cyBDU1IgDQotICAgICovDQotICAgIFVTQl9lbmRwb2ludF9yZWdzX3QgRU5EUE9JTlRbMTZdOyANCi0NCi0gICAgLyogDQotICAgICogRE1BIA0KLSAgICAqLw0KLSAgICBVU0JfRE1BX2NoYW5uZWwgRE1BX0NIQU5ORUxbOF07DQotCQ0KLSAgICBfX0lPIHVpbnQzMl90ICAgUkVTRVJWRURfRVhUWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCAgIFJRX1BLVF9DTlRbMTZdOyAgIA0KLSAgICBfX0lPIHVpbnQxNl90ICAgUlhfRFBCVUZfRElTOw0KLSAgICBfX0lPIHVpbnQxNl90ICAgVFhfRFBCVUZfRElTOw0KLSAgICBfX0lPIHVpbnQxNl90ICAgQ19UX1VDSDsNCi0gICAgX19JTyB1aW50MTZfdCAgIENfVF9ISFNSVE47DQotICAgIF9fSU8gdWludDE2X3QgICBDX1RfSFNCVDsNCi0NCi19IE1TU19VU0JfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBlTlZNIFNwZWNpYWwgRnVuY3Rpb24gUmVnaXN0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JICB1aW50OF90ICBBQlsxMjhdOw0KLSAgICBfX0lPIHVpbnQ4X3QgIFdEWzEyOF07DQotICAgIF9fSSAgdWludDhfdCAgUkVTRVJWRUQwWzMyXTsNCi0gICAgX19JICB1aW50MzJfdCBTVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQxOw0KLSAgICBfX0lPIHVpbnQzMl90IE5WX1BBR0VfU1RBVFVTOw0KLSAgICBfX0kgIHVpbnQzMl90IE5WX0ZSRVFSTkc7DQotICAgIF9fSSAgdWludDMyX3QgTlZfRFBEOw0KLSAgICBfX0lPIHVpbnQzMl90IE5WX0NFOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMjsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDM7DQotICAgIF9fSU8gdWludDMyX3QgUEFHRV9MT0NLOw0KLSAgICBfX0lPIHVpbnQzMl90IERXU0laRTsNCi0gICAgX19JTyB1aW50MzJfdCBDTUQ7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ0Ow0KLSAgICBfX0kgIHVpbnQzMl90IFJFU0VSVkVENTsNCi0gICAgX19JTyB1aW50MzJfdCBJTlRFTjsNCi0gICAgX19JTyB1aW50MzJfdCBDTFJISU5UOw0KLSAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVENls0MF07DQotICAgIF9fSU8gdWludDMyX3QgUkVRX0FDQ0VTUzsNCi19IE5WTV9UeXBlRGVmOw0KLQ0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0kgIHVpbnQzMl90IEFCWzMyXTsNCi0gICAgX19JTyB1aW50MzJfdCBXRFszMl07DQotICAgIF9fSSAgdWludDMyX3QgUkVTRVJWRUQwWzhdOw0KLSAgICBfX0kgIHVpbnQzMl90IFNUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDE7DQotICAgIF9fSU8gdWludDMyX3QgTlZfUEFHRV9TVEFUVVM7DQotICAgIF9fSSAgdWludDMyX3QgTlZfRlJFUVJORzsNCi0gICAgX19JICB1aW50MzJfdCBOVl9EUEQ7DQotICAgIF9fSU8gdWludDMyX3QgTlZfQ0U7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQyOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMzsNCi0gICAgX19JTyB1aW50MzJfdCBQQUdFX0xPQ0s7DQotICAgIF9fSU8gdWludDMyX3QgRFdTSVpFOw0KLSAgICBfX0lPIHVpbnQzMl90IENNRDsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDQ7DQotICAgIF9fSSAgdWludDMyX3QgUkVTRVJWRUQ1Ow0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVOOw0KLSAgICBfX0lPIHVpbnQzMl90IENMUkhJTlQ7DQotICAgICAgICAgdWludDMyX3QgUkVTRVJWRUQ2WzQwXTsNCi0gICAgX19JTyB1aW50MzJfdCBSRVFfQUNDRVNTOw0KLX0gTlZNMzJfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBDT01CTEsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyB1aW50MzJfdCBDT05UUk9MOw0KLSAgICBfX0lPIHVpbnQzMl90IFNUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBJTlRfRU5BQkxFOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEOw0KLSAgICBfX0lPIHVpbnQzMl90IERBVEE4Ow0KLSAgICBfX0lPIHVpbnQzMl90IERBVEEzMjsNCi0gICAgX19JTyB1aW50MzJfdCBGUkFNRV9TVEFSVDg7DQotICAgIF9fSU8gdWludDMyX3QgRlJBTUVfU1RBUlQzMjsNCi19IENPTUJMS19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0gRlBHQSBGYWJyaWMgSW50ZXJydXB0IENvbnRyb2xsZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qDQotICogUGxlYXNlIHJlZmVyIHRvIHRoZSBTbWFydEZ1c2lvbjIgSW50ZXJydXB0IENvbnRyb2xsZXIgVXNlcidzIEd1aWRlIGZvciBhDQotICogZGVzY3JpcHRpb24gb2YgdGhlIGZvbGxvd2luZyByZWdpc3RlcnMuDQotICogVGhlIHJlZ2lzdGVycyBkZWZpbmVkIGJlbG93IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBJTlRFUlJVUFRfQ1RSTCBhcyBmb2xsb3dzOg0KLSAqICAgICAgdWludDMyX3QgcmVhc29uMDsNCi0gKiAgICAgIElOVEVSUlVQVF9DVFJMLT5JTlRFUlJVUFRfTU9ERSA9IDA7DQotICogICAgICByZWFzb24wID0gSU5URVJSVVBUX0NUUkwtPklOVEVSUlVQVF9SRUFTT04wOw0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9FTkFCTEUwOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9FTkFCTEUxOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9SRUFTT04wOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9SRUFTT04xOw0KLSAgICBfX0lPIHVpbnQzMl90IElOVEVSUlVQVF9NT0RFOw0KLX0gSU5URVJSVVBUX0NUUkxfVHlwZURlZjsNCi0NCi0vKg0KLSAqIFBsZWFzZSByZWZlciB0byB0aGUgU21hcnRGdXNpb24yIEludGVycnVwdCBDb250cm9sbGVyIFVzZXIncyBHdWlkZSBmb3IgYQ0KLSAqIGRlc2NyaXB0aW9uIG9mIHRoZSBmb2xsb3dpbmcgcmVnaXN0ZXIgYml0cy4NCi0gKiBUaGUgcmVnaXN0ZXIgYml0cyBkZWZpbmVkIGJlbG93IGNhbiBiZSBhY2Nlc3NlZCB1c2luZyBJTlRFUlJVUFRfQ1RSTF9CSVRCQU5EDQotICogYXMgZm9sbG93czoNCi0gKiAgc2V0dGluZy9jbGVhcmluZyBhIGJpdDoNCi0gKiAgICAgIElOVEVSUlVQVF9DVFJMX0JJVEJBTkQtPk1BQ19JTlRfRU5CTCA9IDE7DQotICogICAgICBJTlRFUlJVUFRfQ1RSTF9CSVRCQU5ELT5QRE1BSU5URVJSVVBUX0VOQkwgPSAwOw0KLSAqICByZWFkaW5nIGEgYml0IHZhbHVlOg0KLSAqICAgICAgdWludDMyX3QgdGltZXIxX2ludGVycnVwdDsNCi0gKiAgICAgIHRpbWVyMV9pbnRlcnJ1cHQgPSBJTlRFUlJVUFRfQ1RSTF9CSVRCQU5ELT5USU1FUjFfSU5UUl9TVEFUVVM7DQotICovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIC8qDQotICAgICAqIElOVEVSUlVQVF9FTkFCTEUwIHJlZ2lzdGVyIGJpdGJhbmQgZGVmaW5pdGlvbnMuDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IFNQSUlOVDBfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBTUElJTlQxX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgSTJDX0lOVDBfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfSU5UMV9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IE1NVUFSVDBfSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IE1NVUFSVDFfSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IE1BQ19JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBVU0JfTUNfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgUERNQUlOVEVSUlVQVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRF9YRlJfQ01QX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTUVSMV9JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgVElNRVIyX0lOVFJfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBDQU5fSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFJUQ19XQUtFVVBfSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IFdET0dXQUtFVVBJTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBNU1NERFJfUExMX0xPQ0tMT1NUX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEVOVk1fSU5UMF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEVOVk1fSU5UMV9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJBTEVSVDBfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfU01CU1VTMF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJBTEVSVDFfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfU01CU1VTMV9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRF9YRlJfRVJSX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IE1TU0REUl9QTExfTE9DS19JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBTV19FUlJPUklOVEVSUlVQVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEREUkJfSU5UUl9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEVDQ0lOVFJfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBDQUNIRV9FUlJJTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgU09GVElOVEVSUlVQVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IENPTUJMS19JTlRSX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgVVNCX0RNQV9JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDA7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBJTlRFUlJVUFRfRU5BQkxFMSByZWdpc3RlciBiaXRiYW5kIGRlZmluaXRpb25zLg0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDFbM107DQotICAgIF9fSU8gdWludDMyX3QgTUREUl9JT19DQUxJQl9JTlRfRU5CTDsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDI7DQotICAgIF9fSU8gdWludDMyX3QgRkFCX1BMTF9MT0NLX0lOVF9FTkJMOw0KLSAgICBfX0lPIHVpbnQzMl90IEZBQl9QTExfTE9DS0xPU1RfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgRklDNjRfSU5UX0VOQkw7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQzWzI0XTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIElOVEVSUlVQVF9SRUFTT04wIHJlZ2lzdGVyIGJpdGJhbmQgZGVmaW5pdGlvbnMuDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IFNQSUlOVDBfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFNQSUlOVDFfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19JTlQwX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfSU5UMV9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgTU1VQVJUMF9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBNTVVBUlQxX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IE1BQ19JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFVTQl9NQ19JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFBETUFJTlRFUlJVUFRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEhQRF9YRlJfQ01QX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgVElNRVIxX0lOVFJfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFRJTUVSMl9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBDQU5fSU5UUl9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUlRDX1dBS0VVUF9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBXRE9HV0FLRVVQSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBNU1NERFJfUExMX0xPQ0tMT1NUX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgRU5WTV9JTlQwX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBFTlZNX0lOVDFfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJBTEVSVDBfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEkyQ19TTUJTVVMwX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfU01CQUxFUlQxX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBJMkNfU01CU1VTMV9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgSFBEX1hGUl9FUlJfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBNU1NERFJfUExMX0xPQ0tfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBTV19FUlJPUklOVEVSUlVQVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgRERSQl9JTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBFQ0NJTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBDQUNIRV9FUlJJTlRSX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBTT0ZUSU5URVJSVVBUX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBDT01CTEtfSU5UUl9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgVVNCX0RNQV9JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVENDsNCi0gICAgDQotICAgIC8qDQotICAgICAqIElOVEVSUlVQVF9SRUFTT04xIHJlZ2lzdGVyIGJpdGJhbmQgZGVmaW5pdGlvbnMuDQotICAgICAqLw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVENVszXTsNCi0gICAgX19JTyB1aW50MzJfdCBNRERSX0lPX0NBTElCX0lOVF9TVEFUVVM7DQotICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQ2Ow0KLSAgICBfX0lPIHVpbnQzMl90IEZBQl9QTExfTE9DS19JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IEZBQl9QTExfTE9DS0xPU1RfSU5UX1NUQVRVUzsNCi0gICAgX19JTyB1aW50MzJfdCBGSUM2NF9JTlRfU1RBVFVTOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEN1syNF07DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBJTlRFUlJVUFRfTU9ERSByZWdpc3RlciBiaXRiYW5kIGRlZmluaXRpb25zLg0KLSAgICAgKi8NCi0gICAgX19JTyB1aW50MzJfdCBTRUxFQ1RfTU9ERTsNCi0gICAgX19JTyB1aW50MzJfdCBSRVNFUlZFRDhbMzFdOw0KLSAgICANCi19IElOVEVSUlVQVF9DVFJMX0JpdEJhbmRfVHlwZURlZjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEREUiBDb250cm9sbGVyIEFQQiBSZWdpc3RlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgQ29udHJvbGxlciByZWdpc3RlcnMuDQotICAgICAqIEFsbCByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIHVubGVzcyBtZW50aW9uZWQgYmVzaWRlIHRoZSBkZWZpbml0aW9uLg0KLSAgICAgKi8NCi0gICAgc3RydWN0DQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1NPRlRfUkVTRVRfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1JFRlJFU0hfMV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1JFRlJFU0hfMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1BPV0VSRE9XTl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX0RFQlVHX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBNT0RFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBRERSX01BUF9CQU5LX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBFQ0NfREFUQV9NQVNLX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBRERSX01BUF9DT0xfMV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQUREUl9NQVBfQ09MXzJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEFERFJfTUFQX1JPV18xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBRERSX01BUF9ST1dfMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5JVF8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDS0VfUlNUTl9DWUNMRVNfQ1JbMl07ICAgICAvKiAwOjI3IGJpdHMgYXJlIHZhbGlkICovDQotICAgICAgICBfX0lPIHVpbnQzMl90IElOSVRfTVJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IElOSVRfRU1SX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJTklUX0VNUjJfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IElOSVRfRU1SM19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9CQU5LX1RJTUlOR19QQVJBTV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9SRF9XUl9MQVRFTkNZX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUkFNX1JEX1dSX1BSRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9NUl9USU1JTkdfUEFSQU1fQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERSQU1fUkFTX1RJTUlOR19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9SRF9XUl9UUk5BUk5EX1RJTUVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERSQU1fVF9QRF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFJBTV9CQU5LX0FDVF9USU1JTkdfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IE9EVF9QQVJBTV8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBPRFRfUEFSQU1fMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQUREUl9NQVBfQ09MXzNfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IE1PREVfUkVHX1JEX1dSX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBNT0RFX1JFR19EQVRBX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQV1JfU0FWRV8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQV1JfU0FWRV8yX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBaUV9MT05HX1RJTUVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFpRX1NIT1JUX1RJTUVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFpRX1NIT1JUX0lOVF9SRUZSRVNIX01BUkdJTl9DUlsyXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUEVSRl9QQVJBTV8xX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBIUFJfUVVFVUVfUEFSQU1fQ1JbMl07DQotICAgICAgICBfX0lPIHVpbnQzMl90IExQUl9RVUVVRV9QQVJBTV9DUlsyXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfUVVFVUVfUEFSQU1fQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFBFUkZfUEFSQU1fMl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUEVSRl9QQVJBTV8zX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBERklfUkREQVRBX0VOX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBERklfTUlOX0NUUkxVUERfVElNSU5HX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBERklfTUFYX0NUUkxVUERfVElNSU5HX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBERklfV1JfTFZMX0NPTlRST0xfQ1JbMl07DQotICAgICAgICBfX0lPIHVpbnQzMl90IERGSV9SRF9MVkxfQ09OVFJPTF9DUlsyXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgREZJX0NUUkxVUERfVElNRV9JTlRFUlZBTF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1NPRlRfUkVTRVRfQ1IyOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBWElfRkFCUklDX1BSSV9JRF9DUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRERSQ19TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgU0lOR0xFX0VSUl9DTlRfU1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IERPVUJMRV9FUlJfQ05UX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBMVUVfU1lORFJPTUVfU1JbNV07ICAgICAgIC8qIExVRSA6IExhc3QgVW5jb3JyZWN0ZWQgRXJyb3IgKi8NCi0gICAgICAgIF9fSSAgdWludDMyX3QgTFVFX0FERFJFU1NfU1JbMl07ICAgICAgICANCi0gICAgICAgIF9fSSAgdWludDMyX3QgTENFX1NZTkRST01FX1NSWzVdOyAgICAgICAvKiBMQ0UgOiBMYXN0IENvcnJlY3RlZCBFcnJvciAqLw0KLSAgICAgICAgX19JICB1aW50MzJfdCBMQ0VfQUREUkVTU19TUlsyXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgTENCX05VTUJFUl9TUjsgICAgICAgICAgICAvKiBMQ0IgOiBMYXN0IENvcnJlY3RlZCBCaXQgKi8NCi0gICAgICAgIF9fSSAgdWludDMyX3QgTENCX01BU0tfU1JbNF07ICAgICAgICAgIA0KLSAgICAgICAgX19JICB1aW50MzJfdCBFQ0NfSU5UX1NSOw0KLSAgICAgICAgX19PICB1aW50MzJfdCBFQ0NfSU5UX0NMUl9SRUc7DQotICAgICAgICBfX0kgIHVpbnQzMl90IEVDQ19PVVRQVVRfREFUQV9TUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQxWzQ2XTsNCi0gICAgfSBkZHJjOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgUEhZIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQotICAgICAqLw0KLSAgICBzdHJ1Y3QgDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX0JJU1RfVEVTVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX0JJU1RfVEVTVF9FUlJDTFJfQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IEJJU1RfVEVTVF9TSElGVF9QQVRURVJOX0NSWzNdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBMT09QQkFDS19URVNUX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBCT0FSRF9MT09QQkFDS19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TTEFWRV9SQVRJT19DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TTEFWRV9GT1JDRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQ1RSTF9TTEFWRV9ERUxBWV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgREFUQV9TTElDRV9JTl9VU0VfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IExWTF9OVU1fT0ZfRFEwX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBEUV9PRkZTRVRfQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IERJU19DQUxJQl9SU1RfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IERMTF9MT0NLX0RJRkZfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZJRk9fV0VfSU5fREVMQVlfQ1JbM107DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZJRk9fV0VfSU5fRk9SQ0VfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZJRk9fV0VfU0xBVkVfUkFUSU9fQ1JbNF07DQotICAgICAgICBfX0lPIHVpbnQzMl90IEdBVEVMVkxfSU5JVF9NT0RFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBHQVRFTFZMX0lOSVRfUkFUSU9fQ1JbNF07DQotICAgICAgICBfX0lPIHVpbnQzMl90IExPQ0FMX09EVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5WRVJUX0NMS09VVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkRfRFFTX1NMQVZFX0RFTEFZX0NSWzNdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRF9EUVNfU0xBVkVfRk9SQ0VfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFJEX0RRU19TTEFWRV9SQVRJT19DUls0XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfRFFTX1NMQVZFX0RFTEFZX0NSWzNdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9EUVNfU0xBVkVfRk9SQ0VfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFdSX0RRU19TTEFWRV9SQVRJT19DUls0XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfREFUQV9TTEFWRV9ERUxBWV9DUlszXTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfREFUQV9TTEFWRV9GT1JDRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JfREFUQV9TTEFWRV9SQVRJT19DUls0XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV1JMVkxfSU5JVF9NT0RFX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUkxWTF9JTklUX1JBVElPX0NSWzRdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBXUl9SRF9STF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkRDX0ZJRk9fUlNUX0VSUkNOVENMUl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkRDX1dFX1RPX1JFX0RFTEFZX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBVU0VfRklYRURfUkVfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFVTRV9SQU5LMF9ERUxBWVNfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFVTRV9MVkxfVFJOR19MRVZFTF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQ09ORklHX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBSRF9XUl9HQVRFX0xWTF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRFlOX1JFU0VUX0NSOw0KLQ0KLSAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICAgKiBERFIgUEhZIHN0YXR1cyByZWdpc3RlcnMNCi0gICAgICAgICAqLyAgICANCi0gICAgICAgIF9fSSAgdWludDMyX3QgTEVWRUxMSU5HX0ZBSUxVUkVfU1I7DQotICAgICAgICBfX0kgIHVpbnQzMl90IEJJU1RfRVJST1JfU1JbM107DQotICAgICAgICBfX0kgIHVpbnQzMl90IFdSTFZMX0RRU19SQVRJT19TUls0XTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgV1JMVkxfRFFfUkFUSU9fU1JbNF07DQotICAgICAgICBfX0kgIHVpbnQzMl90IFJETFZMX0RRU19SQVRJT19TUls0XTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRklGT19TUls0XTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgTUFTVEVSX0RMTF9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRExMX1NMQVZFX1ZBTFVFX1NSWzJdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBTVEFUVVNfT0ZfSU5fREVMQVlfVkFMX1NSWzJdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBTVEFUVVNfT0ZfT1VUX0RFTEFZX1ZBTF9TUlsyXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRExMX0xPQ0tfQU5EX1NMQVZFX1ZBTF9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgQ1RSTF9PVVRQVVRfRklMVEVSX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBDVFJMX09GX09VVFBVVF9ERUxBWV9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgUkRfRFFTX1NMQVZFX0RMTF9WQUxfU1JbM107DQotICAgICAgICBfX0kgIHVpbnQzMl90IFdSX0RBVEFfU0xBVkVfRExMX1ZBTF9TUlszXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgRklGT19XRV9TTEFWRV9ETExfVkFMX1NSWzNdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBXUl9EUVNfU0xBVkVfRExMX1ZBTF9TUlszXTsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgQ1RSTF9TTEFWRV9ETExfVkFMX1NSOyANCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkVTRVJWRUQyWzEzXTsNCi0gICAgfSBwaHk7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEZJQy02NCByZWdpc3RlcnMNCi0gICAgICogVGhlc2UgcmVnaXN0ZXJzIGFyZSAxNi1iaXQgd2lkZSBhbmQgMzItYml0IGFsaWduZWQuDQotICAgICAqLw0KLSAgICBzdHJ1Y3QgDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTkJfQUREUl9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTkJSV0JfU0laRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgV0JfVElNRU9VVF9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSFBEX1NXX1JXX0VOX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBIUERfU1dfUldfSU5WQUxfQ1I7DQotICAgICAgICBfX0lPIHVpbnQzMl90IFNXX1dSX0VSQ0xSX0NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBFUlJfSU5UX0VOQUJMRV9DUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTlVNX0FIQl9NQVNURVJTX0NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBIUEJfRVJSX0FERFJfU1JbMl07DQotICAgICAgICBfX0kgIHVpbnQzMl90IFNXX0VSUl9BRERSX1NSWzJdOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBIUERfU1dfV1JCX0VNUFRZX1NSOw0KLSAgICAgICAgX19JICB1aW50MzJfdCBTV19IUEJfTE9DS09VVF9TUjsNCi0gICAgICAgIF9fSSAgdWludDMyX3QgU1dfSFBEX1dFUlJfU1I7DQotICAgICAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMDsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgTE9DS19USU1FT1VUVkFMX0NSWzJdOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBMT0NLX1RJTUVPVVRfRU5fQ1I7DQotICAgICAgICAgICAgIHVpbnQzMl90IFJFU0VSVkVEMVs1XTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUkRXUl9FUlJfU1I7DQotICAgIH0gZmljOw0KLX0gRERSQ29yZV9UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0gTUREUiBBUEIgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIE1ERFIgY29yZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4NCi0gICAgICogVGhlc2UgcmVnaXN0ZXJzIGFyZSB0byBiZSBhY2Nlc3NlZCBhczoNCi0gICAgICogTUREUi0+Y29yZS5maWMuPHJlZ25hbWU+ID0gPHZhbHVlPjsNCi0gICAgICogTUREUi0+Y29yZS5waHkuPHJlZ25hbWU+ID0gPHZhbHVlPjsNCi0gICAgICogTUREUi0+Y29yZS5kZHJjLjxyZWduYW1lPiA9IDx2YWx1ZT47DQotICAgICAqLw0KLSAgICBERFJDb3JlX1R5cGVEZWYgY29yZTsNCi0gICAgDQotfSBNRERSX1R5cGVEZWY7DQotDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLSBGRERSIEFQQiBDb25maWd1cmF0aW9uIFJlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotdHlwZWRlZiBzdHJ1Y3QgDQotew0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEZERFIgY29yZSBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gVGhlc2UgYXJlIHNhbWUgYXMgY29ycmVzcG9uZGluZyANCi0gICAgICogTUREUiByZWdpc3RlcnMuIA0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIHRvIGJlIGFjY2Vzc2VkIGFzOg0KLSAgICAgKiBGRERSLT5jb3JlLmZpYy48cmVnbmFtZT4gPSA8dmFsdWU+Ow0KLSAgICAgKiBGRERSLT5jb3JlLnBoeS48cmVnbmFtZT4gPSA8dmFsdWU+Ow0KLSAgICAgKiBGRERSLT5jb3JlLmRkcmMuPHJlZ25hbWU+ID0gPHZhbHVlPjsNCi0gICAgICovDQotICAgIEREUkNvcmVfVHlwZURlZiBjb3JlOw0KLSAgICBfX0lPIHVpbnQzMl90IFJFU0VSVkVEWzM5XTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRkREUiBzeXN0ZW0gcmVnaXN0ZXJzDQotICAgICAqIFRoZXNlIHJlZ2lzdGVycyBhcmUgdG8gYmUgYWNjZXNzZWQgYXM6DQotICAgICAqIEZERFItPnN5c3JlZy5QTExfQ09ORklHX0xPV18yID0gMHgwNHU7DQotICAgICAqLw0KLSAgICBzdHJ1Y3QgDQotICAgIHsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUExMX0NPTkZJR19MT1dfMTsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUExMX0NPTkZJR19MT1dfMjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgUExMX0NPTkZJR19ISUdIOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBGQUNDX0NMS19FTjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRkFDQ19NVVhfQ09ORklHOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBGQUNDX0RJVklTT1JfUkFUSU87DQotICAgICAgICBfX0lPIHVpbnQzMl90IFBMTF9ERUxBWV9MSU5FX1NFTDsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgU09GVF9SRVNFVDsgDQotICAgICAgICBfX0lPIHVpbnQzMl90IElPX0NBTElCOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJTlRFUlJVUFRfRU5BQkxFOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBBWElfQUhCX01PREVfU0VMOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBQSFlfU0VMRl9SRUZfRU47DQotICAgICAgICBfX0lPIHVpbnQzMl90IEZBQl9QTExfQ0xLX1NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBGUExMX0NMS19TUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgQ0xLX0NBTElCX1NUQVRVUzsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgSU5URVJSVVBUX1NSOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBDTEtfQ0FMSUJfQ09ORklHOw0KLSAgICAgICAgX19JTyB1aW50MzJfdCBJT19DQUxJQl9TUjsNCi0gICAgICAgIF9fSU8gdWludDMyX3QgRkFUQ19SRVNFVDsNCi0gICAgfSBzeXNyZWc7DQotfSBGRERSX1R5cGVEZWY7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTRVJERVMgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIEFYSSB3aW5kb3cNCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBiYXNlOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIHNpemU7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgd2luZG93X2xzYjsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICB3aW5kb3dfbXNiOw0KLX0gYXhpX3dpbmRvd19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBQQ0kgRXhwcmVzcyBCcmlkZ2UgQ29yZSByZWdpc3RlcnMuDQotICANCi0gIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0byBhY2Nlc3MgdG8gdGhlIHJlZ2lzdGVycyBvZiB0aGUgUENJIEV4cHJlc3MNCi0gIEJyaWRnZSBDb3JlLg0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKj09PT09PT09PT09PT09PT09PT09PT09IEluZm9ybWF0aW9uIHJlZ2lzdGVycyA9PT09PT09PT09PT09PT09PT09PT09Ki8NCi0gICAgLyoqDQotICAgICAgSW5mb3JtYXRpb24gcmVnaXN0ZXI6IHZlbmRvcl9pZCAmIGRldmljZV9pZA0KLSAgICAgIGJpdHMgWzE1OjBdICAgdmVuZG9yX2lkDQotICAgICAgYml0cyBbMzE6MTZdICBkZXZpY2VfaWQNCi0gICAgICovDQotICAgIC8qIDB4MDAwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVklEX0RFVklEOw0KLQ0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBjZmdfcHJtc2NyDQotICAgICAqLw0KLSAgICAvKiAweDAwNCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENGR19QUk1TQ1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBJbmZvcm1hdGlvbiByZWdpc3RlcjogY2xhc3NfY29kZQ0KLSAgICAgKi8NCi0gICAgLyogMHgwMDggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDTEFTU19DT0RFOw0KLSAgICANCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogYmFyMA0KLSAgICAgKi8NCi0gICAgLyogMHgwMTAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBCQVIwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGJhcjENCi0gICAgICovDQotICAgIC8qIDB4MDE0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQkFSMTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBiYXIyDQotICAgICAqLw0KLSAgICAvKiAweDAxOCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEJBUjI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogYmFyMw0KLSAgICAgKi8NCi0gICAgLyogMHgwMUMgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBCQVIzOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGJhcjQNCi0gICAgICovDQotICAgIC8qIDB4MDIwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQkFSNDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBiYXI1DQotICAgICAqLw0KLSAgICAvKiAweDAyNCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEJBUjU7DQotICAgIA0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEluZm9ybWF0aW9uIHJlZ2lzdGVyOiBzdWJzeXN0ZW1faWQNCi0gICAgICovDQotICAgIC8qIDB4MDJDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU1VCU1lTVEVNX0lEOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3RlcjogcGNpZV9kZXZzY3INCi0gICAgICovDQotICAgIC8qIDB4MDMwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUENJRV9ERVZTQ1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBwY2llX2xpbmtzY3INCi0gICAgICovDQotICAgIC8qIDB4MDM0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUENJRV9MSU5LU0NSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IHRjX3ZjX21hcHBpbmcNCi0gICAgICovDQotICAgIC8qIDB4MDM4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVENfVkNfTUFQUElORzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEluZm9ybWF0aW9uIHJlZ2lzdGVyOiBjYXB0dXJlZF9idXNfZGV2aWNlX25iDQotICAgICAqLw0KLSAgICAvKiAweDAzQyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENBUFRVUkVEX0JVU19ERVZJQ0VfTkI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBFbmRwb2ludCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IG1zaV9jdHJsX3N0YXR1cw0KLSAgICAgKi8NCi0gICAgLyogMHgwNDAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBNU0lfQ1RSTF9TVEFUVVM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiBsdHNzbQ0KLSAgICAgKi8NCi0gICAgLyogMHgwNDQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBMVFNTTTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBvd2VyIE1hbmFnZW1lbnQgcmVnaXN0ZXI6IHBvd2VyX21ndF9jYXBhYmlsaXR5DQotICAgICAqLw0KLSAgICAvKiAweDA0OCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBPV0VSX01HVF9DQVBBQklMSVRZOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3RlcjogY2ZnX3Btc2NyDQotICAgICAqLw0KLSAgICAvKiAweDA0QyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENGR19QTVNDUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBhZXJfZWNyY19jYXBhYmlsaXR5DQotICAgICAqLw0KLSAgICAvKiAweDA1MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFFUl9FQ1JDX0NBUEFCSUxJVFk7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogdmMxX2NhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MDU0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVkMxX0NBUEFCSUxJVFk7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogbWF4X3BheWxvYWRfc2l6ZQ0KLSAgICAgKi8NCi0gICAgLyogMHgwNTggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBNQVhfUEFZTE9BRF9TSVpFOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGNsa3JlcQ0KLSAgICAgKi8NCi0gICAgLyogMHgwNUMgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDTEtSRVE7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiBhc3BtX2wwc19jYXBhYmlsaXR5DQotICAgICAqLw0KLSAgICAvKiAweDA2MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFTUE1fTDBTX0NBUEFCSUxJVFk7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiBhc3BtX2wxX2NhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MDY0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVNQTV9MMV9DQVBBQklMSVRZOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUG93ZXIgTWFuYWdlbWVudCByZWdpc3RlcjogdGltZW91dF9jb21wbGV0aW9uDQotICAgICAqLw0KLSAgICAvKiAweDA2OCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRJTUVPVVRfQ09NUExFVElPTjsNCi0NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiBwbV9kYXRhX3NjYWxlDQotICAgICAqLw0KLSAgICAvKiAweDA3MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBNX0RBVEFfU0NBTEVbNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBFbmRwb2ludCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IG1zaQ0KLSAgICAgKi8NCi0gICAgLyogMHgwODAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBNU0lbOF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBCcmlkZ2UgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogZXJyb3JfY291bnRlcg0KLSAgICAgKi8NCi0gICAgLyogMHgwQTAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBFUlJPUl9DT1VOVEVSWzRdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQnJpZGdlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGNyZWRpdF9hbGxvY2F0aW9uDQotICAgICAqLw0KLSAgICAvKiAweDBCMCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENSRURJVF9BTExPQ0FUSU9OWzRdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQWRkcmVzcyBNYXBwaW5nIHJlZ2lzdGVyOiBheGlfc2xhdmVfd2luZG93DQotICAgICAqLw0KLSAgICAvKiAweDBDMCAqLw0KLSAgICBheGlfd2luZG93X1R5cGVEZWYgICAgICBBWElfU0xBVkVfV0lORE9XWzRdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQWRkcmVzcyBNYXBwaW5nIHJlZ2lzdGVyOiBheGlfbWFzdGVyX3dpbmRvdw0KLSAgICAgKi8NCi0gICAgLyogMHgxMDAgKi8NCi0gICAgYXhpX3dpbmRvd19UeXBlRGVmICAgICAgQVhJX01BU1RFUl9XSU5ET1dbNF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSb290cG9ydCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IGltYXNrDQotICAgICAqLw0KLSAgICAvKiAweDE0MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElNQVNLOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUm9vdHBvcnQgSW50ZXJydXB0IHJlZ2lzdGVyOiBpc3RhdHVzDQotICAgICAqLw0KLSAgICAvKiAweDE0NCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElTVEFUVVM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSb290cG9ydCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IGljbWQNCi0gICAgICovDQotICAgIC8qIDB4MTQ4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSUNNRDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJvb3Rwb3J0IEludGVycnVwdCByZWdpc3RlcjogaXJzdGF0dXMNCi0gICAgICovDQotICAgIC8qIDB4MTRDICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSVJTVEFUVVM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSb290cG9ydCBJbnRlcnJ1cHQgcmVnaXN0ZXI6IGltc2lhZGRyDQotICAgICAqLw0KLSAgICAvKiAweDE1MCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElNU0lBRERSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3Rlcjogc2xvdGNhcA0KLSAgICAgKi8NCi0gICAgLyogMHgxNTQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTTE9UQ0FQOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3Rlcjogc2xvdGNzcg0KLSAgICAgKi8NCi0gICAgLyogMHgxNTggKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTTE9UQ1NSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUENJIEV4cHJlc3MgQ29udHJvbCAmIFN0YXR1cyBSZWdpc3Rlcjogcm9vdGNzcg0KLSAgICAgKi8NCi0gICAgLyogMHgxNUMgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBST09UQ1NSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ29uZmlndXJhdGlvbiBSZWdpc3RlcjogY2ZnX2NvbnRyb2wNCi0gICAgICovDQotICAgIC8qIDB4MTYwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0ZHX0NPTlRST0w7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBjZmdfd3JpdGVfZGF0YQ0KLSAgICAgKi8NCi0gICAgLyogMHgxNjQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDRkdfV1JJVEVfREFUQTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGNmZ19yZWFkX2RhdGENCi0gICAgICovDQotICAgIC8qIDB4MTY4ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0ZHX1JFQURfREFUQTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEluZm9ybWF0aW9uIHJlZ2lzdGVyOiBpbmZvDQotICAgICAqLw0KLSAgICAvKiAweDE2QyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElORk87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBJbnB1dC9PdXRwdXQgQ29udHJvbCBSZWdpc3RlcjogaW9fY29udHJvbA0KLSAgICAgKi8NCi0gICAgLyogMHgxNzAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBJT19DT05UUk9MOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgSW5wdXQvT3V0cHV0IENvbnRyb2wgUmVnaXN0ZXI6IGlvX2FkZHINCi0gICAgICovDQotICAgIC8qIDB4MTc0ICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgSU9fQUREUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIElucHV0L091dHB1dCBDb250cm9sIFJlZ2lzdGVyOiBpb193cml0ZV9kYXRhDQotICAgICAqLw0KLSAgICAvKiAweDE3OCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElPX1dSSVRFX0RBVEE7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBJbnB1dC9PdXRwdXQgQ29udHJvbCBSZWdpc3RlcjogaW9fcmVhZF9kYXRhDQotICAgICAqLw0KLSAgICAvKiAweDE3QyAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIElPX1JFQURfREFUQTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXI6IGNmZ19mYmUNCi0gICAgICovDQotICAgIC8qIDB4MTgwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ0ZHX0ZCRTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEFkZHJlc3MgTWFwcGluZyByZWdpc3RlcjogcHJlZmV0Y2hfaW9fd2luZG93DQotICAgICAqLw0KLSAgICAvKiAweDE4NCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSRUZFVENIX0lPX1dJTkRPVzsNCi0gICAgDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQ0WzMxXTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBwY2llX2NvbmZpZw0KLSAgICAgKi8NCi0gICAgLyogMHgyMDQgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ0lFX0NPTkZJRzsNCi0gICAgDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQ1WzEwXTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBDSSBFeHByZXNzIENvbnRyb2wgJiBTdGF0dXMgUmVnaXN0ZXI6IHBjaWVfZGV2MnNjcg0KLSAgICAgKi8NCi0gICAgLyogMHgyMzAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ0lFX0RFVjJTQ1I7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQQ0kgRXhwcmVzcyBDb250cm9sICYgU3RhdHVzIFJlZ2lzdGVyOiBwY2llX2xpbmsyc2NyDQotICAgICAqLw0KLSAgICAvKiAweDIzNCAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBDSUVfTElOSzJTQ1I7DQotICAgIA0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVENlsxMF07DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBNYW5hZ2VtZW50IHJlZ2lzdGVyOiBhc3BtX2wwc19nZW4yIGNhcGFiaWxpdHkNCi0gICAgICovDQotICAgIC8qIDB4MjYwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVNQTV9MMFNfR0VOMjsNCi0gICAgDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQ3WzM5XTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEJyaWRnZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyOiBrX2NudF9jb25maWcNCi0gICAgICovDQotICAgIC8qIDB4MzAwICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgS19DTlRfQ09ORklHWzZdOw0KLSAgICANCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDhbODI2XTsNCi0gICAgDQotfSBQQ0lFX1R5cGVEZWY7DQotIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBTRVJERVNJRiBTeXN0ZW0gUmVnaXN0ZXJzLg0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNFUl9QTExfQ09ORklHX0xPVzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJfUExMX0NPTkZJR19ISUdIOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNFUkRFU0lGX1NPRlRfUkVTRVQ7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX0lOVEVSUlVQVF9FTkFCTEU7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX0FYSV9BSEJfQlJJREdFOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19FQ0NfSU5UUl9FTkFCTEU7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1RFU1RfSU47DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVEVTVF9PVVRfUkVBRF9BRERSOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QQ0lFX1BNOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QSFlfTU9ERV8wOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QSFlfTU9ERV8xOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QSFlfTU9ERV8yOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QQ0lFXzA7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX1BDSUVfMTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfUENJRV8yOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19QQ0lFXzM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORklHX0JBUl9TSVpFXzBfMTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GSUdfQkFSX1NJWkVfMl8zOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZJR19CQVJfU0laRV8zXzQ7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX0NMS19TVEFUVVM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX0NMS19DQUxJQl9TVEFUVVM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVEVTVF9PVVRfUkVBRF9EQVRBOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFNFUl9JTlRFUlJVUFQ7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSREVTSUZfSU5UUl9TVEFUVVM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSX0NMS19DQUxJQl9DT05GSUc7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVGQ0xLX1NFTDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQQ0xLX1NFTDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBFUENTX1JTVE5fU0VMOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENISVBfRU5BQkxFUzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTRVJERVNfVEVTVF9PVVQ7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0VSREVTX0ZBVENfUkVTRVQ7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkNfT1NDX1NQTExfUkVGQ0xLX1NFTDsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBTUFJFQURfU1BFQ1RSVU1fQ0xLOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX01TVFJfV05EV18wOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX01TVFJfV05EV18xOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX01TVFJfV05EV18yOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX01TVFJfV05EV18zOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX1NMVl9XTkRXXzA7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ09ORl9BWElfU0xWX1dORFdfMTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDT05GX0FYSV9TTFZfV05EV18yOw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENPTkZfQVhJX1NMVl9XTkRXXzM7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgREVTS0VXX0NPTkZJRzsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBERUJVR19NT0RFX0tFWTsNCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDA7DQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRVhUUkFfQklUUzsNCi19IFNFUkRFU19JTlRGX1NZU1JFR19UeXBlRGVmOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBTRVJERVMgUEhZIHJlZ2lzdGVycw0KLSAqLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICAvKioNCi0gICAgICBDb250cm9sIHJlZ2lzdGVyIDANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1IwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ2xvY2sgY291bnQgZm9yIGVycm9yIGNvdW50ZXIgZGVjcmVtZW50DQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEVSUkNOVF9ERUM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBFcnJvciBjb3VudGVyIHRocmVzaG9sZCAtIFJ4IGlkbGUgZGV0ZWN0IG1heCBsYXRlbmN5DQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJYSURMRV9NQVhfRVJSQ05UX1RIUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEltcGVkYW5jZSByYXRpbw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBJTVBFRF9SQVRJTzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBMTCBGIHNldHRpbmdzIGFuZCBQQ0xLIHJhdGlvDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBMTF9GX1BDTEtfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQTEwgTSAmIE4gc2V0dGluZ3MNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUExMX01fTjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIDI1MG5zIHRpbWVyIGJhc2UgY291bnQNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ05UMjUwTlNfTUFYOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIGFtcGxpdHVkZSByYXRpbw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9BTVBfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeCBFcXVhbGl6YXRpb24gQ3V0IGZyZXF1ZW5jeQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9DVVRfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUG9zdC1DdXJzb3IgcmF0aW8NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFNUX1JBVElPOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUHJlLUN1cnNvciByYXRpbw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9QUkVfUkFUSU87DQotICAgIA0KLSAgICAvKioNCi0gICAgICBFbmQgb2YgY2FsaWJyYXRpb24gY291bnRlcg0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBFTkRDQUxJQl9NQVg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDYWxpYnJhdGlvbiBzdGFiaWxpdHkgY291bnRlcg0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDQUxJQl9TVEFCSUxJVFlfQ09VTlQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQb3dlciBkb3duIGZlYXR1cmUNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUE9XRVJfRE9XTjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IG9mZnNldCBjb3VudGVyDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJYX09GRlNFVF9DT1VOVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBMTCBGIHNldHRpbmdzIGFuZCBQQ0xLIHJhdGlvIChpbiBQQ0llIDUgR2JwcyBzcGVlZCkNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUExMX0ZfUENMS19SQVRJT181R0JQUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBMTCBNICYgTiBzdHRpbmdzIChpbiBQQ0llIDUgR2JwcyBzcHBlZCkNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUExMX01fTl81R0JQUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIDI1MG5zIHRpbWVyIGJhc2UgY291bnQgKGluIFBDSWUgNSBHYnBzIHNwZWVkKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDTlQyNTBOU19NQVhfNUdCUFM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICByZXNlcnZlZA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IFBvc3QtQ3Vyc29yIHJhdGlvIHdpdGggVHhEZWVtcD0wLCBGdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1BTVF9SQVRJT19ERUVNUDBfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IFByZS1DdXJzb3IgcmF0aW8gVHhEZWVtcD0wLCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1BSRV9SQVRJT19ERUVNUDBfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IFBvc3QtQ3Vyc29yIHJhdGlvIHdpdGggVHhEZWVtcD0xLCBGdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1BTVF9SQVRJT19ERUVNUDFfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IFByZS1DdXJzb3IgcmF0aW8gVHhEZWVtcD0xLCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX1BSRV9SQVRJT19ERUVNUDFfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj0wLCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU4wX0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49MSwgZnVsbCBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lOMV9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTIsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjJfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj0zLCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU4zX0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49NCwgZnVsbCBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lONF9GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTUsIGZ1bGwgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjVfRlVMTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj02LCBmdWxsIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU42X0ZVTEw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49NywgZnVsbCBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lON19GVUxMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIGFtcGxpdHVkZSByYXRpbyBUeERlZW1wPTANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVfQU1QX1JBVElPX0RFRU1QMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IEVxdWFsaXphdGlvbiBDdXQgZnJlcXVlbmN5IFR4RGVlbXA9MA0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9DVVRfUkFUSU9fREVFTVAwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnggRXF1YWxpemF0aW9uIGFtcGxpdHVkZSByYXRpbyBUeERlZW1wPTENCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVfQU1QX1JBVElPX0RFRU1QMTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IEVxdWFsaXphdGlvbiBDdXQgZnJlcXVlbmN5IFR4RGVlbXA9MQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9DVVRfUkFUSU9fREVFTVAxOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUG9zdC1DdXJzb3IgcmF0aW8gd2l0aCBUeERlZW1wPTAsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFNUX1JBVElPX0RFRU1QMF9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUHJlLUN1cnNvciByYXRpbyBUeERlZW1wPTAsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFJFX1JBVElPX0RFRU1QMF9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUG9zdC1DdXJzb3IgcmF0aW8gd2l0aCBUeERlZW1wPTEsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFNUX1JBVElPX0RFRU1QMV9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggUHJlLUN1cnNvciByYXRpbyBUeERlZW1wPTEsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfUFJFX1JBVElPX0RFRU1QMV9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTAsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjBfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj0xLCBIYWxmIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU4xX0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49MiwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lOMl9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTMsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjNfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj00LCBIYWxmIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU40X0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBBbXBsaXR1ZGUgcmF0aW8gVHhNYXJnaW49NSwgSGFsZiBzd2luZw0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9BTVBfUkFUSU9fTUFSR0lONV9IQUxGOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHggQW1wbGl0dWRlIHJhdGlvIFR4TWFyZ2luPTYsIEhhbGYgc3dpbmcNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgVFhfQU1QX1JBVElPX01BUkdJTjZfSEFMRjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFR4IEFtcGxpdHVkZSByYXRpbyBUeE1hcmdpbj03LCBIYWxmIHN3aW5nDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFRYX0FNUF9SQVRJT19NQVJHSU43X0hBTEY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQTUEgc3RhdHVzDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBNQV9TVEFUVVM7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUeCBzd2VlcCBjZW50ZXIgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBUWF9TV0VFUF9DRU5URVI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSeCBzZWVwIGNlbnRlciAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJYX1NXRUVQX0NFTlRFUjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4IEVxdWFsaXphdGlvbiBzd2VlcCBjZW50ZXIgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRV9TV0VFUF9DRU5URVI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSZWNlaXZlciBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDAgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlJfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUmVjZWl2ZXIgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAxIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJSXzE0Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0RZTl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTENCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0RZTl8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgUCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyMC0yDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSUF9EWU5fMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0RZTl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTENCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0RZTl8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgQSBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyMC0yDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSQV9EWU5fMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTANCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0RZTl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIwLTENCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0RZTl8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgVCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyMC0yDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSVF9EWU5fMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMV83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0xIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMV8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgUCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEtMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSUF9FSTFfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0VJMV83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0xIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJBX0VJMV8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgQSBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEtMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSQV9FSTFfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0VJMV83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMS0xIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJUX0VJMV8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgVCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEtMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSVF9FSTFfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIHNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMi0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMl83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBQIHNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMi0xIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQVRYRFJQX0VJMl8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgUCBzaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDItMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSUF9FSTJfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IHBhcmFtZXRyIDItMCAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSQV9FSTJfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgQSBTaGlmdCBwYXJhbWV0ciAyLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUkFfRUkyXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBBIFNoaWZ0IHBhcmFtZXRyIDItMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSQV9FSTJfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IHBhcmFtZXRyIDItMCAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSVF9FSTJfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgVHJhbnNtaXR0ZXIgVCBTaGlmdCBwYXJhbWV0ciAyLTEgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBBVFhEUlRfRUkyXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBUcmFuc21pdHRlciBUIFNoaWZ0IHBhcmFtZXRyIDItMiAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEFUWERSVF9FSTJfMjBfMTY7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBPdmVycmlkZSBjYWxpYnJhdGlvbiByZWdpc3RlciAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIE9WRVJSSURFX0NBTElCOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgUmVjZWl2ZXIgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAwIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJSXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFJlY2VpdmVyIFNoaWZ0IExvYWRlciBwYXJhbWV0ZXIgMSAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSUl8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgUmVjZWl2ZXIgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJSXzIwXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgUCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDAgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlBfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgUCBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUlBfMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFRyYW5zbWl0dGVyIFAgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJQXzIwXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgQSBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDAgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUkFfN18wOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgQSBTaGlmdCBMb2FkZXIgcGFyYW1ldGVyIDEgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9BVFhEUkFfMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFRyYW5zbWl0dGVyIEEgU2hpZnQgTG9hZGVyIHBhcmFtZXRlciAyIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJBXzIwXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgVCBTaGlmdCBwYXJhbWV0ZXIgMC0wIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJUXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFRyYW5zbWl0dGVyIFQgU2hpZnQgcGFyYW1ldGVyIDAtMSAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX0FUWERSVF8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgVHJhbnNtaXR0ZXIgVCBTaGlmdCBwYXJhbWV0ZXIgMC0yIChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgRk9SQ0VfQVRYRFJUXzIwXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUnhEIG9mZnNldCBjYWxpYnJhdGlvbiByZXN1bHQgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSWERfT0ZGU0VUX0NBTElCX1JFU1VMVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJ4VCBvZmZzZXQgY2FsaWJyYXRpb24gcmVzdWx0IChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUlhUX09GRlNFVF9DQUxJQl9SRVNVTFQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBTY2htaXR0IHRyaWdnZXIgY2FsaWJyYXRpb24gcmVzdWx0IChSTykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgU0NITUlUVF9UUklHX0NBTElCX1JFU1VMVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEZvcmNlIFJ4RCBvZmZzZXQgY2FsaWJyYXRpb24gc2V0dGluZ3MgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9SWERfT0ZGU0VUX0NBTElCOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgRm9yY2UgUnhUIG9mZnNldCBjYWxpYnJhdGlvbiBzZXR0aW5ncyAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEZPUkNFX1JYVF9PRkZTRVRfQ0FMSUI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBGb3JjZSBTY2htaXR0IHRyaWdnZXIgY2FsaWJyYXRpb24gc2V0dGluZ3MgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBGT1JDRV9TQ0hNSVRUX1RSSUdfQ0FMSUI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGNvbnRyb2wgcmVnaXN0ZXIgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0NUUkw7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGVycm9yIGNvdW50ZXIgcmVnaXN0ZXIgKFJPKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUkNOVDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBIWSByZXNldCBvdmVycmlkZSByZWdpc3RlciAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBIWV9SRVNFVF9PVkVSUklERTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBIWSBwb3dlciBvdmVycmlkZSByZWdpc3RlciAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBIWV9QT1dFUl9PVkVSUklERTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgMCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgMSAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzE1Xzg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBCeXRlIDIgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl8yM18xNjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgMyAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzMxXzI0Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSA0IChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fMzlfMzI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBCeXRlIDUgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl80N180MDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgNiAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJONTVfNDg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBCeXRlIDcgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBDVVNUT01fUEFUVEVSTl82M181NjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIEJ5dGUgOCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOXzcxXzY0Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgQ3VzdG9tIFBhdHRlcm4gQnl0ZSA5IChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fNzlfNzI7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDdXN0b20gUGF0dGVybiBDb250cm9sIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgQ1VTVE9NX1BBVFRFUk5fQ1RSTDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEN1c3RvbSBQYXR0ZXJuIFN0YXR1cyByZWdpc3RlciAoUk8pDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENVU1RPTV9QQVRURVJOX1NUQVRVUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBDUyBMb29wYmFjayBDb250cm9sIChSVykNCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUENTX0xPT1BCQkFDS19DVFJMOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgR2VuMSBUcmFuc21pdCBQTEwgQ3VycmVudCBDaGFyZ2UgUHVtcCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEdFTjFfVFhfUExMX0NDUDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEdlbjEgUmVjZWl2ZSBQTEwgQ3VycmVudCBDaGFyZ2UgUHVtcCAoUlcpDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIEdFTjFfUlhfUExMX0NDUDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIEdlbjIgVHJhbnNtaXQgUExMIEN1cnJlbnQgQ2hhcmdlIFB1bXAgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBHRU4yX1RYX1BMTF9DQ1A7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBHZW4yIFJlY2VpdmUgUExMIEN1cnJlbnQgQ2hhcmdlIFB1bXAgKFJXKQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBHRU4yX1JYX1BMTF9DQ1A7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBDRFIgUExMIG1hbnVhbCBjb250cm9sDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIENEUl9QTExfTUFOVUFMX0NSOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUmVzZXJ2ZWQwDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEMFs2XTsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFVwZGF0ZSBzZXR0aW5ncyBjb21tYW5kIHJlZ2lzdGVyDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFVQREFURV9TRVRUSU5HUzsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFJlc2VydmVkMQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBSRVNFUlZFRDFbMzFdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzc6MF0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0ZJUlNUXzdfMDsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgZmlyc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFsxNTo4XQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfMTVfODsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgZmlyc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFsyMzoxNl0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0ZJUlNUXzIzXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzMxOjI0XQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfMzFfMjQ7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGZpcnN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbMzk6MzJdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19GSVJTVF8zOV8zMjsNCi0gICAgDQotICAgIC8qKg0KLSAgICAgIFBSQlMgZmlyc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFs0Nzo0MF0NCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUFJCU19FUlJfQ1lDX0ZJUlNUXzQ3XzQwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBmaXJzdCBlcnJvciBjeWNsZSBjb3VudGVyIGJpdHMgWzQ5OjQ4XQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfRklSU1RfNDlfNDg7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBSZXNlcnZlZDINCi0gICAgICovDQotICAgIF9fSU8gICAgdWludDMyX3QgICAgUkVTRVJWRUQyOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbNzowXQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfTEFTVF83XzA7DQotICAgIA0KLSAgICAvKioNCi0gICAgICBQUkJTIGxhc3QgZXJyb3IgY3ljbGUgY291bnRlciBiaXRzIFsxNTo4XQ0KLSAgICAgKi8NCi0gICAgX19JTyAgICB1aW50MzJfdCAgICBQUkJTX0VSUl9DWUNfTEFTVF8xNV84Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbMjM6MTZdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzIzXzE2Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbMzE6MjRdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzMxXzI0Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbMzk6MzJdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzM5XzMyOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbNDc6NDBdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzQ3XzQwOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgUFJCUyBsYXN0IGVycm9yIGN5Y2xlIGNvdW50ZXIgYml0cyBbNDk6NDhdDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFBSQlNfRVJSX0NZQ19MQVNUXzQ5XzQ4Ow0KLSAgICANCi0gICAgLyoqDQotICAgICAgUmVzZXJ2ZWQzDQotICAgICAqLw0KLSAgICBfX0lPICAgIHVpbnQzMl90ICAgIFJFU0VSVkVEM1s4MV07DQotICAgIA0KLX0gU0VSREVTX1R5cGVEZWY7DQotIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgc2VyZGVzaWZfcmVnc190IGRhdGEgc3RydWN0dXJlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgY29tcGxldGUgc2V0IG9mIHRoZQ0KLSAgU0VSREVTIEludGVyZmFjZSBoYXJkd2FyZSBibG9jayBjb25maWd1cmF0aW9uIHJlZ2lzdGVycy4gVGhlc2UgcmVnaXN0ZXJzIGFyZQ0KLSAgYWNjZXNzZWQgdGhyb3VnaCB0aGUgQVBCIGludGVyZmFjZSBvZiB0aGUgU0VSREVTIEludGVyZmFjZSBoYXJkd2FyZSBibG9jay4NCi0gKi8NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgLyoqDQotICAgICAgUENJZSBjb3JlIHJlZ2lzdGVycy4NCi0gICAgICovDQotICAgIFBDSUVfVHlwZURlZiAgICAgICAgICAgICAgICBjb3JlOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgU0VSREVTIG1hY3JvIHJlZ2lzdGVycy4NCi0gICAgICovDQotICAgIFNFUkRFU19UeXBlRGVmICAgICAgICAgICAgICBsYW5lWzRdOw0KLSAgICANCi0gICAgLyoqDQotICAgICAgU0VSREVTSUYgc3lzdGVtIHJlZ2lzdGVycy4NCi0gICAgICovDQotICAgIFNFUkRFU19JTlRGX1NZU1JFR19UeXBlRGVmICAgICBzeXNfcmVnczsNCi0gICAgDQotfSBTRVJERVNJRl9UeXBlRGVmOw0KLQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gU3lzdGVtIFJlZ2lzdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLXR5cGVkZWYgc3RydWN0DQotew0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFU1JBTV9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMCAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVTUkFNX01BWF9MQVRfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg0ICAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRERSX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDggICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFTlZNX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQyAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVOVk1fUkVNQVBfQkFTRV9DUjsgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRU5WTV9SRU1BUF9GQUJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBDQ19DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIENDX1JFR0lPTl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxQyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgQ0NfTE9DS19CQVNFX0FERFJfQ1I7ICAgICAgICAgICAgICAgICAgICAgLyowWDIwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBDQ19GTFVTSF9JTkRYX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMjQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEREUkJfQlVGX1RJTUVSX0NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyOCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRERSQl9OQl9BRERSX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDJDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBERFJCX05CX1NJWkVfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMzAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEREUkJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgzNCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRURBQ19DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDM4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNQVNURVJfV0VJR0hUMF9DUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYM0MgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1BU1RFUl9XRUlHSFQxX0NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg0MCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgU09GVF9JUlFfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDQ0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBTT0ZUX1JTVF9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNDggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE0zX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg0QyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRkFCX0lGX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDUwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBMT09QQkFDS19DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNTQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEdQSU9fU1lTUkVTRVRfU0VMX0NSOyAgICAgICAgICAgICAgICAgICAgIC8qMFg1OCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgR1BJTl9TUkNfU0VMX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDVDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNRERSX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNjAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFVTQl9JT19JTlBVVF9TRUxfQ1I7ICAgICAgICAgICAgICAgICAgICAgIC8qMFg2NCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgUEVSSVBIX0NMS19NVVhfU0VMX0NSOyAgICAgICAgICAgICAgICAgICAgLyowWDY4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBXRE9HX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYNkMgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1ERFJfSU9fQ0FMSUJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg3MCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgU1BBUkVfT1VUX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDc0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBFREFDX0lSUV9FTkFCTEVfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAvKjBYNzggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFVTQl9DUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg3QyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgRVNSQU1fUElQRUxJTkVfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDgwICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NfSVJRX0VOQUJMRV9DUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYODQgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFJUQ19XQUtFVVBfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFg4OCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTUFDX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDhDICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NERFJfUExMX1NUQVRVU19MT1dfQ1I7ICAgICAgICAgICAgICAgICAvKjBYOTAgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1TU0REUl9QTExfU1RBVFVTX0hJR0hfQ1I7ICAgICAgICAgICAgICAgIC8qMFg5NCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTVNTRERSX0ZBQ0MxX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDk4ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NERFJfRkFDQzJfQ1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYOUMgICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFBMTF9MT0NLX0VOX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhBMCAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTVNTRERSX0NMS19DQUxJQl9DUjsgICAgICAgICAgICAgICAgICAgICAgLyowWEE0ICAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBQTExfREVMQVlfTElORV9TRUxfQ1I7ICAgICAgICAgICAgICAgICAgICAvKjBYQTggICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIE1BQ19TVEFUX0NMUk9OUkRfQ1I7ICAgICAgICAgICAgICAgICAgICAgIC8qMFhBQyAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgUkVTRVRfU09VUkNFX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEIwICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19EQ19FUlJfQUREUl9TUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQjQgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0lDX0VSUl9BRERSX1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhCOCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfU0JfRVJSX0FERFJfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWEJDICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19ERUNDX0VSUl9BRERSX1NSOyAgICAgICAgICAgICAgICAgICAgICAvKjBYQzAgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0lDX01JU1NfQ05UX1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhDNCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfSUNfSElUX0NOVF9TUjsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEM4ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19EQ19NSVNTX0NOVF9TUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYQ0MgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIENDX0RDX0hJVF9DTlRfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhEMCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfSUNfVFJBTlNfQ05UX1NSOyAgICAgICAgICAgICAgICAgICAgICAgLyowWEQ0ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQ19EQ19UUkFOU19DTlRfU1I7ICAgICAgICAgICAgICAgICAgICAgICAvKjBYRDggICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEREUkJfRFNfRVJSX0FEUl9TUjsgICAgICAgICAgICAgICAgICAgICAgIC8qMFhEQyAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRERSQl9IUERfRVJSX0FEUl9TUjsgICAgICAgICAgICAgICAgICAgICAgLyowWEUwICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBERFJCX1NXX0VSUl9BRFJfU1I7ICAgICAgICAgICAgICAgICAgICAgICAvKjBYRTQgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEREUkJfQlVGX0VNUFRZX1NSOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhFOCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRERSQl9EU0JMX0ROX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEVDICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBFU1JBTTBfRURBQ19DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYRjAgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVTUkFNMV9FREFDX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFhGNCAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0NfRURBQ19DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWEY4ICAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNQUNfRURBQ19UWF9DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYRkMgICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1BQ19FREFDX1JYX0NOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMDAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgVVNCX0VEQUNfQ05UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEwNCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBDQU5fRURBQ19DTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTA4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVTUkFNMF9FREFDX0FEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMEMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRVNSQU0xX0VEQUNfQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDExMCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNQUNfRURBQ19SWF9BRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTE0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1BQ19FREFDX1RYX0FEUjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMTggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgQ0FOX0VEQUNfQURSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDExQyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBVU0JfRURBQ19BRFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTIwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1NMF8xXzJfU0VDVVJJVFk7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMjQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTU00XzVfRklDNjRfU0VDVVJJVFk7ICAgICAgICAgICAgICAgICAgICAgLyowWDEyOCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNTTNfNl83XzhfU0VDVVJJVFk7ICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTJDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1NOV9TRUNVUklUWTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxMzAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTTNfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDEzNCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBFVE1fQ09VTlRfTE9XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTM4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVUTV9DT1VOVF9ISUdIOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxM0MgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgREVWSUNFX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE0MCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBFTlZNX1BST1RFQ1RfVVNFUjsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTQ0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEVOVk1fU1RBVFVTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNDggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgREVWSUNFX1ZFUlNJT047ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE0QyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNU1NERFJfUExMX1NUQVRVUzsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTUwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFVTQl9TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNTQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRU5WTV9TUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE1OCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBTUEFSRV9JTjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTVDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEREUkJfU1RBVFVTOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNjAgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgTUREUl9JT19DQUxJQl9TVEFUVVM7ICAgICAgICAgICAgICAgICAgICAgLyowWDE2NCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNU1NERFJfQ0xLX0NBTElCX1NUQVRVUzsgICAgICAgICAgICAgICAgICAvKjBYMTY4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFdET0dMT0FEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNkMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgV0RPR01WUlA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE3MCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBVU0VSQ09ORklHMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTc0ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFVTRVJDT05GSUcxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxNzggKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgVVNFUkNPTkZJRzI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE3QyAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBVU0VSQ09ORklHMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTgwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIEZBQl9QUk9UX1NJWkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxODQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgRkFCX1BST1RfQkFTRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE4OCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNU1NfR1BJT19ERUY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMThDICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEVEQUNfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxOTAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTVNTX0lOVEVSTkFMX1NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDE5NCAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBNU1NfRVhURVJOQUxfU1I7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMTk4ICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIFdET0dUSU1FT1VURVZFTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxOUMgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgQ0xSX01TU19DT1VOVEVSUzsgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDFBMCAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBDTFJfRURBQ19DT1VOVEVSUzsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMUE0ICovDQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgIEZMVVNIX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgxQTggKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTUFDX1NUQVRfQ0xSX0NSOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDFBQyAqLw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgICBJT01VWENFTExfQ09ORklHWzU3XTsgICAgICAgICAgICAgICAgICAgICAvKjBYMUIwICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE5WTV9QUk9URUNUX0ZBQ1RPUlk7ICAgICAgICAgICAgICAgICAgICAgIC8qMFgyOTQgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgREVWSUNFX1NUQVRVU19GSVhFRDsgICAgICAgICAgICAgICAgICAgICAgLyowWDI5OCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBNQklTVF9FUzA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMjlDICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIE1CSVNUX0VTMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyQTAgKi8NCi0gICAgX19JTyAgICAgdWludDMyX3QgICAgTVNERFJfUExMX1NUQVVTXzE7ICAgICAgICAgICAgICAgICAgICAgICAgLyowWDJBNCAqLw0KLSAgICBfX0kgICAgICB1aW50MzJfdCAgICBSRURVTkRBTkNZX0VTUkFNMDsgICAgICAgICAgICAgICAgICAgICAgICAvKjBYMkE4ICovDQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgIFJFRFVOREFOQ1lfRVNSQU0xOyAgICAgICAgICAgICAgICAgICAgICAgIC8qMFgyQUMgKi8NCi0gICAgX19JICAgICAgdWludDMyX3QgICAgU0VSREVTSUY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyowWDJCMCAqLw0KLQ0KLX0gU1lTUkVHX1R5cGVEZWY7DQotDQotI2RlZmluZSBTWVNSRUdfRU5WTTBfU09GVFJFU0VUX01BU0sgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAwdSApDQotI2RlZmluZSBTWVNSRUdfRU5WTTFfU09GVFJFU0VUX01BU0sgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxdSApDQotI2RlZmluZSBTWVNSRUdfRVNSQU0wX1NPRlRSRVNFVF9NQVNLICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAydSApDQotI2RlZmluZSBTWVNSRUdfRVNSQU0xX1NPRlRSRVNFVF9NQVNLICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAzdSApDQotI2RlZmluZSBTWVNSRUdfTUFDX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA0dSApDQotI2RlZmluZSBTWVNSRUdfUERNQV9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA1dSApDQotI2RlZmluZSBTWVNSRUdfVElNRVJfU09GVFJFU0VUX01BU0sgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA2dSApDQotI2RlZmluZSBTWVNSRUdfTU1VQVJUMF9TT0ZUUkVTRVRfTUFTSyAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA3dSApDQotI2RlZmluZSBTWVNSRUdfTU1VQVJUMV9TT0ZUUkVTRVRfTUFTSyAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA4dSApDQotI2RlZmluZSBTWVNSRUdfU1BJMF9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCA5dSApDQotI2RlZmluZSBTWVNSRUdfU1BJMV9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxMHUgKQ0KLSNkZWZpbmUgU1lTUkVHX0kyQzBfU09GVFJFU0VUX01BU0sgICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTF1ICkNCi0jZGVmaW5lIFNZU1JFR19JMkMxX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDEydSApDQotI2RlZmluZSBTWVNSRUdfQ0FOX1NPRlRSRVNFVF9NQVNLICAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxM3UgKQ0KLSNkZWZpbmUgU1lTUkVHX1VTQl9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTR1ICkNCi0jZGVmaW5lIFNZU1JFR19DT01CTEtfU09GVFJFU0VUX01BU0sgICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDE1dSApDQotI2RlZmluZSBTWVNSRUdfRlBHQV9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxNnUgKQ0KLSNkZWZpbmUgU1lTUkVHX0hQRE1BX1NPRlRSRVNFVF9NQVNLICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMTd1ICkNCi0jZGVmaW5lIFNZU1JFR19GSUMzMl8wX1NPRlRSRVNFVF9NQVNLICAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDE4dSApDQotI2RlZmluZSBTWVNSRUdfRklDMzJfMV9TT0ZUUkVTRVRfTUFTSyAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAxOXUgKQ0KLSNkZWZpbmUgU1lTUkVHX0dQSU9fU09GVFJFU0VUX01BU0sgICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMjB1ICkNCi0jZGVmaW5lIFNZU1JFR19HUElPXzdfMF9TT0ZUUkVTRVRfTUFTSyAgICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDIxdSApDQotI2RlZmluZSBTWVNSRUdfR1BJT18xNV84X1NPRlRSRVNFVF9NQVNLICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAyMnUgKQ0KLSNkZWZpbmUgU1lTUkVHX0dQSU9fMjNfMTZfU09GVFJFU0VUX01BU0sgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMjN1ICkNCi0jZGVmaW5lIFNZU1JFR19HUElPXzMxXzI0X1NPRlRSRVNFVF9NQVNLICAgICggKHVpbnQzMl90KTB4MDF1IDw8IDI0dSApDQotI2RlZmluZSBTWVNSRUdfTUREUl9TT0ZUUkVTRVRfTUFTSyAgICAgICAgICAoICh1aW50MzJfdCkweDAxdSA8PCAyNXUgKQ0KLSNkZWZpbmUgU1lTUkVHX0ZJQzY0X1NPRlRSRVNFVF9NQVNLICAgICAgICAgKCAodWludDMyX3QpMHgwMXUgPDwgMjZ1ICkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gQ29yZVNGMkNvbmZpZyBSZWdpc3RlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCi10eXBlZGVmIHN0cnVjdCB7DQotICAgIF9fSU8gICAgIHVpbnQzMl90ICAgQ09ORklHX0RPTkU7DQotICAgIF9fSSAgICAgIHVpbnQzMl90ICAgSU5JVF9ET05FOw0KLSAgICBfX0lPICAgICB1aW50MzJfdCAgIENMUl9JTklUX0RPTkU7DQotfSBDb3JlU0YyQ29uZmlnX1R5cGVEZWY7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICBQZXJpcGhlcmFsIG1lbW9yeSBtYXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBVQVJUMF9CQVNFICAgICAgICAgICAgICAweDQwMDAwMDAwdQ0KLSNkZWZpbmUgU1BJMF9CQVNFICAgICAgICAgICAgICAgMHg0MDAwMTAwMHUNCi0jZGVmaW5lIEkyQzBfQkFTRSAgICAgICAgICAgICAgIDB4NDAwMDIwMDB1DQotI2RlZmluZSBQRE1BX0JBU0UgICAgICAgICAgICAgICAweDQwMDAzMDAwdQ0KLSNkZWZpbmUgVElNRVJfQkFTRSAgICAgICAgICAgICAgMHg0MDAwNDAwMHUNCi0jZGVmaW5lIFdBVENIRE9HX0JBU0UgICAgICAgICAgIDB4NDAwMDUwMDB1DQotI2RlZmluZSBIMkZfSVJRX0NUUkxfQkFTRSAgICAgICAweDQwMDA2MDAwdQ0KLSNkZWZpbmUgVUFSVDFfQkFTRSAgICAgICAgICAgICAgMHg0MDAxMDAwMHUNCi0jZGVmaW5lIFNQSTFfQkFTRSAgICAgICAgICAgICAgIDB4NDAwMTEwMDB1DQotI2RlZmluZSBJMkMxX0JBU0UgICAgICAgICAgICAgICAweDQwMDEyMDAwdQ0KLSNkZWZpbmUgR1BJT19CQVNFICAgICAgICAgICAgICAgMHg0MDAxMzAwMHUNCi0jZGVmaW5lIEhQRE1BX0JBU0UgICAgICAgICAgICAgIDB4NDAwMTQwMDB1DQotI2RlZmluZSBDQU5fQkFTRSAgICAgICAgICAgICAgICAweDQwMDE1MDAwdQ0KLSNkZWZpbmUgQ09NQkxLX0JBU0UgICAgICAgICAgICAgMHg0MDAxNjAwMHUNCi0jZGVmaW5lIFJUQ19CQVNFICAgICAgICAgICAgICAgIDB4NDAwMTcwMDB1DQotI2RlZmluZSBERFIwX0NGR19CQVNFICAgICAgICAgICAweDQwMDIwODAwdQ0KLSNkZWZpbmUgRERSMV9DRkdfQkFTRSAgICAgICAgICAgMHg0MDAyMTAwMHUNCi0jZGVmaW5lIENPUkVfU0YyX0NGR19CQVNFICAgICAgIDB4NDAwMjIwMDB1DQotI2RlZmluZSBTRVJERVMwX0NGR19CQVNFICAgICAgICAweDQwMDI4MDAwdQ0KLSNkZWZpbmUgU0VSREVTMV9DRkdfQkFTRSAgICAgICAgMHg0MDAyQzAwMHUNCi0jZGVmaW5lIFNZU1JFR19CQVNFICAgICAgICAgICAgIDB4NDAwMzgwMDB1DQotI2RlZmluZSBFVEhFUk5FVF9CQVNFICAgICAgICAgICAweDQwMDQxMDAwdQ0KLSNkZWZpbmUgVVNCX0JBU0UgICAgICAgICAgICAgICAgMHg0MDA0MzAwMHUNCi0jZGVmaW5lIEVOVk0xX0JBU0UgICAgICAgICAgICAgIDB4NjAwODAwMDB1DQotI2RlZmluZSBFTlZNMl9CQVNFICAgICAgICAgICAgICAweDYwMEMwMDAwdQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogYml0YmFuZCBhZGRyZXNzIGNhbGN1bGF0aW9uIG1hY3JvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBCSVRCQU5EX0FERFJFU1MoWCkgICgoWCAmIDB4RjAwMDAwMDBVKSArIDB4MDIwMDAwMDBVICsgKChYICYgMHhGRkZGRlUpIDw8IDUpKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogICAgICAgICAgICAgICAgICAgICAgICAgUGVyaXBoZXJhbCBkZWNsYXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLSNkZWZpbmUgVUFSVDAgICAgICAgICAgICAgICAgICAgKChVQVJUX1R5cGVEZWYgKikgVUFSVDBfQkFTRSkNCi0jZGVmaW5lIFNQSTAgICAgICAgICAgICAgICAgICAgICgoU1BJX1R5cGVEZWYgKikgU1BJMF9CQVNFKQ0KLSNkZWZpbmUgSTJDMCAgICAgICAgICAgICAgICAgICAgKChJMkNfVHlwZURlZiAqKSBJMkMwX0JBU0UpDQotI2RlZmluZSBJMkMwX0JJVEJBTkQgICAgICAgICAgICAoKEkyQ19CaXRCYW5kX1R5cGVEZWYgKikgQklUQkFORF9BRERSRVNTKEkyQzBfQkFTRSkpDQotI2RlZmluZSBNQUMgICAgICAgICAgICAgICAgICAgICAoKE1BQ19UeXBlRGVmICopIEVUSEVSTkVUX0JBU0UpDQotI2RlZmluZSBQRE1BICAgICAgICAgICAgICAgICAgICAoKFBETUFfVHlwZURlZiAqKSBQRE1BX0JBU0UpDQotI2RlZmluZSBUSU1FUiAgICAgICAgICAgICAgICAgICAoKFRJTUVSX1R5cGVEZWYgKikgVElNRVJfQkFTRSkNCi0jZGVmaW5lIFRJTUVSX0JJVEJBTkQgICAgICAgICAgICgoVElNRVJfQml0QmFuZF9UeXBlRGVmICopIEJJVEJBTkRfQUREUkVTUyhUSU1FUl9CQVNFKSkNCi0jZGVmaW5lIFdBVENIRE9HICAgICAgICAgICAgICAgICgoV0FUQ0hET0dfVHlwZURlZiAqKSBXQVRDSERPR19CQVNFKQ0KLSNkZWZpbmUgSU5URVJSVVBUX0NUUkwgICAgICAgICAgKChJTlRFUlJVUFRfQ1RSTF9UeXBlRGVmICopIEgyRl9JUlFfQ1RSTF9CQVNFKQ0KLSNkZWZpbmUgSU5URVJSVVBUX0NUUkxfQklUQkFORCAgKChJTlRFUlJVUFRfQ1RSTF9CaXRCYW5kX1R5cGVEZWYgKikgQklUQkFORF9BRERSRVNTKEgyRl9JUlFfQ1RSTF9CQVNFKSkNCi0jZGVmaW5lIFVBUlQxICAgICAgICAgICAgICAgICAgICgoVUFSVF9UeXBlRGVmICopIFVBUlQxX0JBU0UpDQotI2RlZmluZSBTUEkxICAgICAgICAgICAgICAgICAgICAoKFNQSV9UeXBlRGVmICopIFNQSTFfQkFTRSkNCi0jZGVmaW5lIEkyQzEgICAgICAgICAgICAgICAgICAgICgoSTJDX1R5cGVEZWYgKikgSTJDMV9CQVNFKQ0KLSNkZWZpbmUgSTJDMV9CSVRCQU5EICAgICAgICAgICAgKChJMkNfQml0QmFuZF9UeXBlRGVmICopIEJJVEJBTkRfQUREUkVTUyhJMkMxX0JBU0UpKQ0KLSNkZWZpbmUgR1BJTyAgICAgICAgICAgICAgICAgICAgKChHUElPX1R5cGVEZWYgKikgR1BJT19CQVNFKQ0KLSNkZWZpbmUgR1BJT19CSVRCQU5EICAgICAgICAgICAgKChHUElPX0JpdEJhbmRfVHlwZURlZiAqKSBCSVRCQU5EX0FERFJFU1MoR1BJT19CQVNFKSkNCi0jZGVmaW5lIEhQRE1BICAgICAgICAgICAgICAgICAgICgoSFBETUFfVHlwZURlZiAqKSBIUERNQV9CQVNFKQ0KLSNkZWZpbmUgSFBETUFfQklUQkFORCAgICAgICAgICAgKChIUERNQV9CaXRCYW5kX1R5cGVEZWYgKikgQklUQkFORF9BRERSRVNTKEhQRE1BX0JBU0UpKQ0KLSNkZWZpbmUgQ09NQkxLICAgICAgICAgICAgICAgICAgKChDT01CTEtfVHlwZURlZiAqKSBDT01CTEtfQkFTRSkNCi0jZGVmaW5lIFJUQyAgICAgICAgICAgICAgICAgICAgICgoUlRDX1R5cGVEZWYgKikgUlRDX0JBU0UpDQotI2RlZmluZSBFTlZNXzEgICAgICAgICAgICAgICAgICAoKE5WTV9UeXBlRGVmICopIEVOVk0xX0JBU0UpDQotI2RlZmluZSBFTlZNXzIgICAgICAgICAgICAgICAgICAoKE5WTV9UeXBlRGVmICopIEVOVk0yX0JBU0UpDQotI2RlZmluZSBTWVNSRUcgICAgICAgICAgICAgICAgICAoKFNZU1JFR19UeXBlRGVmICopIFNZU1JFR19CQVNFKQ0KLSNkZWZpbmUgTUREUiAgICAgICAgICAgICAgICAgICAgKChNRERSX1R5cGVEZWYgKikgRERSMF9DRkdfQkFTRSkNCi0jZGVmaW5lIEZERFIgICAgICAgICAgICAgICAgICAgICgoRkREUl9UeXBlRGVmICopIEREUjFfQ0ZHX0JBU0UpIA0KLSNkZWZpbmUgVVNCICAgICAgICAgICAgICAgICAgICAgKChNU1NfVVNCX1R5cGVEZWYgKikgVVNCX0JBU0UpDQotI2RlZmluZSBTRVJERVMwICAgICAgICAgICAgICAgICAoKFNFUkRFU0lGX1R5cGVEZWYgKikgU0VSREVTMF9DRkdfQkFTRSkNCi0jZGVmaW5lIFNFUkRFUzEgICAgICAgICAgICAgICAgICgoU0VSREVTSUZfVHlwZURlZiAqKSBTRVJERVMxX0NGR19CQVNFKQ0KLSNkZWZpbmUgQ09SRV9TRjJfQ0ZHICAgICAgICAgICAgKChDb3JlU0YyQ29uZmlnX1R5cGVEZWYgKikgQ09SRV9TRjJfQ0ZHX0JBU0UpDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAgLyogX19TTUFSVEZVU0lPTjJfQ01TSVNfUEFMX0hfXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvbXNzX2Fzc2VydC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9tc3NfYXNzZXJ0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NjkxNWYuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9tc3NfYXNzZXJ0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogQXNzZXJ0aW9uIGltcGxlbWVudGF0aW9uLg0KLSAqDQotICogVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQVNTRVJUIG1hY3JvLiBUaGlzIGZpbGUgY2FuIGJlDQotICogbW9kaWZpZWQgdG8gY2F0ZXIgZm9yIHByb2plY3Qgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIHJlZ2FyZGluZyB0aGUgd2F5DQotICogYXNzZXJ0aW9ucyBhcmUgaGFuZGxlZC4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNzkgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMiAyMDo0ODozOCArMDAwMCAoRnJpLCAyMiBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgX19NU1NfQVNTRVJUX0hfDQotI2RlZmluZSBfX01TU19BU1NFUlRfSF8NCi0NCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+DQotDQotI2lmIGRlZmluZWQgKCBfX0dOVUNfXyAgICkNCi0NCi0jaWYgZGVmaW5lZChOREVCVUcpDQotDQotI2RlZmluZSBBU1NFUlQoQ0hFQ0spDQotDQotI2Vsc2UgICAvKiBOREVCVUcgKi8NCi0vKg0KLSAqIFNvZnRDb25zb2xlIGFzc2VydGlvbiBoYW5kbGluZw0KLSAqLw0KLSNkZWZpbmUgQVNTRVJUKENIRUNLKSAgXA0KLSAgICBkbyB7IFwNCi0gICAgICAgIGlmICghKENIRUNLKSkgXA0KLSAgICAgICAgeyBcDQotICAgICAgICAgICAgX19hc20gdm9sYXRpbGUgKCJCS1BUXG5cdCIpOyBcDQotICAgICAgICB9IFwNCi0gICAgfSB3aGlsZSAoMCk7DQotICAgIA0KLSNlbmRpZiAgLyogTkRFQlVHICovDQotDQotI2VsaWYgZGVmaW5lZCAoIF9fSUNDQVJNX18gKQ0KLS8qDQotICogSUFSIEVtYmVkZGVkIFdvcmtiZW5jaCBhc3NlcnRpb24gaGFuZGxpbmcuDQotICogQ2FsbCBDIGxpYnJhcnkgYXNzZXJ0IGZ1bmN0aW9uIHdoaWNoIHNob3VsZCByZXN1bHQgaW4gZXJyb3IgbWVzc2FnZQ0KLSAqIGRpc3BsYXllZCBpbiBkZWJ1Z2dlci4NCi0gKi8NCi0jZGVmaW5lIEFTU0VSVChYKSAgIGFzc2VydChYKQ0KLQ0KLSNlbHNlDQotLyoNCi0gKiBLZWlsIGFzc2VydGlvbiBoYW5kbGluZy4NCi0gKiBDYWxsIEMgbGlicmFyeSBhc3NlcnQgZnVuY3Rpb24gd2hpY2ggc2hvdWxkIHJlc3VsdCBpbiBlcnJvciBtZXNzYWdlDQotICogZGlzcGxheWVkIGluIGRlYnVnZ2VyLg0KLSAqLw0KLQ0KLSNpZm5kZWYgX19NSUNST0xJQg0KLSAgI2RlZmluZSBBU1NFUlQoWCkgICBhc3NlcnQoWCkNCi0jZWxzZQ0KLSAgI2RlZmluZSBBU1NFUlQoWCkNCi0jZW5kaWYNCi0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgIC8qIF9fTVNTX0FTU0VSVF9IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvZGVidWctaW4tZXh0ZXJuYWwtcmFtLmxkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1leHRlcm5hbC1yYW0ubGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YWNhMjMuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1leHRlcm5hbC1yYW0ubGQKKysrIC9kZXYvbnVsbApAQCAtMSwxODYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIChjKSBDb3B5cmlnaHQgMjAxMi0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBTbWFydEZ1c2lvbjIgQ29ydGV4LU0zIGxpbmtlciBzY3JpcHQgZm9yIGNyZWF0aW5nIGEgU29mdENvbnNvbGUgZG93bmxvYWRhYmxlCi0gKiBkZWJ1ZyBpbWFnZSBleGVjdXRpbmcgaW4gU21hcnRGdXNpb24yIGRldmVsb3BtZW50IGJvYXJkIGV4dGVybmFsIFJBTS4KLSAqCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQKLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJAotICovCi0KLU9VVFBVVF9GT1JNQVQoImVsZjMyLWxpdHRsZWFybSIsICJlbGYzMi1iaWdhcm0iLAotCSAgICAgICJlbGYzMi1saXR0bGVhcm0iKQotR1JPVVAoLWxjIC1sZ2NjIC1sbSkKLU9VVFBVVF9BUkNIKGFybSkKLUVOVFJZKFJlc2V0X0hhbmRsZXIpCi1TRUFSQ0hfRElSKC4pCi1fX0RZTkFNSUMgID0gIDA7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBTdGFydCBvZiBib2FyZCBjdXN0b21pemF0aW9uLgotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCi1NRU1PUlkKLXsKLSAgLyogU21hcnRGdXNpb24yIGludGVybmFsIGVTUkFNICovCi0gIGVzcmFtIChyd3gpIDogT1JJR0lOID0gMHgyMDAwMDAwMCwgTEVOR1RIID0gNjRrCi0gIAotICAvKiBTbWFydEZ1c2lvbjIgZGV2ZWxvcG1lbnQgYm9hcmQgZXh0ZXJuYWwgUkFNICovCi0gIGV4dGVybmFsX3JhbSAocnd4KSA6IE9SSUdJTiA9IDB4NzAwMDAwMDAsIExFTkdUSCA9IDJNCi19Ci0KLVJBTV9TVEFSVF9BRERSRVNTID0gMHg3MDAwMDAwMDsJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBNRU1PUlkgcmVnaW9uIHJhbSBPUklHSU4gYWJvdmUuICovCi1SQU1fU0laRSA9IDY0azsJCQkJCS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgTUVNT1JZIHJlZ2lvbiByYW0gTEVOR1RIIGFib3ZlLiAqLwotTUFJTl9TVEFDS19TSVpFID0gOGs7CQkJLyogQ29ydGV4IG1haW4gc3RhY2sgc2l6ZS4gKi8KLVBST0NFU1NfU1RBQ0tfU0laRQk9IDRrOwkJLyogQ29ydGV4IHByb2Nlc3Mgc3RhY2sgc2l6ZSAob25seSBhdmFpbGFibGUgd2l0aCBPUyBleHRlbnNpb25zKS4qLwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogRW5kIG9mIGJvYXJkIGN1c3RvbWl6YXRpb24uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLSAKLVBST1ZJREUgKF9fbWFpbl9zdGFja19zdGFydCA9IFJBTV9TVEFSVF9BRERSRVNTICsgUkFNX1NJWkUpOwotUFJPVklERSAoX19wcm9jZXNzX3N0YWNrX3N0YXJ0ID0gX19tYWluX3N0YWNrX3N0YXJ0IC0gTUFJTl9TVEFDS19TSVpFKTsKLVBST1ZJREUgKF9lc3RhY2sgPSBfX21haW5fc3RhY2tfc3RhcnQpOwotUFJPVklERSAoX19taXJyb3JlZF9udm0gPSAwKTsgICAvKiBJbmRpY2F0ZSB0byBzdGFydHVwIGNvZGUgdGhhdCBOVk0gaXMgbm90IG1pcnJvcmVkIHRvIFZNQSBhZGRyZXNzIC50ZXh0IGNvcHkgaXMgcmVxdWlyZWQuICovCi0KLVNFQ1RJT05TCi17Ci0gIC5pbml0IDoKLSAgewotICAgIF9fdmVjdG9yX3RhYmxlX3ZtYV9iYXNlX2FkZHJlc3MgPSAuOwotICAgICooLmlzcl92ZWN0b3IpCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gIH0gPmVzcmFtCi0gIAotICAudGV4dCA6Ci0gIHsKLSAgICBDUkVBVEVfT0JKRUNUX1NZTUJPTFMKLSAgICBfX3RleHRfbG9hZCA9IExPQURBRERSKC50ZXh0KTsKLSAgICBfX3RleHRfc3RhcnQgPSAuOwotICAgICooLnRleHQgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKLSAgICAqKC5wbHQpCi0gICAgKiguZ251Lndhcm5pbmcpCi0gICAgKiguZ2x1ZV83dCkgKiguZ2x1ZV83KSAqKC52ZnAxMV92ZW5lZXIpCi0KLSAgICAuID0gQUxJR04oMHg0KTsKLSAgICAvKiBUaGVzZSBhcmUgZm9yIHJ1bm5pbmcgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgdW5kZXIgRUxGLiAgKi8KLSAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5jdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5jdG9ycykpCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuZHRvcnMpKQotICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguZHRvcnMpKQotCi0gICAgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikKLQotICAgICooLkFSTS5leHRhYiogLmdudS5saW5rb25jZS5hcm1leHRhYi4qKQotICAgICooLmdjY19leGNlcHRfdGFibGUpIAotICAgICooLmVoX2ZyYW1lX2hkcikKLSAgICAqKC5laF9mcmFtZSkKLQotICAgIEtFRVAgKCooLmluaXQpKQotICAgIEtFRVAgKCooLmZpbmkpKQotCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooU09SVCguaW5pdF9hcnJheS4qKSkpCi0gICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKiguZmluaV9hcnJheSkpCi0gICAgS0VFUCAoKihTT1JUKC5maW5pX2FycmF5LiopKSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwotICB9ID5leHRlcm5hbF9yYW0KLSAgLyogLkFSTS5leGlkeCBpcyBzb3J0ZWQsIHNvIGhhcyB0byBnbyBpbiBpdHMgb3duIG91dHB1dCBzZWN0aW9uLiAgKi8KLSAgIF9fZXhpZHhfc3RhcnQgPSAuOwotICAuQVJNLmV4aWR4IDoKLSAgewotICAgICooLkFSTS5leGlkeCogLmdudS5saW5rb25jZS5hcm1leGlkeC4qKQotICB9ID5leHRlcm5hbF9yYW0KLSAgX19leGlkeF9lbmQgPSAuOwotICBfZXRleHQgPSAuOwotICBQUk9WSURFKF9fdGV4dF9lbmQgPSAuKTsKLQotICAuZGF0YSA6Ci0gIHsKLSAgICBfX2RhdGFfbG9hZCA9IExPQURBRERSICguZGF0YSk7Ci0gICAgX3NpZGF0YSA9IExPQURBRERSICguZGF0YSk7Ci0gICAgX19kYXRhX3N0YXJ0ID0gLjsKLSAgICBfc2RhdGEgPSAuOwotICAgIEtFRVAoKiguamNyKSkKLSAgICAqKC5nb3QucGx0KSAqKC5nb3QpCi0gICAgKiguc2hkYXRhKQotICAgICooLmRhdGEgLmRhdGEuKiAuZ251LmxpbmtvbmNlLmQuKikKLSAgICAuID0gQUxJR04gKDQpOwotICAgIF9lZGF0YSA9IC47Ci0gIH0gPmV4dGVybmFsX3JhbSAKLQotICAuYnNzIDoKLSAgewotICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKLSAgICBfc2JzcyA9IC47Ci0gICAgKiguc2hic3MpCi0gICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKLSAgICAqKENPTU1PTikKLSAgICAuID0gQUxJR04gKDgpOwotICAgIF9fYnNzX2VuZF9fID0gLjsKLSAgICBfZW5kID0gLjsKLSAgICBfX2VuZCA9IF9lbmQ7Ci0gICAgX2Vic3MgPSAuOwotICAgIFBST1ZJREUoZW5kID0gLik7Ci0gIH0gPmV4dGVybmFsX3JhbSAKLQotICAvKiAKLSAgICogVGhlIC5zdGFjayBzZWN0aW9uIGlzIG9ubHkgc3BlY2lmaWVkIGhlcmUgaW4gb3JkZXIgZm9yIHRoZSBsaW5rZXIgdG8gZ2VuZXJhdGUKLSAgICogYW4gZXJyb3IgaWYgdGhlIGVzcmFtIGlzIGZ1bGwuCi0gICAqLwotICAuc3RhY2sgOgotICB7Ci0gIAkuID0gQUxJR04oNCk7Ci0gICAgLiArPSBQUk9DRVNTX1NUQUNLX1NJWkU7Ci0gICAgLiA9IEFMSUdOKDQpOwotICAgIC4gKz0gTUFJTl9TVEFDS19TSVpFOwotICAgIC4gPSBBTElHTig0KTsKLSAgfSA+ZXh0ZXJuYWxfcmFtCi0gIAotICAuc3RhYiAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWIpCi0gIH0KLQotICAuc3RhYnN0ciAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWJzdHIpCi0gIH0KLSAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCi0gICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwotICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwotICAvKiBEV0FSRiAxICovCi0gIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQotICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQotICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCi0gIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9Ci0gIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9Ci0gIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwotICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQotICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KLSAgLyogRFdBUkYgMiAqLwotICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KLSAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQotICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQotICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KLSAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQotICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9Ci0gIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9Ci0gIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQotICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQotICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQotICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9Ci0gIC5ub3RlLmdudS5hcm0uaWRlbnQgMCA6IHsgS0VFUCAoKigubm90ZS5nbnUuYXJtLmlkZW50KSkgfQotICAuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguQVJNLmF0dHJpYnV0ZXMpKSB9Ci0gIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmlzcl92ZWN0b3IpIH0KLX0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvZGVidWctaW4tbWljcm9zZW1pLXNtYXJ0ZnVzaW9uMi1lbnZtLmxkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVudm0ubGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZGFhMTguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVudm0ubGQKKysrIC9kZXYvbnVsbApAQCAtMSwxODQgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIChjKSBDb3B5cmlnaHQgMjAxMi0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBTbWFydEZ1c2lvbjIgQ29ydGV4LU0zIGxpbmtlciBzY3JpcHQgZm9yIGNyZWF0aW5nIGEgU29mdENvbnNvbGUgZG93bmxvYWRhYmxlCi0gKiBkZWJ1ZyBpbWFnZSBleGVjdXRpbmcgaW4gU21hcnRGdXNpb24yIGludGVybmFsIGVOVk0uCi0gKgotICogU1ZOICRSZXZpc2lvbjogNTI2OSAkCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NTM6MzggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQKLSAqLwotCi1PVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItYmlnYXJtIiwKLQkgICAgICAiZWxmMzItbGl0dGxlYXJtIikKLUdST1VQKC1sYyAtbGdjYyAtbG0pCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShSZXNldF9IYW5kbGVyKQotU0VBUkNIX0RJUiguKQotX19EWU5BTUlDICA9ICAwOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU3RhcnQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotTUVNT1JZCi17Ci0gIC8qCi0gICAqIFdBUk5JTkc6IFRoZSB3b3JkcyAiU09GVENPTlNPTEUiLCAiRkxBU0giLCBhbmQgIlVTRSIsIHRoZSBjb2xvbiAiOiIsIGFuZAotICAgKiAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgdHlwZSBvZiBmbGFzaCBtZW1vcnkgYXJlIGFsbCBpbiBhIHNwZWNpZmljIG9yZGVyLgotICAgKiAgICAgICAgICBQbGVhc2UgZG8gbm90IG1vZGlmeSB0aGF0IGNvbW1lbnQgbGluZSwgaW4gb3JkZXIgdG8gZW5zdXJlCi0gICAqICAgICAgICAgIGRlYnVnZ2luZyBvZiB5b3VyIGFwcGxpY2F0aW9uIHdpbGwgdXNlIHRoZSBmbGFzaCBtZW1vcnkgY29ycmVjdGx5LgotICAgKi8KLQotICAvKiBTT0ZUQ09OU09MRSBGTEFTSCBVU0U6IG1pY3Jvc2VtaS1zbWFydGZ1c2lvbjItZW52bSAqLwotICByb20gKHJ4KSAgOiBPUklHSU4gPSAweDYwMDAwMDAwLCBMRU5HVEggPSAyNTZrCi0gIAotICAvKiBTbWFydEZ1c2lvbjIgaW50ZXJuYWwgZU5WTSBtaXJyb3JlZCB0byAweDAwMDAwMDAwICovCi0gIHJvbU1pcnJvciAocngpIDogT1JJR0lOID0gMHgwMDAwMDAwMCwgTEVOR1RIID0gMjU2awotCi0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlU1JBTSAqLwotICByYW0gKHJ3eCkgOiBPUklHSU4gPSAweDIwMDAwMDAwLCBMRU5HVEggPSA2NGsKLX0KLQotUkFNX1NUQVJUX0FERFJFU1MgPSAweDIwMDAwMDAwOyAJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBNRU1PUlkgcmVnaW9uIHJhbSBPUklHSU4gYWJvdmUuICovCi1SQU1fU0laRSA9IDY0azsgCQkJCQkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIE1FTU9SWSByZWdpb24gcmFtIExFTkdUSCBhYm92ZS4gKi8KLU1BSU5fU1RBQ0tfU0laRSA9IDhrOyAJCQkJLyogQ29ydGV4IG1haW4gc3RhY2sgc2l6ZS4gKi8KLVBST0NFU1NfU1RBQ0tfU0laRQk9IDRrOyAJCQkvKiBDb3J0ZXggcHJvY2VzcyBzdGFjayBzaXplIChvbmx5IGF2YWlsYWJsZSB3aXRoIE9TIGV4dGVuc2lvbnMpLiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFbmQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotUFJPVklERSAoX19tYWluX3N0YWNrX3N0YXJ0ID0gUkFNX1NUQVJUX0FERFJFU1MgKyBSQU1fU0laRSk7Ci1QUk9WSURFIChfX3Byb2Nlc3Nfc3RhY2tfc3RhcnQgPSBfX21haW5fc3RhY2tfc3RhcnQgLSBNQUlOX1NUQUNLX1NJWkUpOwotUFJPVklERSAoX2VzdGFjayA9IF9fbWFpbl9zdGFja19zdGFydCk7Ci1QUk9WSURFIChfX21pcnJvcmVkX252bSA9IDEpOyAgIC8qIEluZGljYXRlIHRvIHN0YXJ0dXAgY29kZSB0aGF0IE5WTSBpcyBtaXJyb3JlZCB0byBWTUEgYWRkcmVzcyBhbmQgbm8gdGV4dCBjb3B5IGlzIHJlcXVpcmVkLiAqLwotCi1TRUNUSU9OUwotewotICAuaW5pdCA6Ci0gIHsKLSAgICBfX3ZlY3Rvcl90YWJsZV92bWFfYmFzZV9hZGRyZXNzID0gLjsKLSAgICAqKC5pc3JfdmVjdG9yKQotICAgIC4gPSBBTElHTigweDQpOwotICB9ID5yb21NaXJyb3IgQVQ+cm9tCi0gIAotICAudGV4dCA6Ci0gIHsKLSAgICBDUkVBVEVfT0JKRUNUX1NZTUJPTFMKLSAgICBfX3RleHRfbG9hZCA9IExPQURBRERSKC50ZXh0KTsKLSAgICBfX3RleHRfc3RhcnQgPSAuOwotICAgIAotICAgICooLnRleHQgLnRleHQuKiAuZ251LmxpbmtvbmNlLnQuKikKLSAgICAqKC5wbHQpCi0gICAgKiguZ251Lndhcm5pbmcpCi0gICAgKiguZ2x1ZV83dCkgKiguZ2x1ZV83KSAqKC52ZnAxMV92ZW5lZXIpCi0KLSAgICAuID0gQUxJR04oMHg0KTsKLSAgICAvKiBUaGVzZSBhcmUgZm9yIHJ1bm5pbmcgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgdW5kZXIgRUxGLiAgKi8KLSAgICBLRUVQICgqY3J0YmVnaW4ubyguY3RvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5jdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5jdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5jdG9ycykpCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmR0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuZHRvcnMpKQotICAgIEtFRVAgKCooU09SVCguZHRvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguZHRvcnMpKQotCi0gICAgKigucm9kYXRhIC5yb2RhdGEuKiAuZ251LmxpbmtvbmNlLnIuKikKLQotICAgICooLkFSTS5leHRhYiogLmdudS5saW5rb25jZS5hcm1leHRhYi4qKQotICAgICooLmdjY19leGNlcHRfdGFibGUpIAotICAgICooLmVoX2ZyYW1lX2hkcikKLSAgICAqKC5laF9mcmFtZSkKLQotICAgIEtFRVAgKCooLmluaXQpKQotICAgIEtFRVAgKCooLmZpbmkpKQotCi0gICAgUFJPVklERV9ISURERU4gKF9fcHJlaW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLnByZWluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooU09SVCguaW5pdF9hcnJheS4qKSkpCi0gICAgS0VFUCAoKiguaW5pdF9hcnJheSkpCi0gICAgUFJPVklERV9ISURERU4gKF9faW5pdF9hcnJheV9lbmQgPSAuKTsKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X3N0YXJ0ID0gLik7Ci0gICAgS0VFUCAoKiguZmluaV9hcnJheSkpCi0gICAgS0VFUCAoKihTT1JUKC5maW5pX2FycmF5LiopKSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19maW5pX2FycmF5X2VuZCA9IC4pOwotICB9ID5yb21NaXJyb3IgQVQ+cm9tCi0KLSAgLyogLkFSTS5leGlkeCBpcyBzb3J0ZWQsIHNvIGhhcyB0byBnbyBpbiBpdHMgb3duIG91dHB1dCBzZWN0aW9uLiAgKi8KLSAgIF9fZXhpZHhfc3RhcnQgPSAuOwotICAuQVJNLmV4aWR4IDoKLSAgewotICAgICooLkFSTS5leGlkeCogLmdudS5saW5rb25jZS5hcm1leGlkeC4qKQotICB9ID5yYW0gQVQ+cm9tCi0gIF9fZXhpZHhfZW5kID0gLjsKLSAgX2V0ZXh0ID0gLjsKLQotICAuZGF0YSA6Ci0gIHsKLSAgICBfX2RhdGFfbG9hZCA9IExPQURBRERSKC5kYXRhKTsKLSAgICBfc2lkYXRhID0gTE9BREFERFIgKC5kYXRhKTsKLSAgICBfX2RhdGFfc3RhcnQgPSAuOwotICAgIF9zZGF0YSA9IC47Ci0gICAgS0VFUCgqKC5qY3IpKQotICAgICooLmdvdC5wbHQpICooLmdvdCkKLSAgICAqKC5zaGRhdGEpCi0gICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQotICAgIC4gPSBBTElHTiAoNCk7Ci0gIAlfZWRhdGEgPSAuOwotICB9ID5yYW0gQVQ+cm9tCi0KLSAgLmJzcyA6Ci0gIHsKLSAgICBfX2Jzc19zdGFydF9fID0gLiA7Ci0gICAgX3Nic3MgPSAuOwotICAgICooLnNoYnNzKQotICAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCi0gICAgKihDT01NT04pCi0gICAgLiA9IEFMSUdOICg4KTsKLSAgICBfX2Jzc19lbmRfXyA9IC47Ci0gICAgX2VuZCA9IC47Ci0gICAgX19lbmQgPSBfZW5kOwotICAgIF9lYnNzID0gLjsKLSAgICBQUk9WSURFKGVuZCA9IC4pOwotICB9ID5yYW0gQVQ+cm9tCi0KLSAgLnN0YWIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFiKQotICB9Ci0KLSAgLnN0YWJzdHIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFic3RyKQotICB9Ci0gIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgotICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKLSAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KLSAgLyogRFdBUkYgMSAqLwotICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KLSAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KLSAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQotICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQotICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KLSAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KLSAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9Ci0gIC8qIERXQVJGIDIgKi8KLSAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9Ci0gIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KLSAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUpIH0KLSAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9Ci0gIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KLSAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQotICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQotICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KLSAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KLSAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KLSAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KLSAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQotICAubm90ZS5nbnUuYXJtLmlkZW50IDAgOiB7IEtFRVAgKCooLm5vdGUuZ251LmFybS5pZGVudCkpIH0KLSAgLkFSTS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLkFSTS5hdHRyaWJ1dGVzKSkgfQotICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAgfQotfQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVzcmFtLmxkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9kZWJ1Zy1pbi1taWNyb3NlbWktc21hcnRmdXNpb24yLWVzcmFtLmxkCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWMzOTUyLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvZGVidWctaW4tbWljcm9zZW1pLXNtYXJ0ZnVzaW9uMi1lc3JhbS5sZAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogU21hcnRGdXNpb24yIENvcnRleC1NMyBsaW5rZXIgc2NyaXB0IGZvciBjcmVhdGluZyBhIFNvZnRDb25zb2xlIGRvd25sb2FkYWJsZQotICogZGVidWcgaW1hZ2UgZXhlY3V0aW5nIGluIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlU1JBTS4KLSAqCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQKLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAyMDo1MzozOCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJAotICovCi0KLSBPVVRQVVRfRk9STUFUKCJlbGYzMi1saXR0bGVhcm0iLCAiZWxmMzItYmlnYXJtIiwKLQkgICAgICAiZWxmMzItbGl0dGxlYXJtIikKLUdST1VQKC1sYyAtbGdjYyAtbG0pCi1PVVRQVVRfQVJDSChhcm0pCi1FTlRSWShSZXNldF9IYW5kbGVyKQotU0VBUkNIX0RJUiguKQotX19EWU5BTUlDICA9ICAwOwotCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogU3RhcnQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotTUVNT1JZCi17Ci0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlU1JBTSAqLwotICByYW0gKHJ3eCkgOiBPUklHSU4gPSAweDIwMDAwMDAwLCBMRU5HVEggPSA2NGsKLX0KLQotUkFNX1NUQVJUX0FERFJFU1MgPSAweDIwMDAwMDAwOwkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIE1FTU9SWSByZWdpb24gcmFtIE9SSUdJTiBhYm92ZS4gKi8KLVJBTV9TSVpFID0gNjRrOwkJCQkJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBNRU1PUlkgcmVnaW9uIHJhbSBMRU5HVEggYWJvdmUuICovCi1NQUlOX1NUQUNLX1NJWkUgPSAxazsJCQkvKiBDb3J0ZXggbWFpbiBzdGFjayBzaXplLiAqLwotUFJPQ0VTU19TVEFDS19TSVpFCT0gMGs7CQkvKiBDb3J0ZXggcHJvY2VzcyBzdGFjayBzaXplIChvbmx5IGF2YWlsYWJsZSB3aXRoIE9TIGV4dGVuc2lvbnMpLiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFbmQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi1QUk9WSURFIChfX21haW5fc3RhY2tfc3RhcnQgPSBSQU1fU1RBUlRfQUREUkVTUyArIFJBTV9TSVpFKTsKLVBST1ZJREUgKF9fcHJvY2Vzc19zdGFja19zdGFydCA9IF9fbWFpbl9zdGFja19zdGFydCAtIE1BSU5fU1RBQ0tfU0laRSk7Ci1QUk9WSURFIChfZXN0YWNrID0gX19tYWluX3N0YWNrX3N0YXJ0KTsKLVBST1ZJREUgKF9fbWlycm9yZWRfbnZtID0gMCk7ICAgLyogSW5kaWNhdGUgdG8gc3RhcnR1cCBjb2RlIHRoYXQgTlZNIGlzIG5vdCBtaXJyb3JlZCB0byBWTUEgYWRkcmVzcyAudGV4dCBjb3B5IGlzIHJlcXVpcmVkLiAqLwotCi1TRUNUSU9OUwotewotICAudGV4dCA6Ci0gIHsKLSAgICBDUkVBVEVfT0JKRUNUX1NZTUJPTFMKLSAgICBfX3RleHRfbG9hZCA9IExPQURBRERSKC50ZXh0KTsKLSAgICBfX3RleHRfc3RhcnQgPSAuOwotICAgIF9fdmVjdG9yX3RhYmxlX3ZtYV9iYXNlX2FkZHJlc3MgPSAuOwotICAgICooLmlzcl92ZWN0b3IpCi0gICAgKigudGV4dCAudGV4dC4qIC5nbnUubGlua29uY2UudC4qKQotICAgICooLnBsdCkKLSAgICAqKC5nbnUud2FybmluZykKLSAgICAqKC5nbHVlXzd0KSAqKC5nbHVlXzcpICooLnZmcDExX3ZlbmVlcikKLQotICAgIC4gPSBBTElHTigweDQpOwotICAgIC8qIFRoZXNlIGFyZSBmb3IgcnVubmluZyBzdGF0aWMgY29uc3RydWN0b3JzIGFuZCBkZXN0cnVjdG9ycyB1bmRlciBFTEYuICAqLwotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5jdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmN0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmN0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqY3J0YmVnaW4ubyguZHRvcnMpKQotICAgIEtFRVAgKCooRVhDTFVERV9GSUxFICgqY3J0ZW5kLm8pIC5kdG9ycykpCi0gICAgS0VFUCAoKihTT1JUKC5kdG9ycy4qKSkpCi0gICAgS0VFUCAoKmNydGVuZC5vKC5kdG9ycykpCi0KLSAgICAqKC5yb2RhdGEgLnJvZGF0YS4qIC5nbnUubGlua29uY2Uuci4qKQotCi0gICAgKiguQVJNLmV4dGFiKiAuZ251LmxpbmtvbmNlLmFybWV4dGFiLiopCi0gICAgKiguZ2NjX2V4Y2VwdF90YWJsZSkKLSAgICAqKC5laF9mcmFtZV9oZHIpCi0gICAgKiguZWhfZnJhbWUpCi0KLSAgICBLRUVQICgqKC5pbml0KSkKLSAgICBLRUVQICgqKC5maW5pKSkKLQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKFNPUlQoLmluaXRfYXJyYXkuKikpKQotICAgIEtFRVAgKCooLmluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLmZpbmlfYXJyYXkpKQotICAgIEtFRVAgKCooU09SVCguZmluaV9hcnJheS4qKSkpCi0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKLSAgfSA+cmFtCi0gIC8qIC5BUk0uZXhpZHggaXMgc29ydGVkLCBzbyBoYXMgdG8gZ28gaW4gaXRzIG93biBvdXRwdXQgc2VjdGlvbi4gICovCi0gICBfX2V4aWR4X3N0YXJ0ID0gLjsKLSAgLkFSTS5leGlkeCA6Ci0gIHsKLSAgICAqKC5BUk0uZXhpZHgqIC5nbnUubGlua29uY2UuYXJtZXhpZHguKikKLSAgfSA+cmFtCi0gIF9fZXhpZHhfZW5kID0gLjsKLSAgX2V0ZXh0ID0gLjsKLSAgUFJPVklERShfX3RleHRfZW5kID0gLik7Ci0KLSAgLmRhdGEgOgotICB7Ci0gICAgX19kYXRhX2xvYWQgPSBMT0FEQUREUiAoLmRhdGEpOwotICAgIF9zaWRhdGEgPSBMT0FEQUREUiAoLmRhdGEpOwotICAgIF9fZGF0YV9zdGFydCA9IC47Ci0gICAgX3NkYXRhID0gLjsKLSAgICBLRUVQKCooLmpjcikpCi0gICAgKiguZ290LnBsdCkgKiguZ290KQotICAgICooLnNoZGF0YSkKLSAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCi0gICAgLiA9IEFMSUdOICg0KTsKLSAgICBfZWRhdGEgPSAuOwotICB9ID5yYW0KLQotICAuYnNzIDoKLSAgewotICAgIF9fYnNzX3N0YXJ0X18gPSAuIDsKLSAgICBfc2JzcyA9IC47Ci0gICAgKiguc2hic3MpCi0gICAgKiguYnNzIC5ic3MuKiAuZ251LmxpbmtvbmNlLmIuKikKLSAgICAqKENPTU1PTikKLSAgICAuID0gQUxJR04gKDgpOwotICAgIF9fYnNzX2VuZF9fID0gLjsKLSAgICBfZW5kID0gLjsKLSAgICBfX2VuZCA9IF9lbmQ7Ci0gICAgX2Vic3MgPSAuOwotICAgIFBST1ZJREUoZW5kID0gLik7Ci0gIH0gPnJhbQotCi0gIC8qCi0gICAqIFRoZSAuc3RhY2sgc2VjdGlvbiBpcyBvbmx5IHNwZWNpZmllZCBoZXJlIGluIG9yZGVyIGZvciB0aGUgbGlua2VyIHRvIGdlbmVyYXRlCi0gICAqIGFuIGVycm9yIGlmIHRoZSByYW0gaXMgZnVsbC4KLSAgICovCi0gIC5zdGFjayA6Ci0gIHsKLSAgCS4gPSBBTElHTig0KTsKLSAgICAuICs9IFBST0NFU1NfU1RBQ0tfU0laRTsKLSAgICAuID0gQUxJR04oNCk7Ci0gICAgLiArPSBNQUlOX1NUQUNLX1NJWkU7Ci0gICAgLiA9IEFMSUdOKDQpOwotICB9ID5yYW0KLQotICAuc3RhYiAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWIpCi0gIH0KLQotICAuc3RhYnN0ciAwIChOT0xPQUQpIDoKLSAgewotICAgICooLnN0YWJzdHIpCi0gIH0KLSAgLyogRFdBUkYgZGVidWcgc2VjdGlvbnMuCi0gICAgIFN5bWJvbHMgaW4gdGhlIERXQVJGIGRlYnVnZ2luZyBzZWN0aW9ucyBhcmUgcmVsYXRpdmUgdG8gdGhlIGJlZ2lubmluZwotICAgICBvZiB0aGUgc2VjdGlvbiBzbyB3ZSBiZWdpbiB0aGVtIGF0IDAuICAqLwotICAvKiBEV0FSRiAxICovCi0gIC5kZWJ1ZyAgICAgICAgICAwIDogeyAqKC5kZWJ1ZykgfQotICAubGluZSAgICAgICAgICAgMCA6IHsgKigubGluZSkgfQotICAvKiBHTlUgRFdBUkYgMSBleHRlbnNpb25zICovCi0gIC5kZWJ1Z19zcmNpbmZvICAwIDogeyAqKC5kZWJ1Z19zcmNpbmZvKSB9Ci0gIC5kZWJ1Z19zZm5hbWVzICAwIDogeyAqKC5kZWJ1Z19zZm5hbWVzKSB9Ci0gIC8qIERXQVJGIDEuMSBhbmQgRFdBUkYgMiAqLwotICAuZGVidWdfYXJhbmdlcyAgMCA6IHsgKiguZGVidWdfYXJhbmdlcykgfQotICAuZGVidWdfcHVibmFtZXMgMCA6IHsgKiguZGVidWdfcHVibmFtZXMpIH0KLSAgLyogRFdBUkYgMiAqLwotICAuZGVidWdfaW5mbyAgICAgMCA6IHsgKiguZGVidWdfaW5mbyAuZ251LmxpbmtvbmNlLndpLiopIH0KLSAgLmRlYnVnX2FiYnJldiAgIDAgOiB7ICooLmRlYnVnX2FiYnJldikgfQotICAuZGVidWdfbGluZSAgICAgMCA6IHsgKiguZGVidWdfbGluZSkgfQotICAuZGVidWdfZnJhbWUgICAgMCA6IHsgKiguZGVidWdfZnJhbWUpIH0KLSAgLmRlYnVnX3N0ciAgICAgIDAgOiB7ICooLmRlYnVnX3N0cikgfQotICAuZGVidWdfbG9jICAgICAgMCA6IHsgKiguZGVidWdfbG9jKSB9Ci0gIC5kZWJ1Z19tYWNpbmZvICAwIDogeyAqKC5kZWJ1Z19tYWNpbmZvKSB9Ci0gIC8qIFNHSS9NSVBTIERXQVJGIDIgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfd2Vha25hbWVzIDAgOiB7ICooLmRlYnVnX3dlYWtuYW1lcykgfQotICAuZGVidWdfZnVuY25hbWVzIDAgOiB7ICooLmRlYnVnX2Z1bmNuYW1lcykgfQotICAuZGVidWdfdHlwZW5hbWVzIDAgOiB7ICooLmRlYnVnX3R5cGVuYW1lcykgfQotICAuZGVidWdfdmFybmFtZXMgIDAgOiB7ICooLmRlYnVnX3Zhcm5hbWVzKSB9Ci0gIC5ub3RlLmdudS5hcm0uaWRlbnQgMCA6IHsgS0VFUCAoKigubm90ZS5nbnUuYXJtLmlkZW50KSkgfQotICAuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgS0VFUCAoKiguQVJNLmF0dHJpYnV0ZXMpKSB9Ci0gIC9ESVNDQVJELyA6IHsgKigubm90ZS5HTlUtc3RhY2spICooLmlzcl92ZWN0b3IpIH0KLX0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvbmV3bGliX3N0dWJzLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL25ld2xpYl9zdHVicy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmQ3OTRkLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvbmV3bGliX3N0dWJzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNzMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDktMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBTdHVicyBmb3IgTmV3bGliIHN5c3RlbSBjYWxscy4NCi0gKiAgDQotICogU1ZOICRSZXZpc2lvbjogNTI2OSAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDIwOjUzOjM4ICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkDQotICovDQotI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLSNpbmNsdWRlIDxzeXMvdW5pc3RkLmg+DQotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQotI2luY2x1ZGUgPHN5cy90aW1lcy5oPg0KLSNpbmNsdWRlIDxlcnJuby5oPg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUmVkaXJlY3Rpb24gb2Ygc3RhbmRhcmQgb3V0cHV0IHRvIGEgU21hcnRGdXNpb24yIE1TUyBVQVJULg0KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogQSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGZvciB0aGUgcmVkaXJlY3Rpb24gb2YgdGhlIG91dHB1dCBvZiBwcmludGYoKSB0byBhDQotICogVUFSVCBpcyBwcm92aWRlZCBhdCB0aGUgYm90dG9tIG9mIHRoaXMgZmlsZS4gVGhpcyByZWRpcmVjdGlvbiBpcyBlbmFibGVkIGJ5DQotICogYWRkaW5nIHRoZSBzeW1ib2wvZGVmaW5lIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDAgb3INCi0gKiBNSUNST1NFTUlfU1RESU9fVEhSVV9NTVVBUlQwIHRvIHlvdXIgcHJvamVjdCBzZXR0aW5ncyBhbmQgc3BlY2lmeWluZyB0aGUgYmF1ZA0KLSAqIHJhdGUgdXNpbmcgdGhlIE1JQ1JPU0VNSV9TVERJT19CQVVEX1JBVEUgZGVmaW5lLg0KLSAqLw0KLSNpZmRlZiBNSUNST1NFTUlfU1RESU9fVEhSVV9NTVVBUlQwDQotI2lmbmRlZiBNSUNST1NFTUlfU1RESU9fVEhSVV9VQVJUDQotI2RlZmluZSBNSUNST1NFTUlfU1RESU9fVEhSVV9VQVJUDQotI2VuZGlmDQotI2VuZGlmICAvKiBNSUNST1NFTUlfU1RESU9fVEhSVV9NTVVBUlQwICovDQotDQotI2lmZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDENCi0jaWZuZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQNCi0jZGVmaW5lIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQNCi0jZW5kaWYNCi0jZW5kaWYgIC8qIE1JQ1JPU0VNSV9TVERJT19USFJVX01NVUFSVDEgKi8NCi0NCi0vKg0KLSAqIFNlbGVjdCB3aGljaCBNTVVBUlQgd2lsbCBiZSB1c2VkIGZvciBzdGRpbyBhbmQgd2hhdCBiYXVkIHJhdGUgd2lsbCBiZSB1c2VkLg0KLSAqIERlZmF1bHQgdG8gNTc2MDAgYmF1ZCBpZiBubyBiYXVkIHJhdGUgaXMgc3BlY2lmaWVkIHVzaW5nIHRoZQ0KLSAqIE1JQ1JPU0VNSV9TVERJT19CQVVEX1JBVEUgI2RlZmluZS4NCi0gKi8gDQotI2lmZGVmIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQNCi0jaW5jbHVkZSAiLi4vLi4vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5oIg0KLQ0KLSNpZm5kZWYgTUlDUk9TRU1JX1NURElPX0JBVURfUkFURQ0KLSNkZWZpbmUgTUlDUk9TRU1JX1NURElPX0JBVURfUkFURSAgTVNTX1VBUlRfNTc2MDBfQkFVRA0KLSNlbmRpZg0KLQ0KLSNpZmRlZiBNSUNST1NFTUlfU1RESU9fVEhSVV9NTVVBUlQwDQotc3RhdGljIG1zc191YXJ0X2luc3RhbmNlX3QgKiBjb25zdCBncF9teV91YXJ0ID0gJmdfbXNzX3VhcnQwOw0KLSNlbHNlDQotc3RhdGljIG1zc191YXJ0X2luc3RhbmNlX3QgKiBjb25zdCBncF9teV91YXJ0ID0gJmdfbXNzX3VhcnQxOw0KLSNlbmRpZg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogR2xvYmFsIGZsYWcgdXNlZCB0byBpbmRpY2F0ZSBpZiB0aGUgVUFSVCBkcml2ZXIgbmVlZHMgdG8gYmUgaW5pdGlhbGl6ZWQuDQotICovDQotc3RhdGljIGludCBnX3N0ZGlvX3VhcnRfaW5pdF9kb25lID0gMDsNCi0NCi0jZW5kaWYgLyogTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVCAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRW52aXJvbm1lbnQgdmFyaWFibGVzLg0KLSAqIEEgcG9pbnRlciB0byBhIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCB0aGVpciB2YWx1ZXMuIEZvciBhIG1pbmltYWwNCi0gKiBlbnZpcm9ubWVudCwgdGhpcyBlbXB0eSBsaXN0IGlzIGFkZXF1YXRlOg0KLSAqLw0KLWNoYXIgKl9fZW52WzFdID0geyAwIH07DQotY2hhciAqKmVudmlyb24gPSBfX2VudjsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENsb3NlIGEgZmlsZS4NCi0gKi8NCi1pbnQgX2Nsb3NlKGludCBmaWxlKQ0KLXsNCi0gICAgcmV0dXJuIC0xOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFRyYW5zZmVyIGNvbnRyb2wgdG8gYSBuZXcgcHJvY2Vzcy4NCi0gKi8NCi1pbnQgX2V4ZWN2ZShjaGFyICpuYW1lLCBjaGFyICoqYXJndiwgY2hhciAqKmVudikNCi17DQotICAgIGVycm5vID0gRU5PTUVNOw0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRXhpdCBhIHByb2dyYW0gd2l0aG91dCBjbGVhbmluZyB1cCBmaWxlcy4NCi0gKi8NCi12b2lkIF9leGl0KCBpbnQgY29kZSApDQotew0KLSAgICAvKiBTaG91bGQgd2UgZm9yY2UgYSBzeXN0ZW0gcmVzZXQ/ICovDQotICAgIHdoaWxlKCAxICkNCi0gICAgew0KLSAgICAgICAgOw0KLSAgICB9DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ3JlYXRlIGEgbmV3IHByb2Nlc3MuDQotICovDQotaW50IF9mb3JrKHZvaWQpDQotew0KLSAgICBlcnJubyA9IEVBR0FJTjsNCi0gICAgcmV0dXJuIC0xOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFN0YXR1cyBvZiBhbiBvcGVuIGZpbGUuDQotICovDQotaW50IF9mc3RhdChpbnQgZmlsZSwgc3RydWN0IHN0YXQgKnN0KQ0KLXsNCi0gICAgc3QtPnN0X21vZGUgPSBTX0lGQ0hSOw0KLSAgICByZXR1cm4gMDsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBQcm9jZXNzLUlEDQotICovDQotaW50IF9nZXRwaWQodm9pZCkNCi17DQotICAgIHJldHVybiAxOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFF1ZXJ5IHdoZXRoZXIgb3V0cHV0IHN0cmVhbSBpcyBhIHRlcm1pbmFsLg0KLSAqLw0KLWludCBfaXNhdHR5KGludCBmaWxlKQ0KLXsNCi0gICAgcmV0dXJuIDE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VuZCBhIHNpZ25hbC4NCi0gKi8NCi1pbnQgX2tpbGwoaW50IHBpZCwgaW50IHNpZykNCi17DQotICAgIGVycm5vID0gRUlOVkFMOw0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRXN0YWJsaXNoIGEgbmV3IG5hbWUgZm9yIGFuIGV4aXN0aW5nIGZpbGUuDQotICovDQotaW50IF9saW5rKGNoYXIgKm9sZCwgY2hhciAqbmV3KQ0KLXsNCi0gICAgZXJybm8gPSBFTUxJTks7DQotICAgIHJldHVybiAtMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZXQgcG9zaXRpb24gaW4gYSBmaWxlLg0KLSAqLw0KLWludCBfbHNlZWsoaW50IGZpbGUsIGludCBwdHIsIGludCBkaXIpDQotew0KLSAgICByZXR1cm4gMDsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBPcGVuIGEgZmlsZS4NCi0gKi8NCi1pbnQgX29wZW4oY29uc3QgY2hhciAqbmFtZSwgaW50IGZsYWdzLCBpbnQgbW9kZSkNCi17DQotICAgIHJldHVybiAtMTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBSZWFkIGZyb20gYSBmaWxlLg0KLSAqLw0KLWludCBfcmVhZChpbnQgZmlsZSwgY2hhciAqcHRyLCBpbnQgbGVuKQ0KLXsNCi0gICAgcmV0dXJuIDA7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogV3JpdGUgdG8gYSBmaWxlLiBsaWJjIHN1YnJvdXRpbmVzIHdpbGwgdXNlIHRoaXMgc3lzdGVtIHJvdXRpbmUgZm9yIG91dHB1dCB0bw0KLSAqIGFsbCBmaWxlcywgaW5jbHVkaW5nIHN0ZG91dJdzbyBpZiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBhbnkgb3V0cHV0LCBmb3INCi0gKiBleGFtcGxlIHRvIGEgc2VyaWFsIHBvcnQgZm9yIGRlYnVnZ2luZywgeW91IHNob3VsZCBtYWtlIHlvdXIgbWluaW1hbCB3cml0ZQ0KLSAqIGNhcGFibGUgb2YgZG9pbmcgdGhpcy4NCi0gKi8NCi1pbnQgX3dyaXRlX3IoIHZvaWQgKiByZWVudCwgaW50IGZpbGUsIGNoYXIgKiBwdHIsIGludCBsZW4gKQ0KLXsNCi0jaWZkZWYgTUlDUk9TRU1JX1NURElPX1RIUlVfVUFSVA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEluaXRpYWxpemUgdGhlIFVBUlQgZHJpdmVyIGlmIGl0IGlzIHRoZSBmaXJzdCB0aW1lIHRoaXMgZnVuY3Rpb24gaXMNCi0gICAgICogY2FsbGVkLg0KLSAgICAgKi8NCi0gICAgaWYoIWdfc3RkaW9fdWFydF9pbml0X2RvbmUpDQotICAgIHsNCi0gICAgICAgIE1TU19VQVJUX2luaXQoZ3BfbXlfdWFydCwNCi0gICAgICAgICAgICAgICAgICAgICAgTUlDUk9TRU1JX1NURElPX0JBVURfUkFURSwNCi0gICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkpOw0KLSAgICAgICAgICAgICAgICAgICAgICANCi0gICAgICAgIGdfc3RkaW9fdWFydF9pbml0X2RvbmUgPSAxOw0KLSAgICB9DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIE91dHB1dCB0ZXh0IHRvIHRoZSBVQVJULg0KLSAgICAgKi8NCi0gICAgTVNTX1VBUlRfcG9sbGVkX3R4KGdwX215X3VhcnQsICh1aW50OF90ICopcHRyLCBsZW4pOw0KLSAgICANCi0gICAgcmV0dXJuIGxlbjsNCi0jZWxzZSAgIC8qIE1JQ1JPU0VNSV9TVERJT19USFJVX1VBUlQgKi8NCi0gICAgcmV0dXJuIDA7DQotI2VuZGlmICAvKiBNSUNST1NFTUlfU1RESU9fVEhSVV9VQVJUICovDQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogSW5jcmVhc2UgcHJvZ3JhbSBkYXRhIHNwYWNlLiBBcyBtYWxsb2MgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRlcGVuZCBvbiB0aGlzLA0KLSAqIGl0IGlzIHVzZWZ1bCB0byBoYXZlIGEgd29ya2luZyBpbXBsZW1lbnRhdGlvbi4gVGhlIGZvbGxvd2luZyBzdWZmaWNlcyBmb3IgYQ0KLSAqIHN0YW5kYWxvbmUgc3lzdGVtOyBpdCBleHBsb2l0cyB0aGUgc3ltYm9sIF9lbmQgYXV0b21hdGljYWxseSBkZWZpbmVkIGJ5IHRoZQ0KLSAqIEdOVSBsaW5rZXIuIA0KLSAqLw0KLWNhZGRyX3QgX3NicmsoaW50IGluY3IpDQotew0KLSAgICBleHRlcm4gY2hhciBfZW5kOyAgICAgICAgLyogRGVmaW5lZCBieSB0aGUgbGlua2VyICovDQotICAgIHN0YXRpYyBjaGFyICpoZWFwX2VuZDsNCi0gICAgY2hhciAqcHJldl9oZWFwX2VuZDsNCi0gICAgY2hhciAqIHN0YWNrX3B0cjsNCi0gICAgDQotICAgIGlmIChoZWFwX2VuZCA9PSAwKQ0KLSAgICB7DQotICAgICAgaGVhcF9lbmQgPSAmX2VuZDsNCi0gICAgfQ0KLSAgICANCi0gICAgcHJldl9oZWFwX2VuZCA9IGhlYXBfZW5kOw0KLSAgICBhc20gdm9sYXRpbGUgKCJNUlMgJTAsIG1zcCIgOiAiPXIiIChzdGFja19wdHIpICk7DQotICAgIGlmIChoZWFwX2VuZCArIGluY3IgPiBzdGFja19wdHIpDQotICAgIHsNCi0gICAgICBfd3JpdGVfciAoKHZvaWQgKikwLCAxLCAiSGVhcCBhbmQgc3RhY2sgY29sbGlzaW9uXG4iLCAyNSk7DQotICAgICAgX2V4aXQgKDEpOw0KLSAgICB9DQotICANCi0gICAgaGVhcF9lbmQgKz0gaW5jcjsNCi0gICAgcmV0dXJuIChjYWRkcl90KSBwcmV2X2hlYXBfZW5kOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFN0YXR1cyBvZiBhIGZpbGUgKGJ5IG5hbWUpLg0KLSAqLw0KLWludCBfc3RhdChjaGFyICpmaWxlLCBzdHJ1Y3Qgc3RhdCAqc3QpDQotew0KLSAgICBzdC0+c3RfbW9kZSA9IFNfSUZDSFI7DQotICAgIHJldHVybiAwOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFRpbWluZyBpbmZvcm1hdGlvbiBmb3IgY3VycmVudCBwcm9jZXNzLg0KLSAqLw0KLWludCBfdGltZXMoc3RydWN0IHRtcyAqYnVmKQ0KLXsNCi0gICAgcmV0dXJuIC0xOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFJlbW92ZSBhIGZpbGUncyBkaXJlY3RvcnkgZW50cnkuDQotICovDQotaW50IF91bmxpbmsoY2hhciAqbmFtZSkNCi17DQotICAgIGVycm5vID0gRU5PRU5UOw0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogV2FpdCBmb3IgYSBjaGlsZCBwcm9jZXNzLg0KLSAqLw0KLWludCBfd2FpdChpbnQgKnN0YXR1cykNCi17DQotICAgIGVycm5vID0gRUNISUxEOw0KLSAgICByZXR1cm4gLTE7DQotfQ0KLQ0KLQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2MvcHJvZHVjdGlvbi1leGVjdXRlLWluLXBsYWNlLmxkIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9wcm9kdWN0aW9uLWV4ZWN1dGUtaW4tcGxhY2UubGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkY2E4N2EuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9wcm9kdWN0aW9uLWV4ZWN1dGUtaW4tcGxhY2UubGQKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIChjKSBDb3B5cmlnaHQgMjAwOS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogCi0gKiBTbWFydEZ1c2lvbjIgQ29ydGV4LU0zIGxpbmtlciBzY3JpcHQgY3JlYXRpbmcgYW4gZXhlY3V0YWJsZSBpbWFnZSBmb3IgdXNlIGluCi0gKiB0aGUgTGliZXJvIGZsb3cgZm9yIGV4ZWN1dGluZyBjb2RlIGluIHBsYWNlIGluIGludGVybmFsIGVOVk0uCi0gKgotICogU1ZOICRSZXZpc2lvbjogNTI2OSAkCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NTM6MzggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQKLSAqLwotT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWJpZ2FybSIsCi0JICAgICAgImVsZjMyLWxpdHRsZWFybSIpCi1HUk9VUCgtbGMgLWxnY2MgLWxtKQotT1VUUFVUX0FSQ0goYXJtKQotRU5UUlkoUmVzZXRfSGFuZGxlcikKLVNFQVJDSF9ESVIoLikKLV9fRFlOQU1JQyAgPSAgMDsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFN0YXJ0IG9mIGJvYXJkIGN1c3RvbWl6YXRpb24uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLU1FTU9SWQotewotICAvKiBTbWFydEZ1c2lvbjIgaW50ZXJuYWwgZU5WTSAqLwotICByb20gKHJ4KSA6IE9SSUdJTiA9IDAsIExFTkdUSCA9IDI1NmsKLSAgCi0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlU1JBTSAqLwotICByYW0gKHJ3eCkgOiBPUklHSU4gPSAweDIwMDAwMDAwLCBMRU5HVEggPSA2NGsKLX0KLQotUkFNX1NUQVJUX0FERFJFU1MgPSAweDIwMDAwMDAwOwkvKiBNdXN0IGJlIHRoZSBzYW1lIHZhbHVlIGFzIE1FTU9SWSByZWdpb24gcmFtIE9SSUdJTiBhYm92ZS4gKi8KLVJBTV9TSVpFID0gNjRrOwkJCQkJLyogTXVzdCBiZSB0aGUgc2FtZSB2YWx1ZSBhcyBNRU1PUlkgcmVnaW9uIHJhbSBMRU5HVEggYWJvdmUuICovCi1NQUlOX1NUQUNLX1NJWkUgPSA4azsJCQkvKiBDb3J0ZXggbWFpbiBzdGFjayBzaXplLiAqLwotUFJPQ0VTU19TVEFDS19TSVpFCT0gNGs7CQkvKiBDb3J0ZXggcHJvY2VzcyBzdGFjayBzaXplIChvbmx5IGF2YWlsYWJsZSB3aXRoIE9TIGV4dGVuc2lvbnMpLiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFbmQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotUFJPVklERSAoX19tYWluX3N0YWNrX3N0YXJ0ID0gUkFNX1NUQVJUX0FERFJFU1MgKyBSQU1fU0laRSk7Ci1QUk9WSURFIChfX3Byb2Nlc3Nfc3RhY2tfc3RhcnQgPSBfX21haW5fc3RhY2tfc3RhcnQgLSBNQUlOX1NUQUNLX1NJWkUpOwotUFJPVklERSAoX2VzdGFjayA9IF9fbWFpbl9zdGFja19zdGFydCk7Ci1QUk9WSURFIChfX21pcnJvcmVkX252bSA9IDApOyAgIC8qIEluZGljYXRlIHRvIHN0YXJ0dXAgY29kZSB0aGF0IE5WTSBpcyBub3QgbWlycm9yZWQgdG8gVk1BIGFkZHJlc3MgLnRleHQgY29weSBpcyByZXF1aXJlZC4gKi8KLQotU0VDVElPTlMKLXsKLSAgLnJlc2V0IDoKLSAgewotICAgIF9fdmVjdG9yX3RhYmxlX3ZtYV9iYXNlX2FkZHJlc3MgPSAuOwotICAgICooLmlzcl92ZWN0b3IpCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gIH0gPnJvbQotICAKLSAgLnRleHQgOgotICB7Ci0gICAgQ1JFQVRFX09CSkVDVF9TWU1CT0xTCi0gICAgX190ZXh0X2xvYWQgPSBMT0FEQUREUigudGV4dCk7Ci0gICAgX190ZXh0X3N0YXJ0ID0gLjsKLSAgICAKLSAgICAqKC50ZXh0IC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCi0gICAgKigucGx0KQotICAgICooLmdudS53YXJuaW5nKQotICAgICooLmdsdWVfN3QpICooLmdsdWVfNykgKigudmZwMTFfdmVuZWVyKQotCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gICAgLyogVGhlc2UgYXJlIGZvciBydW5uaW5nIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIHVuZGVyIEVMRi4gICovCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuY3RvcnMpKQotICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguY3RvcnMpKQotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmR0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmR0b3JzKSkKLQotICAgICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopCi0KLSAgICAqKC5BUk0uZXh0YWIqIC5nbnUubGlua29uY2UuYXJtZXh0YWIuKikKLSAgICAqKC5nY2NfZXhjZXB0X3RhYmxlKSAKLSAgICAqKC5laF9mcmFtZV9oZHIpCi0gICAgKiguZWhfZnJhbWUpCi0KLSAgICBLRUVQICgqKC5pbml0KSkKLSAgICBLRUVQICgqKC5maW5pKSkKLQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKFNPUlQoLmluaXRfYXJyYXkuKikpKQotICAgIEtFRVAgKCooLmluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLmZpbmlfYXJyYXkpKQotICAgIEtFRVAgKCooU09SVCguZmluaV9hcnJheS4qKSkpCi0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKLSAgfSA+cm9tCi0gIC8qIC5BUk0uZXhpZHggaXMgc29ydGVkLCBzbyBoYXMgdG8gZ28gaW4gaXRzIG93biBvdXRwdXQgc2VjdGlvbi4gICovCi0gICBfX2V4aWR4X3N0YXJ0ID0gLjsKLSAgLkFSTS5leGlkeCA6Ci0gIHsKLSAgICAqKC5BUk0uZXhpZHgqIC5nbnUubGlua29uY2UuYXJtZXhpZHguKikKLSAgfSA+cm9tCi0gIF9fZXhpZHhfZW5kID0gLjsKLSAgX2V0ZXh0ID0gLjsKLQotICAuZGF0YSA6Ci0gIHsKLSAgICBfX2RhdGFfbG9hZCA9IExPQURBRERSKC5kYXRhKTsKLSAgICBfc2lkYXRhID0gTE9BREFERFIgKC5kYXRhKTsKLSAgICBfX2RhdGFfc3RhcnQgPSAuOwotICAgIF9zZGF0YSA9IC47Ci0gICAgS0VFUCgqKC5qY3IpKQotICAgICooLmdvdC5wbHQpICooLmdvdCkKLSAgICAqKC5zaGRhdGEpCi0gICAgKiguZGF0YSAuZGF0YS4qIC5nbnUubGlua29uY2UuZC4qKQotICAgIC4gPSBBTElHTiAoNCk7Ci0gIAlfZWRhdGEgPSAuOwotICB9ID5yYW0gQVQ+cm9tCi0KLSAgLmJzcyA6Ci0gIHsKLSAgICBfX2Jzc19zdGFydF9fID0gLiA7Ci0gICAgX3Nic3MgPSAuOwotICAgICooLnNoYnNzKQotICAgICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopCi0gICAgKihDT01NT04pCi0gICAgLiA9IEFMSUdOICg4KTsKLSAgICBfX2Jzc19lbmRfXyA9IC47Ci0gICAgX2VuZCA9IC47Ci0gICAgX19lbmQgPSBfZW5kOwotICAgIF9lYnNzID0gLjsKLSAgICBQUk9WSURFKGVuZCA9IC4pOwotICB9ID5yYW0gQVQ+cm9tCi0KLSAgLnN0YWIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFiKQotICB9Ci0KLSAgLnN0YWJzdHIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFic3RyKQotICB9Ci0gIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgotICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKLSAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KLSAgLyogRFdBUkYgMSAqLwotICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KLSAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KLSAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQotICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQotICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KLSAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KLSAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9Ci0gIC8qIERXQVJGIDIgKi8KLSAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9Ci0gIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KLSAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUpIH0KLSAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9Ci0gIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KLSAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQotICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQotICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KLSAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KLSAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KLSAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KLSAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQotICAubm90ZS5nbnUuYXJtLmlkZW50IDAgOiB7IEtFRVAgKCooLm5vdGUuZ251LmFybS5pZGVudCkpIH0KLSAgLkFSTS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLkFSTS5hdHRyaWJ1dGVzKSkgfQotICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAgfQotfQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9wcm9kdWN0aW9uLXJlbG9jYXRlLWV4ZWN1dGFibGUubGQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3Byb2R1Y3Rpb24tcmVsb2NhdGUtZXhlY3V0YWJsZS5sZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODljNDJlMy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N0YXJ0dXBfZ2NjL3Byb2R1Y3Rpb24tcmVsb2NhdGUtZXhlY3V0YWJsZS5sZAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICogKGMpIENvcHlyaWdodCAyMDA5LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAKLSAqIFNtYXJ0RnVzaW9uMiBDb3J0ZXgtTTMgbGlua2VyIHNjcmlwdCBjcmVhdGluZyBhbiBleGVjdXRhYmxlIGltYWdlIGZvciB1c2UgaW4KLSAqIHRoZSBMaWJlcm8gZmxvdyBmb3IgcmVsb2NhdGluZyBleGVjdXRhYmxlIGZyb20gaW50ZXJuYWwgZU5WTSB0byBleHRlcm5hbCBSQU0KLSAqIGJlZm9yZSBzdGFydGluZyBleGVjdXRpb24uCi0gKgotICogU1ZOICRSZXZpc2lvbjogNTI2OSAkCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NTM6MzggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQKLSAqLwotT1VUUFVUX0ZPUk1BVCgiZWxmMzItbGl0dGxlYXJtIiwgImVsZjMyLWJpZ2FybSIsCi0JICAgICAgImVsZjMyLWxpdHRsZWFybSIpCi1HUk9VUCgtbGMgLWxnY2MgLWxtKQotT1VUUFVUX0FSQ0goYXJtKQotRU5UUlkoUmVzZXRfSGFuZGxlcikKLVNFQVJDSF9ESVIoLikKLV9fRFlOQU1JQyAgPSAgMDsKLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIFN0YXJ0IG9mIGJvYXJkIGN1c3RvbWl6YXRpb24uCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLU1FTU9SWQotewotICAvKiBTbWFydEZ1c2lvbjIgaW50ZXJuYWwgZU5WTSAqLwotICByb20gKHJ4KSA6IE9SSUdJTiA9IDAsIExFTkdUSCA9IDI1NmsKLSAgCi0gIC8qIFNtYXJ0RnVzaW9uMiBpbnRlcm5hbCBlU1JBTSAqLwotICBlc3JhbSAocnd4KSA6IE9SSUdJTiA9IDB4MjAwMDAwMDAsIExFTkdUSCA9IDY0awotICAKLSAgLyogU21hcnRGdXNpb24yIGRldmVsb3BtZW50IGJvYXJkIGV4dGVybmFsIFJBTSAqLwotICBleHRlcm5hbF9yYW0gKHJ3eCkgOiBPUklHSU4gPSAweDcwMDAwMDAwLCBMRU5HVEggPSAyTQotfQotCi1SQU1fU1RBUlRfQUREUkVTUyA9IDB4MjAwMDAwMDA7CS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgYXMgTUVNT1JZIHJlZ2lvbiBlc3JhbSBPUklHSU4gYWJvdmUuICovCi1SQU1fU0laRSA9IDY0azsJCQkJCS8qIE11c3QgYmUgdGhlIHNhbWUgdmFsdWUgYXMgTUVNT1JZIHJlZ2lvbiBlc3JhbSBMRU5HVEggYWJvdmUuICovCi1NQUlOX1NUQUNLX1NJWkUgPSA4azsJCQkvKiBDb3J0ZXggbWFpbiBzdGFjayBzaXplLiAqLwotUFJPQ0VTU19TVEFDS19TSVpFCT0gNGs7CQkvKiBDb3J0ZXggcHJvY2VzcyBzdGFjayBzaXplIChvbmx5IGF2YWlsYWJsZSB3aXRoIE9TIGV4dGVuc2lvbnMpLiovCi0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBFbmQgb2YgYm9hcmQgY3VzdG9taXphdGlvbi4KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotIAotUFJPVklERSAoX19tYWluX3N0YWNrX3N0YXJ0ID0gUkFNX1NUQVJUX0FERFJFU1MgKyBSQU1fU0laRSk7Ci1QUk9WSURFIChfX3Byb2Nlc3Nfc3RhY2tfc3RhcnQgPSBfX21haW5fc3RhY2tfc3RhcnQgLSBNQUlOX1NUQUNLX1NJWkUpOwotUFJPVklERSAoX2VzdGFjayA9IF9fbWFpbl9zdGFja19zdGFydCk7Ci1QUk9WSURFIChfX21pcnJvcmVkX252bSA9IDApOyAgIC8qIEluZGljYXRlIHRvIHN0YXJ0dXAgY29kZSB0aGF0IE5WTSBpcyBub3QgbWlycm9yZWQgdG8gVk1BIGFkZHJlc3MgLnRleHQgY29weSBpcyByZXF1aXJlZC4gKi8KLQotU0VDVElPTlMKLXsKLSAgLnJlc2V0IDoKLSAgewotICAgIF9fdmVjdG9yX3RhYmxlX3ZtYV9iYXNlX2FkZHJlc3MgPSAuOwotICAgICooLmlzcl92ZWN0b3IpCi0gICAgLyogU3lzdGVtSW5pdCgpIGlzIGNhbGxlZCBiZWZvcmUgcmVsb2NhdGlvbiB0byBSQU0gc28ga2VlcCBpbiBST00gKi8KLQkqc3lzdGVtX20yc3h4eC5vKC50ZXh0KikgICAgCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gIH0gPnJvbQotICAKLSAgLnRleHQgOgotICB7Ci0gICAgQ1JFQVRFX09CSkVDVF9TWU1CT0xTCi0gICAgX190ZXh0X2xvYWQgPSBMT0FEQUREUigudGV4dCk7Ci0gICAgX190ZXh0X3N0YXJ0ID0gLjsKLSAgICAKLSAgICAqKC50ZXh0IC50ZXh0LiogLmdudS5saW5rb25jZS50LiopCi0gICAgKigucGx0KQotICAgICooLmdudS53YXJuaW5nKQotICAgICooLmdsdWVfN3QpICooLmdsdWVfNykgKigudmZwMTFfdmVuZWVyKQotCi0gICAgLiA9IEFMSUdOKDB4NCk7Ci0gICAgLyogVGhlc2UgYXJlIGZvciBydW5uaW5nIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzIHVuZGVyIEVMRi4gICovCi0gICAgS0VFUCAoKmNydGJlZ2luLm8oLmN0b3JzKSkKLSAgICBLRUVQICgqKEVYQ0xVREVfRklMRSAoKmNydGVuZC5vKSAuY3RvcnMpKQotICAgIEtFRVAgKCooU09SVCguY3RvcnMuKikpKQotICAgIEtFRVAgKCpjcnRlbmQubyguY3RvcnMpKQotICAgIEtFRVAgKCpjcnRiZWdpbi5vKC5kdG9ycykpCi0gICAgS0VFUCAoKihFWENMVURFX0ZJTEUgKCpjcnRlbmQubykgLmR0b3JzKSkKLSAgICBLRUVQICgqKFNPUlQoLmR0b3JzLiopKSkKLSAgICBLRUVQICgqY3J0ZW5kLm8oLmR0b3JzKSkKLQotICAgICooLnJvZGF0YSAucm9kYXRhLiogLmdudS5saW5rb25jZS5yLiopCi0KLSAgICAqKC5BUk0uZXh0YWIqIC5nbnUubGlua29uY2UuYXJtZXh0YWIuKikKLSAgICAqKC5nY2NfZXhjZXB0X3RhYmxlKSAKLSAgICAqKC5laF9mcmFtZV9oZHIpCi0gICAgKiguZWhfZnJhbWUpCi0KLSAgICBLRUVQICgqKC5pbml0KSkKLSAgICBLRUVQICgqKC5maW5pKSkKLQotICAgIFBST1ZJREVfSElEREVOIChfX3ByZWluaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKC5wcmVpbml0X2FycmF5KSkKLSAgICBQUk9WSURFX0hJRERFTiAoX19wcmVpbml0X2FycmF5X2VuZCA9IC4pOwotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfc3RhcnQgPSAuKTsKLSAgICBLRUVQICgqKFNPUlQoLmluaXRfYXJyYXkuKikpKQotICAgIEtFRVAgKCooLmluaXRfYXJyYXkpKQotICAgIFBST1ZJREVfSElEREVOIChfX2luaXRfYXJyYXlfZW5kID0gLik7Ci0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9zdGFydCA9IC4pOwotICAgIEtFRVAgKCooLmZpbmlfYXJyYXkpKQotICAgIEtFRVAgKCooU09SVCguZmluaV9hcnJheS4qKSkpCi0gICAgUFJPVklERV9ISURERU4gKF9fZmluaV9hcnJheV9lbmQgPSAuKTsKLSAgfSA+ZXh0ZXJuYWxfcmFtIEFUPnJvbQotICAvKiAuQVJNLmV4aWR4IGlzIHNvcnRlZCwgc28gaGFzIHRvIGdvIGluIGl0cyBvd24gb3V0cHV0IHNlY3Rpb24uICAqLwotICAgX19leGlkeF9zdGFydCA9IC47Ci0gIC5BUk0uZXhpZHggOgotICB7Ci0gICAgKiguQVJNLmV4aWR4KiAuZ251LmxpbmtvbmNlLmFybWV4aWR4LiopCi0gIH0gPmV4dGVybmFsX3JhbSBBVD5yb20KLSAgX19leGlkeF9lbmQgPSAuOwotICBfZXRleHQgPSAuOwotCi0gIC5kYXRhIDoKLSAgewotICAgIF9fZGF0YV9sb2FkID0gTE9BREFERFIoLmRhdGEpOwotICAgIF9zaWRhdGEgPSBMT0FEQUREUiAoLmRhdGEpOwotICAgIF9fZGF0YV9zdGFydCA9IC47Ci0gICAgX3NkYXRhID0gLjsKLSAgICBLRUVQKCooLmpjcikpCi0gICAgKiguZ290LnBsdCkgKiguZ290KQotICAgICooLnNoZGF0YSkKLSAgICAqKC5kYXRhIC5kYXRhLiogLmdudS5saW5rb25jZS5kLiopCi0gICAgLiA9IEFMSUdOICg0KTsKLSAgCV9lZGF0YSA9IC47Ci0gIH0gPmVzcmFtIEFUPnJvbQotCi0gIC5ic3MgOgotICB7Ci0gICAgX19ic3Nfc3RhcnRfXyA9IC4gOwotICAgIF9zYnNzID0gLjsKLSAgICAqKC5zaGJzcykKLSAgICAqKC5ic3MgLmJzcy4qIC5nbnUubGlua29uY2UuYi4qKQotICAgICooQ09NTU9OKQotICAgIC4gPSBBTElHTiAoOCk7Ci0gICAgX19ic3NfZW5kX18gPSAuOwotICAgIF9lbmQgPSAuOwotICAgIF9fZW5kID0gX2VuZDsKLSAgICBfZWJzcyA9IC47Ci0gICAgUFJPVklERShlbmQgPSAuKTsKLSAgfSA+ZXNyYW0gQVQ+cm9tCi0KLSAgLnN0YWIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFiKQotICB9Ci0KLSAgLnN0YWJzdHIgMCAoTk9MT0FEKSA6Ci0gIHsKLSAgICAqKC5zdGFic3RyKQotICB9Ci0gIC8qIERXQVJGIGRlYnVnIHNlY3Rpb25zLgotICAgICBTeW1ib2xzIGluIHRoZSBEV0FSRiBkZWJ1Z2dpbmcgc2VjdGlvbnMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcKLSAgICAgb2YgdGhlIHNlY3Rpb24gc28gd2UgYmVnaW4gdGhlbSBhdCAwLiAgKi8KLSAgLyogRFdBUkYgMSAqLwotICAuZGVidWcgICAgICAgICAgMCA6IHsgKiguZGVidWcpIH0KLSAgLmxpbmUgICAgICAgICAgIDAgOiB7ICooLmxpbmUpIH0KLSAgLyogR05VIERXQVJGIDEgZXh0ZW5zaW9ucyAqLwotICAuZGVidWdfc3JjaW5mbyAgMCA6IHsgKiguZGVidWdfc3JjaW5mbykgfQotICAuZGVidWdfc2ZuYW1lcyAgMCA6IHsgKiguZGVidWdfc2ZuYW1lcykgfQotICAvKiBEV0FSRiAxLjEgYW5kIERXQVJGIDIgKi8KLSAgLmRlYnVnX2FyYW5nZXMgIDAgOiB7ICooLmRlYnVnX2FyYW5nZXMpIH0KLSAgLmRlYnVnX3B1Ym5hbWVzIDAgOiB7ICooLmRlYnVnX3B1Ym5hbWVzKSB9Ci0gIC8qIERXQVJGIDIgKi8KLSAgLmRlYnVnX2luZm8gICAgIDAgOiB7ICooLmRlYnVnX2luZm8gLmdudS5saW5rb25jZS53aS4qKSB9Ci0gIC5kZWJ1Z19hYmJyZXYgICAwIDogeyAqKC5kZWJ1Z19hYmJyZXYpIH0KLSAgLmRlYnVnX2xpbmUgICAgIDAgOiB7ICooLmRlYnVnX2xpbmUpIH0KLSAgLmRlYnVnX2ZyYW1lICAgIDAgOiB7ICooLmRlYnVnX2ZyYW1lKSB9Ci0gIC5kZWJ1Z19zdHIgICAgICAwIDogeyAqKC5kZWJ1Z19zdHIpIH0KLSAgLmRlYnVnX2xvYyAgICAgIDAgOiB7ICooLmRlYnVnX2xvYykgfQotICAuZGVidWdfbWFjaW5mbyAgMCA6IHsgKiguZGVidWdfbWFjaW5mbykgfQotICAvKiBTR0kvTUlQUyBEV0FSRiAyIGV4dGVuc2lvbnMgKi8KLSAgLmRlYnVnX3dlYWtuYW1lcyAwIDogeyAqKC5kZWJ1Z193ZWFrbmFtZXMpIH0KLSAgLmRlYnVnX2Z1bmNuYW1lcyAwIDogeyAqKC5kZWJ1Z19mdW5jbmFtZXMpIH0KLSAgLmRlYnVnX3R5cGVuYW1lcyAwIDogeyAqKC5kZWJ1Z190eXBlbmFtZXMpIH0KLSAgLmRlYnVnX3Zhcm5hbWVzICAwIDogeyAqKC5kZWJ1Z192YXJuYW1lcykgfQotICAubm90ZS5nbnUuYXJtLmlkZW50IDAgOiB7IEtFRVAgKCooLm5vdGUuZ251LmFybS5pZGVudCkpIH0KLSAgLkFSTS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLkFSTS5hdHRyaWJ1dGVzKSkgfQotICAvRElTQ0FSRC8gOiB7ICooLm5vdGUuR05VLXN0YWNrKSAgfQotfQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9zdGFydHVwX20yc3h4eC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zdGFydHVwX2djYy9zdGFydHVwX20yc3h4eC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjkyN2Q1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3RhcnR1cF9nY2Mvc3RhcnR1cF9tMnN4eHgucworKysgL2Rldi9udWxsCkBAIC0xLDk1MSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMi0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBTbWFydEZ1c2lvbjIgdmVjdG9yIHRhYmxlIGFuZCBzdGFydHVwIGNvZGUgZm9yIENvZGVTb3VyY2VyeSBHKysuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MjY5ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMjA6NTM6MzggKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0JLnN5bnRheCB1bmlmaWVkDQotICAgIC5jcHUgY29ydGV4LW0zDQotICAgIC50aHVtYg0KLSAgICANCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFZlY3RvciB0YWJsZQ0KLSAqLw0KLSAgICAuZ2xvYmFsICAgICBnX3BmblZlY3RvcnMNCi0gICAgLnNlY3Rpb24gICAgLmlzcl92ZWN0b3IsImEiLCVwcm9nYml0cw0KLSAgICAudHlwZSAgICAgICBnX3BmblZlY3RvcnMsICVvYmplY3QNCi0gICAgLnNpemUgICAgICAgZ19wZm5WZWN0b3JzLCAuLWdfcGZuVmVjdG9ycw0KLSAgICANCi1nX3BmblZlY3RvcnM6DQotICAgIC53b3JkICBfZXN0YWNrDQotICAgIC53b3JkICBSZXNldF9IYW5kbGVyDQotICAgIC53b3JkICBOTUlfSGFuZGxlcg0KLSAgICAud29yZCAgSGFyZEZhdWx0X0hhbmRsZXINCi0gICAgLndvcmQgIE1lbU1hbmFnZV9IYW5kbGVyDQotICAgIC53b3JkICBCdXNGYXVsdF9IYW5kbGVyDQotICAgIC53b3JkICBVc2FnZUZhdWx0X0hhbmRsZXINCi0gICAgLndvcmQgIDANCi0gICAgLndvcmQgIDANCi0gICAgLndvcmQgIDANCi0gICAgLndvcmQgIDANCi0gICAgLndvcmQgIFNWQ19IYW5kbGVyDQotICAgIC53b3JkICBEZWJ1Z01vbl9IYW5kbGVyDQotICAgIC53b3JkICAwDQotICAgIC53b3JkICBQZW5kU1ZfSGFuZGxlcg0KLSAgICAud29yZCAgU3lzVGlja19IYW5kbGVyDQotICAgIC53b3JkICBXZG9nV2FrZXVwX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFJUQ19XYWtldXBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgU1BJMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBTUEkxX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEkyQzBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgSTJDMF9TTUJBbGVydF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBJMkMwX1NNQnVzX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEkyQzFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgSTJDMV9TTUJBbGVydF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBJMkMxX1NNQnVzX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFVBUlQwX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFVBUlQxX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEV0aGVybmV0TUFDX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIERNQV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBUaW1lcjFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgVGltZXIyX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIENBTl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBFTlZNMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBFTlZNMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBDb21CbGtfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgVVNCX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIFVTQl9ETUFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgUExMX0xvY2tfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIENvbW1Td2l0Y2hFcnJvcl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBDYWNoZUVycm9yX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEREUl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBIUERNQV9FcnJvcl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBFQ0NfRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgTUREUl9JT0NhbGliX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZBQl9QTExfTG9ja19JUlFIYW5kbGVyDQotICAgIC53b3JkICBGQUJfUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZJQzY0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnEyX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxNF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnE1X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTZfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxN19JUlFIYW5kbGVyDQotICAgIC53b3JkICBGYWJyaWNJcnE4X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEZhYnJpY0lycTlfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTJfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTRfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgRmFicmljSXJxMTVfSVJRSGFuZGxlciAgICANCi0gICAgLndvcmQgIEdQSU8wX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8zX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU80X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU81X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU82X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU83X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU84X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU85X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xMF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMTFfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzEyX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xM19JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMTRfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzE1X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xNl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMTdfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzE4X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8xOV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjBfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzIxX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yMl9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjNfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzI0X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yNV9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjZfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzI3X0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8yOF9JUlFIYW5kbGVyDQotICAgIC53b3JkICBHUElPMjlfSVJRSGFuZGxlcg0KLSAgICAud29yZCAgR1BJTzMwX0lSUUhhbmRsZXINCi0gICAgLndvcmQgIEdQSU8zMV9JUlFIYW5kbGVyDQotDQotCQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUmVzZXRfSGFuZGxlcg0KLSAqLw0KLSAgICAuZ2xvYmFsIFJlc2V0X0hhbmRsZXINCi0gICAgLnR5cGUgICBSZXNldF9IYW5kbGVyLCAlZnVuY3Rpb24NCi1SZXNldF9IYW5kbGVyOg0KLV9zdGFydDoNCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCi0gKiBDYWxsIENNU0lTIHN5c3RlbSBpbml0IGZ1bmN0aW9uLg0KLSAqLw0KLSAgICBsZHIgICAgIHIwLCA9U3lzdGVtSW5pdA0KLSAgICBibHggICAgIHIwDQotICAgIA0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCSANCi0gKiBDaGVjayBpZiB0aGUgZXhlY3V0YWJsZSBpcyBidWlsdCBmb3IgTlZNIExNQSBtaXJyb3JlZCB0byBWTUEgYWRkcmVzcy4NCi0gKiBUaGlzIGlzIGRvbmUgZm9yIGRlYnVnZ2luZyBleGVjdXRhYmxlcyBydW5uaW5nIG91dCBvZiBlTlZNIHdpdGggU29mdENvbnNvbGUuDQotICogVGhlIC50ZXh0IHNlY3Rpb24gc2hvdWxkIG5vdCBiZSBjb3BpZWQgaW4gdGhpcyBjYXNlIHNpbmNlIGJvdGggdGhlIExNQSBhbmQNCi0gKiBWTUEgcG9pbnQgYXQgdGhlIGVOVk0gZGVzcGl0ZSB0aGUgTE1BIGFuZCBWTWEgaGF2aW5nIGRpZmZlcmVudCB2YWx1ZXMuDQotICovDQotICAgIGxkciByMCwgPV9fbWlycm9yZWRfbnZtDQotICAgIGNtcCByMCwgIzANCi0gICAgYm5lIGNvcHlfZGF0YQ0KLSAgICANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkgDQotICogQ29weSBjb2RlIHNlY3Rpb24uDQotICovDQotCWxkciByMCwgPV9fdGV4dF9sb2FkDQotCWxkciByMSwgPV9fdGV4dF9zdGFydA0KLQlsZHIgcjIsID1fZXRleHQNCi0JY21wIHIwLCByMQ0KLQliZXEgY29weV9kYXRhDQotY29weV9jb2RlX2xvb3A6DQotCWNtcCByMSwgcjINCi0gICAgaXR0IG5lDQotCWxkcm5lIHIzLCBbcjBdLCAjNA0KLQlzdHJuZSByMywgW3IxXSwgIzQNCi0JYm5lIGNvcHlfY29kZV9sb29wDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotICogQ29weSBkYXRhIHNlY3Rpb24uDQotICovDQotY29weV9kYXRhOg0KLQlsZHIgcjAsID1fX2RhdGFfbG9hZA0KLQlsZHIgcjEsID1fX2RhdGFfc3RhcnQNCi0JbGRyIHIyLCA9X2VkYXRhDQotCWNtcCByMCwgcjENCi0JYmVxIGNsZWFyX2Jzcw0KLWNvcHlfZGF0YV9sb29wOg0KLQljbXAgcjEsIHIyDQotICAgIGl0dCBuZQ0KLQlsZHJuZSByMywgW3IwXSwgIzQNCi0Jc3RybmUgcjMsIFtyMV0sICM0DQotCWJuZSBjb3B5X2RhdGFfbG9vcA0KLQkNCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCi0gKiBDbGVhciAuYnNzDQotICovDQotY2xlYXJfYnNzOg0KLQlsZHIgcjAsID0wDQotCWxkciByMSwgPV9fYnNzX3N0YXJ0X18NCi0JbGRyIHIyLCA9X19ic3NfZW5kX18NCi1jbGVhcl9ic3NfbG9vcDoNCi0JY21wIHIxLCByMg0KLSAgICBpdCBuZQ0KLQlzdHJuZSByMCwgW3IxXSwgIzQNCi0JYm5lIGNsZWFyX2Jzc19sb29wDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0JDQotICogQ2FsbCBnbG9iYWwgY29uc3RydWN0b3JzDQotICovDQotICAgIC8qDQotICAgICAqIEFsaWduIHRvIHdvcmQgYW5kIHVzZSAzMi1iaXRzIExEUiBpbnN0cnVjdGlvbiB0byBlbnN1cmUgdGhlIEFERCBpbnN0cnVjdGlvbg0KLSAgICAgKiB0YWtpbmcgUEMgYXMgYXJndW1lbnQgaXMgYWxpZ25lZCBvbiBhIHdvcmQgYm91bmRhcnkuDQotICAgICAqLw0KLSAgICAuYWxpZ24gNA0KLWNhbGxfZ2xvYl9jdG9yOg0KLQlsZHIudyByMCwgPV9fbGliY19pbml0X2FycmF5DQotICAgIGFkZCBsciwgcGMsICMzDQotIAlieCByMA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KLSAqIGJyYW5jaCB0byBtYWluLg0KLSAqLw0KLWJyYW5jaF90b19tYWluOiAJIA0KLQltb3YJcjAsICMwCQkvKiAgbm8gYXJndW1lbnRzICAqLw0KLQltb3YJcjEsICMwCQkvKiAgbm8gYXJndiBlaXRoZXIgKi8NCi0gICAgbGRyIHBjLCA9bWFpbg0KLQ0KLUV4aXRMb29wOg0KLSAgICBCIEV4aXRMb29wDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBOTUlfSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIE5NSV9IYW5kbGVyDQotICAgIC50eXBlICAgTk1JX0hhbmRsZXIsICVmdW5jdGlvbg0KLU5NSV9IYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEhhcmRGYXVsdF9IYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgSGFyZEZhdWx0X0hhbmRsZXINCi0gICAgLnR5cGUgICBIYXJkRmF1bHRfSGFuZGxlciwgJWZ1bmN0aW9uDQotSGFyZEZhdWx0X0hhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogTWVtTWFuYWdlX0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBNZW1NYW5hZ2VfSGFuZGxlcg0KLSAgICAudHlwZSAgIE1lbU1hbmFnZV9IYW5kbGVyLCAlZnVuY3Rpb24NCi1NZW1NYW5hZ2VfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBCdXNGYXVsdF9IYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgQnVzRmF1bHRfSGFuZGxlcg0KLSAgICAudHlwZSAgIEJ1c0ZhdWx0X0hhbmRsZXIsICVmdW5jdGlvbg0KLUJ1c0ZhdWx0X0hhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVXNhZ2VGYXVsdF9IYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVXNhZ2VGYXVsdF9IYW5kbGVyDQotICAgIC50eXBlICAgVXNhZ2VGYXVsdF9IYW5kbGVyLCAlZnVuY3Rpb24NCi1Vc2FnZUZhdWx0X0hhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU1ZDX0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBTVkNfSGFuZGxlcg0KLSAgICAudHlwZSAgIFNWQ19IYW5kbGVyLCAlZnVuY3Rpb24NCi1TVkNfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBEZWJ1Z01vbl9IYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRGVidWdNb25fSGFuZGxlcg0KLSAgICAudHlwZSAgIERlYnVnTW9uX0hhbmRsZXIsICVmdW5jdGlvbg0KLURlYnVnTW9uX0hhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUGVuZFNWX0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBQZW5kU1ZfSGFuZGxlcg0KLSAgICAudHlwZSAgIFBlbmRTVl9IYW5kbGVyLCAlZnVuY3Rpb24NCi1QZW5kU1ZfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTeXNUaWNrX0hhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBTeXNUaWNrX0hhbmRsZXINCi0gICAgLnR5cGUgICBTeXNUaWNrX0hhbmRsZXIsICVmdW5jdGlvbg0KLVN5c1RpY2tfSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBXZG9nV2FrZXVwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBXZG9nV2FrZXVwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBXZG9nV2FrZXVwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVdkb2dXYWtldXBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBSVENfV2FrZXVwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBSVENfV2FrZXVwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBSVENfV2FrZXVwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVJUQ19XYWtldXBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTUEkwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBTUEkwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBTUEkwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVNQSTBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTUEkxX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBTUEkxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBTUEkxX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVNQSTFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMwX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMwX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMwX1NNQkFsZXJ0X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzBfU01CQWxlcnRfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMwX1NNQnVzX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMwX1NNQnVzX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMwX1NNQnVzX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzBfU01CdXNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMxX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMxX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMxX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMxX1NNQkFsZXJ0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMxX1NNQkFsZXJ0X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzFfU01CQWxlcnRfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBJMkMxX1NNQnVzX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBJMkMxX1NNQnVzX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBJMkMxX1NNQnVzX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUkyQzFfU01CdXNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBVQVJUMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVUFSVDBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFVBUlQwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVVBUlQwX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVUFSVDFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFVBUlQxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBVQVJUMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1VQVJUMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0gICAgDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBFdGhlcm5ldE1BQ19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRXRoZXJuZXRNQUNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEV0aGVybmV0TUFDX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUV0aGVybmV0TUFDX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRE1BX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBETUFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIERNQV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1ETUFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBUaW1lcjFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFRpbWVyMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgVGltZXIxX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLVRpbWVyMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFRpbWVyMl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVGltZXIyX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBUaW1lcjJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotVGltZXIyX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENBTl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgQ0FOX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBDQU5fSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotQ0FOX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEVOVk0wX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBFTlZNMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRU5WTTBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRU5WTTBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBFTlZNMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRU5WTTFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEVOVk0xX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUVOVk0xX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ29tQmxrX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBDb21CbGtfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIENvbUJsa19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1Db21CbGtfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVVNCX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBVU0JfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIFVTQl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1VU0JfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotICAgIA0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVVNCX0RNQV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgVVNCX0RNQV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgVVNCX0RNQV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1VU0JfRE1BX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUExMX0xvY2tfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIFBMTF9Mb2NrX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBQTExfTG9ja19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1QTExfTG9ja19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFBMTF9Mb2NrTG9zdF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBQTExfTG9ja0xvc3RfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotUExMX0xvY2tMb3N0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ29tbVN3aXRjaEVycm9yX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBDb21tU3dpdGNoRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIENvbW1Td2l0Y2hFcnJvcl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1Db21tU3dpdGNoRXJyb3JfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDYWNoZUVycm9yX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBDYWNoZUVycm9yX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBDYWNoZUVycm9yX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUNhY2hlRXJyb3JfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBERFJfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEREUl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRERSX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUREUl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEhQRE1BX0NvbXBsZXRlX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBIUERNQV9FcnJvcl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgSFBETUFfRXJyb3JfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEhQRE1BX0Vycm9yX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUhQRE1BX0Vycm9yX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEVDQ19FcnJvcl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRUNDX0Vycm9yX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBFQ0NfRXJyb3JfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRUNDX0Vycm9yX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogTUREUl9JT0NhbGliX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBNRERSX0lPQ2FsaWJfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIE1ERFJfSU9DYWxpYl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1NRERSX0lPQ2FsaWJfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGQUJfUExMX0xvY2tfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZBQl9QTExfTG9ja19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRkFCX1BMTF9Mb2NrX0lSUUhhbmRsZXIsICVmdW5jdGlvbiAgICANCi1GQUJfUExMX0xvY2tfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGQUJfUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGQUJfUExMX0xvY2tMb3N0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGQUJfUExMX0xvY2tMb3N0X0lSUUhhbmRsZXIsICVmdW5jdGlvbiAgICAgICAgDQotRkFCX1BMTF9Mb2NrTG9zdF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0gICAgDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGSUM2NF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRklDNjRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZJQzY0X0lSUUhhbmRsZXIsICVmdW5jdGlvbiAgICAgICAgICAgIA0KLUZJQzY0X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLSAgICANCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTJfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTJfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTNfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxM19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxNF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTVfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTVfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxNV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTZfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTZfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTZfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxNl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTdfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTdfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTdfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxN19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0gICAgDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnE4X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnE4X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnE4X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycThfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnE5X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnE5X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnE5X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycTlfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnExMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMTBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTEwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycTEwX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMTFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTExX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnExMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnExMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTEyX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnExMl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMTJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMTJfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGYWJyaWNJcnExM19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgRmFicmljSXJxMTNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEZhYnJpY0lycTEzX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUZhYnJpY0lycTEzX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRmFicmljSXJxMTRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEZhYnJpY0lycTE0X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBGYWJyaWNJcnExNF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1GYWJyaWNJcnExNF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZhYnJpY0lycTE1X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBGYWJyaWNJcnExNV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgRmFicmljSXJxMTVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotRmFicmljSXJxMTVfSVJRSGFuZGxlcjoNCi0gICAgQiAuICAgIA0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8wX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzJfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzNfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8zX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPM19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPM19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU80X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPNF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzRfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzRfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPNV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzVfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU81X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU81X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzZfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU82X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPNl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPNl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU83X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPN19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzdfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzdfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPOF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzhfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU84X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU84X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzlfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU85X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPOV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPOV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xMF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzEwX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTBfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzEwX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzExX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTFfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xMV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTFfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMTJfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xMl9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzEyX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xMl9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xM19JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzEzX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTNfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzEzX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzE0X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTRfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xNF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTRfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMTVfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xNV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzE1X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xNV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xNl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzE2X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTZfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzE2X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzE3X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMTdfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8xN19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMTdfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMThfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8xOF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzE4X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8xOF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8xOV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzE5X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMTlfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzE5X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzIwX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjBfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yMF9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjBfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjFfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yMV9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzIxX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yMV9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yMl9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzIyX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjJfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzIyX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzIzX0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjNfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yM19JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjNfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjRfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yNF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzI0X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yNF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yNV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzI1X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjVfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzI1X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzI2X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjZfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yNl9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjZfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMjdfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8yN19JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzI3X0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8yN19JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8yOF9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzI4X0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMjhfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzI4X0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR1BJTzI5X0lSUUhhbmRsZXINCi0gKi8NCi0gICAgLndlYWsgICBHUElPMjlfSVJRSGFuZGxlcg0KLSAgICAudHlwZSAgIEdQSU8yOV9JUlFIYW5kbGVyLCAlZnVuY3Rpb24NCi1HUElPMjlfSVJRSGFuZGxlcjoNCi0gICAgQiAuDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBHUElPMzBfSVJRSGFuZGxlcg0KLSAqLw0KLSAgICAud2VhayAgIEdQSU8zMF9JUlFIYW5kbGVyDQotICAgIC50eXBlICAgR1BJTzMwX0lSUUhhbmRsZXIsICVmdW5jdGlvbg0KLUdQSU8zMF9JUlFIYW5kbGVyOg0KLSAgICBCIC4NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdQSU8zMV9JUlFIYW5kbGVyDQotICovDQotICAgIC53ZWFrICAgR1BJTzMxX0lSUUhhbmRsZXINCi0gICAgLnR5cGUgICBHUElPMzFfSVJRSGFuZGxlciwgJWZ1bmN0aW9uDQotR1BJTzMxX0lSUUhhbmRsZXI6DQotICAgIEIgLg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogbXNjY19wb3N0X2h3X2NmZ19pbml0DQotICovDQotICAgIC53ZWFrICAgbXNjY19wb3N0X2h3X2NmZ19pbml0DQotICAgIC50eXBlICAgbXNjY19wb3N0X2h3X2NmZ19pbml0LCAlZnVuY3Rpb24NCi1tc2NjX3Bvc3RfaHdfY2ZnX2luaXQ6DQotICAgIEJYIExSDQotDQotLmVuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzX2luaXRfY2ZnX3R5cGVzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N5c19pbml0X2NmZ190eXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODM2OGFmLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzX2luaXRfY2ZnX3R5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTIgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIA0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNDQxMCAkDQotICogU1ZOICREYXRlOiAyMDEyLTA3LTE2IDE0OjM2OjE3ICswMTAwIChNb24sIDE2IEp1bCAyMDEyKSAkDQotICovDQotIA0KLSNpZm5kZWYgU1lTVEVNX0lOSVRfQ0ZHX1RZUEVTX0hfDQotI2RlZmluZSBTWVNURU1fSU5JVF9DRkdfVFlQRVNfSF8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEREUiBDb25maWd1cmF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotdHlwZWRlZiBzdHJ1Y3QNCi17DQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRERSIENvbnRyb2xsZXIgcmVnaXN0ZXJzLg0KLSAgICAgKi8NCi0gICAgc3RydWN0DQotICAgIHsNCi0gICAgICAgIHVpbnQxNl90IERZTl9TT0ZUX1JFU0VUX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkVTRVJWRUQwOw0KLSAgICAgICAgdWludDE2X3QgRFlOX1JFRlJFU0hfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERZTl9SRUZSRVNIXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBEWU5fUE9XRVJET1dOX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFlOX0RFQlVHX0NSOw0KLSAgICAgICAgdWludDE2X3QgTU9ERV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEFERFJfTUFQX0JBTktfQ1I7DQotICAgICAgICB1aW50MTZfdCBFQ0NfREFUQV9NQVNLX0NSOw0KLSAgICAgICAgdWludDE2X3QgQUREUl9NQVBfQ09MXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBBRERSX01BUF9DT0xfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEFERFJfTUFQX1JPV18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgQUREUl9NQVBfUk9XXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBJTklUXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBDS0VfUlNUTl9DWUNMRVNfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IENLRV9SU1ROX0NZQ0xFU18yX0NSOw0KLSAgICAgICAgdWludDE2X3QgSU5JVF9NUl9DUjsNCi0gICAgICAgIHVpbnQxNl90IElOSVRfRU1SX0NSOw0KLSAgICAgICAgdWludDE2X3QgSU5JVF9FTVIyX0NSOw0KLSAgICAgICAgdWludDE2X3QgSU5JVF9FTVIzX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9CQU5LX1RJTUlOR19QQVJBTV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fUkRfV1JfTEFURU5DWV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fUkRfV1JfUFJFX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFJBTV9NUl9USU1JTkdfUEFSQU1fQ1I7DQotICAgICAgICB1aW50MTZfdCBEUkFNX1JBU19USU1JTkdfQ1I7DQotICAgICAgICB1aW50MTZfdCBEUkFNX1JEX1dSX1RSTkFSTkRfVElNRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fVF9QRF9DUjsNCi0gICAgICAgIHVpbnQxNl90IERSQU1fQkFOS19BQ1RfVElNSU5HX0NSOw0KLSAgICAgICAgdWludDE2X3QgT0RUX1BBUkFNXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBPRFRfUEFSQU1fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEFERFJfTUFQX0NPTF8zX0NSOw0KLSAgICAgICAgdWludDE2X3QgTU9ERV9SRUdfUkRfV1JfQ1I7DQotICAgICAgICB1aW50MTZfdCBNT0RFX1JFR19EQVRBX0NSOw0KLSAgICAgICAgdWludDE2X3QgUFdSX1NBVkVfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFBXUl9TQVZFXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBaUV9MT05HX1RJTUVfQ1I7DQotICAgICAgICB1aW50MTZfdCBaUV9TSE9SVF9USU1FX0NSOw0KLSAgICAgICAgdWludDE2X3QgWlFfU0hPUlRfSU5UX1JFRlJFU0hfTUFSR0lOXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBaUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFBFUkZfUEFSQU1fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEhQUl9RVUVVRV9QQVJBTV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgSFBSX1FVRVVFX1BBUkFNXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBMUFJfUVVFVUVfUEFSQU1fMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IExQUl9RVUVVRV9QQVJBTV8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfUVVFVUVfUEFSQU1fQ1I7DQotICAgICAgICB1aW50MTZfdCBQRVJGX1BBUkFNXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBQRVJGX1BBUkFNXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBERklfUkREQVRBX0VOX0NSOw0KLSAgICAgICAgdWludDE2X3QgREZJX01JTl9DVFJMVVBEX1RJTUlOR19DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9NQVhfQ1RSTFVQRF9USU1JTkdfQ1I7DQotICAgICAgICB1aW50MTZfdCBERklfV1JfTFZMX0NPTlRST0xfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9XUl9MVkxfQ09OVFJPTF8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgREZJX1JEX0xWTF9DT05UUk9MXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBERklfUkRfTFZMX0NPTlRST0xfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IERGSV9DVFJMVVBEX1RJTUVfSU5URVJWQUxfQ1I7DQotICAgICAgICB1aW50MTZfdCBEWU5fU09GVF9SRVNFVF9DUjI7DQotICAgICAgICB1aW50MTZfdCBBWElfRkFCUklDX1BSSV9JRF9DUjsNCi0gICAgfSBkZHJjOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgUEhZIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQotICAgICAqLw0KLSAgICBzdHJ1Y3QgDQotICAgIHsNCi0gICAgICAgIHVpbnQxNl90IExPT1BCQUNLX1RFU1RfQ1I7DQotICAgICAgICB1aW50MTZfdCBCT0FSRF9MT09QQkFDS19DUjsNCi0gICAgICAgIHVpbnQxNl90IENUUkxfU0xBVkVfUkFUSU9fQ1I7DQotICAgICAgICB1aW50MTZfdCBDVFJMX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgdWludDE2X3QgQ1RSTF9TTEFWRV9ERUxBWV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERBVEFfU0xJQ0VfSU5fVVNFX0NSOw0KLSAgICAgICAgdWludDE2X3QgTFZMX05VTV9PRl9EUTBfQ1I7DQotICAgICAgICB1aW50MTZfdCBEUV9PRkZTRVRfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IERRX09GRlNFVF8yX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFFfT0ZGU0VUXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBESVNfQ0FMSUJfUlNUX0NSOw0KLSAgICAgICAgdWludDE2X3QgRExMX0xPQ0tfRElGRl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfSU5fREVMQVlfMV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfSU5fREVMQVlfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfSU5fREVMQVlfM19DUjsNCi0gICAgICAgIHVpbnQxNl90IEZJRk9fV0VfSU5fRk9SQ0VfQ1I7DQotICAgICAgICB1aW50MTZfdCBGSUZPX1dFX1NMQVZFX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBGSUZPX1dFX1NMQVZFX1JBVElPXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBGSUZPX1dFX1NMQVZFX1JBVElPXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBGSUZPX1dFX1NMQVZFX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBHQVRFTFZMX0lOSVRfTU9ERV9DUjsNCi0gICAgICAgIHVpbnQxNl90IEdBVEVMVkxfSU5JVF9SQVRJT18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgR0FURUxWTF9JTklUX1JBVElPXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBHQVRFTFZMX0lOSVRfUkFUSU9fM19DUjsNCi0gICAgICAgIHVpbnQxNl90IEdBVEVMVkxfSU5JVF9SQVRJT180X0NSOw0KLSAgICAgICAgdWludDE2X3QgTE9DQUxfT0RUX0NSOw0KLSAgICAgICAgdWludDE2X3QgSU5WRVJUX0NMS09VVF9DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9ERUxBWV8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX0RFTEFZXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRF9EUVNfU0xBVkVfREVMQVlfM19DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9GT1JDRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9SQVRJT18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRfRFFTX1NMQVZFX1JBVElPXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRF9EUVNfU0xBVkVfUkFUSU9fM19DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX0RRU19TTEFWRV9SQVRJT180X0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX0RFTEFZXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfREVMQVlfMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RRU19TTEFWRV9ERUxBWV8zX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX1JBVElPXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EUVNfU0xBVkVfUkFUSU9fMl9DUjsNCi0gICAgICAgIHVpbnQxNl90IFdSX0RRU19TTEFWRV9SQVRJT18zX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfRFFTX1NMQVZFX1JBVElPXzRfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX0RFTEFZXzFfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX0RFTEFZXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX0RFTEFZXzNfQ1I7DQotICAgICAgICB1aW50MTZfdCBXUl9EQVRBX1NMQVZFX0ZPUkNFX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfREFUQV9TTEFWRV9SQVRJT18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfREFUQV9TTEFWRV9SQVRJT18yX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfREFUQV9TTEFWRV9SQVRJT18zX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfREFUQV9TTEFWRV9SQVRJT180X0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JMVkxfSU5JVF9NT0RFX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JMVkxfSU5JVF9SQVRJT18xX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JMVkxfSU5JVF9SQVRJT18yX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JMVkxfSU5JVF9SQVRJT18zX0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JMVkxfSU5JVF9SQVRJT180X0NSOw0KLSAgICAgICAgdWludDE2X3QgV1JfUkRfUkxfQ1I7DQotICAgICAgICB1aW50MTZfdCBSRENfRklGT19SU1RfRVJSQ05UQ0xSX0NSOw0KLSAgICAgICAgdWludDE2X3QgUkRDX1dFX1RPX1JFX0RFTEFZX0NSOw0KLSAgICAgICAgdWludDE2X3QgVVNFX0ZJWEVEX1JFX0NSOw0KLSAgICAgICAgdWludDE2X3QgVVNFX1JBTkswX0RFTEFZU19DUjsNCi0gICAgICAgIHVpbnQxNl90IFVTRV9MVkxfVFJOR19MRVZFTF9DUjsNCi0gICAgICAgIHVpbnQxNl90IENPTkZJR19DUjsNCi0gICAgICAgIHVpbnQxNl90IFJEX1dSX0dBVEVfTFZMX0NSOw0KLSAgICAgICAgdWludDE2X3QgRFlOX1JFU0VUX0NSOw0KLSAgICB9IHBoeTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRklDLTY0IHJlZ2lzdGVycw0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIGFuZCAzMi1iaXQgYWxpZ25lZC4NCi0gICAgICovDQotICAgIHN0cnVjdCANCi0gICAgew0KLSAgICAgICAgdWludDE2X3QgTkJfQUREUl9DUjsNCi0gICAgICAgIHVpbnQxNl90IE5CUldCX1NJWkVfQ1I7DQotICAgICAgICB1aW50MTZfdCBXQl9USU1FT1VUX0NSOw0KLSAgICAgICAgdWludDE2X3QgSFBEX1NXX1JXX0VOX0NSOw0KLSAgICAgICAgdWludDE2X3QgSFBEX1NXX1JXX0lOVkFMX0NSOw0KLSAgICAgICAgdWludDE2X3QgU1dfV1JfRVJDTFJfQ1I7DQotICAgICAgICB1aW50MTZfdCBFUlJfSU5UX0VOQUJMRV9DUjsNCi0gICAgICAgIHVpbnQxNl90IE5VTV9BSEJfTUFTVEVSU19DUjsNCi0gICAgICAgIHVpbnQxNl90IExPQ0tfVElNRU9VVFZBTF8xX0NSOw0KLSAgICAgICAgdWludDE2X3QgTE9DS19USU1FT1VUVkFMXzJfQ1I7DQotICAgICAgICB1aW50MTZfdCBMT0NLX1RJTUVPVVRfRU5fQ1I7DQotICAgIH0gZmljOw0KLX0gZGRyX3N1YnN5c19jZmdfdDsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLS8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGRERSIENvbmZpZ3VyYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0NCi10eXBlZGVmIHN0cnVjdCANCi17DQotICAgIHVpbnQxNl90IFBMTF9DT05GSUdfTE9XXzE7DQotICAgIHVpbnQxNl90IFBMTF9DT05GSUdfTE9XXzI7DQotICAgIHVpbnQxNl90IFBMTF9DT05GSUdfSElHSDsNCi0gICAgdWludDE2X3QgRkFDQ19DTEtfRU47DQotICAgIHVpbnQxNl90IEZBQ0NfTVVYX0NPTkZJRzsNCi0gICAgdWludDE2X3QgRkFDQ19ESVZJU09SX1JBVElPOw0KLSAgICB1aW50MTZfdCBQTExfREVMQVlfTElORV9TRUw7DQotICAgIHVpbnQxNl90IFNPRlRfUkVTRVQ7IA0KLSAgICB1aW50MTZfdCBJT19DQUxJQjsNCi0gICAgdWludDE2X3QgSU5URVJSVVBUX0VOQUJMRTsNCi0gICAgdWludDE2X3QgQVhJX0FIQl9NT0RFX1NFTDsNCi0gICAgdWludDE2X3QgUEhZX1NFTEZfUkVGX0VOOw0KLX0gZmRkcl9zeXNyZWdfdDsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLS8qICAgICAgICAgICAgICAgICBQQ0kgRXhwcmVzcyBCcmlkZ2UgSVAgQ29yZSBjb25maWd1cmF0aW9uLiAgICAgICAgICAgICAgICAgICovDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0NCi10eXBlZGVmIHN0cnVjdA0KLXsNCi0gICAgdWludDMyX3QgKiBwX3JlZzsNCi0gICAgdWludDMyX3QgdmFsdWU7DQotfSBjZmdfYWRkcl92YWx1ZV9wYWlyX3Q7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBTWVNURU1fSU5JVF9DRkdfVFlQRVNfSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N5c3RlbV9tMnN4eHguYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzdGVtX20yc3h4eC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNDEzNGI4Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vQ01TSVMvc3lzdGVtX20yc3h4eC5jCisrKyAvZGV2L251bGwKQEAgLTEsNTYwICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiAgU21hcnRGdXNpb24yIENNU0lTIHN5c3RlbSBpbml0aWFsaXphdGlvbi4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyODAgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMiAyMDo1MTo1MCArMDAwMCAoRnJpLCAyMiBNYXIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJtMnN4eHguaCINCi0jaW5jbHVkZSAiLi4vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmgiDQotI2luY2x1ZGUgInN5c19pbml0X2NmZ190eXBlcy5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBTaWxpY29uIHJldmlzaW9ucy4NCi0gKi8NCi0jZGVmaW5lIFVOS05PV05fU0lMSUNPTl9SRVYgICAgIDANCi0jZGVmaW5lIE0yUzA1MF9SRVZfQV9TSUxJQ09OICAgIDENCi0jZGVmaW5lIE0yUzA1MF9SRVZfQl9TSUxJQ09OICAgIDINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIA0KLSAqLw0KLXZvaWQgbXNjY19wb3N0X2h3X2NmZ19pbml0KHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogU3lzdGVtIHJlZ2lzdGVycyBvZiBpbnRlcmVzdC4NCi0gKi8NCi0vKg0KLSAqIE1TU0REUl9GQUNDMV9DUiByZWdpc3RlciBtYXNrczoNCi0gKi8NCi0jZGVmaW5lIEREUl9DTEtfRU5fU0hJRlQgICAgOHUNCi0jZGVmaW5lIEZBQ0NfR0xNVVhfU0VMX01BU0sgICAgICAgICAweDAwMDAxMDAwdQ0KLSNkZWZpbmUgQ09OVFJPTExFUl9QTExfSU5JVF9NQVNLICAgIDB4MDQwMDAwMDB1DQotI2RlZmluZSBSQ09TQ19ESVYyX01BU0sgICAgICAgICAgICAgMHgwMDAwMDAwNHUNCi0NCi0vKg0KLSAqIE1TU0REUl9QTExfU1RBVFVTIHJlZ2lzdGVyIG1hc2tzOg0KLSAqLw0KLSNkZWZpbmUgRkFCX1BMTF9MT0NLX01BU0sgICAweDAwMDAwMDAxdQ0KLSNkZWZpbmUgTVBMTF9MT0NLX01BU0sgICAgICAweDAwMDAwMDAydQ0KLQ0KLS8qDQotICogTVNTRERSX1BMTF9TVEFUVVNfSElHSF9DUiByZWdpc3RlciBtYXNrczoNCi0gKi8NCi0jZGVmaW5lIEZBQ0NfUExMX0JZUEFTU19NQVNLICAgIDB4MDAwMDAwMDF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBTdGFuZGFyZCBDTVNJUyBnbG9iYWwgdmFyaWFibGVzLg0KLSAqLw0KLXVpbnQzMl90IFN5c3RlbUNvcmVDbG9jayA9IE1TU19TWVNfTTNfQ0xLX0ZSRVE7ICAgICAgICAgLyohPCBTeXN0ZW0gQ2xvY2sgRnJlcXVlbmN5IChDb3JlIENsb2NrKSAqLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogU21hcnRGdXNpb24yIHNwZWNpZmljIGNsb2Nrcy4NCi0gKi8NCi11aW50MzJfdCBnX0ZyZXF1ZW5jeVBDTEswID0gTVNTX1NZU19BUEJfMF9DTEtfRlJFUTsgICAgIC8qITwgQ2xvY2sgZnJlcXVlbmN5IG9mIEFQQiBidXMgMC4gKi8gIA0KLXVpbnQzMl90IGdfRnJlcXVlbmN5UENMSzEgPSBNU1NfU1lTX0FQQl8xX0NMS19GUkVROyAgICAgLyohPCBDbG9jayBmcmVxdWVuY3kgb2YgQVBCIGJ1cyAxLiAqLw0KLXVpbnQzMl90IGdfRnJlcXVlbmN5UENMSzIgPSBNU1NfU1lTX0FQQl8yX0NMS19GUkVROyAgICAgLyohPCBDbG9jayBmcmVxdWVuY3kgb2YgQVBCIGJ1cyAyLiAqLw0KLXVpbnQzMl90IGdfRnJlcXVlbmN5RklDMCA9IE1TU19TWVNfRklDXzBfQ0xLX0ZSRVE7ICAgICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgRlBHQSBmYWJyaWMgaW50ZXJmYWNlIGNvbnRyb2xsZXIgMS4gKi8NCi11aW50MzJfdCBnX0ZyZXF1ZW5jeUZJQzEgPSBNU1NfU1lTX0ZJQ18xX0NMS19GUkVROyAgICAgIC8qITwgQ2xvY2sgZnJlcXVlY255IG9mIEZQR0EgZmFicmljIGludGVmYWNlIGNvbnRyb2xsZXIgMi4gKi8NCi11aW50MzJfdCBnX0ZyZXF1ZW5jeUZJQzY0ID0gTVNTX1NZU19GSUM2NF9DTEtfRlJFUTsgICAgIC8qITwgQ2xvY2sgZnJlcXVlY255IG9mIDY0LWJpdCBGUEdBIGZhYnJpYyBpbnRlcmZhY2UgY29udHJvbGxlci4gKi8NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFN5c3RlbSBjb25maWd1cmF0aW9uIHRhYmxlcyBnZW5lcmF0ZWQgYnkgTGliZXJvLg0KLSAqLw0KLSNpZiBNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWA0KLWV4dGVybiBNRERSX1R5cGVEZWYgKiBjb25zdCBnX20yc19tZGRyX2FkZHI7DQotZXh0ZXJuIGNvbnN0IGRkcl9zdWJzeXNfY2ZnX3QgZ19tMnNfbWRkcl9zdWJzeXNfY29uZmlnOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWA0KLWV4dGVybiBGRERSX1R5cGVEZWYgKiBjb25zdCBnX20yc19mZGRyX2FkZHI7DQotZXh0ZXJuIGNvbnN0IGRkcl9zdWJzeXNfY2ZnX3QgZ19tMnNfZmRkcl9zdWJzeXNfY29uZmlnOw0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTVNTX1NZU19TRVJERVNfQ09ORklHX0JZX0NPUlRFWCAgICAgKE1TU19TWVNfU0VSREVTXzBfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX1NFUkRFU18xX0NPTkZJR19CWV9DT1JURVggfHwgTVNTX1NZU19TRVJERVNfMl9DT05GSUdfQllfQ09SVEVYIHx8IE1TU19TWVNfU0VSREVTXzNfQ09ORklHX0JZX0NPUlRFWCkNCi0NCi0jaWYgTVNTX1NZU19TRVJERVNfMF9DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIGNvbnN0IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdCBnX20yc19zZXJkZXNfMF9jb25maWdbU0VSREVTXzBfQ0ZHX05CX09GX1BBSVJTXTsNCi0jZW5kaWYNCi0NCi0jaWYgTVNTX1NZU19TRVJERVNfMV9DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIGNvbnN0IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdCBnX20yc19zZXJkZXNfMV9jb25maWdbU0VSREVTXzFfQ0ZHX05CX09GX1BBSVJTXTsNCi0jZW5kaWYNCi0NCi0jaWYgTVNTX1NZU19TRVJERVNfMl9DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIGNvbnN0IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdCBnX20yc19zZXJkZXNfMl9jb25maWdbU0VSREVTXzJfQ0ZHX05CX09GX1BBSVJTXTsNCi0jZW5kaWYNCi0NCi0jaWYgTVNTX1NZU19TRVJERVNfM19DT05GSUdfQllfQ09SVEVYDQotZXh0ZXJuIGNvbnN0IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdCBnX20yc19zZXJkZXNfM19jb25maWdbU0VSREVTXzNfQ0ZHX05CX09GX1BBSVJTXTsNCi0jZW5kaWYNCi0NCi0jZGVmaW5lIE1TU19TWVNfQ09SRVNGMlJFU0VUX1VTRUQgIChNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWCB8fCBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogTG9jYWwgZnVuY3Rpb25zOg0KLSAqLw0KLXN0YXRpYyB1aW50MzJfdCBnZXRfc2lsaWNvbl9yZXZpc2lvbih2b2lkKTsNCi1zdGF0aWMgdm9pZCBzaWxpY29uX3dvcmthcm91bmRzKHZvaWQpOw0KLXN0YXRpYyB2b2lkIG0yczA1MF9yZXZfYV93b3JrYXJvdW5kcyh2b2lkKTsNCi0NCi0jaWYgKE1TU19TWVNfRkFDQ19JTklUX0JZX0NPUlRFWCA9PSAxKQ0KLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2Nsb2NrX2NvbmZpZyh2b2lkKTsNCi0jZW5kaWYNCi0NCi0jaWYgTVNTX1NZU19TRVJERVNfQ09ORklHX0JZX0NPUlRFWA0KLXN0YXRpYyB2b2lkIGNvbmZpZ3VyZV9zZXJkZXNfaW50Zih2b2lkKTsNCi0jZW5kaWYNCi0NCi0jaWYgKE1TU19TWVNfTUREUl9DT05GSUdfQllfQ09SVEVYIHx8IE1TU19TWVNfRkREUl9DT05GSUdfQllfQ09SVEVYKQ0KLXN0YXRpYyB2b2lkIGNvbmZpZ19kZHJfc3Vic3lzDQotKA0KLSAgICBjb25zdCBkZHJfc3Vic3lzX2NmZ190ICogcF9kZHJfc3Vic3lzX2NmZywNCi0gICAgRERSQ29yZV9UeXBlRGVmICogcF9kZHJfc3Vic3lzX3JlZ3MNCi0pOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYDQotc3RhdGljIHZvaWQgY29uZmlnX2J5X2FkZHJfdmFsdWUNCi0oDQotICAgIGNvbnN0IGNmZ19hZGRyX3ZhbHVlX3BhaXJfdCAqIHBfYWRkcl92YWx1ZV9wYWlyLA0KLSAgICB1aW50MzJfdCBuYl9vZl9jZmdfcGFpcnMNCi0pOw0KLSNlbmRpZg0KLQ0KLXN0YXRpYyB1aW50MzJfdCBnZXRfcmNvc2NfMjVfNTBtaHpfZnJlcXVlbmN5KHZvaWQpOw0KLXN0YXRpYyB2b2lkIHNldF9jbG9ja19mcmVxdWVuY3lfZ2xvYmFscyh1aW50MzJfdCBmY2xrKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBzeXN0ZW1fbTJzeHh4LmggZm9yIGRldGFpbHMuDQotICovDQotdm9pZCBTeXN0ZW1Jbml0KHZvaWQpDQotew0KLSAgICAvKg0KLSAgICAgKiBEbyBub3QgbWFrZSB1c2Ugb2YgZ2xvYmFsIHZhcmlhYmxlcyBvciBtYWtlIGFueSBhc3VtcHRpb25zIHJlZ2FyZGluZw0KLSAgICAgKiBtZW1vcnkgY29udGVudCBpZiBtb2RpZnlpbmcgdGhpcyBmdW5jdGlvbi4gVGhlIG1lbW9yeSBjb250ZW50IGhhcyBub3QgYmVlbg0KLSAgICAgKiBpbml0aWFsaXNlZCBieSB0aGUgdGltZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgc3RhcnQtdXAgY29kZS4NCi0gICAgICovDQotI2lmIChNU1NfU1lTX0ZBQ0NfSU5JVF9CWV9DT1JURVggPT0gMSkNCi0gICAgY29tcGxldGVfY2xvY2tfY29uZmlnKCk7DQotI2VuZGlmDQotDQotICAgIHNpbGljb25fd29ya2Fyb3VuZHMoKTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogU2V0IFNUS0FMSUdOIHRvIGVuc3VyZSBleGNlcHRpb24gc3RhY2tpbmcgc3RhcnRzIG9uIDggYnl0ZXMgYWRkcmVzcw0KLSAgICAgKiBib3VuZGFyeS4gVGhpcyBlbnN1cmVzIGNvbXBsaWFuY2Ugd2l0aCB0aGUgIlByb2NlZHVyZSBDYWxsIFN0YW5kYXJkcyBmb3INCi0gICAgICogdGhlIEFSTSBBcmNoaXRlY3R1cmUiIChBQVBDUykuDQotICAgICAqLw0KLSAgICBTQ0ItPkNDUiB8PSBTQ0JfQ0NSX1NUS0FMSUdOX01zazsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogTUREUiBjb25maWd1cmF0aW9uDQotICAgICAqLw0KLSNpZiBNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWA0KLSAgICBjb25maWdfZGRyX3N1YnN5cygmZ19tMnNfbWRkcl9zdWJzeXNfY29uZmlnLCAmZ19tMnNfbWRkcl9hZGRyLT5jb3JlKTsNCi0jZW5kaWYNCi0NCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBNRERSIGNvbmZpZ3VyYXRpb24NCi0gICAgICovDQotI2lmIE1TU19TWVNfRkREUl9DT05GSUdfQllfQ09SVEVYDQotICAgIGNvbmZpZ19kZHJfc3Vic3lzKCZnX20yc19mZGRyX3N1YnN5c19jb25maWcsICZnX20yc19mZGRyX2FkZHItPmNvcmUpOw0KLSNlbmRpZg0KLQ0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIFNFUkRFUyBpbnRlcmZhY2VzIGNvbmZpZ3VyYXRpb24uDQotICAgICAqLw0KLSNpZiBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYDQotICAgIGNvbmZpZ3VyZV9zZXJkZXNfaW50ZigpOw0KLSNlbmRpZg0KLQ0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIENhbGwgdXNlciBkZWZpbmVkIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb24uDQotICAgICAqLw0KLSAgICBtc2NjX3Bvc3RfaHdfY2ZnX2luaXQoKTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogU3luY2hyb25pemUgd2l0aCBDb3JlU0YyUmVzZXQgY29udHJvbGxpbmcgcmVzZXRzIGZyb20gdGhlIGZhYnJpYy4NCi0gICAgICovDQotI2lmIE1TU19TWVNfQ09SRVNGMlJFU0VUX1VTRUQNCi0gICAgQ09SRV9TRjJfQ0ZHLT5DT05GSUdfRE9ORSA9IDF1OyAvKiBTaWduYWwgdG8gQ29yZVNGMlJlc2V0IHRoYXQgcGVyaXBoZXJhbCANCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBoYXZlIGJlZW4gd3JpdHRlbi4qLw0KLSAgICB3aGlsZSghQ09SRV9TRjJfQ0ZHLT5JTklUX0RPTkUpDQotICAgIHsNCi0gICAgICAgIDsgICAvKiBXYWl0IGZvciBJTklUX0RPTkUgZnJvbSBDb3JlU0YyUmVzZXQuICovDQotICAgIH0NCi0jZW5kaWYNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKQ0KLSAqLw0KLSNkZWZpbmUgUkNPU0NfMjVfNTBNSFpfQ0xLX1NSQyAgMHUNCi0jZGVmaW5lIENMS19YVEFMX0NMS19TUkMgICAgICAgIDF1DQotI2RlZmluZSBSQ09TQ18xX01IWl9DTEtfU1JDICAgICAydQ0KLSNkZWZpbmUgQ0NDMkFTQ0lfQ0xLX1NSQyAgICAgICAgM3UNCi0NCi0jZGVmaW5lIEZBQ0NfU1RBTkRCWV9TSElGVCAgICAgIDZ1DQotI2RlZmluZSBGQUNDX1NUQU5EQllfU0VMX01BU0sgICAweDAwMDAwMDA3dQ0KLQ0KLSNkZWZpbmUgRlJFUV8zMktIWiAgIDMyNzY4dQ0KLSNkZWZpbmUgRlJFUV8xTUhaICAgIDEwMDAwMDB1DQotI2RlZmluZSBGUkVRXzI1TUhaICAgMjUwMDAwMDB1DQotI2RlZmluZSBGUkVRXzUwTUhaICAgNTAwMDAwMDB1DQotDQotdm9pZCBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUodm9pZCkNCi17DQotI2lmIDENCi0gICAgdWludDMyX3QgY29udHJvbGxlcl9wbGxfaW5pdDsNCi0gICAgdWludDMyX3QgY2xrX3NyYzsNCi0NCi0gICAgY29udHJvbGxlcl9wbGxfaW5pdCA9IFNZU1JFRy0+TVNTRERSX0ZBQ0MxX0NSICYgQ09OVFJPTExFUl9QTExfSU5JVF9NQVNLOw0KLSAgICANCi0gICAgaWYoMHUgPT0gY29udHJvbGxlcl9wbGxfaW5pdCkNCi0gICAgew0KLSAgICAgICAgLyogTm9ybWFsIG9wZXJhdGlvbnMuICovDQotICAgICAgICB1aW50MzJfdCBnbG9iYWxfbXV4X3NlbDsNCi0gICAgICAgIA0KLSAgICAgICAgZ2xvYmFsX211eF9zZWwgPSBTWVNSRUctPk1TU0REUl9GQUNDMV9DUiAmIEZBQ0NfR0xNVVhfU0VMX01BU0s7DQotICAgICAgICBpZigwdSA9PSBnbG9iYWxfbXV4X3NlbCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBNU1MgY2xvY2tlZCBmcm9tIE1TUyBQTEwuIFVzZSBMaWJlcm8gZmxvdyBkZWZpbmVzLiAqLw0KLSAgICAgICAgICAgIFN5c3RlbUNvcmVDbG9jayA9IE1TU19TWVNfTTNfQ0xLX0ZSRVE7DQotICAgICAgICAgICAgZ19GcmVxdWVuY3lQQ0xLMCA9IE1TU19TWVNfQVBCXzBfQ0xLX0ZSRVE7DQotICAgICAgICAgICAgZ19GcmVxdWVuY3lQQ0xLMSA9IE1TU19TWVNfQVBCXzFfQ0xLX0ZSRVE7DQotICAgICAgICAgICAgZ19GcmVxdWVuY3lQQ0xLMiA9IE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVE7DQotICAgICAgICAgICAgZ19GcmVxdWVuY3lGSUMwID0gTVNTX1NZU19GSUNfMF9DTEtfRlJFUTsNCi0gICAgICAgICAgICBnX0ZyZXF1ZW5jeUZJQzEgPSBNU1NfU1lTX0ZJQ18xX0NMS19GUkVROw0KLSAgICAgICAgICAgIGdfRnJlcXVlbmN5RklDNjQgPSBNU1NfU1lTX0ZJQzY0X0NMS19GUkVROw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qIE1TUyBjbG9ja2VkIGZyb20gc3RhbmRieSBjbG9jay4gKi8NCi0gICAgICAgICAgICBjb25zdCB1aW50OF90IHN0YW5kYnlfY2xvY2tfbHV0WzhdID0geyBSQ09TQ18yNV81ME1IWl9DTEtfU1JDLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMS19YVEFMX0NMS19TUkMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNPU0NfMjVfNTBNSFpfQ0xLX1NSQywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTEtfWFRBTF9DTEtfU1JDLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJDT1NDXzFfTUhaX0NMS19TUkMsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkNPU0NfMV9NSFpfQ0xLX1NSQywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQ0MyQVNDSV9DTEtfU1JDLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENDQzJBU0NJX0NMS19TUkMgfTsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICB1aW50MzJfdCBzdGFuZGJ5X3NlbDsNCi0gICAgICAgICAgICB1aW50OF90IGNsb2NrX3NvdXJjZTsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBzdGFuZGJ5X3NlbCA9IChTWVNSRUctPk1TU0REUl9GQUNDMl9DUiA+PiBGQUNDX1NUQU5EQllfU0hJRlQpICYgRkFDQ19TVEFOREJZX1NFTF9NQVNLOw0KLSAgICAgICAgICAgIGNsb2NrX3NvdXJjZSA9IHN0YW5kYnlfY2xvY2tfbHV0W3N0YW5kYnlfc2VsXTsNCi0gICAgICAgICAgICBzd2l0Y2goY2xvY2tfc291cmNlKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgY2FzZSBSQ09TQ18yNV81ME1IWl9DTEtfU1JDOg0KLSAgICAgICAgICAgICAgICAgICAgY2xrX3NyYyA9IGdldF9yY29zY18yNV81MG1oel9mcmVxdWVuY3koKTsNCi0gICAgICAgICAgICAgICAgICAgIHNldF9jbG9ja19mcmVxdWVuY3lfZ2xvYmFscyhjbGtfc3JjKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBjYXNlIENMS19YVEFMX0NMS19TUkM6DQotICAgICAgICAgICAgICAgICAgICBzZXRfY2xvY2tfZnJlcXVlbmN5X2dsb2JhbHMoRlJFUV8zMktIWik7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgY2FzZSBSQ09TQ18xX01IWl9DTEtfU1JDOg0KLSAgICAgICAgICAgICAgICAgICAgc2V0X2Nsb2NrX2ZyZXF1ZW5jeV9nbG9iYWxzKEZSRVFfMU1IWik7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgICAgICANCi0gICAgICAgICAgICAgICAgY2FzZSBDQ0MyQVNDSV9DTEtfU1JDOg0KLSAgICAgICAgICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAqLw0KLSAgICAgICAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgICAgICAgICAgc2V0X2Nsb2NrX2ZyZXF1ZW5jeV9nbG9iYWxzKEZSRVFfMU1IWik7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIH0gICANCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIC8qIFBMTCBpbml0aWFsaXphdGlvbiBtb2RlLiBSdW5uaW5nIGZyb20gMjUvNTBNSFogUkMgb3NjaWxsYXRvci4gKi8NCi0gICAgICAgIGNsa19zcmMgPSBnZXRfcmNvc2NfMjVfNTBtaHpfZnJlcXVlbmN5KCk7DQotICAgICAgICBzZXRfY2xvY2tfZnJlcXVlbmN5X2dsb2JhbHMoY2xrX3NyYyk7DQotICAgIH0NCi0gICAgDQotI2Vsc2UNCi0gICAgLyoNCi0gICAgICogUmVzZXQgdGhlIGNsb2NrIGZyZXF1ZW5jeSBnbG9iYWwgdmFyaWFibGVzIHRvIHRoZSB2YWx1ZXMgZGVsZWN0ZWQgaW4gdGhlDQotICAgICAqIExpYmVybyBmbG93Lg0KLSAgICAgKi8NCi0gICAgU3lzdGVtQ29yZUNsb2NrID0gTVNTX1NZU19NM19DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lQQ0xLMCA9IE1TU19TWVNfQVBCXzBfQ0xLX0ZSRVE7DQotICAgIGdfRnJlcXVlbmN5UENMSzEgPSBNU1NfU1lTX0FQQl8xX0NMS19GUkVROw0KLSAgICBnX0ZyZXF1ZW5jeVBDTEsyID0gTVNTX1NZU19BUEJfMl9DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lGSUMwID0gTVNTX1NZU19GSUNfMF9DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lGSUMxID0gTVNTX1NZU19GSUNfMV9DTEtfRlJFUTsNCi0gICAgZ19GcmVxdWVuY3lGSUM2NCA9IE1TU19TWVNfRklDNjRfQ0xLX0ZSRVE7DQotI2VuZGlmDQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogRmluZCBvdXQgZnJlcXVlbmN5IGdlbmVyYXRlZCBieSB0aGUgMjVfNTBtaHogUkMgb3NjaWFsbGF0b3IuDQotICovDQotc3RhdGljIHVpbnQzMl90IGdldF9yY29zY18yNV81MG1oel9mcmVxdWVuY3kodm9pZCkNCi17DQotICAgIHVpbnQzMl90IHJjb3NjX2RpdjI7DQotICAgIHVpbnQzMl90IHJjb3NjX2ZyZXF1ZW5jeTsNCi0gICAgDQotICAgIHJjb3NjX2RpdjIgPSBTWVNSRUctPk1TU0REUl9QTExfU1RBVFVTICYgUkNPU0NfRElWMl9NQVNLOw0KLSAgICBpZigwdSA9PSByY29zY19kaXYyKQ0KLSAgICB7DQotICAgICAgICAvKiAyNV81MG1oeiBvc2NpbGxhdG9yIGlzIGNvbmZpZ3VyZWQgZm9yIDI1IE1IeiBvcGVyYXRpb25zLiAqLw0KLSAgICAgICAgcmNvc2NfZnJlcXVlbmN5ID0gRlJFUV8yNU1IWjsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIC8qIDI1XzUwbWh6IG9zY2lsbGF0b3IgaXMgY29uZmlndXJlZCBmb3IgNTAgTUh6IG9wZXJhdGlvbnMuICovDQotICAgICAgICByY29zY19mcmVxdWVuY3kgPSBGUkVRXzUwTUhaOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gcmNvc2NfZnJlcXVlbmN5Ow0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGNsb2NrIGZyZXF1ZW5jeSBnbG9iYWwgdmFyaWFibGVzIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZg0KLSAgIHN0YW5kYnlfY2xrIHBhc3NlZCBhcyBwYXJhbWV0ZXIuDQotICAgVGhlIGZvbGxvd2luZyBnbG9iYWwgdmFyaWFibGVzIGFyZSBzZXQgYnkgdGhpcyBmdW5jdGlvbjoNCi0gICAgICAgIC0gU3lzdGVtQ29yZUNsb2NrDQotICAgICAgICAtIGdfRnJlcXVlbmN5UENMSzANCi0gICAgICAgIC0gZ19GcmVxdWVuY3lQQ0xLMQ0KLSAgICAgICAgLSBnX0ZyZXF1ZW5jeVBDTEsyDQotICAgICAgICAtIGdfRnJlcXVlbmN5RklDMA0KLSAgICAgICAgLSBnX0ZyZXF1ZW5jeUZJQzENCi0gICAgICAgIC0gZ19GcmVxdWVuY3lGSUM2NA0KLSAqLw0KLXN0YXRpYyB2b2lkIHNldF9jbG9ja19mcmVxdWVuY3lfZ2xvYmFscyh1aW50MzJfdCBzdGFuZGJ5X2NsaykNCi17DQotICAgIFN5c3RlbUNvcmVDbG9jayA9IHN0YW5kYnlfY2xrOw0KLSAgICBnX0ZyZXF1ZW5jeVBDTEswID0gc3RhbmRieV9jbGs7DQotICAgIGdfRnJlcXVlbmN5UENMSzEgPSBzdGFuZGJ5X2NsazsNCi0gICAgZ19GcmVxdWVuY3lQQ0xLMiA9IE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVE7DQotICAgIGdfRnJlcXVlbmN5RklDMCA9IHN0YW5kYnlfY2xrOw0KLSAgICBnX0ZyZXF1ZW5jeUZJQzEgPSBzdGFuZGJ5X2NsazsNCi0gICAgZ19GcmVxdWVuY3lGSUM2NCA9IHN0YW5kYnlfY2xrOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFdyaXRlIDE2LWJpdCBjb25maWd1cmF0aW9uIHZhbHVlcyBpbnRvIDMyLWJpdCB3b3JkIGFsaWduZWQgcmVnaXN0ZXJzLg0KLSAqLw0KLSNpZiAoTVNTX1NZU19NRERSX0NPTkZJR19CWV9DT1JURVggfHwgTVNTX1NZU19GRERSX0NPTkZJR19CWV9DT1JURVgpDQotc3RhdGljIHZvaWQgY29weV9jZmcxNl90b19yZWdzDQotKA0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCAqIHBfcmVncywNCi0gICAgY29uc3QgdWludDE2X3QgKiBwX2NmZywNCi0gICAgdWludDMyX3QgbmJfMTZiaXRfd29yZHMNCi0pDQotew0KLSAgICB1aW50MzJfdCBpbmM7DQotICAgIA0KLSAgICBmb3IoaW5jID0gMHU7IGluYyA8IG5iXzE2Yml0X3dvcmRzOyArK2luYykNCi0gICAgew0KLSAgICAgICAgcF9yZWdzW2luY10gPSBwX2NmZ1tpbmNdOw0KLSAgICB9DQotfQ0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogQ29uZmlndXJlIHBlcmlwaGVyYWwgdXNpbmcgcmVnaXN0ZXIgYWRkcmVzcyBhbmQgcmVnaXN0ZXIgdmFsdWUgcGFpcnMuDQotICovDQotI2lmIE1TU19TWVNfU0VSREVTX0NPTkZJR19CWV9DT1JURVgNCi1zdGF0aWMgdm9pZCBjb25maWdfYnlfYWRkcl92YWx1ZQ0KLSgNCi0gICAgY29uc3QgY2ZnX2FkZHJfdmFsdWVfcGFpcl90ICogcF9hZGRyX3ZhbHVlX3BhaXIsDQotICAgIHVpbnQzMl90IG5iX29mX2NmZ19wYWlycw0KLSkNCi17DQotICAgIHVpbnQzMl90IGluYzsNCi0gICAgDQotICAgIGZvcihpbmMgPSAwdTsgaW5jIDwgbmJfb2ZfY2ZnX3BhaXJzOyArK2luYykNCi0gICAgew0KLSAgICAgICAgKnBfYWRkcl92YWx1ZV9wYWlyW2luY10ucF9yZWcgPSBwX2FkZHJfdmFsdWVfcGFpcltpbmNdLnZhbHVlOw0KLSAgICB9DQotfQ0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogRERSIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLg0KLSAqLw0KLSNpZiAoTVNTX1NZU19NRERSX0NPTkZJR19CWV9DT1JURVggfHwgTVNTX1NZU19GRERSX0NPTkZJR19CWV9DT1JURVgpDQotDQotI2RlZmluZSBOQl9PRl9ERFJDX1JFR1NfVE9fQ09ORklHICAgICAgIDU3dQ0KLSNkZWZpbmUgTkJfT0ZfRERSX1BIWV9SRUdTX1RPX0NPTkZJRyAgICA2NXUNCi0NCi1zdGF0aWMgdm9pZCBjb25maWdfZGRyX3N1YnN5cw0KLSgNCi0gICAgY29uc3QgZGRyX3N1YnN5c19jZmdfdCAqIHBfZGRyX3N1YnN5c19jZmcsDQotICAgIEREUkNvcmVfVHlwZURlZiAqIHBfZGRyX3N1YnN5c19yZWdzDQotKQ0KLXsNCi0gICAgdm9sYXRpbGUgdWludDMyX3QgKiBwX3JlZ3M7DQotICAgIGNvbnN0IHVpbnQxNl90ICogcF9jZmc7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIENvbmZpZ3VyZSBERFIgY29udHJvbGxlciBwYXJ0IG9mIHRoZSBNRERSIHN1YnN5c3RlbS4NCi0gICAgICovDQotICAgIHBfY2ZnID0gJnBfZGRyX3N1YnN5c19jZmctPmRkcmMuRFlOX1NPRlRfUkVTRVRfQ1I7DQotICAgIHBfcmVncyA9ICZwX2Rkcl9zdWJzeXNfcmVncy0+ZGRyYy5EWU5fU09GVF9SRVNFVF9DUjsNCi0NCi0gICAgY29weV9jZmcxNl90b19yZWdzKHBfcmVncywgcF9jZmcsIE5CX09GX0REUkNfUkVHU19UT19DT05GSUcpOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBDb25maWd1cmUgRERSIFBIWS4NCi0gICAgICovDQotICAgIHBfY2ZnID0gJnBfZGRyX3N1YnN5c19jZmctPnBoeS5MT09QQkFDS19URVNUX0NSOw0KLSAgICBwX3JlZ3MgPSAmcF9kZHJfc3Vic3lzX3JlZ3MtPnBoeS5MT09QQkFDS19URVNUX0NSOw0KLQ0KLSAgICBjb3B5X2NmZzE2X3RvX3JlZ3MocF9yZWdzLCBwX2NmZywgTkJfT0ZfRERSX1BIWV9SRUdTX1RPX0NPTkZJRyk7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIENvbmZpZ3VyZSBERFIgRklDLg0KLSAgICAgKi8NCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5OQl9BRERSX0NSID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLk5CX0FERFJfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuTkJSV0JfU0laRV9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5OQlJXQl9TSVpFX0NSOw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLldCX1RJTUVPVVRfQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuV0JfVElNRU9VVF9DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5IUERfU1dfUldfRU5fQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuSFBEX1NXX1JXX0VOX0NSOw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLkhQRF9TV19SV19JTlZBTF9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5IUERfU1dfUldfSU5WQUxfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuU1dfV1JfRVJDTFJfQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuU1dfV1JfRVJDTFJfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuRVJSX0lOVF9FTkFCTEVfQ1IgPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuRVJSX0lOVF9FTkFCTEVfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuTlVNX0FIQl9NQVNURVJTX0NSID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLk5VTV9BSEJfTUFTVEVSU19DUjsNCi0gICAgcF9kZHJfc3Vic3lzX3JlZ3MtPmZpYy5MT0NLX1RJTUVPVVRWQUxfQ1JbMF0gPSBwX2Rkcl9zdWJzeXNfY2ZnLT5maWMuTE9DS19USU1FT1VUVkFMXzFfQ1I7DQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5maWMuTE9DS19USU1FT1VUVkFMX0NSWzFdID0gcF9kZHJfc3Vic3lzX2NmZy0+ZmljLkxPQ0tfVElNRU9VVFZBTF8yX0NSOw0KLSAgICBwX2Rkcl9zdWJzeXNfcmVncy0+ZmljLkxPQ0tfVElNRU9VVF9FTl9DUiA9IHBfZGRyX3N1YnN5c19jZmctPmZpYy5MT0NLX1RJTUVPVVRfRU5fQ1I7DQotDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRW5hYmxlIEREUi4NCi0gICAgICovDQotICAgIHBfZGRyX3N1YnN5c19yZWdzLT5kZHJjLkRZTl9TT0ZUX1JFU0VUX0NSID0gMHgwMXU7DQotICAgIA0KLSAgICB3aGlsZSgweDAwMDB1ID09IHBfZGRyX3N1YnN5c19yZWdzLT5kZHJjLkREUkNfU1IpDQotICAgIHsNCi0gICAgICAgIDsNCi0gICAgfSAgICAgICAgDQotfQ0KLQ0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogQ29uZmlndXJlIFNFUkRFUyBpbnRlcmZhY2VzLg0KLSAqLw0KLSNpZiBNU1NfU1lTX1NFUkRFU19DT05GSUdfQllfQ09SVEVYDQotDQotc3RhdGljIHZvaWQgY29uZmlndXJlX3NlcmRlc19pbnRmKHZvaWQpDQotew0KLSNpZiBNU1NfU1lTX1NFUkRFU18wX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlnX2J5X2FkZHJfdmFsdWUoZ19tMnNfc2VyZGVzXzBfY29uZmlnLCBTRVJERVNfMF9DRkdfTkJfT0ZfUEFJUlMpOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18xX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlnX2J5X2FkZHJfdmFsdWUoZ19tMnNfc2VyZGVzXzFfY29uZmlnLCBTRVJERVNfMV9DRkdfTkJfT0ZfUEFJUlMpOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18yX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlnX2J5X2FkZHJfdmFsdWUoZ19tMnNfc2VyZGVzXzJfY29uZmlnLCBTRVJERVNfMl9DRkdfTkJfT0ZfUEFJUlMpOw0KLSNlbmRpZg0KLQ0KLSNpZiBNU1NfU1lTX1NFUkRFU18zX0NPTkZJR19CWV9DT1JURVgNCi0gICAgY29uZmlnX2J5X2FkZHJfdmFsdWUoZ19tMnNfc2VyZGVzXzNfY29uZmlnLCBTRVJERVNfM19DRkdfTkJfT0ZfUEFJUlMpOw0KLSNlbmRpZg0KLX0NCi0NCi0jZW5kaWYNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgUmV0cmlldmUgc2lsaWNvbiByZXZpc2lvbiBmcm9tIHN5c3RlbSByZWdpc3RlcnMuDQotICovDQotc3RhdGljIHVpbnQzMl90IGdldF9zaWxpY29uX3JldmlzaW9uKHZvaWQpDQotew0KLSAgICB1aW50MzJfdCBzaWxpY29uX3JldmlzaW9uOw0KLSAgICB1aW50MzJfdCBkZXZpY2VfdmVyc2lvbjsNCi0gICAgDQotICAgIGRldmljZV92ZXJzaW9uID0gU1lTUkVHLT5ERVZJQ0VfVkVSU0lPTjsNCi0gICAgc3dpdGNoKGRldmljZV92ZXJzaW9uKQ0KLSAgICB7DQotICAgICAgICBjYXNlIDB4MDAwMEY4MDI6DQotICAgICAgICAgICAgc2lsaWNvbl9yZXZpc2lvbiA9IE0yUzA1MF9SRVZfQV9TSUxJQ09OOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgY2FzZSAweDAwMDFGODAyOg0KLSAgICAgICAgICAgIHNpbGljb25fcmV2aXNpb24gPSBNMlMwNTBfUkVWX0JfU0lMSUNPTjsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgc2lsaWNvbl9yZXZpc2lvbiA9IFVOS05PV05fU0lMSUNPTl9SRVY7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzaWxpY29uX3JldmlzaW9uOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgV29ya2Fyb3VuZHMgZm9yIHZhcmlvdXMgc2lsaWNvbiB2ZXJzaW9ucy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBzaWxpY29uX3dvcmthcm91bmRzKHZvaWQpDQotew0KLSAgICB1aW50MzJfdCBzaWxpY29uX3JldmlzaW9uOw0KLSAgICANCi0gICAgc2lsaWNvbl9yZXZpc2lvbiA9IGdldF9zaWxpY29uX3JldmlzaW9uKCk7DQotICAgIA0KLSAgICBzd2l0Y2goc2lsaWNvbl9yZXZpc2lvbikNCi0gICAgew0KLSAgICAgICAgY2FzZSBNMlMwNTBfUkVWX0FfU0lMSUNPTjoNCi0gICAgICAgICAgICBtMnMwNTBfcmV2X2Ffd29ya2Fyb3VuZHMoKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgIGNhc2UgTTJTMDUwX1JFVl9CX1NJTElDT046DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoLiAqLw0KLSAgICAgICAgY2FzZSBVTktOT1dOX1NJTElDT05fUkVWOg0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaC4gKi8NCi0gICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgYnJlYWs7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFNpbGljb24gd29ya2Fyb3VuZHMgZm9yIE0yUzA1MCByZXYgQS4NCi0gKi8NCi1zdGF0aWMgdm9pZCBtMnMwNTBfcmV2X2Ffd29ya2Fyb3VuZHModm9pZCkNCi17DQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogV29yayBhcm91bmQgYSBjb3VwbGUgb2Ygc2lsaWNvbiBpc3N1ZXM6DQotICAgICAqLw0KLSAgICAvKiBERFJfQ0xLX0VOIDwtIDEgKi8NCi0gICAgU1lTUkVHLT5NU1NERFJfRkFDQzFfQ1IgfD0gKHVpbnQzMl90KTEgPDwgRERSX0NMS19FTl9TSElGVDsNCi0gICAgDQotICAgIC8qIENPTlRST0xMRVJfUExMX0lOSVQgPC0gMCAqLw0KLSAgICBTWVNSRUctPk1TU0REUl9GQUNDMV9DUiA9IFNZU1JFRy0+TVNTRERSX0ZBQ0MxX0NSICYgfkNPTlRST0xMRVJfUExMX0lOSVRfTUFTSzsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIENvbXBsZXRlIGNsb2NrIGNvbmZpZ3VyYXRpb24gaWYgcmVxdWVzdGVkIGJ5IExpYmVyby4NCi0gKi8NCi0jaWYgKE1TU19TWVNfRkFDQ19JTklUX0JZX0NPUlRFWCA9PSAxKQ0KLXN0YXRpYyB2b2lkIGNvbXBsZXRlX2Nsb2NrX2NvbmZpZyh2b2lkKQ0KLXsNCi0gICAgdWludDMyX3QgcGxsX2xvY2tlZDsNCi0gICAgDQotICAgIC8qIFdhaXQgZm9yIGZhYnJpYyBQTEwgdG8gbG9jay4gKi8NCi0gICAgZG8gew0KLSAgICAgICAgcGxsX2xvY2tlZCA9IFNZU1JFRy0+TVNTRERSX1BMTF9TVEFUVVMgJiBGQUJfUExMX0xPQ0tfTUFTSzsNCi0gICAgfSB3aGlsZSghcGxsX2xvY2tlZCk7DQotICAgIA0KLSAgICAvKiBOZWdhdGUgTVBMTCBieXBhc3MuICovDQotICAgIFNZU1JFRy0+TVNTRERSX1BMTF9TVEFUVVNfSElHSF9DUiAmPSB+RkFDQ19QTExfQllQQVNTX01BU0s7DQotICAgIA0KLSAgICAvKiBXYWl0IGZvciBNUExMIHRvIGxvY2suICovDQotICAgIGRvIHsNCi0gICAgICAgIHBsbF9sb2NrZWQgPSBTWVNSRUctPk1TU0REUl9QTExfU1RBVFVTICYgTVBMTF9MT0NLX01BU0s7DQotICAgIH0gd2hpbGUoIXBsbF9sb2NrZWQpOw0KLSAgICANCi0gICAgLyogU3dpdGNoIEZBQ0MgZnJvbSBzdGFuZGJ5IHRvIHJ1biBtb2RlLiAqLw0KLSAgICBTWVNSRUctPk1TU0REUl9GQUNDMV9DUiAmPSB+RkFDQ19HTE1VWF9TRUxfTUFTSzsNCi0NCi0gICAgLyogTmVnYXRlIEZQR0FfU09GVFJFU0VUIHRvIGRlLWFzc2VydCBNU1NfUkVTRVRfTl9NMkYgaW4gdGhlIGZhYnJpYyAqLw0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5TWVNSRUdfRlBHQV9TT0ZUUkVTRVRfTUFTSzsNCi19DQotI2VuZGlmDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9DTVNJUy9zeXN0ZW1fbTJzeHh4LmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N5c3RlbV9tMnN4eHguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3NTM3Ni4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL0NNU0lTL3N5c3RlbV9tMnN4eHguaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiAgU21hcnRGdXNpb24yIENNU0lTIHN5c3RlbSBpbml0aWFsaXphdGlvbi4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyODAgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMiAyMDo1MTo1MCArMDAwMCAoRnJpLCAyMiBNYXIgMjAxMykgJA0KLSAqLw0KLQ0KLSNpZm5kZWYgU1lTVEVNX00yU1hYWF9IDQotI2RlZmluZSBTWVNURU1fTTJTWFhYX0gNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotLyogU3RhbmRhcmQgQ01TSVMgZ2xvYmFsIHZhcmlhYmxlcy4gKi8NCi1leHRlcm4gdWludDMyX3QgU3lzdGVtQ29yZUNsb2NrOyAgICAvKiE8IFN5c3RlbSBDbG9jayBGcmVxdWVuY3kgKENvcmUgQ2xvY2spICovDQotDQotLyogU21hcnRGdXNpb24yIHNwZWNpZmljIGNsb2Nrcy4gKi8NCi1leHRlcm4gdWludDMyX3QgZ19GcmVxdWVuY3lQQ0xLMDsgICAvKiE8IENsb2NrIGZyZXF1ZW5jeSBvZiBBUEIgYnVzIDAuICovICANCi1leHRlcm4gdWludDMyX3QgZ19GcmVxdWVuY3lQQ0xLMTsgICAvKiE8IENsb2NrIGZyZXF1ZW5jeSBvZiBBUEIgYnVzIDEuICovDQotZXh0ZXJuIHVpbnQzMl90IGdfRnJlcXVlbmN5UENMSzI7ICAgLyohPCBDbG9jayBmcmVxdWVuY3kgb2YgQVBCIGJ1cyAyLiAqLw0KLWV4dGVybiB1aW50MzJfdCBnX0ZyZXF1ZW5jeUZJQzA7ICAgIC8qITwgQ2xvY2sgZnJlcXVlY255IG9mIEZQR0EgZmFicmljIGludGVyZmFjZSBjb250cm9sbGVyIDEuICovDQotZXh0ZXJuIHVpbnQzMl90IGdfRnJlcXVlbmN5RklDMTsgICAgLyohPCBDbG9jayBmcmVxdWVjbnkgb2YgRlBHQSBmYWJyaWMgaW50ZWZhY2UgY29udHJvbGxlciAyLiAqLw0KLWV4dGVybiB1aW50MzJfdCBnX0ZyZXF1ZW5jeUZJQzY0OyAgIC8qITwgQ2xvY2sgZnJlcXVlY255IG9mIDY0LWJpdCBGUEdBIGZhYnJpYyBpbnRlcmZhY2UgY29udHJvbGxlci4gKi8NCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBTeXN0ZW1Jbml0KCkgaXMgYSBzdGFuZGFyZCBDTVNJUyBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHN5c3RlbSBzdGFydHVwLg0KLSAqIEl0IGlzIG1lYW50IHRvIHBlcmZvcm0gbG93IGxldmVsIGhhcmR3YXJlIHNldHVwIHN1Y2ggYXMgY29uZmlndXJpbmcgRERSIGFuZA0KLSAqIFNFUkRFUyBjb250cm9sbGVycy4NCi0gKi8NCi12b2lkIFN5c3RlbUluaXQodm9pZCk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgU3lzdGVtQ29yZUNsb2NrVXBkYXRlKCkgaXMgYSBzdGFuZGFyZCBDTVNJUyBmdW5jdGlvbiB3aGljaCBjYW4gYmUgY2FsbGVkDQotICogYnkgdGhlIGFwcGxpY2F0aW9uIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHRoZSBTeXN0ZW1Db3JlQ2xvY2sgZ2xvYmFsDQotICogdmFyaWFibGUgY29udGFpbnMgdGhlIHVwIHRvIGRhdGUgQ29ydGV4LU0zIGNvcmUgZnJlcXVlbmN5LiBDYWxsaW5nIHRoaXMNCi0gKiBmdW5jdGlvbiBhbHNvIHVwZGF0ZXMgdGhlIGdsb2JhbCB2YXJpYWJsZXMgY29udGFpbmluZyB0aGUgZnJlcXVlbmNpZXMgb2YgdGhlDQotICogQVBCIGJ1c3NlcyBjb25uZWN0aW5nIHRoZSBwZXJpcGhlcmFscy4NCi0gKi8NCi12b2lkIFN5c3RlbUNvcmVDbG9ja1VwZGF0ZSh2b2lkKTsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9SVE9TRGVtb19od19wbGF0Zm9ybS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9SVE9TRGVtb19od19wbGF0Zm9ybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmZmYTcxLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vUlRPU0RlbW9faHdfcGxhdGZvcm0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLSNpZm5kZWYgUlRPU0RlbW9fSFdfUExBVEZPUk1fSF8NCi0jZGVmaW5lIFJUT1NEZW1vX0hXX1BMQVRGT1JNX0hfDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotKg0KLSpDcmVhdGVkIGJ5IEFjdGVsIFNtYXJ0RGVzaWduICBTdW4gTWF5IDA1IDEzOjIzOjIyIDIwMTMNCi0qDQotKk1lbW9yeSBtYXAgc3BlY2lmaWNhdGlvbiBmb3IgcGVyaXBoZXJhbHMgaW4gUlRPU0RlbW8NCi0qLw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0qIENNMyBzdWJzeXN0ZW0gbWVtb3J5IG1hcA0KLSogTWFzdGVyKHMpIGZvciB0aGlzIHN1YnN5c3RlbTogQ00zIA0KLSotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KLQ0KLQ0KLSNlbmRpZiAvKiBSVE9TRGVtb19IV19QTEFURk9STV9IXyovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ncGlvL21zc19ncGlvLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk2YTgyNy4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uYworKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIEdQSU8gYmFyZSBtZXRhbCBkcml2ZXIgaW1wbGVtZW50YXRpb24uDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1Mzk0ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjcgMjA6NTY6MzYgKzAwMDAgKFdlZCwgMjcgTWFyIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSAibXNzX2dwaW8uaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIERlZmluZXMuDQotICovDQotI2RlZmluZSBHUElPX0lOVF9FTkFCTEVfTUFTSyAgICAgICAgKCh1aW50MzJfdCkweDAwMDAwMDA4dUwpDQotI2RlZmluZSBPVVRQVVRfQlVGRkVSX0VOQUJMRV9NQVNLICAgMHgwMDAwMDAwNHUNCi0NCi0jZGVmaW5lIE5CX09GX0dQSU8gICgodWludDMyX3QpMzIpDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBMb29rdXAgdGFibGUgb2YgR1BJTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhZGRyZXNzIGluZGV4ZWQgb24gR1BJTyBJRC4NCi0gKi8NCi1zdGF0aWMgdWludDMyX3Qgdm9sYXRpbGUgKiBjb25zdCBnX2NvbmZpZ19yZWdfbHV0W05CX09GX0dQSU9dID0NCi17DQotICAgICYoR1BJTy0+R1BJT18wX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18zX0NGRyksDQotICAgICYoR1BJTy0+R1BJT180X0NGRyksDQotICAgICYoR1BJTy0+R1BJT181X0NGRyksDQotICAgICYoR1BJTy0+R1BJT182X0NGRyksDQotICAgICYoR1BJTy0+R1BJT183X0NGRyksDQotICAgICYoR1BJTy0+R1BJT184X0NGRyksDQotICAgICYoR1BJTy0+R1BJT185X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xMF9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMTFfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzEyX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xM19DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMTRfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzE1X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xNl9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMTdfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzE4X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18xOV9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjBfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzIxX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yMl9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjNfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzI0X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yNV9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjZfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzI3X0NGRyksDQotICAgICYoR1BJTy0+R1BJT18yOF9DRkcpLA0KLSAgICAmKEdQSU8tPkdQSU9fMjlfQ0ZHKSwNCi0gICAgJihHUElPLT5HUElPXzMwX0NGRyksDQotICAgICYoR1BJTy0+R1BJT18zMV9DRkcpDQotfTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIExvb2t1cCB0YWJsZSBvZiBDb3J0ZXgtTTMgR1BJTyBpbnRlcnJ1cHQgbnVtYmVyIGluZGV4ZWQgb24gR1BJTyBJRC4NCi0gKi8NCi1zdGF0aWMgY29uc3QgSVJRbl9UeXBlIGdfZ3Bpb19pcnFuX2x1dFtOQl9PRl9HUElPXSA9DQotew0KLSAgICBHUElPMF9JUlFuLA0KLSAgICBHUElPMV9JUlFuLA0KLSAgICBHUElPMl9JUlFuLA0KLSAgICBHUElPM19JUlFuLA0KLSAgICBHUElPNF9JUlFuLA0KLSAgICBHUElPNV9JUlFuLA0KLSAgICBHUElPNl9JUlFuLA0KLSAgICBHUElPN19JUlFuLA0KLSAgICBHUElPOF9JUlFuLA0KLSAgICBHUElPOV9JUlFuLA0KLSAgICBHUElPMTBfSVJRbiwNCi0gICAgR1BJTzExX0lSUW4sDQotICAgIEdQSU8xMl9JUlFuLA0KLSAgICBHUElPMTNfSVJRbiwNCi0gICAgR1BJTzE0X0lSUW4sDQotICAgIEdQSU8xNV9JUlFuLA0KLSAgICBHUElPMTZfSVJRbiwNCi0gICAgR1BJTzE3X0lSUW4sDQotICAgIEdQSU8xOF9JUlFuLA0KLSAgICBHUElPMTlfSVJRbiwNCi0gICAgR1BJTzIwX0lSUW4sDQotICAgIEdQSU8yMV9JUlFuLA0KLSAgICBHUElPMjJfSVJRbiwNCi0gICAgR1BJTzIzX0lSUW4sDQotICAgIEdQSU8yNF9JUlFuLA0KLSAgICBHUElPMjVfSVJRbiwNCi0gICAgR1BJTzI2X0lSUW4sDQotICAgIEdQSU8yN19JUlFuLA0KLSAgICBHUElPMjhfSVJRbiwNCi0gICAgR1BJTzI5X0lSUW4sDQotICAgIEdQSU8zMF9JUlFuLA0KLSAgICBHUElPMzFfSVJRbg0KLX07DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19pbml0DQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19pbml0KCB2b2lkICkNCi17DQotICAgIHVpbnQzMl90IGluYzsNCi0gICAgDQotICAgIC8qIHJlc2V0IE1TUyBHUElPIGhhcmR3YXJlICovDQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgfD0gU1lTUkVHX0dQSU9fU09GVFJFU0VUX01BU0s7DQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgfD0gKFNZU1JFR19HUElPXzdfMF9TT0ZUUkVTRVRfTUFTSyB8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzE1XzhfU09GVFJFU0VUX01BU0sgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWVNSRUdfR1BJT18yM18xNl9TT0ZUUkVTRVRfTUFTSyB8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzMxXzI0X1NPRlRSRVNFVF9NQVNLKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBNU1MgR1BJTyBpbnRlcnJ1cHQgKi8NCi0gICAgZm9yKGluYyA9IDBVOyBpbmMgPCBOQl9PRl9HUElPOyArK2luYykNCi0gICAgew0KLSAgICAgICAgTlZJQ19EaXNhYmxlSVJRKGdfZ3Bpb19pcnFuX2x1dFtpbmNdKTsNCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKGdfZ3Bpb19pcnFuX2x1dFtpbmNdKTsNCi0gICAgfQ0KLSAgICAvKiBUYWtlIE1TUyBHUElPIGhhcmR3YXJlIG91dCBvZiByZXNldC4gKi8NCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+KFNZU1JFR19HUElPXzdfMF9TT0ZUUkVTRVRfTUFTSyB8DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTWVNSRUdfR1BJT18xNV84X1NPRlRSRVNFVF9NQVNLIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzIzXzE2X1NPRlRSRVNFVF9NQVNLIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZU1JFR19HUElPXzMxXzI0X1NPRlRSRVNFVF9NQVNLKTsNCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+U1lTUkVHX0dQSU9fU09GVFJFU0VUX01BU0s7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTVNTX0dQSU9fY29uZmlnDQotICogU2VlICJtc3NfZ3Bpby5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfR1BJT19jb25maWcNCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZCwNCi0gICAgdWludDMyX3QgY29uZmlnDQotKQ0KLXsNCi0gICAgdWludDMyX3QgZ3Bpb19pZHggPSAodWludDMyX3QpcG9ydF9pZDsNCi0gICAgDQotICAgIEFTU0VSVChncGlvX2lkeCA8IE5CX09GX0dQSU8pOw0KLQ0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pID0gY29uZmlnOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTVNTX0dQSU9fc2V0X291dHB1dA0KLSAqIFNlZSAibXNzX2dwaW8uaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fc2V0X291dHB1dA0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkLA0KLSAgICB1aW50OF90IHZhbHVlDQotKQ0KLXsNCi0gICAgdWludDMyX3QgZ3Bpb19zZXR0aW5nOw0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotICAgIA0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgIGdwaW9fc2V0dGluZyA9IEdQSU8tPkdQSU9fT1VUOw0KLSAgICAgICAgZ3Bpb19zZXR0aW5nICY9IH4oKHVpbnQzMl90KTB4MDF1IDw8IGdwaW9faWR4KTsNCi0gICAgICAgIGdwaW9fc2V0dGluZyB8PSAoKHVpbnQzMl90KXZhbHVlICYgMHgwMXUpIDw8IGdwaW9faWR4Ow0KLSAgICAgICAgR1BJTy0+R1BJT19PVVQgPSBncGlvX3NldHRpbmc7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19kcml2ZV9pbm91dA0KLSAqIFNlZSAibXNzX2dwaW8uaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZHJpdmVfaW5vdXQNCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZCwNCi0gICAgbXNzX2dwaW9faW5vdXRfc3RhdGVfdCBpbm91dF9zdGF0ZQ0KLSkNCi17DQotICAgIHVpbnQzMl90IG91dHB1dHNfc3RhdGU7DQotICAgIHVpbnQzMl90IGNvbmZpZzsNCi0gICAgdWludDMyX3QgZ3Bpb19pZHggPSAodWludDMyX3QpcG9ydF9pZDsNCi0gICAgDQotICAgIEFTU0VSVChncGlvX2lkeCA8IE5CX09GX0dQSU8pOw0KLSAgICANCi0gICAgaWYoZ3Bpb19pZHggPCBOQl9PRl9HUElPKQ0KLSAgICB7DQotICAgICAgICBzd2l0Y2goaW5vdXRfc3RhdGUpDQotICAgICAgICB7DQotICAgICAgICAgICAgY2FzZSBNU1NfR1BJT19EUklWRV9ISUdIOg0KLSAgICAgICAgICAgICAgICAvKiBTZXQgb3V0cHV0IGhpZ2ggKi8NCi0gICAgICAgICAgICAgICAgb3V0cHV0c19zdGF0ZSA9IEdQSU8tPkdQSU9fT1VUOw0KLSAgICAgICAgICAgICAgICBvdXRwdXRzX3N0YXRlIHw9ICh1aW50MzJfdCkxIDw8IGdwaW9faWR4Ow0KLSAgICAgICAgICAgICAgICBHUElPLT5HUElPX09VVCA9IG91dHB1dHNfc3RhdGU7DQotICAgICAgICAgICAgICAgIC8qIEVuYWJsZSBvdXRwdXQgYnVmZmVyICovDQotICAgICAgICAgICAgICAgIGNvbmZpZyA9ICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pOw0KLSAgICAgICAgICAgICAgICBjb25maWcgfD0gT1VUUFVUX0JVRkZFUl9FTkFCTEVfTUFTSzsNCi0gICAgICAgICAgICAgICAgKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSkgPSBjb25maWc7DQotICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGNhc2UgTVNTX0dQSU9fRFJJVkVfTE9XOg0KLSAgICAgICAgICAgICAgICAvKiBTZXQgb3V0cHV0IGxvdyAqLw0KLSAgICAgICAgICAgICAgICBvdXRwdXRzX3N0YXRlID0gR1BJTy0+R1BJT19PVVQ7DQotICAgICAgICAgICAgICAgIG91dHB1dHNfc3RhdGUgJj0gfigodWludDMyX3QpKCh1aW50MzJfdCkxIDw8IGdwaW9faWR4KSk7DQotICAgICAgICAgICAgICAgIEdQSU8tPkdQSU9fT1VUID0gb3V0cHV0c19zdGF0ZTsNCi0gICAgICAgICAgICAgICAgLyogRW5hYmxlIG91dHB1dCBidWZmZXIgKi8NCi0gICAgICAgICAgICAgICAgY29uZmlnID0gKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSk7DQotICAgICAgICAgICAgICAgIGNvbmZpZyB8PSBPVVRQVVRfQlVGRkVSX0VOQUJMRV9NQVNLOw0KLSAgICAgICAgICAgICAgICAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKSA9IGNvbmZpZzsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgY2FzZSBNU1NfR1BJT19ISUdIX1o6DQotICAgICAgICAgICAgICAgIC8qIERpc2FibGUgb3V0cHV0IGJ1ZmZlciAqLw0KLSAgICAgICAgICAgICAgICBjb25maWcgPSAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKTsNCi0gICAgICAgICAgICAgICAgY29uZmlnICY9IH5PVVRQVVRfQlVGRkVSX0VOQUJMRV9NQVNLOw0KLSAgICAgICAgICAgICAgICAqKGdfY29uZmlnX3JlZ19sdXRbZ3Bpb19pZHhdKSA9IGNvbmZpZzsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICAgICAgQVNTRVJUKDApOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTVNTX0dQSU9fZW5hYmxlX2lycQ0KLSAqIFNlZSAibXNzX2dwaW8uaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZW5hYmxlX2lycQ0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkDQotKQ0KLXsNCi0gICAgdWludDMyX3QgY2ZnX3ZhbHVlOw0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotICAgIA0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgIGNmZ192YWx1ZSA9ICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pOw0KLSAgICAgICAgKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSkgPSAoY2ZnX3ZhbHVlIHwgR1BJT19JTlRfRU5BQkxFX01BU0spOw0KLSAgICAgICAgTlZJQ19FbmFibGVJUlEoZ19ncGlvX2lycW5fbHV0W2dwaW9faWR4XSk7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBNU1NfR1BJT19kaXNhYmxlX2lycQ0KLSAqIFNlZSAibXNzX2dwaW8uaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZGlzYWJsZV9pcnENCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZA0KLSkNCi17DQotICAgIHVpbnQzMl90IGNmZ192YWx1ZTsNCi0gICAgdWludDMyX3QgZ3Bpb19pZHggPSAodWludDMyX3QpcG9ydF9pZDsNCi0gICAgDQotICAgIEFTU0VSVChncGlvX2lkeCA8IE5CX09GX0dQSU8pOw0KLQ0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgIGNmZ192YWx1ZSA9ICooZ19jb25maWdfcmVnX2x1dFtncGlvX2lkeF0pOw0KLSAgICAgICAgKihnX2NvbmZpZ19yZWdfbHV0W2dwaW9faWR4XSkgPSAoY2ZnX3ZhbHVlICYgfkdQSU9fSU5UX0VOQUJMRV9NQVNLKTsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE1TU19HUElPX2NsZWFyX2lycQ0KLSAqIFNlZSAibXNzX2dwaW8uaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fY2xlYXJfaXJxDQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQNCi0pDQotew0KLSAgICB1aW50MzJfdCBncGlvX2lkeCA9ICh1aW50MzJfdClwb3J0X2lkOw0KLSAgICANCi0gICAgQVNTRVJUKGdwaW9faWR4IDwgTkJfT0ZfR1BJTyk7DQotICAgIA0KLSAgICBpZihncGlvX2lkeCA8IE5CX09GX0dQSU8pDQotICAgIHsNCi0gICAgICAgIEdQSU8tPkdQSU9fSVJRID0gKCh1aW50MzJfdCkxKSA8PCBncGlvX2lkeDsNCi0gICAgfQ0KLX0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ncGlvL21zc19ncGlvLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjNlY2I4Ni4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2dwaW8vbXNzX2dwaW8uaAorKysgL2Rldi9udWxsCkBAIC0xLDUwNyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSBHUElPIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyIHB1YmxpYw0KLSAqICBBUEkuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NDg3ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjkgMTU6MzM6MjIgKzAwMDAgKEZyaSwgMjkgTWFyIDIwMTMpICQNCi0gKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgR1BJTyBCYXJlIE1ldGFsIERyaXZlci4NCi0NCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gIFRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSAoTVNTKSBpbmNsdWRlcyBhIGJsb2NrIG9mIDMyIGdlbmVyYWwNCi0gIHB1cnBvc2UgaW5wdXQvb3V0cHV0cyAoR1BJTykuDQotICBUaGlzIHNvZnR3YXJlIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHRoZSBNU1MgR1BJTw0KLSAgYmxvY2sgYXMgcGFydCBvZiBhIGJhcmUgbWV0YWwgc3lzdGVtIHdoZXJlIG5vIG9wZXJhdGluZyBzeXN0ZW0gaXMgYXZhaWxhYmxlLg0KLSAgVGhpcyBkcml2ZXIgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZSBhcyBwYXJ0IG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0gYnV0IHRoZQ0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFkYXB0YXRpb24gbGF5ZXIgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgdGhlIG9wZXJhdGluZw0KLSAgc3lzdGVtJ3MgZHJpdmVyIG1vZGVsIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgZHJpdmVyLg0KLSAgDQotICBAc2VjdGlvbiBod19kZXBlbmRlbmNpZXMgSGFyZHdhcmUgRmxvdyBEZXBlbmRlbmNpZXMNCi0gIFRoZSBjb25maWd1cmF0aW9uIG9mIGFsbCBmZWF0dXJlcyBvZiB0aGUgTVNTIEdQSU9zIGlzIGNvdmVyZWQgYnkgdGhpcyBkcml2ZXINCi0gIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgU21hcnRGdXNpb24yIElPTVVYIGNvbmZpZ3VyYXRpb24uIFNtYXJ0RnVzaW9uMg0KLSAgYWxsb3dzIG11bHRpcGxlIG5vbi1jb25jdXJyZW50IHVzZXMgb2Ygc29tZSBleHRlcm5hbCBwaW5zIHRocm91Z2ggSU9NVVgNCi0gIGNvbmZpZ3VyYXRpb24uIFRoaXMgZmVhdHVyZSBhbGxvd3Mgb3B0aW1pemF0aW9uIG9mIGV4dGVybmFsIHBpbiB1c2FnZSBieQ0KLSAgYXNzaWduaW5nIGV4dGVybmFsIHBpbnMgZm9yIHVzZSBieSBlaXRoZXIgdGhlIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gb3IgdGhlDQotICBGUEdBIGZhYnJpYy4gVGhlIE1TUyBHUElPcyBzaGFyZSBTbWFydEZ1c2lvbjIgZGV2aWNlIGV4dGVybmFsIHBpbnMgd2l0aCB0aGUNCi0gIEZQR0EgZmFicmljIGFuZCB3aXRoIG90aGVyIE1TUyBwZXJpcGhlcmFscyB2aWEgYW4gSU9NVVguIFRoZSBNU1MgR1BJTyBwb3J0cw0KLSAgY2FuIGFsdGVybmF0aXZlbHkgYmUgcm91dGVkIHRvIHRoZSBGUEdBIGZhYnJpYyB0aHJvdWdoIGFuIElPTVVYLiANCi0gIFRoZSBJT01VWHMgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgY29uZmlndXJhdG9yIHRvb2wuIFlvdQ0KLSAgbXVzdCBlbnN1cmUgdGhhdCB0aGUgTVNTIEdQSU9zIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkIGluIHRoZSBTbWFydEZ1c2lvbjINCi0gIE1TUyBjb25maWd1cmF0b3IgaWYgeW91IHdpc2ggdG8gdXNlIHRoZW0uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIElPTVVYcywNCi0gIHJlZmVyIHRvIHRoZSBJT01VWCBzZWN0aW9uIG9mIHRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSAoTVNTKQ0KLSAgVXNlcuKAmXMgR3VpZGUuDQotICBUaGUgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGludGVycnVwdCBudW1iZXIgYXNzaWdubWVudCBmb3IgdGhlDQotICBNU1MgR1BJTyBibG9jayBhcmUgZGVmaW5lZCBhcyBjb25zdGFudHMgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdQ0KLSAgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QNCi0gIHNldHRpbmdzIG9mIHRoZSBzb2Z0d2FyZSB0b29sIGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IGFuZCB0aGF0IGl0IGlzDQotICBnZW5lcmF0ZWQgaW50byB5b3VyIHByb2plY3QuDQotICANCi0gIEBzZWN0aW9uIHRoZW9yeV9vcCBUaGVvcnkgb2YgT3BlcmF0aW9uDQotICBUaGUgTVNTIEdQSU8gZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoNCi0gICAgLSBJbml0aWFsaXphdGlvbg0KLSAgICAtIENvbmZpZ3VyYXRpb24NCi0gICAgLSBSZWFkaW5nIGFuZCBzZXR0aW5nIEdQSU8gc3RhdGUNCi0gICAgLSBJbnRlcnJ1cHQgY29udHJvbA0KLSAgICANCi0gIEluaXRpYWxpemF0aW9uDQotICBUaGUgTVNTIEdQSU8gZHJpdmVyIGlzIGluaXRpYWxpemVkIHRocm91Z2ggYSBjYWxsIHRvIHRoZSBNU1NfR1BJT19pbml0KCkNCi0gIGZ1bmN0aW9uLiBUaGUgTVNTX0dQSU9faW5pdCgpIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgTVNTDQotICBHUElPIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4NCi0gIA0KLSAgQ29uZmlndXJhdGlvbg0KLSAgRWFjaCBHUElPIHBvcnQgaXMgaW5kaXZpZHVhbGx5IGNvbmZpZ3VyZWQgdGhyb3VnaCBhIGNhbGwgdG8gdGhlDQotICBNU1NfR1BJT19jb25maWcoKSBmdW5jdGlvbi4gQ29uZmlndXJhdGlvbiBpbmNsdWRlcyBkZWNpZGluZyBpZiBhIEdQSU8gcG9ydA0KLSAgd2lsbCBiZSB1c2VkIGFzIGFuIGlucHV0LCBhbiBvdXRwdXQgb3IgYm90aC4gR1BJTyBwb3J0cyBjb25maWd1cmVkIGFzIGlucHV0cw0KLSAgY2FuIGJlIGZ1cnRoZXIgY29uZmlndXJlZCB0byBnZW5lcmF0ZSBpbnRlcnJ1cHRzIGJhc2VkIG9uIHRoZSBpbnB1dCdzIHN0YXRlLg0KLSAgSW50ZXJydXB0cyBjYW4gYmUgbGV2ZWwgb3IgZWRnZSBzZW5zaXRpdmUuDQotICANCi0gIFJlYWRpbmcgYW5kIFNldHRpbmcgR1BJTyBTdGF0ZQ0KLSAgVGhlIHN0YXRlIG9mIHRoZSBHUElPIHBvcnRzIGNhbiBiZSByZWFkIGFuZCBzZXQgdXNpbmcgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6DQotICAgIC0gTVNTX0dQSU9fZ2V0X2lucHV0cygpDQotICAgIC0gTVNTX0dQSU9fZ2V0X291dHB1dHMoKQ0KLSAgICAtIE1TU19HUElPX3NldF9vdXRwdXRzKCkNCi0gICAgLSBNU1NfR1BJT19zZXRfb3V0cHV0KCkNCi0gICAgLSBNU1NfR1BJT19kcml2ZV9pbm91dCgpDQotICANCi0gIEludGVycnVwdCBDb250cm9sDQotICBJbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSBHUElPIHBvcnRzIGNvbmZpZ3VyZWQgYXMgaW5wdXRzIGFyZSBjb250cm9sbGVkIHVzaW5nDQotICB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfR1BJT19lbmFibGVfaXJxKCkNCi0gICAgLSBNU1NfR1BJT19kaXNhYmxlX2lycSgpDQotICAgIC0gTVNTX0dQSU9fY2xlYXJfaXJxKCkNCi0gIA0KLSAqLy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotI2lmbmRlZiBNU1NfR1BJT19IXw0KLSNkZWZpbmUgTVNTX0dQSU9fSF8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgbXNzX2dwaW9faWRfdCBlbnVtZXJhdGlvbiBpcyB1c2VkIHRvIGlkZW50aWZ5IGluZGl2aWR1YWwgR1BJTyBwb3J0cyBhcyBhbg0KLSAgYXJndW1lbnQgdG8gZnVuY3Rpb25zOg0KLSAgICAtIE1TU19HUElPX2NvbmZpZygpDQotICAgIC0gTVNTX0dQSU9fc2V0X291dHB1dCgpIGFuZCBNU1NfR1BJT19kcml2ZV9pbm91dCgpDQotICAgIC0gTVNTX0dQSU9fZW5hYmxlX2lycSgpLCBNU1NfR1BJT19kaXNhYmxlX2lycSgpIGFuZCBNU1NfR1BJT19jbGVhcl9pcnEoKQ0KLSAqLw0KLXR5cGVkZWYgZW51bSBfX21zc19ncGlvX2lkX3QNCi17DQotICAgIE1TU19HUElPXzAgPSAwLA0KLSAgICBNU1NfR1BJT18xID0gMSwNCi0gICAgTVNTX0dQSU9fMiA9IDIsDQotICAgIE1TU19HUElPXzMgPSAzLA0KLSAgICBNU1NfR1BJT180ID0gNCwNCi0gICAgTVNTX0dQSU9fNSA9IDUsDQotICAgIE1TU19HUElPXzYgPSA2LA0KLSAgICBNU1NfR1BJT183ID0gNywNCi0gICAgTVNTX0dQSU9fOCA9IDgsDQotICAgIE1TU19HUElPXzkgPSA5LA0KLSAgICBNU1NfR1BJT18xMCA9IDEwLA0KLSAgICBNU1NfR1BJT18xMSA9IDExLA0KLSAgICBNU1NfR1BJT18xMiA9IDEyLA0KLSAgICBNU1NfR1BJT18xMyA9IDEzLA0KLSAgICBNU1NfR1BJT18xNCA9IDE0LA0KLSAgICBNU1NfR1BJT18xNSA9IDE1LA0KLSAgICBNU1NfR1BJT18xNiA9IDE2LA0KLSAgICBNU1NfR1BJT18xNyA9IDE3LA0KLSAgICBNU1NfR1BJT18xOCA9IDE4LA0KLSAgICBNU1NfR1BJT18xOSA9IDE5LA0KLSAgICBNU1NfR1BJT18yMCA9IDIwLA0KLSAgICBNU1NfR1BJT18yMSA9IDIxLA0KLSAgICBNU1NfR1BJT18yMiA9IDIyLA0KLSAgICBNU1NfR1BJT18yMyA9IDIzLA0KLSAgICBNU1NfR1BJT18yNCA9IDI0LA0KLSAgICBNU1NfR1BJT18yNSA9IDI1LA0KLSAgICBNU1NfR1BJT18yNiA9IDI2LA0KLSAgICBNU1NfR1BJT18yNyA9IDI3LA0KLSAgICBNU1NfR1BJT18yOCA9IDI4LA0KLSAgICBNU1NfR1BJT18yOSA9IDI5LA0KLSAgICBNU1NfR1BJT18zMCA9IDMwLA0KLSAgICBNU1NfR1BJT18zMSA9IDMxDQotfSBtc3NfZ3Bpb19pZF90Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudCBkZWZpbml0aW9ucyBhcmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUNCi0gIE1TU19HUElPX3NldF9vdXRwdXRzKCkgZnVuY3Rpb24gdG8gaWRlbnRpZnkgR1BJTyBwb3J0cy4gQSBsb2dpY2FsIE9SIG9mIHRoZXNlDQotICBjb25zdGFudHMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBtdWx0aXBsZSBHUElPIHBvcnRzLg0KLSAgVGhlc2UgZGVmaW5pdGlvbnMgY2FuIGFsc28gYmUgdXNlZCB0byBpZGVudGlmeSBHUElPIHBvcnRzIHRocm91Z2ggbG9naWNhbA0KLSAgb3BlcmF0aW9ucyBvbiB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBNU1NfR1BJT19nZXRfaW5wdXRzKCkgZnVuY3Rpb24uDQotICovDQotI2RlZmluZSBNU1NfR1BJT18wX01BU0sgICAgICAgICAweDAwMDAwMDAxdUwNCi0jZGVmaW5lIE1TU19HUElPXzFfTUFTSyAgICAgICAgIDB4MDAwMDAwMDJ1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMl9NQVNLICAgICAgICAgMHgwMDAwMDAwNHVMDQotI2RlZmluZSBNU1NfR1BJT18zX01BU0sgICAgICAgICAweDAwMDAwMDA4dUwNCi0jZGVmaW5lIE1TU19HUElPXzRfTUFTSyAgICAgICAgIDB4MDAwMDAwMTB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fNV9NQVNLICAgICAgICAgMHgwMDAwMDAyMHVMDQotI2RlZmluZSBNU1NfR1BJT182X01BU0sgICAgICAgICAweDAwMDAwMDQwdUwNCi0jZGVmaW5lIE1TU19HUElPXzdfTUFTSyAgICAgICAgIDB4MDAwMDAwODB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fOF9NQVNLICAgICAgICAgMHgwMDAwMDEwMHVMDQotI2RlZmluZSBNU1NfR1BJT185X01BU0sgICAgICAgICAweDAwMDAwMjAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzEwX01BU0sgICAgICAgIDB4MDAwMDA0MDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTFfTUFTSyAgICAgICAgMHgwMDAwMDgwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xMl9NQVNLICAgICAgICAweDAwMDAxMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzEzX01BU0sgICAgICAgIDB4MDAwMDIwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTRfTUFTSyAgICAgICAgMHgwMDAwNDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xNV9NQVNLICAgICAgICAweDAwMDA4MDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzE2X01BU0sgICAgICAgIDB4MDAwMTAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMTdfTUFTSyAgICAgICAgMHgwMDAyMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18xOF9NQVNLICAgICAgICAweDAwMDQwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzE5X01BU0sgICAgICAgIDB4MDAwODAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjBfTUFTSyAgICAgICAgMHgwMDEwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yMV9NQVNLICAgICAgICAweDAwMjAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzIyX01BU0sgICAgICAgIDB4MDA0MDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjNfTUFTSyAgICAgICAgMHgwMDgwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yNF9NQVNLICAgICAgICAweDAxMDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzI1X01BU0sgICAgICAgIDB4MDIwMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjZfTUFTSyAgICAgICAgMHgwNDAwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18yN19NQVNLICAgICAgICAweDA4MDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzI4X01BU0sgICAgICAgIDB4MTAwMDAwMDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fMjlfTUFTSyAgICAgICAgMHgyMDAwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT18zMF9NQVNLICAgICAgICAweDQwMDAwMDAwdUwNCi0jZGVmaW5lIE1TU19HUElPXzMxX01BU0sgICAgICAgIDB4ODAwMDAwMDB1TA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudCBkZWZpbml0aW9ucyBhcmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgTVNTX0dQSU9fY29uZmlnKCkNCi0gIGZ1bmN0aW9uIHRvIHNwZWNpZnkgdGhlIEkvTyBtb2RlIG9mIGVhY2ggR1BJTyBwb3J0Lg0KLSAqLw0KLSNkZWZpbmUgTVNTX0dQSU9fSU5QVVRfTU9ERSAgICAgICAgICAgICAgMHgwMDAwMDAwMDAydUwNCi0jZGVmaW5lIE1TU19HUElPX09VVFBVVF9NT0RFICAgICAgICAgICAgIDB4MDAwMDAwMDAwNXVMDQotI2RlZmluZSBNU1NfR1BJT19JTk9VVF9NT0RFICAgICAgICAgICAgICAweDAwMDAwMDAwMDN1TA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudCBkZWZpbml0aW9ucyBhcmUgdXNlZCBhcyBhbiBhcmd1bWVudCB0byB0aGUgTVNTX0dQSU9fY29uZmlnKCkNCi0gIGZ1bmN0aW9uIHRvIHNwZWNpZnkgdGhlIGludGVycnVwdCBtb2RlIG9mIGVhY2ggR1BJTyBwb3J0Lg0KLSAqLw0KLSNkZWZpbmUgTVNTX0dQSU9fSVJRX0xFVkVMX0hJR0ggICAgICAgICAgIDB4MDAwMDAwMDAwMHVMDQotI2RlZmluZSBNU1NfR1BJT19JUlFfTEVWRUxfTE9XICAgICAgICAgICAgMHgwMDAwMDAwMDIwdUwNCi0jZGVmaW5lIE1TU19HUElPX0lSUV9FREdFX1BPU0lUSVZFICAgICAgICAweDAwMDAwMDAwNDB1TA0KLSNkZWZpbmUgTVNTX0dQSU9fSVJRX0VER0VfTkVHQVRJVkUgICAgICAgIDB4MDAwMDAwMDA2MHVMDQotI2RlZmluZSBNU1NfR1BJT19JUlFfRURHRV9CT1RIICAgICAgICAgICAgMHgwMDAwMDAwMDgwdUwNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIG1zc19ncGlvX2lub3V0X3N0YXRlX3QgZW51bWVyYXRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBvdXRwdXQgc3RhdGUgb2YNCi0gIGFuIElOT1VUIEdQSU8gcG9ydCBhcyBhbiBhcmd1bWVudCB0byB0aGUgTVNTX0dQSU9fZHJpdmVfaW5vdXQoKSBmdW5jdGlvbi4NCi0gKi8NCi10eXBlZGVmIGVudW0gbXNzX2dwaW9faW5vdXRfc3RhdGUNCi17DQotICAgIE1TU19HUElPX0RSSVZFX0xPVyA9IDAsDQotICAgIE1TU19HUElPX0RSSVZFX0hJR0gsDQotICAgIE1TU19HUElPX0hJR0hfWg0KLX0gbXNzX2dwaW9faW5vdXRfc3RhdGVfdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgU21hcnRGdXNpb24yIE1TUyBHUElPIGJsb2NrLiBJdA0KLSAgcmVzZXRzIHRoZSBNU1MgR1BJTyBoYXJkd2FyZSBibG9jayBhbmQgaXQgYWxzbyBjbGVhcnMgYW55IHBlbmRpbmcgTVNTIEdQSU8NCi0gIGludGVycnVwdHMgaW4gdGhlIEFSTSBDb3J0ZXgtTTMgaW50ZXJydXB0IGNvbnRyb2xsZXIuIFdoZW4gdGhlIGZ1bmN0aW9uIGV4aXRzLA0KLSAgaXQgdGFrZXMgdGhlIE1TUyBHUElPIGJsb2NrIG91dCBvZiByZXNldC4NCi0gIA0KLSAgIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIGhhcyBubyBwYXJhbWV0ZXJzLg0KLSAgICANCi0gICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZCBNU1NfR1BJT19pbml0KCB2b2lkICk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19jb25maWcoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSBhbiBpbmRpdmlkdWFsIEdQSU8gcG9ydC4NCi0gDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IHRvIGJlIGNvbmZpZ3VyZWQuIEFuDQotICAgIGVudW1lcmF0aW9uIGl0ZW0gb2YgdGhlIGZvcm0gTVNTX0dQSU9fbiwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIHRoZSBHUElPDQotICAgIHBvcnQsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIEdQSU8gcG9ydC4gRm9yIGV4YW1wbGUsIE1TU19HUElPXzAgaWRlbnRpZmllcw0KLSAgICB0aGUgZmlyc3QgR1BJTyBwb3J0IGFuZCBNU1NfR1BJT18zMSBpcyB0aGUgbGFzdCBvbmUuDQotICAgIA0KLSAgQHBhcmFtIGNvbmZpZw0KLSAgICBUaGUgY29uZmlnIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYmUgYXBwbGllZCB0byB0aGUgR1BJTw0KLSAgICBwb3J0IGlkZW50aWZpZWQgYnkgdGhlIHBvcnRfaWQgcGFyYW1ldGVyLiBJdCBpcyBhIGxvZ2ljYWwgT1Igb2YgdGhlIHJlcXVpcmVkDQotICAgIEkvTyBtb2RlIGFuZCB0aGUgcmVxdWlyZWQgaW50ZXJydXB0IG1vZGUuIFRoZSBpbnRlcnJ1cHQgbW9kZSBpcyBub3QgcmVsZXZhbnQNCi0gICAgaWYgdGhlIEdQSU8gaXMgY29uZmlndXJlZCBhcyBhbiBvdXRwdXQgb25seS4NCi0gICAgICAgVGhlc2UgSS9PIG1vZGUgY29uc3RhbnRzIGFyZSBhbGxvd2VkOg0KLSAgICAgICAgICAgLSBNU1NfR1BJT19JTlBVVF9NT0RFDQotICAgICAgICAgICAtIE1TU19HUElPX09VVFBVVF9NT0RFDQotICAgICAgICAgICAtIE1TU19HUElPX0lOT1VUX01PREUNCi0gICAgICAgVGhlc2UgaW50ZXJydXB0IG1vZGUgY29uc3RhbnRzIGFyZSBhbGxvd2VkOg0KLSAgICAgICAgICAgLSBNU1NfR1BJT19JUlFfTEVWRUxfSElHSA0KLSAgICAgICAgICAgLSBNU1NfR1BJT19JUlFfTEVWRUxfTE9XDQotICAgICAgICAgICAtIE1TU19HUElPX0lSUV9FREdFX1BPU0lUSVZFDQotICAgICAgICAgICAtIE1TU19HUElPX0lSUV9FREdFX05FR0FUSVZFDQotICAgICAgICAgICAtIE1TU19HUElPX0lSUV9FREdFX0JPVEgNCi0gIA0KLSAgIEByZXR1cm4NCi0gICAgbm9uZS4NCi0NCi0gIEV4YW1wbGU6DQotICBUaGUgZm9sbG93aW5nIGNhbGwgd2lsbCBjb25maWd1cmUgR1BJTyA0IGFzIGFuIGlucHV0IGdlbmVyYXRpbmcgaW50ZXJydXB0cyBvbg0KLSAgYSBMb3cgdG8gSGlnaCB0cmFuc2l0aW9uIG9mIHRoZSBpbnB1dDoNCi0gIEBjb2RlDQotICBNU1NfR1BJT19jb25maWcoIE1TU19HUElPXzQsIE1TU19HUElPX0lOUFVUX01PREUgfCBNU1NfR1BJT19JUlFfRURHRV9QT1NJVElWRSApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIE1TU19HUElPX2NvbmZpZw0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCBwb3J0X2lkLA0KLSAgICB1aW50MzJfdCBjb25maWcNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9fc2V0X291dHB1dHMoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNldCB0aGUgc3RhdGUgb2YgYWxsIEdQSU8gcG9ydHMNCi0gIGNvbmZpZ3VyZWQgYXMgb3V0cHV0cy4NCi0gDQotICBAcGFyYW0gdmFsdWUNCi0gICAgVGhlIHZhbHVlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHN0YXRlIG9mIHRoZSBHUElPIHBvcnRzIGNvbmZpZ3VyZWQgYXMNCi0gICAgb3V0cHV0cy4gSXQgaXMgYSBiaXQgbWFzayBvZiB0aGUgZm9ybSAoTVNTX0dQSU9fbl9NQVNLIHwgTVNTX0dQSU9fbV9NQVNLKQ0KLSAgICB3aGVyZSBuIGFuZCBtIGFyZSBudW1iZXJzIGlkZW50aWZ5aW5nIEdQSU9zLiBGb3IgZXhhbXBsZSwgKE1TU19HUElPXzBfTUFTSyB8DQotICAgIE1TU19HUElPXzFfTUFTSyB8IE1TU19HUElPXzJfTUFTSyApIHNwZWNpZmllcyB0aGF0IHRoZSBmaXJzdCwgc2Vjb25kIGFuZA0KLSAgICB0aGlyZCBHUElPIG91dHB1dHMgbXVzdCBiZSBzZXQgSGlnaCBhbmQgYWxsIG90aGVyIEdQSU8gb3V0cHV0cyBzZXQgTG93LiBUaGUNCi0gICAgZHJpdmVyIHByb3ZpZGVzIDMyIG1hc2sgY29uc3RhbnRzLCBNU1NfR1BJT18wX01BU0sgdG8gTVNTX0dQSU9fMzFfTUFTSw0KLSAgICBpbmNsdXNpdmUsIGZvciB0aGlzIHB1cnBvc2UuDQotICANCi0gIEByZXR1cm4NCi0gICAgbm9uZS4NCi0NCi0gIEV4YW1wbGUgMToNCi0gICAgU2V0IEdQSU9zIG91dHB1dHMgMCBhbmQgOCBoaWdoIGFuZCBhbGwgb3RoZXIgR1BJTyBvdXRwdXRzIGxvdy4NCi0gICAgQGNvZGUNCi0gICAgICAgIE1TU19HUElPX3NldF9vdXRwdXRzKCBNU1NfR1BJT18wX01BU0sgfCBNU1NfR1BJT184X01BU0sgKTsNCi0gICAgQGVuZGNvZGUNCi0NCi0gIEV4YW1wbGUgMjoNCi0gICAgU2V0IEdQSU9zIG91dHB1dHMgMiBhbmQgNCBsb3cgd2l0aG91dCBhZmZlY3Rpbmcgb3RoZXIgR1BJTyBvdXRwdXRzLg0KLSAgICBAY29kZQ0KLSAgICAgICAgdWludDMyX3QgZ3Bpb19vdXRwdXRzOw0KLSAgICAgICAgZ3Bpb19vdXRwdXRzID0gTVNTX0dQSU9fZ2V0X291dHB1dHMoKTsNCi0gICAgICAgIGdwaW9fb3V0cHV0cyAmPSB+KCBNU1NfR1BJT18yX01BU0sgfCBNU1NfR1BJT180X01BU0sgKTsNCi0gICAgICAgIE1TU19HUElPX3NldF9vdXRwdXRzKCAgZ3Bpb19vdXRwdXRzICk7DQotICAgIEBlbmRjb2RlDQotDQotICBAc2VlIE1TU19HUElPX2dldF9vdXRwdXRzKCkNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZA0KLU1TU19HUElPX3NldF9vdXRwdXRzDQotKA0KLSAgIHVpbnQzMl90IHZhbHVlDQotKQ0KLXsNCi0gICAgR1BJTy0+R1BJT19PVVQgPSB2YWx1ZTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19zZXRfb3V0cHV0KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIHN0YXRlIG9mIGEgc2luZ2xlIEdQSU8NCi0gIHBvcnQgY29uZmlndXJlZCBhcyBhbiBvdXRwdXQuDQotICBOb3RlOiBVc2luZyBiaXQtYmFuZCB3cml0ZXMgbWlnaHQgYmUgYSBiZXR0ZXIgb3B0aW9uIHRoYW4gdGhpcyBmdW5jdGlvbiBmb3INCi0gICAgICAgIHBlcmZvcm1hbmNlIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB3aGVyZSB0aGUgYXBwbGljYXRpb24gY29kZSBpcyBub3QNCi0gICAgICAgIGludGVuZGVkIHRvIGJlIHBvcnRlZCB0byBhIHByb2Nlc3NvciBvdGhlciB0aGFuIHRoZSBBUk0gQ29ydGV4LU0zIGluDQotICAgICAgICBTbWFydEZ1c2lvbjIuIFRoZSBiaXQtYmFuZCB3cml0ZSBlcXVpdmFsZW50IHRvIHRoaXMgZnVuY3Rpb24gd291bGQgYmU6DQotICAgICAgICAgICAgR1BJT19CSVRCQU5ELT5HUElPX09VVFtwb3J0X2lkXSA9ICh1aW50MzJfdCl2YWx1ZTsNCi0gDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IHRoYXQgaXMgdG8gaGF2ZSBpdHMgb3V0cHV0DQotICAgIHNldC4gQW4gZW51bWVyYXRpb24gaXRlbSBvZiB0aGUgZm9ybSBNU1NfR1BJT19uLCB3aGVyZSBuIGlzIHRoZSBudW1iZXIgb2YNCi0gICAgdGhlIEdQSU8gcG9ydCwgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgR1BJTyBwb3J0LiBGb3IgZXhhbXBsZSwgTVNTX0dQSU9fMA0KLSAgICBpZGVudGlmaWVzIHRoZSBmaXJzdCBHUElPIHBvcnQgYW5kIE1TU19HUElPXzMxIGlzIHRoZSBsYXN0IG9uZS4NCi0gIA0KLSAgQHBhcmFtIHZhbHVlDQotICAgIFRoZSB2YWx1ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHN0YXRlIGZvciB0aGUgR1BJTyBvdXRwdXQuIEEgdmFsdWUNCi0gICAgb2YgMCB3aWxsIHNldCB0aGUgb3V0cHV0IExvdyBhbmQgYSB2YWx1ZSBvZiAxIHdpbGwgc2V0IHRoZSBvdXRwdXQgSGlnaC4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgICANCi0gIEV4YW1wbGU6DQotICBUaGUgZm9sbG93aW5nIGNhbGwgd2lsbCBzZXQgR1BJTyBvdXRwdXQgMTIgSGlnaCwgbGVhdmluZyBhbGwgb3RoZXIgR1BJTw0KLSAgb3V0cHV0cyB1bmFmZmVjdGVkOg0KLSAgQGNvZGUNCi0gICAgX0dQSU9fc2V0X291dHB1dChNU1NfR1BJT18xMiwgMSk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fc2V0X291dHB1dA0KLSgNCi0gICAgbXNzX2dwaW9faWRfdCAgICAgICBwb3J0X2lkLA0KLSAgICB1aW50OF90ICAgICAgICAgICAgIHZhbHVlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2dldF9pbnB1dHMoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlYWQgdGhlIGN1cnJlbnQgc3RhdGUgYWxsIEdQSU8NCi0gIHBvcnRzIGNvbmZpZ3VyZWQgYXMgaW5wdXRzLg0KLSANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgMzItYml0IHVuc2lnbmVkIGludGVnZXIgd2hlcmUgZWFjaCBiaXQgcmVwcmVzZW50cw0KLSAgICB0aGUgc3RhdGUgb2YgYSBHUElPIGlucHV0LiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHJlcHJlc2VudHMgdGhlIHN0YXRlIG9mDQotICAgIEdQSU8gaW5wdXQgMCBhbmQgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHRoZSBzdGF0ZSBvZiBHUElPIGlucHV0IDMxLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgUmVhZCBhbmQgYXNzaWduIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBHUElPIG91dHB1dHMgdG8gYSB2YXJpYWJsZS4NCi0gICAgQGNvZGUNCi0gICAgICAgIHVpbnQzMl90IGdwaW9faW5wdXRzOw0KLSAgICAgICAgZ3Bpb19pbnB1dHMgPSBNU1NfR1BJT19nZXRfaW5wdXRzKCk7DQotICAgIEBlbmRjb2RlDQotICovDQotc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90DQotTVNTX0dQSU9fZ2V0X2lucHV0cyggdm9pZCApDQotew0KLSAgICByZXR1cm4gR1BJTy0+R1BJT19JTjsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19nZXRfb3V0cHV0cygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVhZCB0aGUgY3VycmVudCBzdGF0ZSBhbGwgR1BJTw0KLSAgcG9ydHMgY29uZmlndXJlZCBhcyBvdXRwdXRzLg0KLSANCi0gIEByZXR1cm4NCi0gICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHdoZXJlIGVhY2ggYml0IHJlcHJlc2VudHMNCi0gICAgIHRoZSBzdGF0ZSBvZiBhIEdQSU8gb3V0cHV0LiBUaGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0IHJlcHJlc2VudHMgdGhlIHN0YXRlDQotICAgICBvZiBHUElPIG91dHB1dCAwIGFuZCB0aGUgbW9zdCBzaWduaWZpY2FudCBiaXQgdGhlIHN0YXRlIG9mIEdQSU8gb3V0cHV0IDMxLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgUmVhZCBhbmQgYXNzaWduIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBHUElPIG91dHB1dHMgdG8gYSB2YXJpYWJsZS4NCi0gICAgQGNvZGUNCi0gICAgICAgIHVpbnQzMl90IGdwaW9fb3V0cHV0czsNCi0gICAgICAgIGdwaW9fb3V0cHV0cyA9IE1TU19HUElPX2dldF9vdXRwdXRzKCk7DQotICAgIEBlbmRjb2RlDQotICovDQotc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90DQotTVNTX0dQSU9fZ2V0X291dHB1dHMoIHZvaWQgKQ0KLXsNCi0gICAgcmV0dXJuIEdQSU8tPkdQSU9fT1VUOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2RyaXZlX2lub3V0KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIG91dHB1dCBzdGF0ZSBvZiBhDQotICBzaW5nbGUgR1BJTyBwb3J0IGNvbmZpZ3VyZWQgYXMgYW4gSU5PVVQuIEFuIElOT1VUIEdQSU8gY2FuIGJlIGluIG9uZSBvZiB0aHJlZQ0KLSAgc3RhdGVzOg0KLSAgICAtIEhpZ2gNCi0gICAgLSBMb3cNCi0gICAgLSBIaWdoIGltcGVkYW5jZQ0KLSAgQW4gSU5PVVQgb3V0cHV0IHdvdWxkIHR5cGljYWxseSBiZSB1c2VkIHdoZXJlIHNldmVyYWwgZGV2aWNlcyBjYW4gZHJpdmUgdGhlDQotICBzdGF0ZSBvZiBhIHNoYXJlZCBzaWduYWwgbGluZS4gVGhlIEhpZ2ggYW5kIExvdyBzdGF0ZXMgYXJlIGVxdWl2YWxlbnQgdG8gdGhlDQotICBIaWdoIGFuZCBMb3cgc3RhdGVzIG9mIGEgR1BJTyBjb25maWd1cmVkIGFzIGFuIG91dHB1dC4gVGhlIEhpZ2ggaW1wZWRhbmNlDQotICBzdGF0ZSBpcyB1c2VkIHRvIHByZXZlbnQgdGhlIEdQSU8gZnJvbSBkcml2aW5nIGl0cyBvdXRwdXQgc3RhdGUgb250byB0aGUNCi0gIHNpZ25hbCBsaW5lLCB3aGlsZSBhdCB0aGUgc2FtZSB0aW1lIGFsbG93aW5nIHRoZSBpbnB1dCBzdGF0ZSBvZiB0aGUgR1BJTyB0bw0KLSAgYmUgcmVhZC4NCi0gIA0KLSAgQHBhcmFtIHBvcnRfaWQNCi0gICAgVGhlIHBvcnRfaWQgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIEdQSU8gcG9ydCBmb3Igd2hpY2ggeW91IHdhbnQgdG8gY2hhbmdlDQotICAgIHRoZSBvdXRwdXQgc3RhdGUuIEFuIGVudW1lcmF0aW9uIGl0ZW0gb2YgdGhlIGZvcm0gTVNTX0dQSU9fbiwgd2hlcmUgbiBpcyB0aGUNCi0gICAgbnVtYmVyIG9mIHRoZSBHUElPIHBvcnQsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIEdQSU8gcG9ydC4gRm9yIGV4YW1wbGUsDQotICAgIE1TU19HUElPXzAgaWRlbnRpZmllcyB0aGUgZmlyc3QgR1BJTyBwb3J0IGFuZCBNU1NfR1BJT18zMSBpcyB0aGUgbGFzdCBvbmUuDQotICAgIA0KLSAgQHBhcmFtIGlub3V0X3N0YXRlDQotICAgIFRoZSBpbm91dF9zdGF0ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBzdGF0ZSBvZiB0aGUgR1BJTyBwb3J0IGlkZW50aWZpZWQgYnkNCi0gICAgdGhlIHBvcnRfaWQgcGFyYW1ldGVyLiBBbGxvd2VkIHZhbHVlcyBvZiB0eXBlIG1zc19ncGlvX2lub3V0X3N0YXRlX3QgYXJlIGFzDQotICAgIGZvbGxvd3M6DQotICAgICAgICAtIE1TU19HUElPX0RSSVZFX0hJR0gNCi0gICAgICAgIC0gTVNTX0dQSU9fRFJJVkVfTE9XDQotICAgICAgICAtIE1TU19HUElPX0hJR0hfWiAgKEhpZ2ggaW1wZWRhbmNlKQ0KLSAgICAgICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgICBUaGUgY2FsbCB0byBNU1NfR1BJT19kcml2ZV9pbm91dCgpIGJlbG93IHdpbGwgc2V0IHRoZSBHUElPIDcgb3V0cHV0IHRvIHRoZQ0KLSAgICBoaWdoIGltcGVkYW5jZSBzdGF0ZS4NCi0gICAgQGNvZGUNCi0gICAgTVNTX0dQSU9fZHJpdmVfaW5vdXQoIE1TU19HUElPXzcsIE1TU19HUElPX0hJR0hfWiApOw0KLSAgICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fZHJpdmVfaW5vdXQNCi0oDQotICAgIG1zc19ncGlvX2lkX3QgICAgICAgICAgIHBvcnRfaWQsDQotICAgIG1zc19ncGlvX2lub3V0X3N0YXRlX3QgIGlub3V0X3N0YXRlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19HUElPX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiBmb3INCi0gIHRoZSBzcGVjaWZpZWQgR1BJTyBpbnB1dC4gSW50ZXJydXB0cyBhcmUgZ2VuZXJhdGVkIGJhc2VkIG9uIHRoZSBzdGF0ZSBvZiB0aGUNCi0gIEdQSU8gaW5wdXQgYW5kIHRoZSBpbnRlcnJ1cHQgbW9kZSBjb25maWd1cmVkIGZvciBpdCBieSBNU1NfR1BJT19jb25maWcoKS4NCi0gDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IGZvciB3aGljaCB5b3Ugd2FudCB0byBlbmFibGUNCi0gICAgaW50ZXJydXB0IGdlbmVyYXRpb24uIEFuIGVudW1lcmF0aW9uIGl0ZW0gb2YgdGhlIGZvcm0gTVNTX0dQSU9fbiwgd2hlcmUgbiBpcw0KLSAgICB0aGUgbnVtYmVyIG9mIHRoZSBHUElPIHBvcnQsIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIEdQSU8gcG9ydC4gRm9yIGV4YW1wbGUsDQotICAgIE1TU19HUElPXzAgaWRlbnRpZmllcyB0aGUgZmlyc3QgR1BJTyBwb3J0IGFuZCBNU1NfR1BJT18zMSBpcyB0aGUgbGFzdCBvbmUuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gICAgVGhlIGNhbGwgdG8gTVNTX0dQSU9fZW5hYmxlX2lycSgpIGJlbG93IHdpbGwgYWxsb3cgR1BJTyA4IHRvIGdlbmVyYXRlDQotICAgIGludGVycnVwdHMuDQotICAgIEBjb2RlDQotICAgIE1TU19HUElPX2VuYWJsZV9pcnEoIE1TU19HUElPXzggKTsNCi0gICAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIE1TU19HUElPX2VuYWJsZV9pcnENCi0oDQotICAgIG1zc19ncGlvX2lkX3QgcG9ydF9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfR1BJT19kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbg0KLSAgZm9yIHRoZSBzcGVjaWZpZWQgR1BJTyBpbnB1dC4NCi0gDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IGZvciB3aGljaCB5b3Ugd2FudCB0byBkaXNhYmxlDQotICAgIGludGVycnVwdCBnZW5lcmF0aW9uLiBBbiBlbnVtZXJhdGlvbiBpdGVtIG9mIHRoZSBmb3JtIE1TU19HUElPX24sIHdoZXJlIG4gaXMNCi0gICAgdGhlIG51bWJlciBvZiB0aGUgR1BJTyBwb3J0LCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBHUElPIHBvcnQuIEZvciBleGFtcGxlLA0KLSAgICBNU1NfR1BJT18wIGlkZW50aWZpZXMgdGhlIGZpcnN0IEdQSU8gcG9ydCBhbmQgTVNTX0dQSU9fMzEgaXMgdGhlIGxhc3Qgb25lLg0KLSANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICAgIFRoZSBjYWxsIHRvIE1TU19HUElPX2Rpc2FibGVfaXJxKCkgYmVsb3cgd2lsbCBwcmV2ZW50IEdQSU8gOCBmcm9tIGdlbmVyYXRpbmcNCi0gICAgaW50ZXJydXB0cy4NCi0gICAgQGNvZGUNCi0gICAgTVNTX0dQSU9fZGlzYWJsZV9pcnEoIE1TU19HUElPXzggKTsNCi0gICAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIE1TU19HUElPX2Rpc2FibGVfaXJxDQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0dQSU9fY2xlYXJfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBjbGVhciBhIHBlbmRpbmcgaW50ZXJydXB0IGZyb20NCi0gIHRoZSBzcGVjaWZpZWQgR1BJTyBpbnB1dC4NCi0gIE5vdGU6IFRoZSBNU1NfR1BJT19jbGVhcl9pcnEoKSBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBhcyBwYXJ0IG9mIGFueSBHUElPDQotICAgICAgICBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIChJU1IpIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0DQotICAgICAgICBldmVudCByZXRyaWdnZXJpbmcgYSBjYWxsIHRvIHRoZSBHUElPIElTUi4NCi0gDQotICBAcGFyYW0gcG9ydF9pZA0KLSAgICBUaGUgcG9ydF9pZCBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgR1BJTyBwb3J0IGZvciB3aGljaCB5b3Ugd2FudCB0byBjbGVhcg0KLSAgICB0aGUgaW50ZXJydXB0LiBBbiBlbnVtZXJhdGlvbiBpdGVtIG9mIHRoZSBmb3JtIE1TU19HUElPX24sIHdoZXJlIG4gaXMgdGhlDQotICAgIG51bWJlciBvZiB0aGUgR1BJTyBwb3J0LCBpcyB1c2VkIHRvIGlkZW50aWZ5IHRoZSBHUElPIHBvcnQuIEZvciBleGFtcGxlLA0KLSAgICBNU1NfR1BJT18wIGlkZW50aWZpZXMgdGhlIGZpcnN0IEdQSU8gcG9ydCBhbmQgTVNTX0dQSU9fMzEgaXMgdGhlIGxhc3Qgb25lLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgbm9uZS4NCi0NCi0gIEV4YW1wbGU6DQotICAgIFRoZSBleGFtcGxlIGJlbG93IGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIHRoZSBNU1NfR1BJT19jbGVhcl9pcnEoKSBmdW5jdGlvbg0KLSAgICBhcyBwYXJ0IG9mIHRoZSBHUElPIDkgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZS4gIA0KLSAgICBAY29kZQ0KLSAgICB2b2lkIEdQSU85X0lSUUhhbmRsZXIoIHZvaWQgKQ0KLSAgICB7DQotICAgICAgICBkb19pbnRlcnJ1cHRfcHJvY2Vzc2luZygpOw0KLSAgICAgICAgDQotICAgICAgICBNU1NfR1BJT19jbGVhcl9pcnEoIE1TU19HUElPXzkgKTsNCi0gICAgfQ0KLSAgICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgTVNTX0dQSU9fY2xlYXJfaXJxDQotKA0KLSAgICBtc3NfZ3Bpb19pZF90IHBvcnRfaWQNCi0pOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogTVNTX0dQSU9fSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ocGRtYS9tc3NfaHBkbWEuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzZWFkYi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5jCisrKyAvZGV2L251bGwKQEAgLTEsMzQ0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEwLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU21hcnRGdXNpb24yIE1TUyBIUERNQSBiYXJlIG1ldGFsIGRyaXZlciBpbXBsZW1lbnRhdGlvbi4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUxNDggJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMi0yNyAxNjo0MjowMSArMDAwMCAoV2VkLCAyNyBGZWIgMjAxMykgJA0KLSAqLw0KLSNpbmNsdWRlICJtc3NfaHBkbWEuaCINCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIERlc2lnbiBOb3Rlcw0KLSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBUaGlzIFNtYXJ0RnVzaW9uMiBNU1MgSFBETUEgZHJpdmVyIG9ubHkgbWFrZXMgdXNlIG9mIHRoZSBmaXJzdCBIUERNQQ0KLSAgZGVzY3JpcHRvci4gVGhlIHJhdGlvbmFsZSBmb3IgdGhpcyBjaG9pY2UgaXMgdGhhdCB0aGUgcGF1c2UgYW5kIGNsZWFyIGJpdHMgb2YNCi0gIGVhY2ggaW5kaXZpZHVhbCBkZXNjcmlwdG9yIGhhdmUgdW5kb2N1bWVudGVkIHNpZGUgZWZmZWN0cyB0byB0aGUgb3RoZXINCi0gIGRlc2NyaXB0b3JzIGluIHRoZSBIUERNQSBoYXJkd2FyZSBibG9jay4gVGhpcyBwcmV2ZW50cyBpbmRlcGVuZGVudCBvcGVyYXRpb25zDQotICBvZiB0aGUgZGVzY3JpcHRvcnMgaW4gcGFydGljdWxhciB3aGVuIGl0IGNvbWVzIHRvIGVycm9yIGhhbmRsaW5nIHdoZXJlIGVycm9yDQotICByZWNvdmVyeSByZXF1aXJlcyBjbGVhcmluZyBhIGRlc2NyaXB0b3IuIEFuIGVycm9yIG9uIG9uZSBkZXNjcmlwdG9yIHdvdWxkDQotICByZXN1bHQgaW4gYWJvcnRpbmcgdHJhbnNmZXJzIG9uIHRoZSBvdGhlciBkZXNjcmlwdG9ycy4gTGlrZXdpc2UsIGl0IGlzIG5vdA0KLSAgcG9zc2libGUgdG8gcGF1c2UgaW5kaXZpZHVhbCBkZXNjcmlwdG9ycy4gU2V0dGluZyB0aGUgcGF1c2UgYml0IGluIG9uZQ0KLSAgZGVzY3JpcHRvciByZXN1bHRzIGluIGFsbCBkZXNjcmlwdG9ycyBiZWluZyBwYXVzZWQuDQotICovDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmIA0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogQ29uc3RhbnRzDQotICovDQotI2RlZmluZSBIUERNQV9FTkFCTEUgICAgMXUNCi0jZGVmaW5lIEhQRE1BX0RJU0FCTEUgICAwdQ0KLSNkZWZpbmUgTlVMTF9IQU5ETEVSICAgICgobXNzX2hwZG1hX2hhbmRsZXJfdCkwKQ0KLQ0KLS8qIDY0IEsgRE1BIFRyYW5zZmVyICovDQotI2RlZmluZSBNQVhfU0laRV9QRVJfRE1BX1hGUiAgIDB4MTAwMDB1DQotDQotI2RlZmluZSBERVNDMCAgICAgICAwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogTWFzayBDb25zdGFudHMNCi0gKi8NCi0jZGVmaW5lIEhQRE1BX1NPRlRfUkVTRVQgICAgICAgICAgICAweDAwMDIwMDAwdQ0KLSNkZWZpbmUgSFBETUFfWEZSX1NJWkVfTUFTSyAgICAgICAgIDB4RkZGRjAwMDB1DQotDQotI2RlZmluZSBIUERNQUNSX1hGUl9DTVBfSU5UX01BU0sgICAgMHgwMDEwMDAwMHUNCi0jZGVmaW5lIEhQRE1BQ1JfWEZSX0VSUl9JTlRfTUFTSyAgICAweDAwMjAwMDAwdQ0KLSNkZWZpbmUgSFBETUFDUl9OT05fV09SRF9JTlRfTUFTSyAgIDB4MDA0MDAwMDB1DQotDQotI2RlZmluZSBIUERNQUNSX0FMTF9JUlFfRU5BQkxFX01BU0sgKEhQRE1BQ1JfWEZSX0NNUF9JTlRfTUFTSyB8IEhQRE1BQ1JfWEZSX0VSUl9JTlRfTUFTSyB8IEhQRE1BQ1JfTk9OX1dPUkRfSU5UX01BU0spDQotDQotI2RlZmluZSBIUERNQUlDUl9DTEVBUl9BTExfSVJRICAgICAgMHgwMDAwMDBGRnUNCi0NCi0jZGVmaW5lIEhQRE1BRURSX0RDUF9FUlJfTUFTSyAgICAgICAgICAgMHgwMDAwMDEwMHUNCi0NCi0jZGVmaW5lIEhQRE1BRURSX05PTl9XT1JEX0VSUl9NQVNLICAgICAgMHgwMDAwMTAwMHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgQ3VycmVudCB0cmFuc2ZlciBzdGF0ZSBpbmZvcm1hdGlvbi4NCi0gKi8NCi10eXBlZGVmIHN0cnVjdCBocGRtYV94ZmVyX2luZm8NCi17DQotICAgIGhwZG1hX3N0YXR1c190ICAgICAgICAgIHN0YXRlOw0KLSAgICBtc3NfaHBkbWFfaGFuZGxlcl90ICAgICBjb21wbGV0aW9uX2hhbmRsZXI7DQotICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIHNyY19hZGRyOw0KLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBkZXNfYWRkcjsNCi0gICAgdWludDMyX3QgICAgICAgICAgICAgICAgeGZyX3NpemU7DQotICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIHhmcl9kaXI7DQotfSBocGRtYV94ZmVyX2luZm9fdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgQ3VycmVudCB0cmFuc2ZlciBzdGF0ZSBpbmZvcm1hdGlvbi4NCi0gKi8NCi1zdGF0aWMgaHBkbWFfeGZlcl9pbmZvX3QgZ190cmFuc2ZlcjsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgSW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZXMgZnVuY3Rpb24gcHJvdG90eXBlcy4NCi0gIFRoZSBuYW1lIG9mIHRoZXNlIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzIG11c3QgbWF0Y2ggdGhlIG5hbWUgb2YgdGhlIElTUnMNCi0gIGRlZmluZWQgaW4gc3RhcnR1cF9tMnN4eHgucyBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlcih2b2lkKTsNCi0jZWxzZQ0KLXZvaWQgSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlcih2b2lkKTsNCi0jZW5kaWYgDQotDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgSFBETUFfRXJyb3JfSVJRSGFuZGxlcih2b2lkKTsNCi0jZWxzZQ0KLXZvaWQgSFBETUFfRXJyb3JfSVJRSGFuZGxlcih2b2lkKTsNCi0jZW5kaWYgDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ocGRtYS5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19IUERNQV9pbml0DQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgLyogUmVzZXQgSFBETUEgYmxvY2suICovDQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgfD0gSFBETUFfU09GVF9SRVNFVDsNCi0NCi0gICAgLyogVGFrZSBIUERNQSBjb250cm9sbGVyIG91dCBvZiByZXNldC4gKi8NCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+SFBETUFfU09GVF9SRVNFVDsNCi0NCi0gICAgLyogSW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZXMuICovDQotICAgIGdfdHJhbnNmZXIueGZyX3NpemUgPSAwdTsNCi0gICAgZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIgPSBOVUxMX0hBTkRMRVI7DQotICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9DT01QTEVURUQ7DQotICAgIA0KLSAgICAvKiBEaXNhYmxlIEludGVycnVwdC4gKi8NCi0gICAgSFBETUEtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfUkVHICY9IH5IUERNQUNSX0FMTF9JUlFfRU5BQkxFX01BU0s7DQotDQotICAgIC8qIENsZWFyIGFueSBwcmV2aW91c2x5IHBlbmRlZCBNU1MgSFBETUEgaW50ZXJydXB0LiAqLw0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShIUERNQV9FcnJvcl9JUlFuKTsNCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoSFBETUFfQ29tcGxldGVfSVJRbik7DQotICAgIA0KLSAgICAvKiBDbGVhciBhbGwgaW50ZXJydXB0cy4gKi8NCi0gICAgSFBETUEtPkhQRE1BSUNSX1JFRyA9IEhQRE1BSUNSX0NMRUFSX0FMTF9JUlE7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfaHBkbWEuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfc3RhcnQNCi0oDQotICAgIHVpbnQzMl90IHNyY19hZGRyLA0KLSAgICB1aW50MzJfdCBkZXN0X2FkZHIsDQotICAgIHVpbnQzMl90IHRyYW5zZmVyX3NpemUsDQotICAgIHVpbnQ4X3QgdHJhbnNmZXJfZGlyDQotKQ0KLXsNCi0gICAgLyogUGF1c2UgdHJhbnNmZXIuICovDQotICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX1BBVVNFID0gSFBETUFfRU5BQkxFOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogRGlzYWJsZSBhbGwgaW50ZXJydXB0cyBmb3IgdGhlIGN1cnJlbnQgZGVzY3JpcHRvci4gVHJlYXQgdGhpcyBmdW5jdGlvbiBhcyBhDQotICAgICAqIGNyaXRpY2FsIHNlY3Rpb24uIFBhdXNpbmcgdGhlIGRlc2NyaXB0b3IgdHJhbnNmZXIgaXMgbm90IHN1ZmZpY2llbnQgaW4gY2FzZQ0KLSAgICAgKiBvZiBub24tYWxpZ25lZCBlcnJvcnMuDQotICAgICAqLw0KLSAgICBIUERNQS0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9SRUcgJj0gfkhQRE1BQ1JfQUxMX0lSUV9FTkFCTEVfTUFTSzsNCi0gICAgDQotICAgIC8qIFNldCBkZXNjcmlwdG9yIHRyYW5zZmVyIGRpcmVjdGlvbiAqLw0KLSAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9YRlJfRElSID0gdHJhbnNmZXJfZGlyOw0KLQ0KLSAgICAvKiBTdG9yZSBTb3VyY2UgYW5kIGRlc3RpbmF0aW9uIEFkZHJlc3MgKi8NCi0gICAgSFBETUEtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BU0FSX1JFRyA9IHNyY19hZGRyOw0KLSAgICBIUERNQS0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFEQVJfUkVHID0gZGVzdF9hZGRyOw0KLQ0KLSAgICAvKiBTZXQgdGhlIHRyYW5zZmVyIHNpemUgdG8gNjRLICovDQotICAgIEhQRE1BLT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX1JFRyAmPSBIUERNQV9YRlJfU0laRV9NQVNLOw0KLQ0KLSAgICBnX3RyYW5zZmVyLnN0YXRlID0gSFBETUFfSU5fUFJPR1JFU1M7DQotICAgIGlmKHRyYW5zZmVyX3NpemUgPD0gTUFYX1NJWkVfUEVSX0RNQV9YRlIpDQotICAgIHsNCi0gICAgICAgIC8qIFNldCBkZXNjcmlwdG9yIHRyYW5zZmVyIHNpemUgKi8NCi0gICAgICAgIEhQRE1BLT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX1JFRyB8PSAodWludDE2X3QpdHJhbnNmZXJfc2l6ZTsNCi0gICAgICAgIGdfdHJhbnNmZXIueGZyX3NpemUgPSAwdTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIGdfdHJhbnNmZXIueGZyX3NpemUgPSB0cmFuc2Zlcl9zaXplIC0gTUFYX1NJWkVfUEVSX0RNQV9YRlI7DQotICAgICAgICBnX3RyYW5zZmVyLmRlc19hZGRyID0gZGVzdF9hZGRyICsgTUFYX1NJWkVfUEVSX0RNQV9YRlI7DQotICAgICAgICBnX3RyYW5zZmVyLnNyY19hZGRyID0gc3JjX2FkZHIgKyBNQVhfU0laRV9QRVJfRE1BX1hGUjsNCi0gICAgICAgIGdfdHJhbnNmZXIueGZyX2RpciA9IHRyYW5zZmVyX2RpcjsNCi0gICAgfQ0KLQ0KLSAgICAvKiBFbmFibGUgaW50ZXJydXB0cyBmb3IgdGhlIHJlcXVlc3RlZCBkZXNjcmlwdG9yLiAqLw0KLSAgICBIUERNQS0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9SRUcgfD0gSFBETUFDUl9BTExfSVJRX0VOQUJMRV9NQVNLOw0KLSAgICBOVklDX0VuYWJsZUlSUShIUERNQV9Db21wbGV0ZV9JUlFuKTsNCi0gICAgTlZJQ19FbmFibGVJUlEoSFBETUFfRXJyb3JfSVJRbik7DQotICAgIA0KLSAgICAvKiBTZXQgdmFsaWQgZGVzY3JpcHRvciB0byBzdGFydCB0cmFuc2ZlciAqLw0KLSAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9WQUxJRCA9IEhQRE1BX0VOQUJMRTsNCi0NCi0gICAgLyogU3RhcnQgdHJhbnNmZXIgKi8NCi0gICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfUEFVU0UgPSBIUERNQV9ESVNBQkxFOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX2hwZG1hLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX3BhdXNlDQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgLyogUGF1c2UgdHJhbnNmZXIgKi8NCi0gICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfUEFVU0UgPSBIUERNQV9FTkFCTEU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfaHBkbWEuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfcmVzdW1lDQotKA0KLSAgICB2b2lkDQotKQ0KLXsNCi0gICAgLyogUmVzdW1lIHRyYW5zZmVyICovDQotICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX1BBVVNFID0gSFBETUFfRElTQUJMRTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ocGRtYS5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19IUERNQV9hYm9ydA0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BQ1JfRENQX0NMUiA9IEhQRE1BX0VOQUJMRTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ocGRtYS5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotaHBkbWFfc3RhdHVzX3QNCi1NU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cw0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIHJldHVybiBnX3RyYW5zZmVyLnN0YXRlOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX2hwZG1hLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19IUERNQV9zZXRfaGFuZGxlcg0KLSgNCi0gICAgbXNzX2hwZG1hX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgaWYoaGFuZGxlciA9PSBOVUxMX0hBTkRMRVIpDQotICAgIHsNCi0gICAgICAgIGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyID0gTlVMTF9IQU5ETEVSOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIgPSBoYW5kbGVyOw0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBIUERNQSBUcmFuc2ZlciBjb21wbGV0ZSBzZXJ2aWNlIHJvdXRpbmUuDQotICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGFueSBkZXNjcmlwdG9yIHRyYW5zZmVyDQotICBpcyBjb21wbGV0ZWQgYnkgSFBETUEgY29udHJvbGxlciAuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgSFBETUFfQ29tcGxldGVfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbHNlDQotdm9pZCBIUERNQV9Db21wbGV0ZV9JUlFIYW5kbGVyKHZvaWQpDQotI2VuZGlmIA0KLXsNCi0gICAgLyogQ2xlYXIgaW50ZXJydXB0ICovDQotICAgIEhQRE1BX0JJVEJBTkQtPkhQRE1BSUNSX0NMUl9YRlJfSU5UW0RFU0MwXSA9IEhQRE1BX0VOQUJMRTsNCi0NCi0gICAgaWYoZ190cmFuc2Zlci54ZnJfc2l6ZSA+IDB1KQ0KLSAgICB7DQotICAgICAgICBNU1NfSFBETUFfc3RhcnQoZ190cmFuc2Zlci5zcmNfYWRkciwNCi0gICAgICAgICAgICAgICAgICAgICAgICBnX3RyYW5zZmVyLmRlc19hZGRyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGdfdHJhbnNmZXIueGZyX3NpemUsDQotICAgICAgICAgICAgICAgICAgICAgICAgZ190cmFuc2Zlci54ZnJfZGlyKTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIGdfdHJhbnNmZXIuc3RhdGUgPSBIUERNQV9DT01QTEVURUQ7DQotICAgICAgICBpZihnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlciAhPSBOVUxMX0hBTkRMRVIpDQotICAgICAgICB7DQotICAgICAgICAgICAgKCooZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIpKShIUERNQV9DT01QTEVURUQpOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBIUERNQSBUcmFuc2ZlciBFcnJvciBzZXJ2aWNlIHJvdXRpbmUuDQotICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0IG9mIGFueSBkZXNjcmlwdG9yIHRyYW5zZmVyDQotICBoYXMgYW4gZXJyb3IgY29uZGl0aW9uIG9yIGl0IHRoZXJlIGlzIG5vbiB3b3JkIHRyYW5zZmVyIHNpemUgZXJyb3IuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgSFBETUFfRXJyb3JfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbHNlDQotdm9pZCBIUERNQV9FcnJvcl9JUlFIYW5kbGVyKHZvaWQpDQotI2VuZGlmIA0KLXsNCi0gICAgdWludDMyX3QgZXJyb3JfYml0czsNCi0NCi0gICAgLyoNCi0gICAgICogSGFuZGxlIHNvdXJjZS9kZXN0aW5hdGlvbiBlcnJvcnMuDQotICAgICAqLw0KLSAgICBlcnJvcl9iaXRzID0gSFBETUEtPkhQRE1BRURSX1JFRyAmIEhQRE1BRURSX0RDUF9FUlJfTUFTSzsNCi0gICAgaWYoZXJyb3JfYml0cyAhPSAwdSkNCi0gICAgew0KLSAgICAgICAgaWYoZ190cmFuc2Zlci5jb21wbGV0aW9uX2hhbmRsZXIgIT0gTlVMTF9IQU5ETEVSKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGlmKEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BU1JfRENQX1NFUlIpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBnX3RyYW5zZmVyLnN0YXRlID0gSFBETUFfU09VUkNFX0VSUk9SOw0KLSAgICAgICAgICAgICAgICAoKihnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlcikpKEhQRE1BX1NPVVJDRV9FUlJPUik7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIGlmKEhQRE1BX0JJVEJBTkQtPkRlc2NyaXB0b3JbREVTQzBdLkhQRE1BU1JfRENQX0RFUlIpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBnX3RyYW5zZmVyLnN0YXRlID0gSFBETUFfREVTVElOQVRJT05fRVJST1I7DQotICAgICAgICAgICAgICAgICgqKGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyKSkoSFBETUFfREVTVElOQVRJT05fRVJST1IpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIH0NCi0gICAgICAgIC8qIEFib3J0IHRyYW5zZmVyLiAqLw0KLSAgICAgICAgSFBETUFfQklUQkFORC0+RGVzY3JpcHRvcltERVNDMF0uSFBETUFDUl9EQ1BfQ0xSID0gSFBETUFfRU5BQkxFOw0KLSAgICAgICAgLyogQ2xlYXIgaW50ZXJydXB0LiAqLw0KLSAgICAgICAgSFBETUFfQklUQkFORC0+SFBETUFJQ1JfQ0xSX1hGUl9JTlRbREVTQzBdID0gSFBETUFfRU5BQkxFOw0KLSAgICB9DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBIYW5kbGUgbm9uIHdvcmQgYWxpZ25lZCBlcnJvcnMuDQotICAgICAqLw0KLSAgICBlcnJvcl9iaXRzID0gSFBETUEtPkhQRE1BRURSX1JFRyAmIEhQRE1BRURSX05PTl9XT1JEX0VSUl9NQVNLOw0KLSAgICBpZihlcnJvcl9iaXRzICE9IDB1KQ0KLSAgICB7DQotICAgICAgICBnX3RyYW5zZmVyLnN0YXRlID0gSFBETUFfV09SRF9BTElHTl9FUlJPUjsNCi0gICAgICAgIC8qIENhbGwgaGFuZGxlci4gKi8NCi0gICAgICAgIGlmKGdfdHJhbnNmZXIuY29tcGxldGlvbl9oYW5kbGVyICE9IE5VTExfSEFORExFUikNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAoKihnX3RyYW5zZmVyLmNvbXBsZXRpb25faGFuZGxlcikpKEhQRE1BX1dPUkRfQUxJR05fRVJST1IpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgLyogQWJvcnQgdHJhbnNmZXIuICovDQotICAgICAgICBIUERNQV9CSVRCQU5ELT5EZXNjcmlwdG9yW0RFU0MwXS5IUERNQUNSX0RDUF9DTFIgPSBIUERNQV9FTkFCTEU7DQotICAgICAgICAvKiBDbGVhciBpbnRlcnJ1cHQuICovDQotICAgICAgICBIUERNQV9CSVRCQU5ELT5IUERNQUlDUl9OT05fV09SRF9JTlRbREVTQzBdID0gSFBETUFfRU5BQkxFOw0KLSAgICB9DQotfQ0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ocGRtYS9tc3NfaHBkbWEuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM2YmM0NC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX2hwZG1hL21zc19ocGRtYS5oCisrKyAvZGV2L251bGwKQEAgLTEsMzYxICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEwLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogIFNtYXJ0RnVzaW9uMiBNU1MgSFBETUEgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXIgcHVibGljIEFQSS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDU1ODMgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wNC0wNCAxMjoyOToxOCArMDEwMCAoVGh1LCAwNCBBcHIgMjAxMykgJA0KLSAqLw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovLyoqDQotICBAbWFpbnBhZ2UgU21hcnRGdXNpb24yIE1TUyBIUERNQSBCYXJlIE1ldGFsIERyaXZlci4NCi0NCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gIFRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSAoTVNTKSBpbmNsdWRlcyBhIEhpZ2ggUGVyZm9ybWFuY2UNCi0gIERpcmVjdCBNZW1vcnkgQWNjZXNzIChIUERNQSkgY29udHJvbGxlciB3aGljaCBwZXJmb3JtcyBmYXN0IGRhdGEgdHJhbnNmZXINCi0gIGJldHdlZW4gYW55IE1TUyBtZW1vcnkgY29ubmVjdGVkIHRvIHRoZSBBSEIgYnVzIG1hdHJpeCBhbmQgTVNTIEREUi1CcmlkZ2UNCi0gIG1lbW9yeS4gVGhpcyBzb2Z0d2FyZSBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUNCi0gIE1TUyBIUERNQSBhcyBwYXJ0IG9mIGEgYmFyZSBtZXRhbCBzeXN0ZW0gd2hlcmUgbm8gb3BlcmF0aW5nIHN5c3RlbSBpcw0KLSAgYXZhaWxhYmxlLiBUaGUgZHJpdmVyIGNhbiBiZSBhZGFwdGVkIGZvciB1c2UgYXMgcGFydCBvZiBhbiBvcGVyYXRpbmcgc3lzdGVtDQotICBidXQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlDQotICBvcGVyYXRpbmcgc3lzdGVtJ3MgZHJpdmVyIG1vZGVsIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBkcml2ZXIuDQotICANCi0gIEBzZWN0aW9uIGh3X2RlcGVuZGVuY2llcyBIYXJkd2FyZSBGbG93IERlcGVuZGVuY2llcw0KLSAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYWxsIGZlYXR1cmVzIG9mIHRoZSBNU1MgSFBETUEgaXMgY292ZXJlZCBieSB0aGlzIGRyaXZlci4NCi0gIFRoZXJlIGFyZSBubyBkZXBlbmRlbmNpZXMgb24gdGhlIGhhcmR3YXJlIGZsb3cgd2hlbiBjb25maWd1cmluZyB0aGUgTVNTIEhQRE1BLg0KLSAgVGhlIGJhc2UgYWRkcmVzcywgcmVnaXN0ZXIgYWRkcmVzc2VzIGFuZCBpbnRlcnJ1cHQgbnVtYmVyIGFzc2lnbm1lbnQgZm9yIHRoZQ0KLSAgTVNTIEhQRE1BIGJsb2NrcyBhcmUgZGVmaW5lZCBhcyBjb25zdGFudHMgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdQ0KLSAgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QNCi0gIHNldHRpbmdzIG9mIHRoZSBzb2Z0d2FyZSB0b29sIGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IGFuZCB0aGF0IGl0IGlzDQotICBnZW5lcmF0ZWQgaW50byB5b3VyIHByb2plY3QuDQotICANCi0gIEBzZWN0aW9uIHRoZW9yeV9vcCBUaGVvcnkgb2YgT3BlcmF0aW9uDQotICBUaGUgTVNTIEhQRE1BIGRyaXZlciBmdW5jdGlvbnMgYXJlIGdyb3VwZWQgaW50byB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6DQotICAgIC0gSW5pdGlhbGl6YXRpb24gb2YgdGhlIE1TUyBIUERNQSBkcml2ZXIgYW5kIGhhcmR3YXJlDQotICAgIC0gRGF0YSB0cmFuc2ZlciBjb250cm9sIA0KLSAgICAtIERhdGEgdHJhbnNmZXIgc3RhdHVzDQotICAgIC0gSW50ZXJydXB0IGhhbmRsaW5nDQotICAgIA0KLSAgSW5pdGlhbGl6YXRpb24NCi0gIFRoZSBNU1MgSFBETUEgZHJpdmVyIGlzIGluaXRpYWxpemVkIHRocm91Z2ggYSBjYWxsIHRvIHRoZSBNU1NfSFBETUFfaW5pdCgpDQotICBmdW5jdGlvbi4gVGhlIE1TU19IUERNQV9pbml0KCkgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MNCi0gIEhQRE1BIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4NCi0gIA0KLSAgRGF0YSBUcmFuc2ZlciBDb250cm9sDQotICBUaGUgZHJpdmVyIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHRvIGNvbnRyb2wgSFBETUEgZGF0YSB0cmFuc2ZlcnM6DQotICAgIC0gTVNTX0hQRE1BX3N0YXJ0KCkgIJYgVGhpcyBmdW5jdGlvbiBzdGFydHMgYSBIUERNQSBkYXRhIHRyYW5zZmVyLiBZb3UgbXVzdA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFsb25nDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB0cmFuc2ZlciBzaXplIGFuZCB0cmFuc2ZlciBkaXJlY3Rpb24uDQotICAgIC0gTVNTX0hQRE1BX3BhdXNlKCkgIJYgVGhpcyBmdW5jdGlvbiBwYXVzZXMgdGhlIEhQRE1BIHRyYW5zZmVyIHRoYXQgaXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuDQotICAgIC0gTVNTX0hQRE1BX3Jlc3VtZSgpIJYgVGhpcyBmdW5jdGlvbiByZXN1bWVzIGEgSFBETUEgdHJhbnNmZXIgdGhhdCB3YXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5IHBhdXNlZC4NCi0gICAgLSBNU1NfSFBETUFfYWJvcnQoKSAgliBUaGlzIGZ1bmN0aW9uIGFib3J0cyB0aGUgSFBETUEgdHJhbnNmZXIgdGhhdCBpcw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4NCi0gICAgDQotICBEYXRhIFRyYW5zZmVyIFN0YXR1cw0KLSAgVGhlIHN0YXR1cyBvZiB0aGUgSFBETUEgdHJhbnNmZXIgaW5pdGlhdGVkIGJ5IHRoZSBsYXN0IGNhbGwgdG8NCi0gIE1TU19IUERNQV9zdGFydCgpIGNhbiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhlIE1TU19IUERNQV9nZXRfdHJhbnNmZXJfc3RhdHVzKCkNCi0gIGZ1bmN0aW9uLg0KLSAgDQotICBJbnRlcnJ1cHQgSGFuZGxpbmcNCi0gIFRoZSBNU1NfSFBETUFfc2V0X2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlZ2lzdGVyIGEgaGFuZGxlciBmdW5jdGlvbg0KLSAgdGhhdCB3aWxsIGJlIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIEhQRE1BIHRyYW5zZmVyIGNvbXBsZXRlcy4gWW91IG11c3QNCi0gIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgYSB0cmFuc2ZlciBjb21wbGV0aW9uIGhhbmRsZXIgZnVuY3Rpb24gdG8gc3VpdCB5b3VyDQotICBhcHBsaWNhdGlvbi4NCi0NCi0gKi8vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLSNpZm5kZWYgTVNTX0hQRE1BX0hfDQotI2RlZmluZSBNU1NfSFBETUFfSF8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgSFBETUFfVE9fRERSIGNvbnN0YW50IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24uIEl0DQotICBpbmRpY2F0ZXMgYSB0cmFuc2ZlciBmcm9tIG1lbW9yeSBjb25uZWN0ZWQgdG8gdGhlIEFIQiBidXMgbWF0cml4IHRvIE1TUw0KLSAgRERSLUJyaWRnZSBtZW1vcnkuIEl0IGlzIHVzZWQgYXMgYSBwYXJhbWV0ZXIgYnkgdGhlIE1TU19IUERNQV9zdGFydCgpDQotICBmdW5jdGlvbi4NCi0gKi8NCi0jZGVmaW5lIEhQRE1BX1RPX0REUiAgICAgICAgMHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIEhQRE1BX0ZST01fRERSIGNvbnN0YW50IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgZGF0YSB0cmFuc2ZlciBkaXJlY3Rpb24uIEl0DQotICBpbmRpY2F0ZXMgYSB0cmFuc3RlciBmcm9tIE1TUyBERFItQnJpZGdlIG1lbW9yeSB0byBtZW1vcnkgY29ubmVjdGVkIHRvIHRoZSBBSEINCi0gIGJ1cyBtYXRyaXguIEl0IGlzIHVzZWQgYXMgYSBwYXJhbWV0ZXIgYnkgdGhlIE1TU19IUERNQV9zdGFydCgpIGZ1bmN0aW9uLg0KLSAqLw0KLSNkZWZpbmUgSFBETUFfRlJPTV9ERFIgICAgICAxdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgaHBkbWFfc3RhdHVzX3QgdHlwZSBpcyB1c2VkIHRvIGNvbW11bmljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIEhQRE1BDQotICB0cmFuc2ZlciBpbml0aWF0ZWQgYnkgdGhlIG1vc3QgcmVjZW50IGNhbGwgdG8gSFBETUFfc3RhcnQoKS4gSXQgaW5kaWNhdGVzIGlmDQotICBhIHRyYW5zZmVyIGlzIHN0aWxsIGN1cnJlbnRseSBpbiBwcm9ncmVzcyBvciB0aGUgb3V0Y29tZSBvZiB0aGUgbGF0ZXN0DQotICB0cmFuc2Zlci4gVGhpcyB0eXBlIGlzIHJldHVybmVkIGJ5IHRoZSBNU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cygpDQotICBmdW5jdGlvbiBhbmQgdXNlZCBhcyBwYXJhbWV0ZXIgdG8gaGFuZGxlciBmdW5jdGlvbnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBNU1MNCi0gIEhQRE1BIGRyaXZlciBieSB0aGUgYXBwbGljYXRpb24uDQotICANCi0gIC0gSFBETUFfSU5fUFJPR1JFU1MgICAgICAgLSBBIEhQRE1BIHRyYW5zZmVyIGlzIHRha2luZyBwbGFjZS4NCi0gIC0gSFBETUFfQ09NUExFVEVEICAgICAgICAgLSBUaGUgbW9zdCByZWNlbnQgSFBETUEgdHJhbnNmZXIgaW5pdGlhdGVkIGJ5IGEgY2FsbA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIEhQRE1BX3N0YXJ0KCkgaGFzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQotICAtIEhQRE1BX1NPVVJDRV9FUlJPUiAgICAgIC0gVGhlIG1vc3QgcmVjZW50IEhQRE1BIHRyYW5zZmVyIGZhaWxlZCBiZWNhdXNlIG9mIGENCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtIHdpdGggdGhlIHNvdXJjZSBhZGRyZXNzIHBhc3NlZCB0bw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhQRE1BX3N0YXJ0KCkuDQotICAtIEhQRE1BX0RFU1RJTkFUSU9OX0VSUk9SIC0gVGhlIG1vc3QgcmVjZW50IEhQRE1BIHRyYW5zZmVyIGZhaWxlZCBiZWNhdXNlIG9mIGENCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ibGVtIHdpdGggdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgcGFzc2VkIHRvDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFBETUFfc3RhcnQoKS4NCi0gIC0gSFBETUFfV09SRF9BTElHTl9FUlJPUiAgLSBUaGUgbW9zdCByZWNlbnQgSFBETUEgdHJhbnNmZXIgZmFpbGVkIGJlY2F1c2UgdGhlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNmZXIgc2l6ZSB3YXMgbm90IHdvcmQgYWxpZ25lZC4gVGhpcyBtZWFucw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgdGhlIHRyYW5zZmVyIHNpemUgcGFzc2VkIHRvIEhQRE1BX3N0YXJ0KCkgd2FzDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IGEgbXVsdGlwbGUgb2YgZm91ci4NCi0gKi8NCi10eXBlZGVmIGVudW0NCi17DQotICAgIEhQRE1BX0lOX1BST0dSRVNTLA0KLSAgICBIUERNQV9DT01QTEVURUQsDQotICAgIEhQRE1BX1NPVVJDRV9FUlJPUiwNCi0gICAgSFBETUFfREVTVElOQVRJT05fRVJST1IsDQotICAgIEhQRE1BX1dPUkRfQUxJR05fRVJST1INCi19IGhwZG1hX3N0YXR1c190Ow0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGlzIHR5cGUgZGVmaW5pdGlvbiBzcGVjaWZpZXMgdGhlIHByb3RvdHlwZSBvZiBhIGZ1bmN0aW9uIHRoYXQgY2FuIGJlDQotICByZWdpc3RlcmVkIHdpdGggdGhpcyBkcml2ZXIgYXMgYSBIUERNQSB0cmFuc2ZlciBjb21wbGV0aW9uIGhhbmRsZXIgZnVuY3Rpb24NCi0gIHRocm91Z2ggYSBjYWxsIHRvIE1TU19IUERNQV9zZXRfaGFuZGxlcigpLiBUaGUgSFBETUEgdHJhbnNmZXIgY29tcGxldGlvbg0KLSAgaGFuZGxlciB3aWxsIGJlIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gYSBIUERNQSB0cmFuc2ZlciBjb21wbGV0ZXMuIFRoZSBNU1MNCi0gIEhQRE1BIGRyaXZlciBwYXNzZXMgdGhlIG91dGNvbWUgb2YgdGhlIHRyYW5zZmVyIHRvIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgaW4NCi0gIHRoZSBmb3JtIG9mIGEgaHBkbWFfc3RhdHVzX3QgcGFyYW1ldGVyIGluZGljYXRpbmcgaWYgdGhlIHRyYW5zZmVyIHdhcw0KLSAgc3VjY2Vzc2Z1bCBvciB0aGUgdHlwZSBvZiBlcnJvciB0aGF0IG9jY3VycmVkIGR1cmluZyB0aGUgdHJhbnNmZXIuDQotICovDQotdHlwZWRlZiB2b2lkICgqbXNzX2hwZG1hX2hhbmRsZXJfdCkoaHBkbWFfc3RhdHVzX3Qgc3RhdHVzKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19IUERNQV9pbml0KCkgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIE1TUyBIUERNQSBkcml2ZXIuIEl0IHJlc2V0cyB0aGUNCi0gIEhQRE1BIGNvbnRyb2xsZXIuIEl0IGNsZWFycyBhbGwgcGVuZGluZyBIUERNQSBpbnRlcnJ1cHRzLiBJdCBpbml0aWFsaXplcw0KLSAgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHVzZWQgYnkgdGhlIE1TUyBIUERNQSBkcml2ZXIuIEl0IGRpc2FibGVzIGludGVycnVwdHMNCi0gIHJlbGF0ZWQgdG8gSFBETUEgZGF0YSB0cmFuc2ZlcnMuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiBoYXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkDQotTVNTX0hQRE1BX2luaXQNCi0oDQotICAgIHZvaWQNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0hQRE1BX3N0YXJ0KCkgZnVuY3Rpb24gc3RhcnRzIGEgSFBETUEgZGF0YSB0cmFuc2Zlci4gSXRzIHBhcmFtZXRlcnMNCi0gIHNwZWNpZnkgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWRkcmVzc2VzIG9mIHRoZSB0cmFuc2ZlciBhcyB3ZWxsIGFzIGl0cw0KLSAgc2l6ZSBhbmQgZGlyZWN0aW9uLiBIUERNQSBkYXRhIHRyYW5zZmVycyBhbHdheXMgdXNlIEREUiBtZW1vcnkgYXMgdGhlIHNvdXJjZQ0KLSAgb3IgZGVzdGluYXRpb24gb2YgdGhlIHRyYW5zZmVyLiBUaGUgSFBETUEgY29udHJvbGxlciB0cmFuc2ZlcnMgZGF0YSBpbiAzMi1iaXQNCi0gIGNodW5rcyBsb2NhdGVkIG9uIDMyLWJpdCB3b3JkIGFsaWduZWQgYWRkcmVzcyBib3VuZGFyaWVzLg0KLQ0KLSAgQHBhcmFtIHNyY19hZGRyDQotICAgIFRoZSBwYXJhbWV0ZXIgc3JjX2FkZHIgaXMgdGhlIGFkZHJlc3Mgb2YgdGhlIGRhdGEgdGhhdCB3aWxsIGJlIHRyYW5zZmVycmVkDQotICAgIGJ5IHRoZSBIUERNQS4gVGhpcyBhZGRyZXNzIG11c3QgYmUgMzItYml0IHdvcmQgYWxpZ25lZC4gVGhlIG1lbW9yeSBsb2NhdGlvbg0KLSAgICBzcGVjaWZpZWQgYnkgdGhpcyBhZGRyZXNzIG11c3QgYmUgbG9jYXRlZCBpbiBERFIgbWVtb3J5IGlmIHRoZSB0cmFuc2Zlcl9kaXINCi0gICAgcGFyYW1ldGVyIGlzIHNldCB0byBIUERNX0ZST01fRERSLg0KLQ0KLSAgQHBhcmFtIGRlc3RfYWRkcg0KLSAgICBUaGUgcGFyYW1ldGVyIGRlc3RfYWRkciBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgbG9jYXRpb24gYXQgd2hpY2ggdGhlIGRhdGENCi0gICAgd2lsbCBiZSB0cmFuc2ZlcnJlZC4gVGhpcyBhZGRyZXNzIG11c3QgYmUgMzItYml0IHdvcmQgYWxpZ25lZC4gVGhlIG1lbW9yeQ0KLSAgICBsb2NhdGlvbiBzcGVjaWZpZWQgYnkgdGhpcyBhZGRyZXNzIG11c3QgYmUgbG9jYXRlZCBpbiBERFIgbWVtb3J5IGlmIHRoZQ0KLSAgICB0cmFuc2Zlcl9kaXIgcGFyYW1ldGVyIGlzIHNldCB0byBIUERNX1RPX0REUi4NCi0NCi0gIEBwYXJhbSB0cmFuc2Zlcl9zaXplDQotICAgIFRoZSBwYXJhbWV0ZXIgdHJhbnNmZXJfc2l6ZSBzcGVjaWZpZXMgdGhlIHNpemUgaW4gYnl0ZXMgb2YgdGhlIHJlcXVlc3RlZA0KLSAgICB0cmFuc2Zlci4gVGhlIHZhbHVlIG9mIHRyYW5zZmVyX3NpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIGZvdXIuDQotDQotICBAcGFyYW0gdHJhbnNmZXJfZGlyDQotICAgICBUaGUgcGFyYW1ldGVyIHRyYW5zZmVyX2RpciBpcyB1c2VkIGZvciBzcGVjaWZ5aW5nIHRoZSBkYXRhIHRyYW5zZmVyDQotICAgICBkaXJlY3Rpb24uIEFsbG93ZWQgdmFsdWVzIGZvciB0cmFuc2Zlcl9kaXIgYXJlIGFzIGZvbGxvd3M6DQotICAgICAgICAtIEhQRE1BX1RPX0REUg0KLSAgICAgICAgLSBIUERNQV9GUk9NX0REUg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfc3RhcnQNCi0oDQotICAgIHVpbnQzMl90IHNyY19hZGRyLA0KLSAgICB1aW50MzJfdCBkZXN0X2FkZHIsDQotICAgIHVpbnQzMl90IHRyYW5zZmVyX3NpemUsDQotICAgIHVpbnQ4X3QgdHJhbnNmZXJfZGlyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19IUERNQV9wYXVzZSgpIGZ1bmN0aW9uIHBhdXNlcyB0aGUgY3VycmVudCBIUERNQSB0cmFuc2Zlci4gVGhlIEhQRE1BDQotICB0cmFuc2ZlciBjYW4gYmUgcmVzdW1lZCBsYXRlciAgYnkgY2FsbGluZyBNU1NfSFBETUFfcmVzdW1lKCkuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiBoYXMgbm8gcGFyYW1ldGVycy4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZA0KLU1TU19IUERNQV9wYXVzZQ0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfSFBETUFfcGF1c2UoKSBmdW5jdGlvbiByZXN1bWVzIHRoZSBjdXJyZW50IEhQRE1BIHRyYW5zZmVyIGFmdGVyIGl0IHdhcw0KLSAgcHJldmlvdXNseSBwYXVzZWQgdGhyb3VnaCBhIGNhbGwgdG8gTVNTX0hQRE1BX3BhdXNlKCkuDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiBoYXMgbm8gcGFyYW1ldGVycy4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZA0KLU1TU19IUERNQV9yZXN1bWUNCi0oDQotICAgIHZvaWQNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX0hQRE1BX2Fib3J0KCkgZnVuY3Rpb24gYWJvcnRzIHRoZSBjdXJyZW50IEhQRE1BIHRyYW5zZmVyLg0KLQ0KLSAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gaGFzIG5vIHBhcmFtZXRlcnMuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfYWJvcnQNCi0oDQotICAgIHZvaWQNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotIFRoZSBNU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cygpIGZ1bmN0aW9uIHJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgSFBETUENCi0gdHJhbnNmZXIgaW5pdGlhdGVkIGJ5IGEgY2FsbCB0byBNU1NfSFBETUFfc3RhcnQoKS4gDQotDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiBoYXMgbm8gcGFyYW1ldGVycy4NCi0gICAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cygpIGZ1bmN0aW9uIHJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgSFBETUENCi0gICAgdHJhbnNmZXIgYXMgYSB2YWx1ZSBvZiAgdHlwZSBocGRtYV9zdGF0dXNfdC4gVGhlIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgYXJlOg0KLSAgICAgICAgLSBIUERNQV9JTl9QUk9HUkVTUw0KLSAgICAgICAgLSBIUERNQV9DT01QTEVURUQNCi0gICAgICAgIC0gSFBETUFfU09VUkNFX0VSUk9SDQotICAgICAgICAtIEhQRE1BX0RFU1RJTkFUSU9OX0VSUk9SDQotICAgICAgICAtIEhQRE1BX1dPUkRfQUxJR05fRVJST1INCi0gICAgICANCi0gIFRoZSBleGFtcGxlIGNvZGUgYmVsb3cgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhlDQotICBNU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cygpIGZ1bmN0aW9uIHRvIGRldGVjdCB0aGUgY29tcGxldGlvbiBvZiB0aGUNCi0gIHRyYW5zZmVyIG9mIHRoZSBjb250ZW50IG9mIGVOVk0gaW50byBNRERSIG1lbW9yeS4NCi0gIEBjb2RlDQotICAgIHZvaWQgY29weV9lbnZtX3RvX21kZHIodm9pZCkNCi0gICAgew0KLSAgICAgICAgTVNTX0hQRE1BX3N0YXJ0KEVOVk1fQkFTRV9BRERSLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIE1ERFJfQkFTRV9BRERSLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIEVOVk1fU0laRV9CWVRFLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIEhQRE1BX1RPX0REUik7DQotICAgICAgICANCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICB4ZmVyX3N0YXRlID0gTVNTX0hQRE1BX2dldF90cmFuc2Zlcl9zdGF0dXMoKTsNCi0gICAgICAgIH0gd2hpbGUoSFBETUFfSU5fUFJPR1JFU1MgPT0geGZlcl9zdGF0ZSk7DQotICAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotaHBkbWFfc3RhdHVzX3QNCi1NU1NfSFBETUFfZ2V0X3RyYW5zZmVyX3N0YXR1cw0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfSFBETUFfc2V0X2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlZ2lzdGVyIGEgaGFuZGxlciBmdW5jdGlvbg0KLSAgdGhhdCB3aWxsIGJlIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gdGhlIEhQRE1BIHRyYW5zZmVyIGNvbXBsZXRlcy4gWW91IG11c3QNCi0gIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgYSB0cmFuc2ZlciBjb21wbGV0aW9uIGhhbmRsZXIgZnVuY3Rpb24gdG8gc3VpdCB5b3VyDQotICBhcHBsaWNhdGlvbi4gVGhlIE1TUyBIUERNQSBkcml2ZXIgcGFzc2VzIHRoZSBvdXRjb21lIG9mIHRoZSB0cmFuc2ZlciB0byB0aGUNCi0gIGNvbXBsZXRpb24gaGFuZGxlciBpbiB0aGUgZm9ybSBvZiBhIGhwZG1hX3N0YXR1c190IHBhcmFtZXRlciBpbmRpY2F0aW5nIGlmIHRoZQ0KLSAgdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWwgb3IgdGhlIHR5cGUgb2YgZXJyb3IgdGhhdCBvY2N1cnJlZCBkdXJpbmcgdGhlIHRyYW5zZmVyDQotICBpZiB0aGUgdHJhbnNmZXIgZmFpbGVkLg0KLQ0KLSAgQHBhcmFtIGhhbmRsZXINCi0gICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGhhbmRsZXIgZnVuY3Rpb24gcHJvdmlkZWQgYnkgeW91cg0KLSAgICBhcHBsaWNhdGlvbi4gVGhpcyBoYW5kbGVyIGlzIG9mIHR5cGUgbXNzX2hwZG1hX2hhbmRsZXJfdC4gVGhlIGhhbmRsZXINCi0gICAgZnVuY3Rpb24gbXVzdCB0YWtlIG9uZSBwYXJhbWV0ZXIgb2YgdHlwZSBocGRtYV9zdGF0dXNfdCBhbmQgbXVzdCBub3QgcmV0dXJuDQotICAgIGEgdmFsdWUuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICAgIA0KLSAgVGhpcyBleGFtcGxlIGNvZGUgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgdGhlIE1TU19IUERNQV9zZXRfaGFuZGxlcigpDQotICBmdW5jdGlvbjoNCi0gIEBjb2RlDQotICAgIHZvaWQgdHJhbnNmZXJfY29tcGxldGVfaGFuZGxlcihocGRtYV9zdGF0dXNfdCBzdGF0dXMpOw0KLQ0KLSAgICB2b2xhdGlsZSB1aW50MzJfdCBnX3hmZXJfaW5fcHJvZ3Jlc3MgPSAwOw0KLQ0KLSAgICB2b2lkIGRlbW9fdHJhbnNmZXIodm9pZCkNCi0gICAgew0KLSAgICAgICAgTVNTX0hQRE1BX2luaXQoKTsNCi0gICAgICAgIA0KLSAgICAgICAgTVNTX0hQRE1BX3NldF9oYW5kbGVyKHRyYW5zZmVyX2NvbXBsZXRlX2hhbmRsZXIpOw0KLSAgICAgICAgDQotICAgICAgICBnX3hmZXJfaW5fcHJvZ3Jlc3MgPSAxOw0KLSAgICAgICAgTVNTX0hQRE1BX3N0YXJ0KCh1aW50MzJfdCkweDIwMDAwMDAwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkweDAwMDAwMDAwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIDIwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIEhQRE1BX0ZST01fRERSKTsNCi0gICAgICAgIA0KLSAgICAgICAgd2hpbGUoZ194ZmVyX2luX3Byb2dyZXNzKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIDsNCi0gICAgICAgIH0NCi0gICAgfQ0KLQ0KLSAgICB2b2lkIHRyYW5zZmVyX2NvbXBsZXRlX2hhbmRsZXIoaHBkbWFfc3RhdHVzX3Qgc3RhdHVzKQ0KLSAgICB7DQotICAgICAgICBnX3hmZXJfaW5fcHJvZ3Jlc3MgPSAwOw0KLSAgICAgICAgDQotICAgICAgICBzd2l0Y2goc3RhdHVzKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGNhc2UgSFBETUFfQ09NUExFVEVEOg0KLSAgICAgICAgICAgICAgICBkaXNwbGF5KCJUcmFuc2ZlciBjb21wbGV0ZSIpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgSFBETUFfU09VUkNFX0VSUk9SOg0KLSAgICAgICAgICAgICAgICBkaXNwbGF5KCJUcmFuc2ZlciBmYWlsZWQ6IHNvdXJjZSBlcnJvciIpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgSFBETUFfREVTVElOQVRJT05fRVJST1I6DQotICAgICAgICAgICAgICAgIGRpc3BsYXkoIlRyYW5zZmVyIGZhaWxlZDogZGVzdGluYXRpb24gZXJyb3IiKTsNCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIEhQRE1BX1dPUkRfQUxJR05fRVJST1I6DQotICAgICAgICAgICAgICAgIGRpc3BsYXkoIlRyYW5zZmVyIGZhaWxlZDogd29yZCBhbGlnbm1lbnQgZXJyb3IiKTsNCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgICAgICBkaXNwbGF5KCJVbmV4cGVjdGVkIHN0YXR1cyIpOw0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLSAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfSFBETUFfc2V0X2hhbmRsZXINCi0oDQotICAgIG1zc19ocGRtYV9oYW5kbGVyX3QgaGFuZGxlcg0KLSk7DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KLQ0KLSNlbmRpZiAvKiBNU1NfSFBETUFfSF8gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYTY1NzEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19udm0vbXNzX252bS5jCisrKyAvZGV2L251bGwKQEAgLTEsNjk0ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBUaGlzIHNvdXJjZSBmaWxlIGNvbnRhaW5zIFNtYXJ0RnVzaW9uMiBlTlZNIGRyaXZlciBjb2RlLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTMxNiAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTI0IDEyOjMzOjE1ICswMDAwIChTdW4sIDI0IE1hciAyMDEzKSAkDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL3N5c3RlbV9tMnN4eHguaCINCi0jaW5jbHVkZSAibXNzX252bS5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQcmVwcm9jZXNzb3IgZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qICAgICBlTlZNIGNvbW1hbmQgY29kZXMgICAgICAgKi8NCi0jZGVmaW5lIFBST0dfQURTICAgICAgIDB4MDgwMDAwMDB1ICAvKiBPbmUgc2hvdCBwcm9ncmFtIHdpdGggZGF0YSBpbiBXRCAqLw0KLSNkZWZpbmUgVkVSSUZZX0FEUyAgICAgMHgxMDAwMDAwMHUgIC8qIE9uZSBzaG90IHZlcmlmaWNhdGlvbiB3aXRoIGRhdGEgaW4gV0QgKi8NCi0jZGVmaW5lIFVTRVJfVU5MT0NLICAgIDB4MTMwMDAwMDB1ICAvKiBVc2VyIHVubG9jayAqLw0KLQ0KLSNkZWZpbmUgQklUU19QRVJfUEFHRSAgMTAyNHUgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIGJpdHMgcGVyIHBhZ2UgKi8NCi0jZGVmaW5lIEJZVEVTX1BFUl9QQUdFIChCSVRTX1BFUl9QQUdFIC8gOHUpICAgIC8qIE51bWJlciBvZiBieXRlcyBwZXIgcGFnZSAqLw0KLQ0KLSNkZWZpbmUgTlZNX09GRlNFVF9TSUdOSUZJQ0FOVF9CSVRTICAgICAweDAwMDdGRkZGdQ0KLSNkZWZpbmUgTlZNMV9CT1RUT01fT0ZGU0VUICAgICAgICAgICAgICAweDAwMDQwMDAwdQ0KLSNkZWZpbmUgTlZNMV9UT1BfT0ZGU0VUICAgICAgICAgICAgICAgICAweDAwMDdGRkZGdQ0KLQ0KLSNkZWZpbmUgTlZNX0JBU0VfQUREUkVTUyAgICAgICAgICAgICAgICAweDYwMDAwMDAwdQ0KLQ0KLSNkZWZpbmUgUEFHRV9BRERSX01BU0sgICAgICAgICAgICAgICAgICAweEZGRkZGRjgwdQ0KLQ0KLSNkZWZpbmUgQkxPQ0sxX0ZJUlNUX1dPUkRfT0ZGU0VUICAgICAgICAweDAwMDEwMDAwdQ0KLQ0KLSNkZWZpbmUgV0RfV09SRF9TSVpFICAgICAgICAzMnUNCi0NCi0jZGVmaW5lIE5CX09GX0JZVEVTX0lOX0FfV09SRCAgICAgICAgICAgNHUNCi0NCi0jZGVmaW5lIFdSSVRFX0VSUk9SX01BU0sgICAgKE1TU19OVk1fVkVSSUZZX0ZBSUwgfCBcDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfTlZNX0VWRVJJRllfRkFJTCB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19OVk1fV1ZFUklGWV9GQUlMIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX05WTV9QRUZBSUxfTE9DSyB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19OVk1fV1JDTlRfT1ZFUiB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19OVk1fV1JfREVOSUVEKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogQ29tYmluZWQgc3RhdHVzIGRlZmluaXRpb25zDQotICogQmVsb3cgZGVmaW5pdGlvbnMgc2hvdWxkIGJlIHVzZWQgdG8gZGVjb2RlZCB0aGUgYml0IGVuY29kZWQgc3RhdHVzIHJldHVybmVkIA0KLSAqIGJ5IHRoZSBmdW5jdGlvbiBNU1NfTlZNX2dldF9zdGF0dXMoKS4NCi0gKi8NCi0jZGVmaW5lIE1TU19OVk1fQlVTWV9CICAgICAgICAgICAgICAoMXUpICAgICAgICAvKiBOVk0gaXMgcGVyZm9ybWluZyBhbiBpbnRlcm5hbCBvcGVyYXRpb24gKi8NCi0jZGVmaW5lIE1TU19OVk1fVkVSSUZZX0ZBSUwgICAgICAgICAoKHVpbnQzMl90KTEgPDwgMXUpICAgICAvKiBOVk0gdmVyaWZ5IG9wZXJhdGlvbiBmYWlsZWQgKi8NCi0jZGVmaW5lIE1TU19OVk1fRVZFUklGWV9GQUlMICAgICAgICAoKHVpbnQzMl90KTEgPDwgMnUpICAgICAvKiBOVk0gZXJhc2UgdmVyaWZ5IG9wZXJhdGlvbiBmYWlsZWQgKi8NCi0jZGVmaW5lIE1TU19OVk1fV1ZFUklGWV9GQUlMICAgICAgICAoKHVpbnQzMl90KTEgPDwgM3UpICAgICAvKiBOVk0gd3JpdGUgdmVyaWZ5IG9wZXJhdGlvbiBmYWlsZWQgKi8NCi0jZGVmaW5lIE1TU19OVk1fUEVGQUlMX0xPQ0sgICAgICAgICAoKHVpbnQzMl90KTEgPDwgNHUpICAgICAvKiBOVk0gcHJvZ3JhbSAvIGVyYXNlIG9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIHBhZ2UgbG9jayAqLw0KLSNkZWZpbmUgTVNTX05WTV9XUkNOVF9PVkVSICAgICAgICAgICgodWludDMyX3QpMSA8PCA1dSkgICAgIC8qIE5WTSB3cml0ZSBjb3VudCBvdmVyZmxvd2VkICovDQotI2RlZmluZSBNU1NfTlZNX1dSX0RFTklFRCAgICAgICAgICAgKCh1aW50MzJfdCkxIDw8IDE4dSkgICAgLyogTlZNIHdyaXRlIGlzIGRlbmllZCBkdWUgdG8gcHJvdGVjdGlvbiAqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogDQotICovDQotI2RlZmluZSBOVk1fQkxPQ0tfMCAgICAgMHUNCi0jZGVmaW5lIE5WTV9CTE9DS18xICAgICAxdQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogDQotICovDQotI2RlZmluZSBNQVhfNTEyS19PRkZTRVQgICAgIDB4MDAwODAwMDB1DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIEdsb2JhbCBkYXRhIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIExvb2stdXAgdGFibGUgZm9yIE5WTSBibG9ja3MuDQotICovDQotc3RhdGljIE5WTV9UeXBlRGVmICogY29uc3QgZ19udm1bXSA9IA0KLXsNCi0gICAgRU5WTV8xICwNCi0gICAgRU5WTV8yDQotfTsNCi0NCi1zdGF0aWMgTlZNMzJfVHlwZURlZiAqIGNvbnN0IGdfbnZtMzJbXSA9DQotew0KLSAgICAoTlZNMzJfVHlwZURlZiAqKUVOVk0xX0JBU0UgLA0KLSAgICAoTlZNMzJfVHlwZURlZiAqKUVOVk0yX0JBU0UNCi19Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQcml2YXRlIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLXN0YXRpYyBudm1fc3RhdHVzX3QgcmVxdWVzdF9udm1fYWNjZXNzDQotKA0KLSAgICB1aW50MzJfdCBudm1fYmxvY2tfaWQNCi0pOw0KLQ0KLXN0YXRpYyBudm1fc3RhdHVzX3QgZ2V0X2N0cmxfYWNjZXNzDQotKA0KLSAgICB1aW50MzJfdCBudm1fb2Zmc2V0LA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoDQotKTsNCi0NCi1zdGF0aWMgdm9pZCByZWxlYXNlX2N0cmxfYWNjZXNzKHZvaWQpOw0KLQ0KLXN0YXRpYyB1aW50MzJfdCBnZXRfcmVtYWluaW5nX3BhZ2VfbGVuZ3RoDQotKA0KLSAgICB1aW50MzJfdCBvZmZzZXQsDQotICAgIHVpbnQzMl90ICBsZW5ndGgNCi0pOw0KLQ0KLXN0YXRpYyB2b2lkIGZpbGxfd2RfYnVmZmVyDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhLA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoLA0KLSAgICB1aW50MzJfdCBibG9jaywNCi0gICAgdWludDMyX3Qgb2Zmc2V0DQotKTsNCi0NCi1zdGF0aWMgdWludDMyX3QgDQotd3JpdGVfbnZtDQotKA0KLSAgICB1aW50MzJfdCBhZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogcGlkYXRhLA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoLA0KLSAgICB1aW50MzJfdCAgbG9ja19wYWdlLA0KLSAgICB1aW50MzJfdCAqIHBfc3RhdHVzDQotKTsNCi0NCi1zdGF0aWMgdWludDMyX3QgDQotd2FpdF9udm1fcmVhZHkNCi0oDQotICAgIHVpbnQzMl90IGJsb2NrDQotKTsNCi0NCi1zdGF0aWMgbnZtX3N0YXR1c190IGdldF9lcnJvcl9jb2RlKHVpbnQzMl90IG52bV9od19zdGF0dXMpOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQdWJsaWMgZnVuY3Rpb24gZGVmaW5pdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX252bS5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi1udm1fc3RhdHVzX3QgDQotTlZNX3dyaXRlDQotKA0KLSAgICB1aW50MzJfdCBzdGFydF9hZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogcGlkYXRhLA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoLA0KLSAgICB1aW50MzJfdCAgbG9ja19wYWdlDQotKQ0KLXsNCi0gICAgbnZtX3N0YXR1c190IHN0YXR1czsNCi0gICAgdWludDMyX3QgbnZtX29mZnNldDsNCi0gICAgdWludDMyX3QgZGV2aWNlX3ZlcnNpb247DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBQcmV2ZW50IHBhZ2VzIGJlaW5nIGxvY2tlZCBmb3Igc2lsaWNvbiB2ZXJzaW9ucyB3aGljaCBkbyBub3QgYWxsb3cNCi0gICAgICogbG9ja2VkIHBhZ2VzIHRvIGJlIHVubG9ja2VkLg0KLSAgICAgKi8NCi0gICAgZGV2aWNlX3ZlcnNpb24gPSBTWVNSRUctPkRFVklDRV9WRVJTSU9OOw0KLSAgICBpZigoMHgwMDAwRjgwMnUgPT0gZGV2aWNlX3ZlcnNpb24pIHx8ICgweDAwMDFGODAydSA9PSBkZXZpY2VfdmVyc2lvbikpDQotICAgIHsNCi0gICAgICAgIGxvY2tfcGFnZSA9IE5WTV9ET19OT1RfTE9DS19QQUdFOw0KLSAgICB9DQotICAgIA0KLSAgICAvKiBJZ25vcmUgdXBwZXIgYWRkcmVzcyBiaXRzIHRvIGlnbm9yZSByZW1hcHBpbmcgc2V0dGluZy4gKi8NCi0gICAgbnZtX29mZnNldCA9IHN0YXJ0X2FkZHIgJiBOVk1fT0ZGU0VUX1NJR05JRklDQU5UX0JJVFM7ICAvKiBJZ25vcmUgcmVtYXBwaW5nLiAqLw0KLSAgICANCi0gICAgLyogQ2hlY2sgYWdhaW5zdCBhdHRlbXB0IHRvIHdyaXRlIGRhdGEgbGFyZ2VyIHRoYW4gZU5WTS4gKi8NCi0gICAgQVNTRVJUKChudm1fb2Zmc2V0ICsgbGVuZ3RoKSA8IE1BWF81MTJLX09GRlNFVCk7DQotICAgIGlmKChudm1fb2Zmc2V0ICsgbGVuZ3RoKSA8IE1BWF81MTJLX09GRlNFVCkNCi0gICAgew0KLSAgICAgICAgLyogR2FpbiBleGNsdXNpdmUgYWNjZXNzIHRvIGVOVk0gY29udHJvbGxlciAqLw0KLSAgICAgICAgc3RhdHVzID0gZ2V0X2N0cmxfYWNjZXNzKG52bV9vZmZzZXQsIGxlbmd0aCk7DQotDQotICAgICAgICAvKiBXcml0ZSBlTlZNIG9uZSBwYWdlIGF0IGEgdGltZS4gKi8NCi0gICAgICAgIGlmKE5WTV9TVUNDRVNTID09IHN0YXR1cykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1aW50MzJfdCByZW1haW5pbmdfbGVuZ3RoID0gbGVuZ3RoOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIHdoaWxlKChyZW1haW5pbmdfbGVuZ3RoID4gMHUpICYmIChOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDMyX3QgbGVuZ3RoX3dyaXR0ZW47DQotICAgICAgICAgICAgICAgIHVpbnQzMl90IG52bV9od19zdGF0dXMgPSAwdTsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGxlbmd0aF93cml0dGVuID0gd3JpdGVfbnZtKHN0YXJ0X2FkZHIgKyAobGVuZ3RoIC0gcmVtYWluaW5nX2xlbmd0aCksIA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGlkYXRhW2xlbmd0aCAtIHJlbWFpbmluZ19sZW5ndGhdLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW5pbmdfbGVuZ3RoLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrX3BhZ2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZudm1faHdfc3RhdHVzKTsNCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGlmKDB1ID09IGxlbmd0aF93cml0dGVuKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBnZXRfZXJyb3JfY29kZShudm1faHdfc3RhdHVzKTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBlbHNlIGlmKHJlbWFpbmluZ19sZW5ndGggPiBsZW5ndGhfd3JpdHRlbikNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nX2xlbmd0aCAtPSBsZW5ndGhfd3JpdHRlbjsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZ19sZW5ndGggPSAwdTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICANCi0gICAgICAgICAgICAvKiBSZWxlYXNlIGVOVk0gY29udHJvbGxlcnMgc28gdGhhdCBvdGhlciBtYXN0ZXJzIGNhbiBnYWluIGFjY2VzcyB0byBpdC4gKi8NCi0gICAgICAgICAgICByZWxlYXNlX2N0cmxfYWNjZXNzKCk7DQotICAgICAgICB9DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBOVk1fSU5WQUxJRF9QQVJBTUVURVI7DQotICAgIH0NCi0NCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgR2VuZXJhdGUgZXJyb3IgY29kZSBiYXNlZCBvbiBOVk0gc3RhdHVzIHZhbHVlLg0KLSAgDQotICBUaGUgaGFyZHdhcmUgbnZtIHN0YXR1cyBwYXNzZWQgYXMgcGFyYW1ldGVyIGlzIGV4cGVjdGVkIHRvIGJlIG1hc2tlZCB1c2luZyB0aGUNCi0gIGZvbGxvd2luZyBtYXNrOg0KLSAgICAgICAgICAgICAgICAoTVNTX05WTV9WRVJJRllfRkFJTCB8IFwNCi0gICAgICAgICAgICAgICAgIE1TU19OVk1fRVZFUklGWV9GQUlMIHwgXA0KLSAgICAgICAgICAgICAgICAgTVNTX05WTV9XVkVSSUZZX0ZBSUwgfCBcDQotICAgICAgICAgICAgICAgICBNU1NfTlZNX1BFRkFJTF9MT0NLIHwgXA0KLSAgICAgICAgICAgICAgICAgTVNTX05WTV9XUkNOVF9PVkVSIHwgXA0KLSAgICAgICAgICAgICAgICAgTVNTX05WTV9XUl9ERU5JRUQpDQotICANCi0gKi8NCi1zdGF0aWMgbnZtX3N0YXR1c190IGdldF9lcnJvcl9jb2RlKHVpbnQzMl90IG52bV9od19zdGF0dXMpDQotew0KLSAgICBudm1fc3RhdHVzX3Qgc3RhdHVzOw0KLSAgICBpZihudm1faHdfc3RhdHVzICYgTVNTX05WTV9XUl9ERU5JRUQpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE5WTV9QUk9URUNUSU9OX0VSUk9SOw0KLSAgICB9DQotICAgIGVsc2UgaWYobnZtX2h3X3N0YXR1cyAmIE1TU19OVk1fV1JDTlRfT1ZFUikNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTlZNX1dSSVRFX1RIUkVTSE9MRF9FUlJPUjsNCi0gICAgfQ0KLSAgICBlbHNlIGlmKG52bV9od19zdGF0dXMgJiBNU1NfTlZNX1BFRkFJTF9MT0NLKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBOVk1fUEFHRV9MT0NLX0VSUk9SOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTlZNX1ZFUklGWV9GQUlMVVJFOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc19udm0uaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotbnZtX3N0YXR1c190DQotTlZNX3VubG9jaw0KLSgNCi0gICAgdWludDMyX3Qgc3RhcnRfYWRkciwNCi0gICAgdWludDMyX3QgbGVuZ3RoDQotKQ0KLXsNCi0gICAgbnZtX3N0YXR1c190IHN0YXR1czsNCi0gICAgdWludDMyX3QgbnZtX29mZnNldDsNCi0gICAgdWludDMyX3QgZmlyc3RfcGFnZTsNCi0gICAgdWludDMyX3QgbGFzdF9wYWdlOw0KLSAgICB1aW50MzJfdCBjdXJyZW50X3BhZ2U7DQotICAgIHVpbnQzMl90IGN1cnJlbnRfb2Zmc2V0Ow0KLSAgICANCi0gICAgLyogSWdub3JlIHVwcGVyIGFkZHJlc3MgYml0cyB0byBpZ25vcmUgcmVtYXBwaW5nIHNldHRpbmcuICovDQotICAgIG52bV9vZmZzZXQgPSBzdGFydF9hZGRyICYgTlZNX09GRlNFVF9TSUdOSUZJQ0FOVF9CSVRTOyAgLyogSWdub3JlIHJlbWFwcGluZy4gKi8NCi0gICAgDQotICAgIC8qIENoZWNrIGFnYWluc3QgYXR0ZW1wdCB0byB3cml0ZSBkYXRhIGxhcmdlciB0aGFuIGVOVk0uICovDQotICAgIEFTU0VSVCgobnZtX29mZnNldCArIGxlbmd0aCkgPCBNQVhfNTEyS19PRkZTRVQpOw0KLSAgICBpZigobnZtX29mZnNldCArIGxlbmd0aCkgPCBNQVhfNTEyS19PRkZTRVQpDQotICAgIHsNCi0gICAgICAgIGN1cnJlbnRfb2Zmc2V0ID0gbnZtX29mZnNldDsNCi0gICAgICAgIA0KLSAgICAgICAgZmlyc3RfcGFnZSA9IG52bV9vZmZzZXQgLyBCWVRFU19QRVJfUEFHRTsNCi0gICAgICAgIGxhc3RfcGFnZSA9IChudm1fb2Zmc2V0ICsgbGVuZ3RoKSAvIEJZVEVTX1BFUl9QQUdFOw0KLQ0KLSAgICAgICAgLyogR2FpbiBleGNsdXNpdmUgYWNjZXNzIHRvIGVOVk0gY29udHJvbGxlciAqLw0KLSAgICAgICAgc3RhdHVzID0gZ2V0X2N0cmxfYWNjZXNzKG52bV9vZmZzZXQsIGxlbmd0aCk7DQotDQotICAgICAgICAvKiBVbmxvY2sgZU5WTSBvbmUgcGFnZSBhdCBhIHRpbWUuICovDQotICAgICAgICBpZihOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpDQotICAgICAgICB7DQotICAgICAgICAgICAgdWludDMyX3QgYmxvY2s7DQotICAgICAgICAgICAgdWludDMyX3QgaW5jOw0KLSAgICAgICAgICAgIHVpbnQzMl90IGZpcnN0X3dvcmQ7DQotICAgICAgICAgICAgdWludDMyX3Qgd29yZF9vZmZzZXQ7DQotICAgICAgICAgICAgdWludDMyX3QgKiBwX252bTMyOw0KLSAgICAgICAgICAgIHVpbnQzMl90IGVycm9yczsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBwX252bTMyID0gKHVpbnQzMl90ICopTlZNX0JBU0VfQUREUkVTUzsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBmaXJzdF93b3JkID0gbnZtX29mZnNldCAvIDR1Ow0KLSAgICAgICAgICAgIHdvcmRfb2Zmc2V0ID0gZmlyc3Rfd29yZDsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBmb3IoY3VycmVudF9wYWdlID0gZmlyc3RfcGFnZTsNCi0gICAgICAgICAgICAgICAgKGN1cnJlbnRfcGFnZSA8PSBsYXN0X3BhZ2UpICYmIChOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpOw0KLSAgICAgICAgICAgICAgICArK2N1cnJlbnRfcGFnZSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQzMl90IGN0cmxfc3RhdHVzOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBpZih3b3JkX29mZnNldCA+PSBCTE9DSzFfRklSU1RfV09SRF9PRkZTRVQpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGJsb2NrID0gTlZNX0JMT0NLXzE7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBibG9jayA9IE5WTV9CTE9DS18wOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBmb3IoaW5jID0gMHU7IGluYyA8IFdEX1dPUkRfU0laRTsgKytpbmMpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGdfbnZtMzJbYmxvY2tdLT5XRFtpbmNdID0gcF9udm0zMlt3b3JkX29mZnNldF07DQotICAgICAgICAgICAgICAgICAgICArK3dvcmRfb2Zmc2V0Ow0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICBnX252bVtibG9ja10tPlBBR0VfTE9DSyA9IE5WTV9ET19OT1RfTE9DS19QQUdFOw0KLSAgICAgICAgICAgICAgICBnX252bVtibG9ja10tPkNNRCA9IFVTRVJfVU5MT0NLOw0KLQ0KLSAgICAgICAgICAgICAgICAvKiBJc3N1ZSBwcm9ncmFtIGNvbW1hbmQgKi8NCi0gICAgICAgICAgICAgICAgZ19udm1bYmxvY2tdLT5DTUQgPSBQUk9HX0FEUyB8IChjdXJyZW50X29mZnNldCAmIFBBR0VfQUREUl9NQVNLKTsNCi0gICAgICAgICAgICAgICAgY3VycmVudF9vZmZzZXQgKz0gQllURVNfUEVSX1BBR0U7DQotICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICAvKiBXYWl0IGZvciBOVk0gdG8gYmVjb21lIHJlYWR5LiAqLw0KLSAgICAgICAgICAgICAgICBjdHJsX3N0YXR1cyA9IHdhaXRfbnZtX3JlYWR5KGJsb2NrKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogQ2hlY2sgZm9yIGVycm9ycy4gKi8NCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gY3RybF9zdGF0dXMgJiBXUklURV9FUlJPUl9NQVNLOw0KLSAgICAgICAgICAgICAgICBpZihlcnJvcnMpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IG52bV9od19zdGF0dXM7DQotICAgICAgICAgICAgICAgICAgICBudm1faHdfc3RhdHVzID0gZ19udm1bYmxvY2tdLT5TVEFUVVM7DQotICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBnZXRfZXJyb3JfY29kZShudm1faHdfc3RhdHVzKTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICANCi0gICAgICAgICAgICAvKiBSZWxlYXNlIGVOVk0gY29udHJvbGxlcnMgc28gdGhhdCBvdGhlciBtYXN0ZXJzIGNhbiBnYWluIGFjY2VzcyB0byBpdC4gKi8NCi0gICAgICAgICAgICByZWxlYXNlX2N0cmxfYWNjZXNzKCk7DQotICAgICAgICB9DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBOVk1fSU5WQUxJRF9QQVJBTUVURVI7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKiBQcml2YXRlIGZ1bmN0aW9uIGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotI2RlZmluZSBBQ0NFU1NfUkVRVUVTVF9USU1FT1VUICAgICAgMHgwMDgwMDAwMHUNCi0jZGVmaW5lIFJFUVVFU1RfTlZNX0FDQ0VTUyAgICAgICAgICAweDAxdQ0KLSNkZWZpbmUgQ09SVEVYX00zX0FDQ0VTU19HUkFOVEVEICAgIDB4MDV1DQotDQotc3RhdGljIHVpbnQ4X3QgZ19lbnZtX2N0cmxfbG9ja3MgPSAweDAwdTsNCi0NCi1zdGF0aWMgbnZtX3N0YXR1c190DQotcmVxdWVzdF9udm1fYWNjZXNzDQotKA0KLSAgICB1aW50MzJfdCBudm1fYmxvY2tfaWQNCi0pDQotew0KLSAgICBudm1fc3RhdHVzX3Qgc3RhdHVzID0gTlZNX1NVQ0NFU1M7DQotICAgIHZvbGF0aWxlIHVpbnQzMl90IHRpbWVvdXRfY291bnRlcjsNCi0gICAgdWludDMyX3QgYWNjZXNzOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogVXNlIHRoZSBTeXN0ZW1Db3JlQ2xvY2sgZnJlcXVlbmN5IHRvIGNvbXB1dGUgYSBkZWxheSBjb3VudGVyIHZhbHVlIGdpdmluZw0KLSAgICAgKiB1cyBhIGRlbGF5IGluIHRoZSA1MDBtcyByYW5nZS4gVGhpcyBpcyBhIHZlcnkgYXBwcm94aW1hdGUgZGVsYXkuDQotICAgICAqLw0KLSAgICB0aW1lb3V0X2NvdW50ZXIgPSBTeXN0ZW1Db3JlQ2xvY2sgLyAxNnU7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBHYWluIGFjY2VzcyB0byBlTlZNIGNvbnRyb2xsZXIuDQotICAgICAqLw0KLSAgICBkbyB7DQotICAgICAgICBnX252bVtudm1fYmxvY2tfaWRdLT5SRVFfQUNDRVNTID0gUkVRVUVTVF9OVk1fQUNDRVNTOw0KLSAgICAgICAgYWNjZXNzID0gZ19udm1bbnZtX2Jsb2NrX2lkXS0+UkVRX0FDQ0VTUzsNCi0gICAgICAgIGlmKGFjY2VzcyAhPSBDT1JURVhfTTNfQUNDRVNTX0dSQU5URUQpDQotICAgICAgICB7DQotICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgKiBUaW1lIG91dCBpZiBhbm90aGVyIEFIQiBtYXN0ZXIgbG9ja2VkIGFjY2VzcyB0byBlTlZNIHRvIHByZXZlbnQNCi0gICAgICAgICAgICAgKiB0aGUgQ29ydGV4LU0zIGZyb20gbG9ja2luZyB1cCBvbiBlTlZNIHdyaXRlIGlmIHNvbWUgb3RoZXIgcGFydA0KLSAgICAgICAgICAgICAqIG9mIHRoZSBzeXN0ZW0gZmFpbHMgZnJvbSByZWxlYXNpbmcgdGhlIGVOVk0uDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgLS10aW1lb3V0X2NvdW50ZXI7DQotICAgICAgICAgICAgaWYoMHUgPT0gdGltZW91dF9jb3VudGVyKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgc3RhdHVzID0gTlZNX0lOX1VTRV9CWV9PVEhFUl9NQVNURVI7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9IHdoaWxlKChhY2Nlc3MgIT0gQ09SVEVYX00zX0FDQ0VTU19HUkFOVEVEKSAmJiAoTlZNX1NVQ0NFU1MgPT0gc3RhdHVzKSk7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBNYXJrIGNvbnRyb2xsZXIgYXMgbG9ja2VkIGlmIHN1Y2Nlc3NmdWwgc28gdGhhdCBpdCB3aWxsIGJlIHVubG9ja2VkIGJ5IGENCi0gICAgICogY2FsbCB0byByZWxlYXNlX2N0cmxfYWNjZXNzLg0KLSAgICAgKi8NCi0gICAgaWYoTlZNX1NVQ0NFU1MgPT0gc3RhdHVzKQ0KLSAgICB7DQotICAgICAgICBnX2Vudm1fY3RybF9sb2NrcyB8PSAodWludDhfdCkoKHVpbnQzMl90KTB4MDEgPDwgbnZtX2Jsb2NrX2lkKTsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIA0KLSAqLw0KLXN0YXRpYyBudm1fc3RhdHVzX3QNCi1nZXRfY3RybF9hY2Nlc3MNCi0oDQotICAgIHVpbnQzMl90IG52bV9vZmZzZXQsDQotICAgIHVpbnQzMl90ICBsZW5ndGgNCi0pDQotew0KLSAgICBudm1fc3RhdHVzX3QgYWNjZXNzX3JlcV9zdGF0dXM7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBHYWluIGFjY2VzcyB0byBlTlZNIGNvbnRyb2xsZXIocykuDQotICAgICAqLw0KLSAgICBpZihudm1fb2Zmc2V0IDwgTlZNMV9CT1RUT01fT0ZGU0VUKQ0KLSAgICB7DQotICAgICAgICBhY2Nlc3NfcmVxX3N0YXR1cyA9IHJlcXVlc3RfbnZtX2FjY2VzcyhOVk1fQkxPQ0tfMCk7DQotICAgICAgICBpZihOVk1fU1VDQ0VTUyA9PSBhY2Nlc3NfcmVxX3N0YXR1cykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1aW50MzJfdCBsYXN0X29mZnNldDsNCi0gICAgICAgICAgICBsYXN0X29mZnNldCA9IG52bV9vZmZzZXQgKyBsZW5ndGg7DQotICAgICAgICAgICAgaWYobGFzdF9vZmZzZXQgPj0gTlZNMV9CT1RUT01fT0ZGU0VUKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgYWNjZXNzX3JlcV9zdGF0dXMgPSByZXF1ZXN0X252bV9hY2Nlc3MoTlZNX0JMT0NLXzEpOw0KLSAgICAgICAgICAgICAgICBpZihOVk1fSU5fVVNFX0JZX09USEVSX01BU1RFUiA9PSBhY2Nlc3NfcmVxX3N0YXR1cykNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZV9jdHJsX2FjY2VzcygpOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgYWNjZXNzX3JlcV9zdGF0dXMgPSByZXF1ZXN0X252bV9hY2Nlc3MoTlZNX0JMT0NLXzEpOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gYWNjZXNzX3JlcV9zdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBSZWxlYXNlIGFjY2VzcyB0byBlTlZNIGNvbnRyb2xsZXJzLg0KLSAqLw0KLSNkZWZpbmUgTlZNX0JMT0NLXzBfTE9DS19NQVNLICAgMHgwMXUNCi0jZGVmaW5lIE5WTV9CTE9DS18xX0xPQ0tfTUFTSyAgIDB4MDJ1DQotDQotc3RhdGljIHZvaWQgcmVsZWFzZV9jdHJsX2FjY2Vzcyh2b2lkKQ0KLXsNCi0gICAgdWludDhfdCBibG9ja19sb2NrZWQ7DQotICAgIA0KLSAgICBibG9ja19sb2NrZWQgPSBnX2Vudm1fY3RybF9sb2NrcyAmIE5WTV9CTE9DS18wX0xPQ0tfTUFTSzsNCi0gICAgaWYoYmxvY2tfbG9ja2VkKQ0KLSAgICB7DQotICAgICAgICBnX252bVtOVk1fQkxPQ0tfMF0tPlJFUV9BQ0NFU1MgPSAweDAwdTsNCi0gICAgICAgIGdfZW52bV9jdHJsX2xvY2tzICY9IH5OVk1fQkxPQ0tfMF9MT0NLX01BU0s7DQotICAgIH0NCi0gICAgDQotICAgIGJsb2NrX2xvY2tlZCA9IGdfZW52bV9jdHJsX2xvY2tzICYgTlZNX0JMT0NLXzFfTE9DS19NQVNLOw0KLSAgICBpZihibG9ja19sb2NrZWQpDQotICAgIHsNCi0gICAgICAgIGdfbnZtW05WTV9CTE9DS18xXS0+UkVRX0FDQ0VTUyA9IDB4MDB1Ow0KLSAgICAgICAgZ19lbnZtX2N0cmxfbG9ja3MgJj0gfk5WTV9CTE9DS18xX0xPQ0tfTUFTSzsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotc3RhdGljIHVpbnQzMl90IHdhaXRfbnZtX3JlYWR5KHVpbnQzMl90IGJsb2NrKSANCi17DQotICAgIHZvbGF0aWxlIHVpbnQzMl90IGN0cmxfc3RhdHVzOw0KLSAgICB1aW50MzJfdCBjdHJsX3JlYWR5Ow0KLSAgICB1aW50MzJfdCBpbmM7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBXYWl0IGZvciBOVk0gdG8gYmVjb21lIHJlYWR5Lg0KLSAgICAgKiBXZSBtdXN0IGVuc3VyZSB0aGF0IHdlIGNhbiByZWFkIHRoZSByZWFkeSBiaXQgc2V0IHRvIDEgdHdpY2UgYmVmb3JlIHdlDQotICAgICAqIGNhbiBhc3N1bWUgdGhhdCB0aGUgb3RoZXIgc3RhdHVzIGJpdHMgYXJlIHZhbGlkLiBTZWUgU21hcnRGdXNpb24yIGVycmF0YS4NCi0gICAgICovDQotICAgIGZvcihpbmMgPSAwdTsgaW5jIDwgMnU7ICsraW5jKQ0KLSAgICB7DQotICAgICAgICBkbyB7DQotICAgICAgICAgICAgY3RybF9zdGF0dXMgPSBnX252bVtibG9ja10tPlNUQVRVUzsNCi0gICAgICAgICAgICBjdHJsX3JlYWR5ID0gY3RybF9zdGF0dXMgICYgTVNTX05WTV9CVVNZX0I7DQotICAgICAgICB9IHdoaWxlKDB1ID09IGN0cmxfcmVhZHkpOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gY3RybF9zdGF0dXM7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFdyaXRlIGFzIG11Y2ggZGF0YSBhcyB3aWxsIGZpdCBpbnRvIHRoZSBlTlZNIHBhZ2UgY29ycmVzcG9uZGluZyB0byB0aGUNCi0gIGFkZHJlc3MgImFkZHIiIHBhc3NlZCBhcyBwYXJhbWV0ZXIuIFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gaW50bw0KLSAgdGhlIHBhZ2UuDQotICBJbiBjYXNlIG9mIGVycm9yLCByZXR1cm4gdGhlIGNvbnRlbnQgb2YgdGhlIGVOVk0gY29udHJvbGxlciBzdGF0dXMgcmVnaXN0ZXINCi0gIGludG8gdGhlIDMyLWJpdCB3b3JkIHBvaW50ZWQgdG8gYnkgcF9zdGF0dXMuDQotICovDQotc3RhdGljIHVpbnQzMl90IA0KLXdyaXRlX252bQ0KLSgNCi0gICAgdWludDMyX3QgYWRkciwNCi0gICAgY29uc3QgdWludDhfdCAqIHBpZGF0YSwNCi0gICAgdWludDMyX3QgIGxlbmd0aCwNCi0gICAgdWludDMyX3QgIGxvY2tfcGFnZSwNCi0gICAgdWludDMyX3QgKiBwX3N0YXR1cw0KLSkNCi17DQotICAgIHVpbnQzMl90IGxlbmd0aF93cml0dGVuOw0KLSAgICB1aW50MzJfdCBvZmZzZXQ7DQotICAgIA0KLSAgICAqcF9zdGF0dXMgPSAwdTsNCi0gICAgDQotICAgIG9mZnNldCA9IGFkZHIgJiBOVk1fT0ZGU0VUX1NJR05JRklDQU5UX0JJVFM7ICAvKiBJZ25vcmUgcmVtYXBwaW5nLiAqLw0KLQ0KLSAgICBBU1NFUlQob2Zmc2V0IDw9IE5WTTFfVE9QX09GRlNFVCk7DQotICAgIA0KLSAgICAvKiBBZGp1c3QgbGVuZ3RoIHRvIGZpdCB3aXRoaW4gb25lIHBhZ2UuICovDQotICAgIGxlbmd0aF93cml0dGVuID0gZ2V0X3JlbWFpbmluZ19wYWdlX2xlbmd0aChvZmZzZXQsIGxlbmd0aCk7DQotICAgIA0KLSAgICBpZihvZmZzZXQgPD0gTlZNMV9UT1BfT0ZGU0VUKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBibG9jazsNCi0gICAgICAgIHZvbGF0aWxlIHVpbnQzMl90IGN0cmxfc3RhdHVzOw0KLSAgICAgICAgdWludDMyX3QgZXJyb3JzOw0KLSAgICAgICAgDQotICAgICAgICBpZihvZmZzZXQgPCBOVk0xX0JPVFRPTV9PRkZTRVQpDQotICAgICAgICB7DQotICAgICAgICAgICAgYmxvY2sgPSBOVk1fQkxPQ0tfMDsNCi0gICAgICAgIH0NCi0gICAgICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBibG9jayA9IE5WTV9CTE9DS18xOw0KLSAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCAtIE5WTTFfQk9UVE9NX09GRlNFVDsNCi0gICAgICAgIH0NCi0gICAgICAgIA0KLSAgICAgICAgZmlsbF93ZF9idWZmZXIocGlkYXRhLCBsZW5ndGhfd3JpdHRlbiwgYmxvY2ssIG9mZnNldCk7DQotDQotICAgICAgICAvKiBTZXQgcmVxdWVzdGVkIGxvY2tpbmcgb3B0aW9uLiAqLw0KLSAgICAgICAgZ19udm1bYmxvY2tdLT5QQUdFX0xPQ0sgPSBsb2NrX3BhZ2U7DQotICAgICAgICANCi0gICAgICAgIC8qIElzc3VlIHByb2dyYW0gY29tbWFuZCAqLw0KLSAgICAgICAgZ19udm1bYmxvY2tdLT5DTUQgPSBQUk9HX0FEUyB8IChvZmZzZXQgJiBQQUdFX0FERFJfTUFTSyk7DQotICAgICAgICANCi0gICAgICAgIC8qIFdhaXQgZm9yIE5WTSB0byBiZWNvbWUgcmVhZHkuICovDQotICAgICAgICBjdHJsX3N0YXR1cyA9IHdhaXRfbnZtX3JlYWR5KGJsb2NrKTsNCi0NCi0gICAgICAgIC8qIENoZWNrIGZvciBlcnJvcnMuICovDQotICAgICAgICBlcnJvcnMgPSBjdHJsX3N0YXR1cyAmIFdSSVRFX0VSUk9SX01BU0s7DQotICAgICAgICBpZihlcnJvcnMpDQotICAgICAgICB7DQotICAgICAgICAgICAgLyogU2lnbmFsIHRoYXQgYW4gZXJyb3Igb2NjdXJlZCBieSByZXR1cm5pbmcgMCBhIGEgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4uICovDQotICAgICAgICAgICAgbGVuZ3RoX3dyaXR0ZW4gPSAwdTsNCi0gICAgICAgICAgICAqcF9zdGF0dXMgPSBnX252bVtibG9ja10tPlNUQVRVUzsNCi0gICAgICAgIH0NCi0gICAgICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBQZXJmb3JtIGEgdmVyaWZ5LiAqLw0KLSAgICAgICAgICAgIGdfbnZtW2Jsb2NrXS0+Q01EID0gVkVSSUZZX0FEUyB8IChvZmZzZXQgJiBQQUdFX0FERFJfTUFTSyk7DQotICAgICAgICAgICAgLyogV2FpdCBmb3IgTlZNIHRvIGJlY29tZSByZWFkeS4gKi8NCi0gICAgICAgICAgICBjdHJsX3N0YXR1cyA9IHdhaXRfbnZtX3JlYWR5KGJsb2NrKTsNCi0NCi0gICAgICAgICAgICAvKiBDaGVjayBmb3IgZXJyb3JzLiAqLw0KLSAgICAgICAgICAgIGVycm9ycyA9IGN0cmxfc3RhdHVzICYgV1JJVEVfRVJST1JfTUFTSzsNCi0gICAgICAgICAgICBpZihlcnJvcnMpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAvKiBTaWduYWwgdGhhdCBhbiBlcnJvciBvY2N1cmVkIGJ5IHJldHVybmluZyAwIGEgYSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gKi8NCi0gICAgICAgICAgICAgICAgbGVuZ3RoX3dyaXR0ZW4gPSAwdTsNCi0gICAgICAgICAgICAgICAgKnBfc3RhdHVzID0gZ19udm1bYmxvY2tdLT5TVEFUVVM7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gbGVuZ3RoX3dyaXR0ZW47DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBiZXR3ZWVuIHRoZSBvZmZzZXQgbG9jYXRpb24gYW5kIHRoZSBlbmQgb2YgdGhlIHBhZ2UNCi0gIGNvbnRhaW5pbmcgdGhlIGZpcnN0IG9mZnNldCBsb2NhdGlvbi4gVGhpcyB0ZWxscyB1cyBob3cgbWFueSBhY3R1YWwgYnl0ZXMgY2FuDQotICBiZSBwcm9ncmFtbWVkIHdpdGggYSBzaW5nbGUgUHJvZ3JhbUFEUyBjb21tYW5kLg0KLSAgVGhpcyBhbHNvIHRlbGxzIHVzIGlmIHdlIGFyZSBwcm9ncmFtbWluZyBhIGZ1bGwgcGFnZS4gSWYgdGhlIHJldHVybiB2YWx1ZSBpcw0KLSAgZXF1YWwgdG8gQllURVNfUEVSX1BBR0UgdGhlbiB3ZSB3aWxsIGJlIHByYWdyYW1taW5nIGFuIGVudGlyZSBOVk0gcGFnZS4NCi0gIEFsdGVybmF0aXZlbHksIHRoaXMgZnVuY3Rpb24gcmV0dXJuaW5nIGEgdmFsdWUgb3RoZXIgdGhhbiBCWVRFU19QRVJfUEFHRQ0KLSAgaW5kaWNhdGVzIHRoYXQgdGhlIFdEW10gYnVmZmVyIHdpbGwgaGF2ZSB0byBiZSBzZWVkZWQgd2l0aCB0aGUgZXhpc3RpbmcNCi0gIGNvbnRlbnQgb2YgdGhlIGVOVk0gYmVmb3JlIGNvcHlpbmcgdGhlIGRhdGEgdG8gcHJvZ3JhbSB0byBlTlZNIGludG8gdGhlIFdEW10NCi0gIGJ1ZmZlci4NCi0gKi8NCi1zdGF0aWMgdWludDMyX3QgZ2V0X3JlbWFpbmluZ19wYWdlX2xlbmd0aA0KLSgNCi0gICAgdWludDMyX3Qgb2Zmc2V0LA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoDQotKQ0KLXsNCi0gICAgdWludDMyX3Qgc3RhcnRfcGFnZV9wbHVzX29uZTsNCi0gICAgdWludDMyX3QgbGFzdF9wYWdlOw0KLSAgICANCi0gICAgc3RhcnRfcGFnZV9wbHVzX29uZSA9IChvZmZzZXQgLyBCWVRFU19QRVJfUEFHRSkgKyAxdTsNCi0gICAgbGFzdF9wYWdlID0gKG9mZnNldCArIGxlbmd0aCkgLyBCWVRFU19QRVJfUEFHRTsNCi0gICAgaWYobGFzdF9wYWdlID49IHN0YXJ0X3BhZ2VfcGx1c19vbmUpDQotICAgIHsNCi0gICAgICAgIGxlbmd0aCA9IEJZVEVTX1BFUl9QQUdFIC0gKG9mZnNldCAlIEJZVEVTX1BFUl9QQUdFKTsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIGxlbmd0aDsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIA0KLSAqLw0KLXN0YXRpYyB2b2lkIGZpbGxfd2RfYnVmZmVyDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhLA0KLSAgICB1aW50MzJfdCAgbGVuZ3RoLA0KLSAgICB1aW50MzJfdCBibG9jaywNCi0gICAgdWludDMyX3Qgb2Zmc2V0DQotKQ0KLXsNCi0gICAgdWludDMyX3QgaW5jOw0KLSAgICB1aW50MzJfdCB3ZF9vZmZzZXQ7DQotICAgIA0KLSAgICBpZihsZW5ndGggIT0gQllURVNfUEVSX1BBR0UpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90ICogcF9udm0zMjsNCi0gICAgICAgIHVpbnQzMl90IG5iX25vbl93cml0dGVuX3dvcmRzOw0KLSAgICAgICAgdWludDMyX3QgZmlyc3Rfbm9uX3dyaXR0ZW5fd29yZDsNCi0gICAgICAgIC8qIA0KLSAgICAgICAgICogRmlsbCBiZWdpbm5pbmcgb2YgV0RbXSB3aXRoIGN1cnJlbnQgY29udGVudCBvZiBOVk0gcGFnZSB0aGF0IG11c3Qgbm90DQotICAgICAgICAgKiBiZSBvdmVyd3JpdHRlbi4NCi0gICAgICAgICAqLw0KLSAgICAgICAgcF9udm0zMiA9ICh1aW50MzJfdCAqKSgoTlZNX0JBU0VfQUREUkVTUyArIG9mZnNldCkgJiBQQUdFX0FERFJfTUFTSyk7DQotICAgICAgICBuYl9ub25fd3JpdHRlbl93b3JkcyA9IChvZmZzZXQgJSBCWVRFU19QRVJfUEFHRSkgLyBOQl9PRl9CWVRFU19JTl9BX1dPUkQ7DQotICAgICAgICBpZigob2Zmc2V0ICUgTkJfT0ZfQllURVNfSU5fQV9XT1JEKSA+IDB1KQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgICsrbmJfbm9uX3dyaXR0ZW5fd29yZHM7DQotICAgICAgICB9DQotICAgICAgICBmb3IoaW5jID0gMHU7IChpbmMgPCBXRF9XT1JEX1NJWkUpICYmIChpbmMgPCBuYl9ub25fd3JpdHRlbl93b3Jkcyk7ICsraW5jKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGdfbnZtMzJbYmxvY2tdLT5XRFtpbmNdID0gcF9udm0zMltpbmNdOw0KLSAgICAgICAgfQ0KLSAgICAgICAgDQotICAgICAgICAvKg0KLSAgICAgICAgICogRmlsbCBlbmQgb2YgV0RbXSB3aXRoIGN1cnJlbnQgY29udGVudCBvZiBOVk0gcGFnZSB0aGF0IG11c3Qgbm90IGJlDQotICAgICAgICAgKiBvdmVyd3JpdHRlbi4NCi0gICAgICAgICAqLw0KLSAgICAgICAgZmlyc3Rfbm9uX3dyaXR0ZW5fd29yZCA9ICgob2Zmc2V0ICsgbGVuZ3RoKSAlIEJZVEVTX1BFUl9QQUdFKSAvIE5CX09GX0JZVEVTX0lOX0FfV09SRDsNCi0gICAgICAgIG5iX25vbl93cml0dGVuX3dvcmRzID0gKEJZVEVTX1BFUl9QQUdFIC8gTkJfT0ZfQllURVNfSU5fQV9XT1JEKSAtIGZpcnN0X25vbl93cml0dGVuX3dvcmQ7DQotICAgICAgICANCi0gICAgICAgIGZvcihpbmMgPSAwdTsgaW5jIDwgbmJfbm9uX3dyaXR0ZW5fd29yZHM7ICsraW5jKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGdfbnZtMzJbYmxvY2tdLT5XRFtmaXJzdF9ub25fd3JpdHRlbl93b3JkICsgaW5jXSA9IHBfbnZtMzJbZmlyc3Rfbm9uX3dyaXR0ZW5fd29yZCArIGluY107DQotICAgICAgICB9DQotICAgIH0NCi0gICAgDQotICAgIC8qDQotICAgICAqIEZpbGwgV0RbXSB3aXRoIGRhdGEgcmVxdWVzdGVkIHRvIGJlIHdyaXR0ZW4gaW50byBOVk0uDQotICAgICAqLw0KLSAgICB3ZF9vZmZzZXQgPSBvZmZzZXQgJSBCWVRFU19QRVJfUEFHRTsNCi0gICAgZm9yKGluYyA9IDB1OyBpbmMgPCBsZW5ndGg7ICsraW5jKQ0KLSAgICB7DQotICAgICAgICBnX252bVtibG9ja10tPldEW3dkX29mZnNldCArIGluY10gPSBwX2RhdGFbaW5jXTsNCi0gICAgfQ0KLX0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEVORCBPRiBGSUxFICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0NCi0NCi0NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX252bS9tc3NfbnZtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5ODEyYWEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19udm0vbXNzX252bS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjQ5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogVGhpcyBmaWxlIGNvbnRhaW5zIHB1YmxpYyBBUElzIGZvciBTbWFydEZ1c2lvbjIgZU5WTSBzb2Z0d2FyZSBkcml2ZXIuDQotICogDQotICogU1ZOICRSZXZpc2lvbjogNTM2MiAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTI2IDIxOjM3OjUzICswMDAwIChUdWUsIDI2IE1hciAyMDEzKSAkDQotICovDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8vKioNCi0gIEBtYWlucGFnZSBTbWFydEZ1c2lvbjIgTVNTIGVOVk0gQmFyZSBNZXRhbCBEcml2ZXIuDQotICANCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gIFRoZSBTbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBpbmNsdWRlcyB1cCB0byB0d28gZW1iZWRkZWQNCi0gIG5vbi12b2xhdGlsZSBtZW1vcnkgKGVOVk0pIGJsb2Nrcy4gRWFjaCBvZiB0aGVzZSBlTlZNIGJsb2NrcyBjYW4gYmUgYSBtYXhpbXVtDQotICBzaXplIG9mIDI1NmtCLiBUaGlzIHNvZnR3YXJlIGRyaXZlciBwcm92aWRlcyBhIHNldCBvZiBmdW5jdGlvbnMgZm9yIGFjY2Vzc2luZw0KLSAgYW5kIGNvbnRyb2xsaW5nIHRoZSBNU1MgZU5WTSBhcyBwYXJ0IG9mIGEgYmFyZSBtZXRhbCBzeXN0ZW0gd2hlcmUgbm8gb3BlcmF0aW5nDQotICBzeXN0ZW0gaXMgYXZhaWxhYmxlLiBUaGUgZHJpdmVyIGNhbiBiZSBhZGFwdGVkIGZvciB1c2UgYXMgcGFydCBvZiBhbiBvcGVyYXRpbmcNCi0gIHN5c3RlbSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRhcHRhdGlvbiBsYXllciBiZXR3ZWVuIHRoZSBkcml2ZXIgYW5kDQotICB0aGUgb3BlcmF0aW5nIHN5c3RlbSdzIGRyaXZlciBtb2RlbCBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGUgZHJpdmVyLg0KLSAgDQotICBUaGUgTVNTIGVOVk0gZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6DQotICAgIC0gZU5WTSB3cml0ZSAocHJvZ3JhbSkgb3BlcmF0aW9ucy4NCi0gICAgLSBlTlZNIHBhZ2UgdW5sb2NraW5nDQotICBUaGUgTVNTIGVOVk0gZHJpdmVyIGlzIHByb3ZpZGVkIGFzIEMgc291cmNlIGNvZGUuDQotDQotICANCi0gIEBzZWN0aW9uIGNvbmZpZ3VyYXRpb24gRHJpdmVyIENvbmZpZ3VyYXRpb24NCi0gIFRoZSBzaXplIG9mIHRoZSBNU1MgZU5WTSB2YXJpZXMgd2l0aCBkaWZmZXJlbnQgU21hcnRGdXNpb24yIGRldmljZSB0eXBlcy4gWW91DQotICBtdXN0IG9ubHkgdXNlIHRoaXMgZHJpdmVyIHRvIGFjY2VzcyBtZW1vcnkgbG9jYXRpb25zIHdpdGhpbiB0aGUgdmFsaWQgTVNTIGVOVk0NCi0gIGFkZHJlc3Mgc3BhY2UgZm9yIHRoZSB0YXJnZXRlZCBkZXZpY2UuIFRoZSBzaXplIG9mIHRoZSB2YWxpZCBNU1MgZU5WTSBhZGRyZXNzDQotICBzcGFjZSBjb3JyZXNwb25kcyB0byB0aGUgc2l6ZSBvZiB0aGUgTVNTIGVOVk0gaW4gdGhlIGRldmljZS4gU29tZSBwYWdlcyBvZiB0aGUNCi0gIE1TUyBlTlZNIG1heSBiZSB3cml0ZSBwcm90ZWN0ZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgY29uZmlndXJhdG9yIGFzIHBhcnQNCi0gIG9mIHRoZSBoYXJkd2FyZSBkZXNpZ24gZmxvdy4gVGhlIGRyaXZlciBjYW5ub3QgdW5sb2NrIG9yIHdyaXRlIHRvIHRoZXNlDQotICBwcm90ZWN0ZWQgcGFnZXMuDQotICBUaGUgYmFzZSBhZGRyZXNzLCByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGludGVycnVwdCBudW1iZXIgYXNzaWdubWVudCBmb3IgdGhlDQotICBNU1MgZU5WTSBibG9ja3MgYXJlIGRlZmluZWQgYXMgY29uc3RhbnRzIGluIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSEFMLiBZb3UNCi0gIG11c3QgZW5zdXJlIHRoYXQgdGhlIGxhdGVzdCBTbWFydEZ1c2lvbjIgQ01TSVMgSEFMIGlzIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0DQotICBzZXR0aW5ncyBvZiB0aGUgc29mdHdhcmUgdG9vbCBjaGFpbiB1c2VkIHRvIGJ1aWxkIHlvdXIgcHJvamVjdCBhbmQgdGhhdCBpdCBpcw0KLSAgZ2VuZXJhdGVkIGludG8geW91ciBwcm9qZWN0Lg0KLQ0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gIFRoZSB0b3RhbCBhbW91bnQgb2YgZU5WTSBhdmFpbGFibGUgaW4gYSBTbWFydEZ1c2lvbiBkZXZpY2UgcmFuZ2VzIGZyb20gMTI4a0INCi0gIHRvIDUxMmtCLCBwcm92aWRlZCBpbiBvbmUgb3IgdHdvIHBoeXNpY2FsIGVOVk0gYmxvY2tzLiBUaGUgZU5WTSBibG9ja3MgYXJlDQotICBkaXZpZGVkIGludG8gcGFnZXMsIHdpdGggZWFjaCBwYWdlIGhvbGRpbmcgMTI4IGJ5dGVzIG9mIGRhdGEuIFRoZSBNU1MgZU5WTQ0KLSAgZHJpdmVyIHRyZWF0cyB0aGUgZW50aXJlIGVOVk0gYXMgYSBjb250aWd1b3VzIG1lbW9yeSBzcGFjZS4gSXQgcHJvdmlkZXMgd3JpdGUNCi0gIGFjY2VzcyB0byBhbGwgcGFnZXMgdGhhdCBhcmUgaW4gdGhlIHZhbGlkIGVOVk0gYWRkcmVzcyByYW5nZSBmb3IgdGhlDQotICBTbWFydEZ1c2lvbiBkZXZpY2UgYW5kIHRoYXQgYXJlIG5vdCB3cml0ZS1wcm90ZWN0ZWQuIFRoZSBkcml2ZXIgaW1wb3NlcyBubw0KLSAgcmVzdHJpY3Rpb25zIG9uIHdyaXRpbmcgZGF0YSBhY3Jvc3MgZU5WTSBibG9jayBvciBwYWdlIGJvdW5kYXJpZXMuIFRoZSBkcml2ZXINCi0gIHN1cHBvcnRzIHJhbmRvbSBhY2Nlc3Mgd3JpdGVzIHRvIHRoZSBlTlZNIG1lbW9yeS4gDQotDQotICovLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0jaWZuZGVmIF9fTVNTX05WTV9IDQotI2RlZmluZSBfX01TU19OVk1fSA0KLQ0KLSNpbmNsdWRlIDxzdGRpbnQuaD4NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLS8qIFB1YmxpYyBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFBhZ2UgTG9ja2luZyBjb25zdGFudHM6DQotICovDQotLyoNCi0gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgTlZNX3dyaXRlKCkgZnVuY3Rpb24gc2hvdWxkIG5vdCBsb2NrIHRoZSBhZGRyZXNzZWQgcGFnZXMNCi0gKiBhZnRlciBwcm9ncmFtbWluZyB0aGUgZGF0YS4NCi0gKi8NCi0jZGVmaW5lIE5WTV9ET19OT1RfTE9DS19QQUdFICAgIDB1DQotDQotLyoNCi0gKiBJbmRpY2F0ZXMgdGhhdCB0aGUgTlZNX3dyaXRlKCkgZnVuY3Rpb24gc2hvdWxkIGxvY2sgdGhlIGFkZHJlc3NlZCBwYWdlcyBhZnRlcg0KLSAqIHByb2dyYW1taW5nIHRoZSBkYXRhLg0KLSAqLw0KLSNkZWZpbmUgTlZNX0xPQ0tfUEFHRSAgICAgICAgICAgMXUNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgVGhlIG52bV9zdGF0dXNfdCBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIHBvc3NpYmxlIHJldHVybiB2YWx1ZXMgZnJvbSB0aGUNCi0gIE5WTV93cml0ZSgpIGFuZCBOVk1fdW5sb2NrKCkgZnVuY3Rpb25zLg0KLSAgDQotICAgIE5WTV9TVUNDRVNTOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBwcm9ncmFtbWluZyB3YXMgc3VjY2Vzc2Z1bC4NCi0gICAgICAgIA0KLSAgICBOVk1fUFJPVEVDVElPTl9FUlJPUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBiZSBjb21wbGV0ZWQgYmVjYXVzZSBvZiBhDQotICAgICAgcHJvdGVjdGlvbiBlcnJvci4gVGhpcyBoYXBwZW5zIHdoZW4gYXR0ZW1wdGluZyB0byBwcm9ncmFtIGEgcGFnZSB0aGF0IHdhcw0KLSAgICAgIHNldCBhcyBwcm90ZWN0ZWQgaW4gdGhlIGhhcmR3YXJlIGZsb3cuDQotICAgICAgDQotICAgIE5WTV9WRVJJRllfRkFJTFVSRToNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCBvbmUgb2YgdGhlIHZlcmlmeSBvcGVyYXRpb25zIGZhaWxlZC4NCi0gICAgICANCi0gICAgTlZNX1BBR0VfTE9DS19FUlJPUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgb3BlcmF0aW9uIGNvdWxkIG5vdCBjb21wbGV0ZSBiZWNhdXNlIG9uZSBvZiB0aGUgcGFnZXMNCi0gICAgICBpcyBsb2NrZWQuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgcGFnZSB3YXMgbG9ja2VkIGR1cmluZyBhIHByZXZpb3VzIGNhbGwNCi0gICAgICB0byBOVk1fd3JpdGUoKSBvciBpZiB0aGUgcGFnZSB3YXMgbG9ja2VkIGluIHRoZSBoYXJkd2FyZSBkZXNpZ24gZmxvdy4NCi0gICAgICANCi0gICAgTlZNX1dSSVRFX1RIUkVTSE9MRF9FUlJPUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgTlZNIG1heGltdW0gbnVtYmVyIG9mIHByb2dyYW1taW5nIGN5Y2xlcyBoYXMgYmVlbg0KLSAgICAgIHJlYWNoZWQuDQotICAgICAgDQotICAgIE5WTV9JTl9VU0VfQllfT1RIRVJfTUFTVEVSOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHNvbWUgb3RoZXIgTVNTIEFIQiBCdXMgTWF0cml4IG1hc3RlciBpcyBhY2Nlc3NpbmcgdGhlIE5WTS4NCi0gICAgICBUaGlzIGNvdWxkIGJlIGR1ZSB0byB0aGUgRlBHQSBsb2dpYyBvciB0aGUgc3lzdGVtIGNvbnRyb2xsZXIgcHJvZ3JhbW1pbmcNCi0gICAgICB0aGUgTlZNLg0KLSAgICAgIA0KLSAgICBOVk1fSU5WQUxJRF9QQVJBTUVURVI6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgb25lIG9mIG1vcmUgb2YgdGhlIGZ1bmN0aW9uIHBhcmFtZXRlcnMgaGFzIGFuIGludmFsaWQNCi0gICAgICB2YWx1ZS4gVGhpcyBpcyB0eXBpY2FsbHkgIHJldHVybmVkIHdoZW4gYXR0ZW1wdGluZyB0byB3cml0ZSBvciB1bmxvY2sgbW9yZQ0KLSAgICAgIGVOVk0gdGhhbiBpcyBhdmFpbGFibGUgb24gIHRoZSBkZXZpY2UuDQotICovDQotdHlwZWRlZiBlbnVtIG52bV9zdGF0dXMNCi17DQotICAgIE5WTV9TVUNDRVNTID0gMCwNCi0gICAgTlZNX1BST1RFQ1RJT05fRVJST1IsDQotICAgIE5WTV9WRVJJRllfRkFJTFVSRSwNCi0gICAgTlZNX1BBR0VfTE9DS19FUlJPUiwNCi0gICAgTlZNX1dSSVRFX1RIUkVTSE9MRF9FUlJPUiwNCi0gICAgTlZNX0lOX1VTRV9CWV9PVEhFUl9NQVNURVIsDQotICAgIE5WTV9JTlZBTElEX1BBUkFNRVRFUg0KLX0gbnZtX3N0YXR1c190Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogUHVibGljIHZhcmlhYmxlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyogUHVibGljIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTlZNX3dyaXRlKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBwcm9ncmFtIChvciB3cml0ZSkgZGF0YSBpbnRvIHRoZSBlTlZNLg0KLSAgVGhpcyBmdW5jdGlvbiB0cmVhdHMgdGhlIHR3byBlTlZNIGJsb2NrcyBjb250aWd1b3VzbHksIHNvIGEgdG90YWwgb2YgNTEya0Igb2YNCi0gIG1lbW9yeSBjYW4gYmUgYWNjZXNzZWQgbGluZWFybHkuIFRoZSBzdGFydCBhZGRyZXNzIGFuZCBlbmQgYWRkcmVzcyBvZiB0aGUNCi0gIG1lbW9yeSByYW5nZSB0byBiZSBwcm9ncmFtbWVkIGRvIG5vdCBuZWVkIHRvIGJlIHBhZ2UgYWxpZ25lZC4gVGhpcyBmdW5jdGlvbg0KLSAgc3VwcG9ydHMgcHJvZ3JhbW1pbmcgb2YgZGF0YSB0aGF0IHNwYW5zIG11bHRpcGxlIHBhZ2VzLiBUaGlzIGZ1bmN0aW9uIGlzIGENCi0gIGJsb2NraW5nIGZ1bmN0aW9uLg0KLSAgTm90ZTogVGhlIE5WTV93cml0ZSgpIGZ1bmN0aW9uIHBlcmZvcm1zIGEgdmVyaWZ5IG9wZXJhdGlvbiBvbiBlYWNoIHBhZ2UgDQotICAgICAgICBwcm9ncmFtbWVkIHRvIGVuc3VyZSB0aGUgZU5WTSBpcyBwcm9ncmFtbWVkIHdpdGggdGhlIGV4cGVjdGVkIGRhdGEuDQotDQotICBAcGFyYW0gc3RhcnRfYWRkcg0KLSAgICBUaGUgc3RhcnRfYWRkciBwYXJhbWV0ZXIgaXMgdGhlIGJ5dGUgYWxpZ25lZCBzdGFydCBhZGRyZXNzIGluIHRoZSBlTlZNDQotICAgIGFkZHJlc3Mgc3BhY2UsIHRvIHdoaWNoIHRoZSBkYXRhIGlzIHRvIGJlIHByb2dyYW1tZWQuDQotDQotICBAcGFyYW0gcGlkYXRhDQotICAgIFRoZSBwaWRhdGEgcGFyYW1ldGVyIGlzIHRoZSBieXRlIGFsaWduZWQgc3RhcnQgYWRkcmVzcyBvZiB0aGUgaW5wdXQgZGF0YS4NCi0NCi0gIEBwYXJhbSBsZW5ndGgNCi0gICAgVGhlIGxlbmd0aCBwYXJhbWV0ZXIgaXMgdGhlIG51bWJlciBvZiBieXRlcyBvZiBkYXRhIHRvIGJlIHByb2dyYW1tZWQuDQotDQotICBAcGFyYW0gbG9ja19wYWdlDQotICAgIFRoZSBsb2NrX3BhZ2UgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBwYWdlcyB0aGF0IGFyZSBwcm9ncmFtbWVkDQotICAgIG11c3QgYmUgbG9ja2VkIG9yIG5vdCBvbmNlIHByb2dyYW1tZWQuIExvY2tpbmcgdGhlIHByb2dyYW1tZWQgcGFnZXMgcHJldmVudHMNCi0gICAgdGhlbSBmcm9tIGJlaW5nIG92ZXJ3cml0dGVuIGJ5IG1pc3Rha2UuIFN1YnNlcXVlbnQgcHJvZ3JhbW1pbmcgb2YgdGhlc2UNCi0gICAgcGFnZXMgd2lsbCByZXF1aXJlIHRoZSBwYWdlcyB0byBiZSB1bmxvY2tlZCBwcmlvciB0byBjYWxsaW5nIE5WTV93cml0ZSgpLg0KLSAgICBBbGxvd2VkIHZhbHVlcyBmb3IgbG9ja19wYWdlIGFyZToNCi0gICAgICAgIC0gTlZNX0RPX05PVF9MT0NLX1BBR0UNCi0gICAgICAgIC0gTlZNX0xPQ0tfUEFHRQ0KLSAgICAgICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBOVk1fU1VDQ0VTUyBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4gDQotICAgIEl0IHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZXJyb3IgY29kZXMgaWYgdGhlIHByb2dyYW1taW5nIG9mIHRoZSBlTlZNDQotICAgIGZhaWxzOg0KLSAgICAgICAgLSBOVk1fUFJPVEVDVElPTl9FUlJPUg0KLSAgICAgICAgLSBOVk1fVkVSSUZZX0ZBSUxVUkUNCi0gICAgICAgIC0gTlZNX1BBR0VfTE9DS19FUlJPUg0KLSAgICAgICAgLSBOVk1fV1JJVEVfVEhSRVNIT0xEX0VSUk9SDQotICAgICAgICAtIE5WTV9JTl9VU0VfQllfT1RIRVJfTUFTVEVSDQotICAgICAgICAtIE5WTV9JTlZBTElEX1BBUkFNRVRFUg0KLSAgICAgICAgDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgdWludDhfdCBpZGF0YVs4MTVdID0geyJaIn07DQotICAgIHN0YXR1cyA9IE5WTV93cml0ZSgweDAsIGlkYXRhLCBzaXplb2YoaWRhdGEpLCBOVk1fRE9fTk9UX0xPQ0tfUEFHRSk7DQotICBAZW5kY29kZQ0KLSAqLw0KLW52bV9zdGF0dXNfdCANCi1OVk1fd3JpdGUNCi0oDQotICAgIHVpbnQzMl90IHN0YXJ0X2FkZHIsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwaWRhdGEsDQotICAgIHVpbnQzMl90ICBsZW5ndGgsDQotICAgIHVpbnQzMl90ICBsb2NrX3BhZ2UNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTlZNX3VubG9jaygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gdW5sb2NrIHRoZSBlTlZNIHBhZ2VzIGZvciBhIHNwZWNpZmllZA0KLSAgcmFuZ2Ugb2YgZU5WTSBhZGRyZXNzZXMgaW4gcHJlcGFyYXRpb24gZm9yIHdyaXRpbmcgZGF0YSBpbnRvIHRoZSB1bmxvY2tlZA0KLSAgbG9jYXRpb25zLiBUaGlzIGZ1bmN0aW9uIHRyZWF0cyB0aGUgdHdvIGVOVk0gYmxvY2tzIGNvbnRpZ3VvdXNseSwgc28gYSB0b3RhbA0KLSAgb2YgNTEya0Igb2YgbWVtb3J5IGNhbiBiZSBhY2Nlc3NlZCBsaW5lYXJseS4gVGhlIHN0YXJ0IGFkZHJlc3MgYW5kIGVuZCBhZGRyZXNzDQotICBvZiB0aGUgbWVtb3J5IHJhbmdlIHRvIGJlIHVubG9ja2VkIGRvIG5vdCBuZWVkIHRvIGJlIHBhZ2UgYWxpZ25lZC4gVGhpcw0KLSAgZnVuY3Rpb24gc3VwcG9ydHMgdW5sb2NraW5nIG9mIGFuIGVOVk0gYWRkcmVzcyByYW5nZSB0aGF0IHNwYW5zIG11bHRpcGxlDQotICBwYWdlcy4gVGhpcyBmdW5jdGlvbiBpcyBhIGJsb2NraW5nIGZ1bmN0aW9uLg0KLQ0KLSAgQHBhcmFtIHN0YXJ0X2FkZHINCi0gICAgVGhlIHN0YXJ0X2FkZHIgcGFyYW1ldGVyIGlzIHRoZSBieXRlIGFsaWduZWQgc3RhcnQgYWRkcmVzcywgaW4gdGhlIGVOVk0NCi0gICAgYWRkcmVzcyBzcGFjZSwgb2YgdGhlIG1lbW9yeSByYW5nZSB0byBiZSB1bmxvY2tlZC4NCi0gICAgDQotICBAcGFyYW0gbGVuZ3RoDQotICAgIFRoZSBsZW5ndGggcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJ5dGVzIG9mIHRoZSBtZW1vcnkgcmFuZ2UgdG8gYmUNCi0gICAgdW5sb2NrZWQuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBOVk1fU1VDQ0VTUyBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4gDQotICAgIEl0IHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmcgZXJyb3IgY29kZXMgaWYgdGhlIHVubG9ja2luZyBvZiB0aGUgZU5WTSBmYWlsczoNCi0gICAgICAgIC0gTlZNX1BST1RFQ1RJT05fRVJST1INCi0gICAgICAgIC0gTlZNX1ZFUklGWV9GQUlMVVJFDQotICAgICAgICAtIE5WTV9QQUdFX0xPQ0tfRVJST1INCi0gICAgICAgIC0gTlZNX1dSSVRFX1RIUkVTSE9MRF9FUlJPUg0KLSAgICAgICAgLSBOVk1fSU5fVVNFX0JZX09USEVSX01BU1RFUg0KLSAgICAgICAgLSBOVk1fSU5WQUxJRF9QQVJBTUVURVINCi0gICAgICAgIA0KLSAgVGhlIGV4YW1wbGUgY29kZSBiZWxvdyBkZW1vbnN0cmF0ZXMgdGhlIGludGVuZGVkIHVzZSBvZiB0aGUgTlZNX3VubG9jaygpDQotICBmdW5jdGlvbjoNCi0gIEBjb2RlDQotICAgIGludCBwcm9ncmFtX2xvY2tlZF9udm0odWludDMyX3QgdGFyZ2V0X2FkZHIsIHVpbnQzMl90IGxlbmd0aCkNCi0gICAgew0KLSAgICAgICAgbnZtX3N0YXR1c190IHN0YXR1czsNCi0gICAgICAgIGludCBzdWNjZXNzID0gMDsNCi0gICAgICAgIA0KLSAgICAgICAgc3RhdHVzID0gTlZNX3VubG9jayh0YXJnZXRfYWRkciwgbGVuZ3RoKTsNCi0gICAgICAgIGlmKE5WTV9TVUNDRVNTID09IHN0YXR1cykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBzdGF0dXMgPSBOVk1fd3JpdGUodGFyZ2V0X2FkZHIsIGJ1ZmZlciwgbGVuZ3RoLCBOVk1fTE9DS19QQUdFKTsNCi0gICAgICAgICAgICBpZihOVk1fU1VDQ0VTUyA9PSBzdGF0dXMpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMTsgDQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7DQotICAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotbnZtX3N0YXR1c190DQotTlZNX3VubG9jaw0KLSgNCi0gICAgdWludDMyX3Qgc3RhcnRfYWRkciwNCi0gICAgdWludDMyX3QgbGVuZ3RoDQotKTsNCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIF9fTVNTX05WTV9IICovDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWYxZjBlLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfcnRjL21zc19ydGMuYworKysgL2Rldi9udWxsCkBAIC0xLDY2NiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFNtYXJ0RnVzaW9uMiBNU1MgUlRDIGJhcmUgbWV0YWwgZHJpdmVyIGltcGxlbWVudGF0aW9uLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTA5MCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAyLTE4IDEyOjEzOjMxICswMDAwIChNb24sIDE4IEZlYiAyMDEzKSAkDQotICovDQotI2luY2x1ZGUgIm1zc19ydGMuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLSNpbmNsdWRlIDxzdHJpbmcuaD4NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBDT05UUk9MX1JFRyByZWdpc3RlciBtYXNrcy4NCi0gKi8NCi0jZGVmaW5lIENPTlRST0xfUlVOTklOR19NQVNLICAgICAgICAweDAwMDAwMDAxdQ0KLQ0KLSNkZWZpbmUgQ09OVFJPTF9SVENfU1RBUlRfTUFTSyAgICAgIDB4MDAwMDAwMDF1DQotI2RlZmluZSBDT05UUk9MX1JUQ19TVE9QX01BU0sgICAgICAgMHgwMDAwMDAwMnUNCi0jZGVmaW5lIENPTlRST0xfQUxBUk1fT05fTUFTSyAgICAgICAweDAwMDAwMDA0dQ0KLSNkZWZpbmUgQ09OVFJPTF9BTEFSTV9PRkZfTUFTSyAgICAgIDB4MDAwMDAwMDh1DQotI2RlZmluZSBDT05UUk9MX1JFU0VUX01BU0sgICAgICAgICAgMHgwMDAwMDAxMHUNCi0jZGVmaW5lIENPTlRST0xfVVBMT0FEX01BU0sgICAgICAgICAweDAwMDAwMDIwdQ0KLSNkZWZpbmUgQ09OVFJPTF9XQUtFVVBfQ0xSX01BU0sgICAgIDB4MDAwMDAxMDB1DQotI2RlZmluZSBDT05UUk9MX1VQREFURURfTUFTSyAgICAgICAgMHgwMDAwMDQwMHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIE1PREVfUkVHIHJlZ2lzdGVyIG1hc2tzLg0KLSAqLw0KLSNkZWZpbmUgTU9ERV9DTEtfTU9ERV9NQVNLICAgICAgICAgIDB4MDAwMDAwMDF1DQotI2RlZmluZSBNT0RFX1dBS0VVUF9FTl9NQVNLICAgICAgICAgMHgwMDAwMDAwMnUNCi0jZGVmaW5lIE1PREVfV0FLRVVQX1JFU0VUX01BU0sgICAgICAweDAwMDAwMDA0dQ0KLSNkZWZpbmUgTU9ERV9XQUtFVVBfQ09OVElOVUVfTUFTSyAgIDB4MDAwMDAwMDh1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBPdGhlciBtYXNrcy4NCi0gKi8NCi0jZGVmaW5lIE1BWF9CSU5BUllfSElHSEVSX0NPVU5UICAgICAweDdGRnUNCi0jZGVmaW5lIE1BU0tfMzJfQklUICAgICAgICAgICAgICAgICAweEZGRkZGRkZGdQ0KLSNkZWZpbmUgTUFYX1BSRVNDQUxBUl9DT1VOVCAgICAgICAgIDB4MDNGRkZGRkZ1DQotI2RlZmluZSBDQUxFTkRBUl9TSElGVCAgICAgICAgICAgICAgOHUNCi0NCi0jZGVmaW5lIENPTVBBUkVfQUxMX0JJVFMgICAgICAgICAgICAweEZGRkZGRkZGdQ0KLQ0KLSNkZWZpbmUgU1lTUkVHX1JUQ19XQUtFVVBfTTNfRU5fTUFTSyAgICAweDAwMDAwMDAxdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogSW5kZXggaW50byBsb29rLXVwIHRhYmxlLg0KLSAqLw0KLSNkZWZpbmUgU0VDT05EUyAgICAgMA0KLSNkZWZpbmUgTUlOVVRFUyAgICAgMQ0KLSNkZWZpbmUgSE9VUlMgICAgICAgMg0KLSNkZWZpbmUgREFZUyAgICAgICAgMw0KLSNkZWZpbmUgTU9OVEhTICAgICAgNA0KLSNkZWZpbmUgWUVBUlMgICAgICAgNQ0KLSNkZWZpbmUgV0VFS0RBWVMgICAgNg0KLSNkZWZpbmUgV0VFS1MgICAgICAgNw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBMb2NhbCBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIHVpbnQ4X3QNCi1nZXRfY2xvY2tfbW9kZQ0KLSgNCi0gICAgdm9pZA0KLSk7DQotDQotc3RhdGljIHZvaWQgc2V0X3J0Y19tb2RlKHVpbnQ4X3QgcmVxdWVzdGVkX21vZGUpOw0KLQ0KLXN0YXRpYyB2b2lkIGFkZF9hbGFybV9jZmdfdmFsdWVzDQotKA0KLSAgICB1aW50OF90IGNhbGVuZGFyX2l0ZW0sDQotICAgIHVpbnQzMl90ICogcF9jYWxlbmRhcl92YWx1ZSwNCi0gICAgdWludDMyX3QgKiBwX2NvbXBhcmVfbWFzaw0KLSAgICANCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19pbml0DQotKA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQzMl90IHByZXNjYWxlcg0KLSkNCi17DQotICAgIEFTU0VSVChwcmVzY2FsZXIgPD0gTUFYX1BSRVNDQUxBUl9DT1VOVCk7DQotDQotICAgIGlmKHByZXNjYWxlciA8PSBNQVhfUFJFU0NBTEFSX0NPVU5UKQ0KLSAgICB7DQotICAgICAgICAvKiBTdG9wIHRoZSBSVEMuICovDQotICAgICAgICBNU1NfUlRDX3N0b3AoKTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogRGlzYWJsZSBhbGFybS4gKi8NCi0gICAgICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX0FMQVJNX09GRl9NQVNLOw0KLSAgICAgICAgDQotICAgICAgICAvKiBEaXNhYmxlIEludGVycnVwdCAqLw0KLSAgICAgICAgTVNTX1JUQ19kaXNhYmxlX2lycSgpOw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoUlRDX1dha2V1cF9JUlFuKTsNCi0NCi0gICAgICAgIC8qIENsZWFyIFJUQyB3YWtlIHVwIGludGVycnVwdCBzaWduYWwgKi8NCi0gICAgICAgIE1TU19SVENfY2xlYXJfaXJxKCk7DQotDQotICAgICAgICAvKiBFbmFibGUgdGhlIFJUQyB0byBpbnRlcnJ1cHQgdGhlIENvcnRleC1NMy4gKi8NCi0gICAgICAgIFNZU1JFRy0+UlRDX1dBS0VVUF9DUiB8PSBTWVNSRUdfUlRDX1dBS0VVUF9NM19FTl9NQVNLOw0KLSAgICAgICAgDQotICAgICAgICAvKiBTZWxlY3QgbW9kZSBvZiBvcGVyYXRpb24sIGluY2x1ZGluZyB0aGUgd2FrZSBjb25maWd1cmF0aW9uLiAqLw0KLSAgICAgICAgaWYoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IG1vZGUpDQotICAgICAgICB7DQotICAgICAgICAgICAgUlRDLT5NT0RFX1JFRyA9IE1PREVfQ0xLX01PREVfTUFTSzsNCi0gICAgICAgIH0NCi0gICAgICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBSVEMtPk1PREVfUkVHID0gMHU7DQotICAgICAgICB9DQotICAgICAgICANCi0gICAgICAgIC8qIFJlc2V0IHRoZSBhbGFybSBhbmQgY29tcGFyZSByZWdpc3RlcnMgdG8gYSBrbm93biB2YWx1ZS4gKi8NCi0gICAgICAgIFJUQy0+QUxBUk1fTE9XRVJfUkVHID0gMHU7DQotICAgICAgICBSVEMtPkFMQVJNX1VQUEVSX1JFRyA9IDB1Ow0KLSAgICAgICAgUlRDLT5DT01QQVJFX0xPV0VSX1JFRyA9IDB1Ow0KLSAgICAgICAgUlRDLT5DT01QQVJFX1VQUEVSX1JFRyA9IDB1Ow0KLQ0KLSAgICAgICAgLyogUmVzZXQgdGhlIGNhbGVuZGFyIGNvdW50ZXJzICovDQotICAgICAgICBNU1NfUlRDX3Jlc2V0X2NvdW50ZXIoKTsNCi0NCi0gICAgICAgIC8qIFNldCBuZXcgUHJlc2NhbGVyIHZhbHVlICovDQotICAgICAgICBSVEMtPlBSRVNDQUxFUl9SRUcgPSBwcmVzY2FsZXI7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50DQotKA0KLSAgICBjb25zdCBtc3NfcnRjX2NhbGVuZGFyX3QgKm5ld19ydGNfdmFsdWUNCi0pDQotew0KLSAgICB1aW50OF90IGVycm9yID0gMHU7DQotICAgIHVpbnQ4X3QgY2xvY2tfbW9kZTsNCi0gICAgDQotICAgIGNvbnN0IHVpbnQ4X3QgZ19ydGNfbWF4X2NvdW50X2x1dFtdID0NCi0gICAgew0KLSAgICAgICAvKiBDYWxlbmRhciBtb2RlICovDQotICAgICAgICA1OXUsICAgIC8qIFNlY29uZHMgKi8NCi0gICAgICAgIDU5dSwgICAgLyogTWludXRlcyAqLw0KLSAgICAgICAgMjN1LCAgICAvKiBIb3VycyAgICovDQotICAgICAgICAzMXUsICAgIC8qIERheXMgICAgKi8NCi0gICAgICAgIDEydSwgICAgLyogTW9udGhzICAqLw0KLSAgICAgICAgMjU0dSwgICAvKiBZZWFycyAgICovDQotICAgICAgICA3dSwgICAgIC8qIFdlZWtkYXlzKi8NCi0gICAgICAgIDUydSAgICAgLyogV2VlayAgICAqLw0KLSAgICB9Ow0KLQ0KLSAgICBjb25zdCB1aW50OF90IGdfcnRjX21pbl9jb3VudF9sdXRbXSA9DQotICAgIHsNCi0gICAgICAgLyogQ2FsZW5kYXIgbW9kZSAqLw0KLSAgICAgICAgMHUsIC8qIFNlY29uZHMgKi8NCi0gICAgICAgIDB1LCAvKiBNaW51dGVzICovDQotICAgICAgICAwdSwgLyogSG91cnMgICAqLw0KLSAgICAgICAgMXUsIC8qIERheXMgICAgKi8NCi0gICAgICAgIDF1LCAvKiBNb250aHMgICovDQotICAgICAgICAwdSwgLyogWWVhcnMgICAqLw0KLSAgICAgICAgMXUsIC8qIFdlZWtkYXlzKi8NCi0gICAgICAgIDF1ICAvKiBXZWVrICAgICovDQotICAgIH07DQotICAgIA0KLSAgICAvKiBBc3NlcnQgaWYgdGhlIHZhbHVlcyBjcm9zcyB0aGUgbGltaXQgKi8NCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPnNlY29uZCA+PSBnX3J0Y19taW5fY291bnRfbHV0W1NFQ09ORFNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPnNlY29uZCA8PSBnX3J0Y19tYXhfY291bnRfbHV0W1NFQ09ORFNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPm1pbnV0ZSA+PSBnX3J0Y19taW5fY291bnRfbHV0W01JTlVURVNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPm1pbnV0ZSA8PSBnX3J0Y19tYXhfY291bnRfbHV0W01JTlVURVNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPmhvdXIgPj0gZ19ydGNfbWluX2NvdW50X2x1dFtIT1VSU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+aG91ciA8PSBnX3J0Y19tYXhfY291bnRfbHV0W0hPVVJTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT5kYXkgPj0gZ19ydGNfbWluX2NvdW50X2x1dFtEQVlTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT5kYXkgPD0gZ19ydGNfbWF4X2NvdW50X2x1dFtEQVlTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT5tb250aCA+PSBnX3J0Y19taW5fY291bnRfbHV0W01PTlRIU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+bW9udGggPD0gZ19ydGNfbWF4X2NvdW50X2x1dFtNT05USFNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPnllYXIgPj0gZ19ydGNfbWluX2NvdW50X2x1dFtZRUFSU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+eWVhciA8PSBnX3J0Y19tYXhfY291bnRfbHV0W1lFQVJTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT53ZWVrZGF5ID49IGdfcnRjX21pbl9jb3VudF9sdXRbV0VFS0RBWVNdKTsNCi0gICAgQVNTRVJUKG5ld19ydGNfdmFsdWUtPndlZWtkYXkgPD0gZ19ydGNfbWF4X2NvdW50X2x1dFtXRUVLREFZU10pOw0KLSAgICBBU1NFUlQobmV3X3J0Y192YWx1ZS0+d2VlayA+PSBnX3J0Y19taW5fY291bnRfbHV0W1dFRUtTXSk7DQotICAgIEFTU0VSVChuZXdfcnRjX3ZhbHVlLT53ZWVrIDw9IGdfcnRjX21heF9jb3VudF9sdXRbV0VFS1NdKTsNCi0NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+c2Vjb25kIDwgZ19ydGNfbWluX2NvdW50X2x1dFtTRUNPTkRTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5zZWNvbmQgPiBnX3J0Y19tYXhfY291bnRfbHV0W1NFQ09ORFNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPm1pbnV0ZSA8IGdfcnRjX21pbl9jb3VudF9sdXRbTUlOVVRFU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+bWludXRlID4gZ19ydGNfbWF4X2NvdW50X2x1dFtNSU5VVEVTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5ob3VyIDwgZ19ydGNfbWluX2NvdW50X2x1dFtIT1VSU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+aG91ciA+IGdfcnRjX21heF9jb3VudF9sdXRbSE9VUlNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPmRheSA8IGdfcnRjX21pbl9jb3VudF9sdXRbREFZU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+ZGF5ID4gZ19ydGNfbWF4X2NvdW50X2x1dFtEQVlTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5tb250aCA8IGdfcnRjX21pbl9jb3VudF9sdXRbTU9OVEhTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT5tb250aCA+IGdfcnRjX21heF9jb3VudF9sdXRbTU9OVEhTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT55ZWFyIDwgZ19ydGNfbWluX2NvdW50X2x1dFtZRUFSU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+eWVhciA+IGdfcnRjX21heF9jb3VudF9sdXRbWUVBUlNdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPndlZWtkYXkgPCBnX3J0Y19taW5fY291bnRfbHV0W1dFRUtEQVlTXSkge2Vycm9yID0gMXU7fQ0KLSAgICBpZihuZXdfcnRjX3ZhbHVlLT53ZWVrZGF5ID4gZ19ydGNfbWF4X2NvdW50X2x1dFtXRUVLREFZU10pIHtlcnJvciA9IDF1O30NCi0gICAgaWYobmV3X3J0Y192YWx1ZS0+d2VlayA8IGdfcnRjX21pbl9jb3VudF9sdXRbV0VFS1NdKSB7ZXJyb3IgPSAxdTt9DQotICAgIGlmKG5ld19ydGNfdmFsdWUtPndlZWsgPiBnX3J0Y19tYXhfY291bnRfbHV0W1dFRUtTXSkge2Vycm9yID0gMXU7fQ0KLQ0KLSAgICAvKiANCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICogY2FsZW5kYXIgY291bnRlciBtb2RlLiANCi0gICAgICovDQotICAgIGNsb2NrX21vZGUgPSBnZXRfY2xvY2tfbW9kZSgpOw0KLSAgICBBU1NFUlQoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IGNsb2NrX21vZGUpOw0KLSAgICANCi0gICAgaWYoKDB1ID09IGVycm9yKSAmJiAoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IGNsb2NrX21vZGUpKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCB1cGxvYWRfaW5fcHJvZ3Jlc3M7DQotICAgICAgICANCi0gICAgICAgIC8qDQotICAgICAgICAgKiBXcml0ZSB0aGUgUlRDIG5ldyB2YWx1ZS4gDQotICAgICAgICAgKi8NCi0gICAgICAgIFJUQy0+U0VDT05EU19SRUcgPSBuZXdfcnRjX3ZhbHVlLT5zZWNvbmQ7DQotICAgICAgICBSVEMtPk1JTlVURVNfUkVHID0gbmV3X3J0Y192YWx1ZS0+bWludXRlOw0KLSAgICAgICAgUlRDLT5IT1VSU19SRUcgPSBuZXdfcnRjX3ZhbHVlLT5ob3VyOw0KLSAgICAgICAgUlRDLT5EQVlfUkVHID0gbmV3X3J0Y192YWx1ZS0+ZGF5Ow0KLSAgICAgICAgUlRDLT5NT05USF9SRUcgPSBuZXdfcnRjX3ZhbHVlLT5tb250aDsNCi0gICAgICAgIFJUQy0+WUVBUl9SRUcgPSBuZXdfcnRjX3ZhbHVlLT55ZWFyOw0KLSAgICAgICAgUlRDLT5XRUVLREFZX1JFRyA9IG5ld19ydGNfdmFsdWUtPndlZWtkYXk7DQotICAgICAgICBSVEMtPldFRUtfUkVHID0gbmV3X3J0Y192YWx1ZS0+d2VlazsNCi0NCi0gICAgICAgIC8qIERhdGEgaXMgY29waWVkLCBub3cgaXNzdWUgdXBsb2FkIGNvbW1hbmQgKi8NCi0gICAgICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1VQTE9BRF9NQVNLIDsNCi0gICAgICAgIA0KLSAgICAgICAgLyogV2FpdCBmb3IgdGhlIHVwbG9hZCB0byBjb21wbGV0ZS4gKi8NCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICB1cGxvYWRfaW5fcHJvZ3Jlc3MgPSBSVEMtPkNPTlRST0xfUkVHICYgQ09OVFJPTF9VUExPQURfTUFTSzsNCi0gICAgICAgIH0gd2hpbGUodXBsb2FkX2luX3Byb2dyZXNzKTsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfc2V0X2JpbmFyeV9jb3VudA0KLSgNCi0gICAgdWludDY0X3QgbmV3X3J0Y192YWx1ZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgY2xvY2tfbW9kZTsNCi0NCi0gICAgLyogDQotICAgICAqIFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAqIGJpbmFyeSBjb3VudGVyIG1vZGUuIA0KLSAgICAgKi8NCi0gICAgY2xvY2tfbW9kZSA9IGdldF9jbG9ja19tb2RlKCk7DQotICAgIEFTU0VSVChNU1NfUlRDX0JJTkFSWV9NT0RFID09IGNsb2NrX21vZGUpOw0KLSAgICANCi0gICAgaWYoTVNTX1JUQ19CSU5BUllfTU9ERSA9PSBjbG9ja19tb2RlKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBydGNfdXBwZXJfMzJfYml0X3ZhbHVlOw0KLSAgICAgICAgDQotICAgICAgICBydGNfdXBwZXJfMzJfYml0X3ZhbHVlID0gKHVpbnQzMl90KShuZXdfcnRjX3ZhbHVlID4+IDMydSkgJiBNQVNLXzMyX0JJVDsNCi0NCi0gICAgICAgIC8qIEFzc2VydCBpZiB0aGUgdmFsdWVzIGNyb3NzIHRoZSBsaW1pdCAqLw0KLSAgICAgICAgQVNTRVJUKHJ0Y191cHBlcl8zMl9iaXRfdmFsdWUgPD0gTUFYX0JJTkFSWV9ISUdIRVJfQ09VTlQpOw0KLQ0KLSAgICAgICAgaWYocnRjX3VwcGVyXzMyX2JpdF92YWx1ZSA8PSBNQVhfQklOQVJZX0hJR0hFUl9DT1VOVCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB1aW50MzJfdCB1cGxvYWRfaW5fcHJvZ3Jlc3M7DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgKiBXcml0ZSB0aGUgUlRDIG5ldyB2YWx1ZS4gDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgUlRDLT5EQVRFX1RJTUVfTE9XRVJfUkVHID0gKHVpbnQzMl90KW5ld19ydGNfdmFsdWU7DQotICAgICAgICAgICAgUlRDLT5EQVRFX1RJTUVfVVBQRVJfUkVHID0NCi0gICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKCBuZXdfcnRjX3ZhbHVlID4+IDMydSkgJiBNQVhfQklOQVJZX0hJR0hFUl9DT1VOVCk7DQotDQotICAgICAgICAgICAgLyogRGF0YSBpcyBjb3BpZWQsIG5vdyBpc3N1ZSB1cGxvYWQgY29tbWFuZCAqLw0KLSAgICAgICAgICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1VQTE9BRF9NQVNLOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgICAgIC8qIFdhaXQgZm9yIHRoZSB1cGxvYWQgdG8gY29tcGxldGUuICovDQotICAgICAgICAgICAgZG8gew0KLSAgICAgICAgICAgICAgICB1cGxvYWRfaW5fcHJvZ3Jlc3MgPSBSVEMtPkNPTlRST0xfUkVHICYgQ09OVFJPTF9VUExPQURfTUFTSzsNCi0gICAgICAgICAgICB9IHdoaWxlKHVwbG9hZF9pbl9wcm9ncmVzcyk7DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudA0KLSgNCi0gICAgbXNzX3J0Y19jYWxlbmRhcl90ICpwX3J0Y19jYWxlbmRhcg0KLSkNCi17DQotICAgIHVpbnQ4X3QgY2xvY2tfbW9kZTsNCi0gICAgLyogDQotICAgICAqIFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAqIGNhbGVuZGFyIGNvdW50ZXIgbW9kZS4gDQotICAgICAqLw0KLSAgICBjbG9ja19tb2RlID0gZ2V0X2Nsb2NrX21vZGUoKTsNCi0gICAgQVNTRVJUKE1TU19SVENfQ0FMRU5EQVJfTU9ERSA9PSBjbG9ja19tb2RlKTsNCi0gICAgDQotICAgIGlmKE1TU19SVENfQ0FMRU5EQVJfTU9ERSA9PSBjbG9ja19tb2RlKQ0KLSAgICB7DQotICAgICAgICBwX3J0Y19jYWxlbmRhci0+c2Vjb25kID0gKHVpbnQ4X3QpUlRDLT5TRUNPTkRTX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT5taW51dGUgPSAodWludDhfdClSVEMtPk1JTlVURVNfUkVHOw0KLSAgICAgICAgcF9ydGNfY2FsZW5kYXItPmhvdXIgPSAodWludDhfdClSVEMtPkhPVVJTX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT5kYXkgPSAodWludDhfdClSVEMtPkRBWV9SRUc7DQotICAgICAgICBwX3J0Y19jYWxlbmRhci0+bW9udGggPSAodWludDhfdClSVEMtPk1PTlRIX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT55ZWFyID0gKHVpbnQ4X3QpUlRDLT5ZRUFSX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT53ZWVrZGF5ID0gKHVpbnQ4X3QpUlRDLT5XRUVLREFZX1JFRzsNCi0gICAgICAgIHBfcnRjX2NhbGVuZGFyLT53ZWVrID0gKHVpbnQ4X3QpUlRDLT5XRUVLX1JFRzsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBTZXQgcmV0dXJuZWQgY2FsZW5kYXIgY291bnQgdG8gemVybyBpZiB0aGUgUlRDIGlzIG5vdCBjb25maWd1cmVkIGZvcg0KLSAgICAgICAgICogY2FsZW5kYXIgY291bnRlciBtb2RlLiBUaGlzIHNob3VsZCBtYWtlIGluY29ycmVjdCByZWxlYXNlIGFwcGxpY2F0aW9uDQotICAgICAgICAgKiBjb2RlIGJlaGF2ZSBjb25zaXN0ZW50bHkgYW5kIGhlbHAgYXBwbGljYXRpb24gZGVidWdnaW5nLg0KLSAgICAgICAgICovDQotICAgICAgICBtZW1zZXQocF9ydGNfY2FsZW5kYXIsIDAsIHNpemVvZihtc3NfcnRjX2NhbGVuZGFyX3QpKTsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdWludDY0X3QNCi1NU1NfUlRDX2dldF9iaW5hcnlfY291bnQNCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICB1aW50NjRfdCBydGNfY291bnQ7DQotICAgIHVpbnQ4X3QgY2xvY2tfbW9kZTsNCi0NCi0gICAgLyogDQotICAgICAqIFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAqIGJpbmFyeSBjb3VudGVyIG1vZGUuIA0KLSAgICAgKi8NCi0gICAgY2xvY2tfbW9kZSA9IGdldF9jbG9ja19tb2RlKCk7DQotICAgIEFTU0VSVChNU1NfUlRDX0JJTkFSWV9NT0RFID09IGNsb2NrX21vZGUpOw0KLSAgICANCi0gICAgaWYoTVNTX1JUQ19CSU5BUllfTU9ERSA9PSBjbG9ja19tb2RlKQ0KLSAgICB7DQotICAgICAgICBydGNfY291bnQgPSBSVEMtPkRBVEVfVElNRV9MT1dFUl9SRUc7DQotICAgICAgICBydGNfY291bnQgPSBydGNfY291bnQgfCAoKHVpbnQ2NF90KVJUQy0+REFURV9USU1FX1VQUEVSX1JFRyA8PCAzMnUpIDsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBTZXQgcmV0dXJuZWQgYmluYXJ5IGNvdW50IHRvIHplcm8gaWYgdGhlIFJUQyBpcyBub3QgY29uZmlndXJlZCBmb3INCi0gICAgICAgICAqIGJpbmFyeSBjb3VudGVyIG1vZGUuIFRoaXMgc2hvdWxkIG1ha2UgaW5jb3JyZWN0IHJlbGVhc2UgYXBwbGljYXRpb24NCi0gICAgICAgICAqIGNvZGUgYmVoYXZlIGNvbnNpc3RlbnRseSBhbmQgaGVscCBhcHBsaWNhdGlvbiBkZWJ1Z2dpbmcuDQotICAgICAgICAgKi8NCi0gICAgICAgIHJ0Y19jb3VudCA9IDB1Ow0KLSAgICB9DQotDQotICAgIHJldHVybiBydGNfY291bnQ7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBhZGRfYWxhcm1fY2ZnX3ZhbHVlcw0KLSgNCi0gICAgdWludDhfdCBjYWxlbmRhcl9pdGVtLA0KLSAgICB1aW50MzJfdCAqIHBfY2FsZW5kYXJfdmFsdWUsDQotICAgIHVpbnQzMl90ICogcF9jb21wYXJlX21hc2sNCi0gICAgDQotKQ0KLXsNCi0gICAgaWYoTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUgPT0gY2FsZW5kYXJfaXRlbSkNCi0gICAgew0KLSAgICAgICAgKnBfY2FsZW5kYXJfdmFsdWUgPSAodWludDMyX3QpKCpwX2NhbGVuZGFyX3ZhbHVlIDw8IENBTEVOREFSX1NISUZUKTsNCi0gICAgICAgICpwX2NvbXBhcmVfbWFzayA9ICh1aW50MzJfdCkoKnBfY29tcGFyZV9tYXNrIDw8IENBTEVOREFSX1NISUZUKTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgICpwX2NhbGVuZGFyX3ZhbHVlID0gKHVpbnQzMl90KSgoKnBfY2FsZW5kYXJfdmFsdWUgPDwgQ0FMRU5EQVJfU0hJRlQpIHwgKHVpbnQzMl90KWNhbGVuZGFyX2l0ZW0pOw0KLSAgICAgICAgKnBfY29tcGFyZV9tYXNrID0gKHVpbnQzMl90KSgoKnBfY29tcGFyZV9tYXNrIDw8IENBTEVOREFSX1NISUZUKSB8ICh1aW50MzJfdCkweEZGdSk7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnRfYWxhcm0NCi0oDQotICAgIGNvbnN0IG1zc19ydGNfY2FsZW5kYXJfdCAqIGFsYXJtX3ZhbHVlDQotKQ0KLXsNCi0gICAgdWludDMyX3QgY2FsZW5kYXJfdmFsdWU7DQotICAgIHVpbnQzMl90IGNvbXBhcmVfbWFzazsNCi0gICAgdWludDhfdCBtb2RlOw0KLSAgICANCi0gICAgbW9kZSA9ICh1aW50OF90KShSVEMtPk1PREVfUkVHICYgTU9ERV9DTEtfTU9ERV9NQVNLKTsNCi0gICAgLyoNCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggdGhlIFJUQyBzZXQgdG8gb3BlcmF0ZSBpbiBjYWxlbmRhcg0KLSAgICAgKiBtb2RlLg0KLSAgICAgKi8NCi0gICAgQVNTRVJUKE1TU19SVENfQ0FMRU5EQVJfTU9ERSA9PSBtb2RlKTsNCi0gICAgaWYoTVNTX1JUQ19DQUxFTkRBUl9NT0RFID09IG1vZGUpDQotICAgIHsNCi0gICAgICAgIHVpbnQ4X3QgcmVxdWlyZWRfbW9kZV9yZWc7DQotICAgICAgICANCi0gICAgICAgIC8qIERpc2FibGUgdGhlIGFsYXJtIGJlZm9yZSB1cGRhdGluZyovDQotICAgICAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9BTEFSTV9PRkZfTUFTSzsNCi0NCi0gICAgICAgIC8qIFNldCBhbGFybSBhbmQgY29tcGFyZSBsb3dlciByZWdpc3RlcnMuICovDQotICAgICAgICBjYWxlbmRhcl92YWx1ZSA9IDB1Ow0KLSAgICAgICAgY29tcGFyZV9tYXNrID0gMHU7DQotICAgICAgICANCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT5kYXksICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotICAgICAgICBhZGRfYWxhcm1fY2ZnX3ZhbHVlcyhhbGFybV92YWx1ZS0+aG91ciwgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT5taW51dGUsICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotICAgICAgICBhZGRfYWxhcm1fY2ZnX3ZhbHVlcyhhbGFybV92YWx1ZS0+c2Vjb25kLCAmY2FsZW5kYXJfdmFsdWUsICZjb21wYXJlX21hc2spOw0KLQ0KLSAgICAgICAgUlRDLT5BTEFSTV9MT1dFUl9SRUcgPSBjYWxlbmRhcl92YWx1ZTsNCi0gICAgICAgIFJUQy0+Q09NUEFSRV9MT1dFUl9SRUcgPSBjb21wYXJlX21hc2s7DQotDQotICAgICAgICAvKiBTZXQgYWxhcm0gYW5kIGNvbXBhcmUgdXBwZXIgcmVnaXN0ZXJzLiAqLw0KLSAgICAgICAgY2FsZW5kYXJfdmFsdWUgPSAwdTsNCi0gICAgICAgIGNvbXBhcmVfbWFzayA9IDB1Ow0KLSAgICAgICAgDQotICAgICAgICBhZGRfYWxhcm1fY2ZnX3ZhbHVlcyhhbGFybV92YWx1ZS0+d2VlaywgJmNhbGVuZGFyX3ZhbHVlLCAmY29tcGFyZV9tYXNrKTsNCi0gICAgICAgIGFkZF9hbGFybV9jZmdfdmFsdWVzKGFsYXJtX3ZhbHVlLT53ZWVrZGF5LCAmY2FsZW5kYXJfdmFsdWUsICZjb21wYXJlX21hc2spOw0KLSAgICAgICAgYWRkX2FsYXJtX2NmZ192YWx1ZXMoYWxhcm1fdmFsdWUtPnllYXIsICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotICAgICAgICBhZGRfYWxhcm1fY2ZnX3ZhbHVlcyhhbGFybV92YWx1ZS0+bW9udGgsICZjYWxlbmRhcl92YWx1ZSwgJmNvbXBhcmVfbWFzayk7DQotDQotICAgICAgICBSVEMtPkFMQVJNX1VQUEVSX1JFRyA9IGNhbGVuZGFyX3ZhbHVlOw0KLSAgICAgICAgUlRDLT5DT01QQVJFX1VQUEVSX1JFRyA9IGNvbXBhcmVfbWFzazsNCi0gICAgICAgIA0KLSAgICAgICAgLyogQ29uZmlndXJlIHRoZSBSVEMgdG8gZW5hYmxlIHRoZSBhbGFybS4gKi8NCi0gICAgICAgIHJlcXVpcmVkX21vZGVfcmVnID0gbW9kZSB8IE1PREVfV0FLRVVQX0VOX01BU0sgfCBNT0RFX1dBS0VVUF9DT05USU5VRV9NQVNLOw0KLSAgICAgICAgc2V0X3J0Y19tb2RlKHJlcXVpcmVkX21vZGVfcmVnKTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogRW5hYmxlIHRoZSBhbGFybSAqLw0KLSAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfQUxBUk1fT05fTUFTSyA7DQotICAgIH0NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFdlIG9ubHkgd3JpdGUgdGhlIFJUQyBtb2RlIHJlZ2lzdGVyIGlmIHJlYWxseSByZXF1aXJlZCBiZWNhdXNlIHRoZSBSVEMgbmVlZHMNCi0gIHRvIGJlIHN0b3BwZWQgZm9yIHRoZSBtb2RlIHJlZ2lzdGVyIHRvIGJlIHdyaXR0ZW4uIFN0b3BwaW5nIHRoZSBSVEMgZXZlcnl0aW1lDQotICB0aGUgd2FrZXVwIGFsYXJtIGNvbmZpZ3VyYXRpb24gaXMgc2V0IG1pZ2h0IGluZHVjZSBkcmlmdCBvbiB0aGUgUlRDIHRpbWUuDQotICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBzZXR0aW5nIGFsYXJtcy4NCi0gKi8NCi1zdGF0aWMgdm9pZCBzZXRfcnRjX21vZGUodWludDhfdCByZXF1ZXN0ZWRfbW9kZSkNCi17DQotICAgIGlmKFJUQy0+TU9ERV9SRUcgIT0gcmVxdWVzdGVkX21vZGUpDQotICAgIHsNCi0gICAgICAgIHVpbnQzMl90IHJ0Y19ydW5uaW5nOw0KLSAgICAgICAgcnRjX3J1bm5pbmcgPSBSVEMtPkNPTlRST0xfUkVHICYgQ09OVFJPTF9SVU5OSU5HX01BU0s7DQotICAgICAgICBpZihydGNfcnVubmluZykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBTdG9wIHRoZSBSVEMgaW4gb3JkZXIgdG8gY2hhbmdlIHRoZSBtb2RlIHJlZ2lzdGVyIGNvbnRlbnQuKi8NCi0gICAgICAgICAgICBNU1NfUlRDX3N0b3AoKTsNCi0gICAgICAgICAgICBSVEMtPk1PREVfUkVHID0gcmVxdWVzdGVkX21vZGU7DQotICAgICAgICAgICAgTVNTX1JUQ19zdGFydCgpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIFJUQy0+TU9ERV9SRUcgPSByZXF1ZXN0ZWRfbW9kZTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfUlRDX3NldF9iaW5hcnlfY291bnRfYWxhcm0NCi0oDQotICAgIHVpbnQ2NF90IGFsYXJtX3ZhbHVlLA0KLSAgICBtc3NfcnRjX2FsYXJtX3R5cGVfdCBhbGFybV90eXBlDQotKQ0KLXsNCi0gICAgdWludDhfdCBtb2RlOw0KLSAgICANCi0gICAgbW9kZSA9ICh1aW50OF90KShSVEMtPk1PREVfUkVHICYgTU9ERV9DTEtfTU9ERV9NQVNLKTsNCi0gICAgLyoNCi0gICAgICogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSB1c2VkIHdpdGggdGhlIFJUQyBzZXQgdG8gb3BlcmF0ZSBpbiBiaW5hcnkNCi0gICAgICogY291bnRlciBtb2RlLg0KLSAgICAgKi8NCi0gICAgQVNTRVJUKE1TU19SVENfQklOQVJZX01PREUgPT0gbW9kZSk7DQotICAgIGlmKE1TU19SVENfQklOQVJZX01PREUgPT0gbW9kZSkNCi0gICAgew0KLSAgICAgICAgdWludDhfdCByZXF1aXJlZF9tb2RlX3JlZzsNCi0gICAgICAgIA0KLSAgICAgICAgLyogRGlzYWJsZSB0aGUgYWxhcm0gYmVmb3JlIHVwZGF0aW5nKi8NCi0gICAgICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX0FMQVJNX09GRl9NQVNLOw0KLQ0KLSAgICAgICAgLyogU2V0IHRoZSBhbGFybSB2YWx1ZS4gKi8NCi0gICAgICAgIFJUQy0+Q09NUEFSRV9MT1dFUl9SRUcgPSBDT01QQVJFX0FMTF9CSVRTOw0KLSAgICAgICAgUlRDLT5DT01QQVJFX1VQUEVSX1JFRyA9IENPTVBBUkVfQUxMX0JJVFM7DQotICAgICAgICBSVEMtPkFMQVJNX0xPV0VSX1JFRyA9ICh1aW50MzJfdClhbGFybV92YWx1ZTsNCi0gICAgICAgIFJUQy0+QUxBUk1fVVBQRVJfUkVHID0gKHVpbnQzMl90KShhbGFybV92YWx1ZSA+PiAzMnUpOw0KLQ0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIENvbmZpZ3VyZSB0aGUgUlRDIHRvIGVuYWJsZSB0aGUgYWxhcm0uDQotICAgICAgICAgKi8NCi0gICAgICAgIHJlcXVpcmVkX21vZGVfcmVnID0gbW9kZSB8IE1PREVfV0FLRVVQX0VOX01BU0sgfCBNT0RFX1dBS0VVUF9DT05USU5VRV9NQVNLOw0KLSAgICAgICAgaWYoTVNTX1JUQ19QRVJJT0RJQ19BTEFSTSA9PSBhbGFybV90eXBlKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICogVGhlIFJUQyBiaW5hcnkgY291bnRlciB3aWxsIGJlIGZ1bGx5IHJlc2V0IHdoZW4gdGhlIGFsYXJtIG9jY3Vycy4NCi0gICAgICAgICAgICAgKiBUaGUgY291bnRlciB3aWxsIGNvbnRpbnVlIGNvdW50aW5nIHdoaWxlIHRoZSB3YWtlLXVwIGludGVycnVwdCBpcw0KLSAgICAgICAgICAgICAqIGFjdGl2ZS4NCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICByZXF1aXJlZF9tb2RlX3JlZyB8PSBNT0RFX1dBS0VVUF9SRVNFVF9NQVNLOw0KLSAgICAgICAgfQ0KLSAgICAgICAgc2V0X3J0Y19tb2RlKHJlcXVpcmVkX21vZGVfcmVnKTsNCi0gICAgICAgIA0KLSAgICAgICAgLyogRW5hYmxlIHRoZSBhbGFybSAqLw0KLSAgICAgICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfQUxBUk1fT05fTUFTSzsNCi0gICAgfQ0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfc3RhcnQNCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9SVENfU1RBUlRfTUFTSzsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gKiBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX3N0b3ANCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICB1aW50MzJfdCBydGNfcnVubmluZzsNCi0gICAgDQotICAgIC8qDQotICAgICAqIFNlbmQgY29tbWFuZCB0byBzdG9wIFJUQy4NCi0gICAgICovDQotICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1JUQ19TVE9QX01BU0s7DQotICAgIA0KLSAgICAvKiANCi0gICAgICogV2FpdCBmb3IgUlRDIGludGVybmFsIHN5bmNocm9uaXphdGlvbiB0byB0YWtlIHBsYWNlIGFuZCBSVEMgdG8gYWN0dWFsbHkNCi0gICAgICogc3RvcC4NCi0gICAgICovDQotICAgIGRvIHsNCi0gICAgICAgIHJ0Y19ydW5uaW5nID0gIFJUQy0+Q09OVFJPTF9SRUcgJiBDT05UUk9MX1JVTk5JTkdfTUFTSzsNCi0gICAgfSB3aGlsZShydGNfcnVubmluZyk7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBTZWUgIm1zc19ydGMuaCIgZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX3Jlc2V0X2NvdW50ZXINCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICB1aW50MzJfdCB1cGxvYWRfaW5fcHJvZ3Jlc3M7DQotICAgIA0KLSAgICBSVEMtPkNPTlRST0xfUkVHID0gQ09OVFJPTF9SRVNFVF9NQVNLOw0KLSAgICANCi0gICAgLyogV2FpdCBmb3IgdGhlIHVwbG9hZCB0byBjb21wbGV0ZS4gKi8NCi0gICAgZG8gew0KLSAgICAgICAgdXBsb2FkX2luX3Byb2dyZXNzID0gUlRDLT5DT05UUk9MX1JFRyAmIENPTlRST0xfVVBMT0FEX01BU0s7DQotICAgIH0gd2hpbGUodXBsb2FkX2luX3Byb2dyZXNzKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdWludDMyX3QgTVNTX1JUQ19nZXRfdXBkYXRlX2ZsYWcodm9pZCkNCi17DQotICAgIHVpbnQzMl90IHVwZGF0ZWQ7DQotICAgIHVwZGF0ZWQgPSBSVEMtPkNPTlRST0xfUkVHICYgQ09OVFJPTF9VUERBVEVEX01BU0s7DQotICAgIHJldHVybiB1cGRhdGVkOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcodm9pZCkNCi17DQotICAgIC8qIENsZWFyIHRoZSAidXBkYXRlZCIgY29udHJvbCBiaXQuICovDQotICAgIFJUQy0+Q09OVFJPTF9SRUcgPSBDT05UUk9MX1VQREFURURfTUFTSzsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfUlRDX2VuYWJsZV9pcnEodm9pZCkNCi17DQotICAgIC8qDQotICAgICAqIE9ubHkgdGhlIE5WSUMgbGV2ZWwgaW50ZXJydXB0IGVuYWJsZSBpcyBwZXJmb3JtZWQgd2l0aGluIHRoaXMgZnVuY3Rpb24uDQotICAgICAqIFRoZSBSVEMgbGV2ZWwgaW50ZXJydXB0IGVuYWJsZSBpcyBwZXJmb3JtZWQgd2l0aGluIHRoZSBhbGFybSBzZXR0aW5nDQotICAgICAqIGZ1bmN0aW9ucy4NCi0gICAgICogVGhpcyBhdm9pZCB0aGUgTU9ERSByZWdpc3RlciBiZWluZyBtb2RpZmllZCB3aGVuZXZlciBDb3J0ZXgtTTMgUlRDDQotICAgICAqIGludGVycnVwdHMgYXJlIGVuYWJsZWQvZGlzYWJsZWQuIA0KLSAgICAgKi8NCi0gICAgTlZJQ19FbmFibGVJUlEoUlRDX1dha2V1cF9JUlFuKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFNlZSAibXNzX3J0Yy5oIiBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19SVENfZGlzYWJsZV9pcnENCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICAvKg0KLSAgICAgKiBPbmx5IHRoZSBOVklDIGxldmVsIGludGVycnVwdCBkaXNhYmxlIGlzIHBlcmZvcm1lZCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4NCi0gICAgICogVGhpcyBhdm9pZCB0aGUgTU9ERSByZWdpc3RlciBiZWluZyBtb2RpZmllZCB3aGVuZXZlciBDb3J0ZXgtTTMgUlRDDQotICAgICAqIGludGVycnVwdHMgYXJlIGVuYWJsZWQvZGlzYWJsZWQuIA0KLSAgICAgKi8NCi0gICAgTlZJQ19EaXNhYmxlSVJRKFJUQ19XYWtldXBfSVJRbik7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICogU2VlICJtc3NfcnRjLmgiIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1JUQ19jbGVhcl9pcnENCi0oDQotICAgIHZvaWQNCi0pDQotew0KLSAgICAvKiBDbGVhciB3YWtlIHVwIGludGVycnVwdCBzaWduYWwgKi8NCi0gICAgUlRDLT5DT05UUk9MX1JFRyA9IENPTlRST0xfV0FLRVVQX0NMUl9NQVNLOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIGdldF9jbG9ja19tb2RlKCkgZnVuY3Rpb24gZ2V0cyB0aGUgY2xvY2sgbW9kZSBvZiBSVEMgaGFyZHdhcmUuDQotICBQb3NzaWJsZSBjbG9jayBtb2RlcyBhcmU6DQotICAgIE1TU19SVENfQ0FMRU5EQVJfTU9ERQ0KLSAgICBNU1NfUlRDX0JJTkFSWV9NT0RFDQotICovDQotc3RhdGljIHVpbnQ4X3QNCi1nZXRfY2xvY2tfbW9kZQ0KLSgNCi0gICAgdm9pZA0KLSkNCi17DQotICAgIHVpbnQ4X3QgY2xvY2tfbW9kZTsNCi0NCi0gICAgY2xvY2tfbW9kZSA9ICh1aW50OF90KShSVEMtPk1PREVfUkVHICYgTU9ERV9DTEtfTU9ERV9NQVNLKTsNCi0NCi0gICAgcmV0dXJuKGNsb2NrX21vZGUpOw0KLX0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19ydGMvbXNzX3J0Yy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjdjMTA2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfcnRjL21zc19ydGMuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBTbWFydEZ1c2lvbjIgTVNTIFJUQyBiYXJlIG1ldGFsIHNvZnR3YXJlIGRyaXZlciBwdWJsaWMgQVBJLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTM5NiAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTI3IDIxOjU3OjUwICswMDAwIChXZWQsIDI3IE1hciAyMDEzKSAkDQotICovDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8vKioNCi0gIEBtYWlucGFnZSBTbWFydEZ1c2lvbjIgTVNTIFJUQyBCYXJlIE1ldGFsIERyaXZlci4NCi0NCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gIFRoZSBTbWFydEZ1c2lvbjIgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbSAoTVNTKSBpbmNsdWRlcyBhIHJlYWwgdGltZSBjb3VudGVyDQotICAoUlRDKSB0aGF0IGNhbiBnZW5lcmF0ZSBhbGFybXMgYW5kIHdha2V1cCBpbnRlcnJ1cHRzIGluIHJlYWwgdGltZS4gVGhpcw0KLSAgc29mdHdhcmUgZHJpdmVyIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIE1TUyBSVEMgYXMNCi0gIHBhcnQgb2YgYSBiYXJlIG1ldGFsIHN5c3RlbSB3aGVyZSBubyBvcGVyYXRpbmcgc3lzdGVtIGlzIGF2YWlsYWJsZS4gVGhlIGRyaXZlcg0KLSAgY2FuIGJlIGFkYXB0ZWQgZm9yIHVzZSBhcyBwYXJ0IG9mIGFuIG9wZXJhdGluZyBzeXN0ZW0sIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24NCi0gIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyIGJldHdlZW4gdGhlIGRyaXZlciBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkcml2ZXINCi0gIG1vZGVsIGlzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoZSBkcml2ZXIuDQotICANCi0gIFRoZSBNU1MgUlRDIGRyaXZlciBwcm92aWRlcyBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOg0KLSAgICAtIEluaXRpYWxpemF0aW9uIG9mIHRoZSBSVEMNCi0gICAgLSBDb25maWd1cmF0aW9uIG9mIHRoZSBSVEMgdGltZWJhc2UNCi0gICAgLSBDb25maWd1cmF0aW9uIGFzIGEgY2FsZW5kYXIgb3IgYmluYXJ5IG1vZGUgY291bnRlcg0KLSAgICAtIFNldCB0aGUgY3VycmVudCBjYWxlbmRhciBvciBiaW5hcnkgbW9kZSBjb3VudA0KLSAgICAtIEdldCB0aGUgY3VycmVudCBjYWxlbmRhciBvciBiaW5hcnkgbW9kZSBjb3VudA0KLSAgICAtIFN0YXJ0IGFuZCBzdG9wIHRoZSBSVEMgY291bnRpbmcNCi0gICAgLSBTZXQgYWxhcm0gY29uZGl0aW9ucw0KLSAgICAtIEVuYWJsZSwgZGlzYWJsZSBhbmQgY2xlYXIgdGhlIHdha2V1cCBpbnRlcnJ1cHQNCi0gICAgDQotICBAc2VjdGlvbiBod19kZXBlbmRlbmNpZXMgSGFyZHdhcmUgRmxvdyBEZXBlbmRlbmNpZXMNCi0gIFRoZSBjb25maWd1cmF0aW9uIG9mIGFsbCBmZWF0dXJlcyBvZiB0aGUgTVNTIFJUQyBpcyBjb3ZlcmVkIGJ5IHRoaXMgZHJpdmVyDQotICB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIGNsb2NrIHNvdXJjZSBkcml2aW5nIHRoZSBNU1MgUlRDIGNsb2NrIChSVENDTEspDQotICBpbnB1dC4gVGhlIFNtYXJ0RnVzaW9uMiBNU1MgY2xvY2sgY29udHJvbGxlciBjYW4gc3VwcGx5IG9uZSBvZiB0aHJlZSBjbG9jaw0KLSAgc291cmNlcyB0byB0aGUgTVNTIFJUQyBjbG9jayBpbnB1dDoNCi0gICAgLSBDcnlzdGFsIE9zY2lsbGF0b3IgMzIuNzY4IGtIeg0KLSAgICAtIDFNSHogT3NjaWxsYXRvcg0KLSAgICAtIDUwTUh6IE9zY2lsbGF0b3IuICAoMjUgTUh6IGluIGEgMS4wdiBwYXJ0KS4NCi0gIFRoZSBTbWFydEZ1c2lvbjIgTVNTIGNvbmZpZ3VyYXRvciB0b29sIGluIHRoZSBoYXJkd2FyZSBmbG93IGNvbmZpZ3VyZXMgb25lDQotICBvZiB0aGVzZSBjbG9ja3MgYXMgdGhlIFJUQ0NMSyBpbnB1dCBzb3VyY2UuDQotICBUaGUgYmFzZSBhZGRyZXNzIGFuZCByZWdpc3RlciBhZGRyZXNzZXMgYW5kIGludGVycnVwdCBudW1iZXIgYXNzaWdubWVudCBmb3INCi0gIHRoZSBNU1MgUlRDIGJsb2NrIGFyZSBkZWZpbmVkIGFzIGNvbnN0YW50cyBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTIEhBTC4gWW91DQotICBtdXN0IGVuc3VyZSB0aGF0IHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMgSEFMIGlzIGVpdGhlciBpbmNsdWRlZCBpbiB0aGUgc29mdHdhcmUNCi0gIHRvb2wgY2hhaW4gdXNlZCB0byBidWlsZCB5b3VyIHByb2plY3Qgb3IgaXMgaW5jbHVkZWQgaW4geW91ciBwcm9qZWN0Lg0KLSAgDQotICBAc2VjdGlvbiB0aGVvcnlfb3AgVGhlb3J5IG9mIE9wZXJhdGlvbg0KLSAgVGhlIE1TUyBSVEMgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoNCi0gICAgLSBJbml0aWFsaXphdGlvbiBvZiB0aGUgUlRDIGRyaXZlciBhbmQgaGFyZHdhcmUNCi0gICAgLSBTZXR0aW5nIGFuZCByZWFkaW5nIHRoZSBSVEMgY291bnRlciBjdXJyZW50IHZhbHVlDQotICAgIC0gU2V0dGluZyBSVEMgYWxhcm0gdmFsdWVzDQotICAgIC0gU3RhcnRpbmcgYW5kIHN0b3BwaW5nIHRoZSBSVEMNCi0gICAgLSBJbnRlcnJ1cHQgQ29udHJvbA0KLSAgICANCi0gIEluaXRpYWxpemF0aW9uDQotICBUaGUgTVNTIFJUQyBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBhIGNhbGwgdG8gdGhlIE1TU19SVENfaW5pdCgpDQotICBmdW5jdGlvbi4gVGhlIE1TU19SVENfaW5pdCgpIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgTVNTIFJUQw0KLSAgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLg0KLSAgVGhlIE1TU19SVENfaW5pdCgpIGZ1bmN0aW9uOg0KLSAgICAtIFN0b3BzIHRoZSBSVEMgY291bnRlcnMgYW5kIGRpc2FibGVzIHRoZSBSVEMgYWxhcm0NCi0gICAgLSBEaXNhYmxlcyB0aGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQgaW4gdGhlIFJUQyBhbmQgaW4gdGhlIENvcnRleC1NMw0KLSAgICAgIGludGVycnVwdCBjb250cm9sbGVyIChOVklDKS4NCi0gICAgLSBDbGVhcnMgYW55IHBlbmRpbmcgUlRDIHdha2V1cCBpbnRlcnJ1cHQgaW4gdGhlIFJUQyBhbmQgaW4gdGhlIENvcnRleC1NMw0KLSAgICAgIGludGVycnVwdCBjb250cm9sbGVyIChOVklDKS4NCi0gICAgLSBFbmFibGVzIHRoZSBSVENfV0FLRVVQX0NSWzBdIG1hc2sgYml0IGluIHRoZSBNU1MgU3lzdGVtIFJlZ2lzdGVyIHRvDQotICAgICAgY29ubmVjdCB0aGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQgdG8gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQgY29udHJvbGxlci4NCi0gICAgLSBSZXNldHMgdGhlIFJUQyBjb3VudGVycyBhbmQgdGhlIGFsYXJtIGFuZCBjb21wYXJlIHJlZ2lzdGVycw0KLSAgICAtIFNldHMgdGhlIFJUQydzIG9wZXJhdGluZyBtb2RlIHRvIGJpbmFyeSBjb3VudGVyIG1vZGUgb3IgY2FsZW5kYXIgY291bnRlcg0KLSAgICAgIG1vZGUsIGFzIHNwZWNpZmllZCBieSB0aGUgbW9kZSBwYXJhbWV0ZXINCi0gICAgLSBTZXRzIHRoZSBSVEMncyBwcmVzY2FsZXIgcmVnaXN0ZXIgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSB0aGUgcHJlc2NhbGVyDQotICAgICAgcGFyYW1ldGVyLiBUaGUgZnJlcXVlbmN5IG9mIHRoZSBjbG9jayBzb3VyY2UgZHJpdmluZyB0aGUgTVNTIFJUQyBjbG9jaw0KLSAgICAgIChSVENDTEspIGlucHV0IGlzIHJlcXVpcmVkIHRvIGNhbGN1bGF0ZSB0aGUgcHJlc2NhbGVyIHZhbHVlLg0KLSAgICANCi0gIFNldHRpbmcgYW5kIFJlYWRpbmcgdGhlIFJUQyBDb3VudGVyIFZhbHVlDQotICBUaGUgTVNTIFJUQyBzdXBwb3J0cyB0d28gbW9kZSBvZiBvcGVyYXRpb24gliBiaW5hcnkgbW9kZSBhbmQgY2FsZW5kYXIgbW9kZS4NCi0gIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIHNldCBhbmQgcmVhZCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUNCi0gIGNvdW50ZXIgd2hlbiB0aGUgTVNTIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4gYmluYXJ5IG1vZGU6DQotICAgIC0gTVNTX1JUQ19zZXRfYmluYXJ5X2NvdW50KCkgliBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2V0IHRoZSBjdXJyZW50DQotICAgICAgdmFsdWUgb2YgdGhlIFJUQyBiaW5hcnkgY291bnRlci4NCi0gICAgLSBNU1NfUlRDX2dldF9iaW5hcnlfY291bnQoKSCWIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50DQotICAgICAgdmFsdWUgb2YgdGhlIFJUQyBiaW5hcnkgY291bnRlci4NCi0gIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIHNldCBhbmQgcmVhZCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUNCi0gIGNvdW50ZXIgdGhlIE1TUyBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluIGNhbGVuZGFyIG1vZGU6DQotICAgIC0gTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnQoKSCWIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIGN1cnJlbnQNCi0gICAgICB2YWx1ZSBvZiB0aGUgUlRDIGNhbGVuZGFyIGNvdW50ZXIuDQotICAgIC0gTVNTX1JUQ19nZXRfY2FsZW5kYXJfY291bnQoKSCWIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZWFkIHRoZSBjdXJyZW50DQotICAgICAgdmFsdWUgb2YgdGhlIFJUQyBjYWxlbmRhciBjb3VudGVyLg0KLSANCi0gIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIHJlc2V0cyB0aGUgUlRDIGNvdW50ZXIgaW4gZWl0aGVyIGJpbmFyeSBhbmQgY2FsZW5kYXINCi0gIG9wZXJhdGluZyBtb2RlOg0KLSAgICAtIE1TU19SVENfcmVzZXRfY291bnRlcigpIJYgVGhpcyBmdW5jdGlvbiByZXNldHMgdGhlIFJUQyBjb3VudGVyLg0KLSAgICANCi0gIFNldHRpbmcgUlRDIEFsYXJtcw0KLSAgVGhlIE1TUyBSVEMgY2FuIGdlbmVyYXRlIGFsYXJtcyB3aGVuIHRoZSBjb3VudGVyIG1hdGNoZXMgYSBzcGVjaWZpZWQgY291bnQNCi0gIHZhbHVlIGluIGJpbmFyeSBtb2RlIG9yIGEgZGF0ZSBhbmQgdGltZSBpbiBjYWxlbmRhciBtb2RlLg0KLSAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHVzZWQgdG8gc2V0IHVwIGFsYXJtczoNCi0gICAgLSBNU1NfUlRDX3NldF9iaW5hcnlfY291bnRfYWxhcm0oKSCWIFRoaXMgZnVuY3Rpb24gc2V0cyB1cCBvbmUtc2hvdCBvcg0KLSAgICAgIHBlcmlvZGljIGFsYXJtcyB3aGVuIHRoZSBNU1MgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbiBiaW5hcnkgbW9kZS4NCi0gICAgLSBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybSgpIJYgVGhpcyBmdW5jdGlvbiBzZXRzIHVwIG9uZS1zaG90IG9yDQotICAgICAgcGVyaW9kaWMgYWxhcm1zIHdoZW4gdGhlIE1TUyBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluIGNhbGVuZGFyDQotICAgICAgbW9kZS4NCi0gIE5vdGU6IFRoZSBhbGFybSBhc3NlcnRzIGEgd2FrZXVwIGludGVycnVwdCB0byB0aGUgQ29ydGV4LU0zLiBUaGlzIGZ1bmN0aW9uDQotICAgICAgICBlbmFibGVzIHRoZSBSVEOScyB3YWtldXAgaW50ZXJydXB0IG91dHB1dCwgaG93ZXZlciB0aGUgUlRDIHdha2V1cA0KLSAgICAgICAgaW50ZXJydXB0IGlucHV0IHRvIHRoZSBDb3J0ZXgtTTMgTlZJQyBtdXN0IGJlIGVuYWJsZWQgc2VwYXJhdGVseSBieQ0KLSAgICAgICAgY2FsbGluZyB0aGUgTVNTX1JUQ19lbmFibGVfaXJxKCkgZnVuY3Rpb24uIFRoZSBhbGFybSBjYW4gYmUgZGlzYWJsZWQgYXQNCi0gICAgICAgIGFueSB0aW1lIGJ5IGNhbGxpbmcgdGhlIE1TU19SVENfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbi4gYWN0aXZhdGUNCi0gIA0KLSAgU3RhcnRpbmcgYW5kIFN0b3BwaW5nIHRoZSBSVEMgQ291bnRlcg0KLSAgVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgc3RhcnQgYW5kIHN0b3AgdGhlIFJUQyBjb3VudGVyOg0KLSAgICAtIE1TU19SVENfc3RhcnQoKSCWIFRoaXMgZnVuY3Rpb24gc3RhcnRzIHRoZSBSVEMgY291bnRlci4NCi0gICAgLSBNU1NfUlRDX3N0b3AoKSCWIFRoaXMgZnVuY3Rpb24gc3RvcHMgdGhlIFJUQyBjb3VudGVyLg0KLSAgICANCi0gIEludGVycnVwdCBDb250cm9sDQotICBUaGUgTVNTX1JUQ19pbml0KCkgZnVuY3Rpb24gZW5hYmxlcyB0aGUgUlRDX1dBS0VVUF9DUlswXSBtYXNrIGJpdCBpbiB0aGUgTVNTDQotICBTeXN0ZW0gUmVnaXN0ZXIgdG8gY29ubmVjdCB0aGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQgdG8gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQNCi0gIGNvbnRyb2xsZXIuDQotICBBbiBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlZmluZWQsIHdpdGggd2Vhaw0KLSAgbGlua2FnZSwgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdSBtdXN0IHByb3ZpZGUgeW91ciBvd24NCi0gIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiwgd2hpY2ggd2lsbCBvdmVycmlkZQ0KLSAgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0gIFRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBoYW5kbGVyIGlzIGFzIGZvbGxvd3M6DQotICAgIHZvaWQgUlRDX1dha2V1cF9JUlFIYW5kbGVyICggdm9pZCApDQotICBUaGUgUlRDIHdha2V1cCBpbnRlcnJ1cHQgaXMgY29udHJvbGxlZCB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfUlRDX2VuYWJsZV9pcnEoKSCWIFRoZSBNU1NfUlRDX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBlbmFibGVzIHRoZSBSVEMNCi0gICAgICB0byBpbnRlcnJ1cHQgdGhlIENvcnRleC1NMyB3aGVuIGEgd2FrZXVwIGFsYXJtIG9jY3Vycy4NCi0gICAgLSBNU1NfUlRDX2Rpc2FibGVfaXJxKCkgliBUaGUgTVNTX1JUQ19kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGRpc2FibGVzIHRoZQ0KLSAgICAgIFJUQyBmcm9tIGludGVycnVwdGluZyB0aGUgQ29ydGV4LU0zIHdoZW4gYSB3YWtldXAgYWxhcm0gb2NjdXJzLg0KLSAgICAtIE1TU19SVENfY2xlYXJfaXJxKCkgliBUaGUgTVNTX1JUQ19jbGVhcl9pcnEoKSBmdW5jdGlvbiBjbGVhcnMgYSBwZW5kaW5nDQotICAgICAgUlRDIHdha2V1cCBpbnRlcnJ1cHQgYXQgdGhlIFJUQyB3YWtldXAgb3V0cHV0LiBZb3UgbXVzdCBjYWxsIHRoZQ0KLSAgICAgIE1TU19SVENfY2xlYXJfaXJxKCkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyIGltcGxlbWVudGF0aW9uIG9mIHRoZQ0KLSAgICAgIFJUQ19XYWtldXBfSVJRSGFuZGxlcigpIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgKElTUikgaW4gb3JkZXIgdG8NCi0gICAgICBwcmV2ZW50IHRoZSBzYW1lIGludGVycnVwdCBldmVudCByZXRyaWdnZXJpbmcgYSBjYWxsIHRvIHRoZSBJU1IuDQotDQotICovLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0jaWZuZGVmIE1TU19SVENfSF8NCi0jZGVmaW5lIE1TU19SVENfSF8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYgDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19CSU5BUllfTU9ERSBjb25zdGFudCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIG1vZGUgcGFyYW1ldGVyIHRvIHRoZQ0KLSAgTVNTX1JUQ19pbml0KCkgZnVuY3Rpb24uIFRoZSBSVEMgd2lsbCBydW4gaW4gYmluYXJ5IG1vZGUgaWYgdGhpcyBjb25zdGFudCBpcw0KLSAgdXNlZC4gSW4gYmluYXJ5IG1vZGUsIHRoZSBjYWxlbmRhciBjb3VudGVyIGNvdW50cyBjb25zZWN1dGl2ZWx5IGZyb20gMCBhbGwgdGhlDQotICB3YXkgdG8gMl40My4NCi0gKi8NCi0jZGVmaW5lIE1TU19SVENfQklOQVJZX01PREUgICAgICAgICAgICAgICAwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19DQUxFTkRBUl9NT0RFIGNvbnN0YW50IGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgbW9kZSBwYXJhbWV0ZXIgdG8NCi0gIHRoZSBNU1NfUlRDX2luaXQoKSBmdW5jdGlvbi4gVGhlIFJUQyB3aWxsIHJ1biBpbiBjYWxlbmRhciBtb2RlIGlmIHRoaXMNCi0gIGNvbnN0YW50IGlzIHVzZWQuIEluIGNhbGVuZGFyIG1vZGUsIHRoZSBjYWxlbmRhciBjb3VudGVyIGNvdW50cyBzZWNvbmRzLA0KLSAgbWludXRlcywgaG91cnMsIGRheXMsIG1vbnRocywgeWVhcnMsIHdlZWtkYXlzIGFuZCB3ZWVrcy4NCi0gKi8NCi0jZGVmaW5lIE1TU19SVENfQ0FMRU5EQVJfTU9ERSAgICAgICAgICAgICAxdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgYWxhcm1fdmFsdWUgcGFyYW1ldGVyIG9mIHRoZSBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybSgpIGZ1bmN0aW9uDQotICBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3J0Y19jYWxlbmRhcl90IGRhdGEgc3RydWN0dXJlIHNwZWNpZnlpbmcgdGhlIGRhdGUgYW5kDQotICB0aW1lIGF0IHdoaWNoIHRoZSBhbGFybSBpcyB0byBvY2N1ci4gWW91IG11c3QgYXNzaWduIHRoZSByZXF1aXJlZCBkYXRlIGFuZA0KLSAgdGltZSB2YWx1ZXMgdG8gdGhlIG1zc19ydGNfY2FsZW5kYXJfdCBzdHJ1Y3R1cmUgYmVmb3JlIGNhbGxpbmcgdGhlIGZ1bmN0aW9uLg0KLSAgQW55IG9mIHRoZSBmaWVsZHMgb2YgdGhlIG1zc19ydGNfY2FsZW5kYXJfdCBzdHJ1Y3R1cmUgY2FuIGJlIHNldCB0bw0KLSAgTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUsIHRvIGluZGljYXRlIHRoYXQgdGhleSBhcmUgbm90IHRvIGJlIGNvbnNpZGVyZWQgaW4NCi0gIGRlY2lkaW5nIHdoZW4gdGhlIGFsYXJtIHdpbGwgb2NjdXI7IHRoaXMgaXMgbmVjZXNzYXJ5IHdoZW4gc2V0dGluZyBwZXJpb2RpYw0KLSAgYWxhcm1zLiANCi0gKi8NCi0jZGVmaW5lIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFICAgICAgMHhGRnUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgRGF5cyBvZiB0aGUgd2Vlay4NCi0gKi8NCi0jZGVmaW5lIE1TU19SVENfU1VOREFZICAgICAgMXUNCi0jZGVmaW5lIE1TU19SVENfTU9OREFZICAgICAgMnUNCi0jZGVmaW5lIE1TU19SVENfVFVFU0RBWSAgICAgM3UNCi0jZGVmaW5lIE1TU19SVENfV0VETkVTREFZICAgNHUNCi0jZGVmaW5lIE1TU19SVENfVEhSVVNEQVkgICAgNXUNCi0jZGVmaW5lIE1TU19SVENfRlJJREFZICAgICAgNnUNCi0jZGVmaW5lIE1TU19SVENfU0FUVVJEQVkgICAgN3UNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIG1zc19ydGNfYWxhcm1fdHlwZV90IGVudW1lcmF0aW9uIGlzIHVzZWQgYXMgdGhlIGFsYXJtX3R5cGUgcGFyYW1ldGVyIGZvcg0KLSAgdGhlIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtKCkgYW5kIE1TU19SVENfc2V0X2JpbmFyeV9jb3VudF9hbGFybSgpDQotICBmdW5jdGlvbnMgdG8gc3BlY2lmeSB3aGV0aGVyIHRoZSByZXF1ZXN0ZWQgYWxhcm0gc2hvdWxkIG9jY3VyIG9ubHkgb25lIHRpbWUgb3INCi0gIHBlcmlvZGljYWxseS4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfUlRDX1NJTkdMRV9TSE9UX0FMQVJNLA0KLSAgICBNU1NfUlRDX1BFUklPRElDX0FMQVJNDQotfSBtc3NfcnRjX2FsYXJtX3R5cGVfdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgQSBwb2ludGVyIHRvIGFuIGluc3RhbmNlIG9mIHRoZSBtc3NfcnRjX2NhbGVuZGVyX3QgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0bw0KLSAgd3JpdGUgbmV3IGRhdGUgYW5kIHRpbWUgdmFsdWVzIHRvIHRoZSBSVEMgdXNpbmcgdGhlDQotICBNU1NfUlRDX3NldF9ydGNfY2FsZW5kYXJfY291bnQoKSBhbmQgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnRfYWxhcm0oKQ0KLSAgZnVuY3Rpb25zLiBUaGUgTVNTX1JUQ19nZXRfY2FsZW5kYXJfY291bnQoKSBmdW5jdGlvbiBhbHNvIHVzZXMgYSBwb2ludGVyIHRvIGFuDQotICBpbnN0YW5jZSBvZiB0aGUgbXNzX3J0Y19jYWxlbmRlcl90IGRhdGEgc3RydWN0dXJlIHRvIHJlYWQgdGhlIGN1cnJlbnQgZGF0ZSBhbmQNCi0gIHRpbWUgdmFsdWUgZnJvbSB0aGUgUlRDLg0KLSAqLw0KLXR5cGVkZWYgc3RydWN0IG1zc19ydGNfY2FsZW5kYXINCi17DQotICAgICB1aW50OF90IHNlY29uZDsNCi0gICAgIHVpbnQ4X3QgbWludXRlOw0KLSAgICAgdWludDhfdCBob3VyOw0KLSAgICAgdWludDhfdCBkYXk7DQotICAgICB1aW50OF90IG1vbnRoOw0KLSAgICAgdWludDhfdCB5ZWFyOw0KLSAgICAgdWludDhfdCB3ZWVrZGF5Ow0KLSAgICAgdWludDhfdCB3ZWVrOw0KLX0gbXNzX3J0Y19jYWxlbmRhcl90IDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfaW5pdCgpIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBSVEMgZHJpdmVyIGFuZCBoYXJkd2FyZSB0byBhIGtub3duDQotICBzdGF0ZS4gDQotICBUbyBpbml0aWFsaXplIHRoZSBSVEMgaGFyZHdhcmUsIHRoaXMgZnVuY3Rpb246DQotICAgIC0gU3RvcHMgdGhlIFJUQyBjb3VudGVycyBhbmQgZGlzYWJsZXMgdGhlIFJUQyBhbGFybQ0KLSAgICAtIERpc2FibGVzIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBpbiB0aGUgUlRDIGFuZCBpbiB0aGUgQ29ydGV4LU0zDQotICAgICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpLg0KLSAgICAtIENsZWFycyBhbnkgcGVuZGluZyBSVEMgd2FrZXVwIGludGVycnVwdCBpbiB0aGUgUlRDIGFuZCBpbiB0aGUgQ29ydGV4LU0zDQotICAgICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpLg0KLSAgICAtIFJlc2V0cyB0aGUgUlRDIGNvdW50ZXJzIGFuZCB0aGUgYWxhcm0gYW5kIGNvbXBhcmUgcmVnaXN0ZXJzDQotICAgIC0gU2V0cyB0aGUgUlRDJ3Mgb3BlcmF0aW5nIG1vZGUgdG8gYmluYXJ5IGNvdW50ZXIgbW9kZSBvciBjYWxlbmRhciBjb3VudGVyDQotICAgICAgbW9kZSwgYXMgc3BlY2lmaWVkIGJ5IHRoZSBtb2RlIHBhcmFtZXRlcg0KLSAgICAtIFNldHMgdGhlIFJUQydzIHByZXNjYWxlciByZWdpc3RlciB0byB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBwcmVzY2FsZXINCi0gICAgICBwYXJhbWV0ZXINCi0gIFRoZSBNU1MgY2xvY2sgY29udHJvbGxlciBjYW4gc3VwcGx5IG9uZSBvZiB0aHJlZSBjbG9jayBzb3VyY2VzIHRvIHRoZSBSVEMNCi0gIGNsb2NrIGlucHV0IChSVENDTEspOg0KLSAgICAtIENyeXN0YWwgT3NjaWxsYXRvciAzMi43Njgga0h6DQotICAgIC0gMU1IeiBPc2NpbGxhdG9yDQotICAgIC0gNTBNSHogT3NjaWxsYXRvci4gICgyNSBNSHogaW4gYSAxLjB2IHBhcnQpLg0KLSAgRm9yIGNhbGVuZGFyIG1vZGUsIHByb2dyYW0gdGhlIHByZXNjYWxlciByZWdpc3RlciB0byBnZW5lcmF0ZSBhIDFIeiBzaWduYWwNCi0gIGZyb20gdGhlIGFjdGl2ZSBSVENDTEsgYWNjb3JkaW5nIHRvIHRoZSBmb2xsb3dpbmcgZXF1YXRpb246DQotICAgIHByZXNjYWxlciA9IFJUQ0NMSyCWIDEgKHdoZXJlIFJUQ0NMSyB1bml0IGlzIEh6KQ0KLSAgRm9yIGEgMzIuNzY4IGtIeiBjbG9jaywgc2V0IHRoZSBwcmVzY2FsZXIgdG8gMzI3NjggLSAxID0gMzI3NjcuIFRoZSBwcmVzY2FsZXINCi0gIHJlZ2lzdGVyIGlzIDI2IGJpdHMgd2lkZSwgYWxsb3dpbmcgY2xvY2sgc291cmNlcyBvZiB1cCB0byA2NyBNSHogdG8gZ2VuZXJhdGUNCi0gIHRoZSAxSHogdGltZSBiYXNlLg0KLSAgRm9yIGJpbmFyeSBtb2RlLCB0aGUgcHJlc2NhbGVyIHJlZ2lzdGVyIGNhbiBiZSBwcm9ncmFtbWVkIHRvIGdlbmVyYXRlIGEgMUh6DQotICB0aW1lIGJhc2Ugb3IgYSBkaWZmZXJlbnQgdGltZSBiYXNlLCBhcyByZXF1aXJlZC4NCi0gIA0KLSAgQHBhcmFtIG1vZGUNCi0gICAgVGhlIG1vZGUgcGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgb3BlcmF0aW5nIG1vZGUgb2YgdGhlIFJUQy4gVGhlDQotICAgIGFsbG93ZWQgdmFsdWVzIGZvciBtb2RlIGFyZToNCi0gICAgICAtIE1TU19SVENfQklOQVJZX01PREUNCi0gICAgICAtIE1TU19SVENfQ0FMRU5EQVJfTU9ERQ0KLSAgICANCi0gIEBwYXJhbSBwcmVzY2FsZXINCi0gICAgVGhlIHByZXNjYWxlciBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB2YWx1ZSB0byBkaXZpZGUgdGhlIGluY29taW5nIFJUQyBjbG9jaw0KLSAgICBieSwgdG8gZ2VuZXJhdGUgdGhlIFJUQyB0aW1lIGJhc2Ugc2lnbmFsLiBGb3IgY2FsZW5kYXIgbW9kZSwgc2V0IHRoZQ0KLSAgICBwcmVzY2FsZXIgdmFsdWUgdG8gZ2VuZXJhdGUgYSAxSHogdGltZSBiYXNlIGZyb20gdGhlIGluY29taW5nIFJUQyBjbG9jaw0KLSAgICBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoNCi0gICAgICAgIHByZXNjYWxlciA9IFJUQ0NMSyCWIDEgICAgKHdoZXJlIHRoZSBSVENDTEsgdW5pdCBpcyBIeikNCi0gICAgRm9yIGJpbmFyeSBtb2RlLCBzZXQgdGhlIHByZXNjYWxlciB2YWx1ZSB0byBnZW5lcmF0ZSBhIDFIeiB0aW1lIGJhc2Ugb3IgYQ0KLSAgICBkaWZmZXJlbnQgdGltZSBiYXNlLCBhcyByZXF1aXJlZC4NCi0gICAgVGhlIHByZXNjYWxlciBwYXJhbWV0ZXIgY2FuIGJlIGFueSBpbnRlZ2VyIHZhbHVlIGluIHRoZSByYW5nZSAyIHRvIDJeMjYuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgICANCi0gIFRoZSBleGFtcGxlIGNvZGUgYmVsb3cgc2hvd3MgaG93IHRoZSBSVEMgY2FuIGJlIGluaXRpYWxpemVkIG9ubHkgYWZ0ZXIgYSBwb3dlci1vbg0KLSAgcmVzZXQuDQotICBAY29kZQ0KLSAgICAjZGVmaW5lIFBPX1JFU0VUX0RFVEVDVF9NQVNLICAgIDB4MDAwMDAwMDF1DQotICAgIA0KLSAgICB2b2lkIGluaXRfYXBwbGljYXRpb24odm9pZCkNCi0gICAgew0KLSAgICAgICAgdWludDMyX3QgcG93ZXJfb25fcmVzZXQ7DQotICAgICAgICBwb3dlcl9vbl9yZXNldCA9IFNZU1JFRy0+UkVTRVRfU09VUkNFX0NSICYgUE9fUkVTRVRfREVURUNUX01BU0s7DQotICAgICAgICBpZihwb3dlcl9vbl9yZXNldCkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBNU1NfUlRDX2luaXQoTVNTX1JUQ19DQUxFTkRBUl9NT0RFLCAzMjc2Nyk7DQotICAgICAgICAgICAgU1lTUkVHLT5SRVNFVF9TT1VSQ0VfQ1IgPSBQT19SRVNFVF9ERVRFQ1RfTUFTSzsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1JUQ19pbml0DQotKA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQzMl90IHByZXNjYWxlcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3NldF9ydGNfY2FsZW5kYXJfY291bnQoKSBmdW5jdGlvbiBzZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZQ0KLSAgUlRDIGNhbGVuZGFyIGNvdW50ZXIuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICAgIGNhbGVuZGFyIGNvdW50ZXIgbW9kZS4NCi0gICAgICAgIA0KLSAgQHBhcmFtIG5ld19ydGNfdmFsdWUNCi0gICAgVGhlIG5ld19ydGNfdmFsdWUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfcnRjX2NhbGVuZGFyX3QgZGF0YQ0KLSAgICBzdHJ1Y3R1cmUgc3BlY2lmeWluZyB0aGUgbmV3IGRhdGUgYW5kIHRpbWUgdmFsdWUgZnJvbSB3aGljaCB0aGUgUlRDIHdpbGwNCi0gICAgaW5jcmVtZW50LiBZb3UgbXVzdCBwb3B1bGF0ZSB0aGUgbXNzX3J0Y19jYWxlbmRhcl90IHN0cnVjdHVyZSB3aXRoIHRoZQ0KLSAgICByZXF1aXJlZCBkYXRlIGFuZCB0aW1lIHZhbHVlcyBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi0NCi12b2lkDQotTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnQNCi0oDQotICAgIGNvbnN0IG1zc19ydGNfY2FsZW5kYXJfdCAqbmV3X3J0Y192YWx1ZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3NldF9iaW5hcnlfY291bnQoKSBmdW5jdGlvbiBzZXRzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSVEMNCi0gIGJpbmFyeSBjb3VudGVyLg0KLSAgTm90ZTogVGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAgICBiaW5hcnkgY291bnRlciBtb2RlLg0KLSAgICAgICAgDQotICBAcGFyYW0gbmV3X3J0Y192YWx1ZQ0KLSAgICBUaGUgbmV3X3J0Y192YWx1ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBuZXcgY291bnQgdmFsdWUgZnJvbSB3aGljaCB0aGUgUlRDDQotICAgIHdpbGwgaW5jcmVtZW50LiBUaGUgYmluYXJ5IGNvdW50ZXIgaXMgNDMgYml0cyB3aWRlLCBzbyB0aGUgbWF4aW11bSBhbGxvd2VkDQotICAgIGJpbmFyeSB2YWx1ZSBpcyAyXjQzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLQ0KLXZvaWQNCi1NU1NfUlRDX3NldF9iaW5hcnlfY291bnQNCi0oDQotICAgIHVpbnQ2NF90IG5ld19ydGNfdmFsdWUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19nZXRfY2FsZW5kYXJfY291bnQoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSVEMNCi0gIGNhbGVuZGFyIGNvdW50ZXIgdmlhIHRoZSBkYXRhIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IHRoZSBwX3J0Y19jYWxlbmRhcg0KLSAgcGFyYW1ldGVyLg0KLSAgTm90ZTogVGhpcyBmdW5jdGlvbiBtdXN0IG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBSVEMgaXMgY29uZmlndXJlZCB0byBvcGVyYXRlIGluDQotICAgICAgICBjYWxlbmRhciBjb3VudGVyIG1vZGUuDQotICAgICAgICANCi0gIEBwYXJhbSBwX3J0Y19jYWxlbmRhcg0KLSAgICBUaGUgcF9ydGNfY2FsZW5kYXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfcnRjX2NhbGVuZGFyX3QgZGF0YQ0KLSAgICBzdHJ1Y3R1cmUgd2hlcmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNhbGVuZGFyIGNvdW50ZXIgd2lsbCBiZSB3cml0dGVuIGJ5DQotICAgIHRoZSBNU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudCgpIGZ1bmN0aW9uDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQNCi1NU1NfUlRDX2dldF9jYWxlbmRhcl9jb3VudA0KLSgNCi0gICAgbXNzX3J0Y19jYWxlbmRhcl90ICpwX3J0Y19jYWxlbmRhcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX2dldF9iaW5hcnlfY291bnQoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSVEMNCi0gIGJpbmFyeSBjb3VudGVyLiANCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gbXVzdCBvbmx5IGJlIHVzZWQgd2hlbiB0aGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gb3BlcmF0ZSBpbg0KLSAgICAgICAgYmluYXJ5IGNvdW50ZXIgbW9kZS4NCi0gICAgICAgIA0KLSAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBSVEMgYmluYXJ5IGNvdW50ZXIgYXMgYW4NCi0gICAgdW5zaWduZWQgNjQtYml0IGludGVnZXIuDQotICovDQotdWludDY0X3QNCi1NU1NfUlRDX2dldF9iaW5hcnlfY291bnQodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3N0YXJ0KCkgZnVuY3Rpb24gc3RhcnRzIHRoZSBSVEMgaW5jcmVtZW50aW5nLg0KLQ0KLSAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkIE1TU19SVENfc3RhcnQodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX3N0b3AoKSBmdW5jdGlvbiBzdG9wcyB0aGUgUlRDIGZyb20gaW5jcmVtZW50aW5nLg0KLQ0KLSAgQHBhcmFtDQotICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkIE1TU19SVENfc3RvcCh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfcmVzZXRfY291bnRlcigpIGZ1bmN0aW9uIHJlc2V0cyB0aGUgUlRDIGNvdW50ZXJzLiBJZiB0aGUgY291bnRlcg0KLSAgd2FzIHJ1bm5pbmcgYmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiwgdGhlbiBpdCBjb250aW51ZXMgaW5jcmVtZW50aW5nIGZyb20NCi0gIHRoZSBjb3VudGVyknMgcmVzZXQgdmFsdWUuDQotICANCi0gIEBwYXJhbQ0KLSAgICBUaGlzIGZ1bmN0aW9uIHRha2VzIG5vIHBhcmFtZXRlcnMuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICovDQotdm9pZCBNU1NfUlRDX3Jlc2V0X2NvdW50ZXIodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBlbmFibGVzIHRoZSBSVEMgd2FrZXVwIG91dHB1dCB0byBpbnRlcnJ1cHQNCi0gIHRoZSBDb3J0ZXgtTTMgd2hlbiBhbiBhbGFybSBvY2N1cnMuIEl0IGVuYWJsZXMgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0DQotICAoUlRDX1dha2V1cF9JUlFuKSBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdCBjb250cm9sbGVyIChOVklDKS4gVGhlDQotICBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIFJUQyB3YWtldXAgaW50ZXJydXB0DQotICBvY2N1cnMuDQotICBOb3RlOiBBbiBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlZmluZWQsIHdpdGggd2Vhaw0KLSAgICAgICAgbGlua2FnZSwgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdSBtdXN0IHByb3ZpZGUgeW91ciBvd24NCi0gICAgICAgIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSVENfV2FrZXVwX0lSUUhhbmRsZXIoKSBmdW5jdGlvbiwgd2hpY2ggd2lsbA0KLSAgICAgICAgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24sIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0gIE5vdGU6IFRoaXMgZnVuY3Rpb24gb25seSBlbmFibGVzIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBhdCB0aGUgQ29ydGV4LU0zDQotICAgICAgICBOVklDIGxldmVsLiBUaGUgYWxhcm0gc2V0dGluZyBmdW5jdGlvbnMgZW5hYmxlIHRoZSB3YWtldXAgaW50ZXJydXB0DQotICAgICAgICBvdXRwdXQgZnJvbSB0aGUgUlRDLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19lbmFibGVfaXJxKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdA0KLSAgKFJUQ19XYWtldXBfSVJRbikgaW4gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQgY29udHJvbGxlciAoTlZJQykuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG9ubHkgZGlzYWJsZXMgdGhlIFJUQyB3YWtldXAgaW50ZXJydXB0IGF0IHRoZSBDb3J0ZXgtTTMNCi0gICAgICAgIE5WSUMgbGV2ZWwuIEl0IGRvZXMgbm90IGRpc2FibGUgdGhlIHdha2V1cCBpbnRlcnJ1cHQgb3V0cHV0IGZyb20gdGhlDQotICAgICAgICBSVEMuDQotICAgICAgICANCi0gICBAcGFyYW0NCi0gICAgIFRoaXMgZnVuY3Rpb24gdGFrZXMgbm8gcGFyYW1ldGVycy4NCi0NCi0gICBAcmV0dXJuDQotICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19kaXNhYmxlX2lycSh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfY2xlYXJfaXJxKCkgZnVuY3Rpb24gY2xlYXJzIGEgcGVuZGluZyB3YWtldXAgaW50ZXJydXB0IGZyb20gdGhlDQotICBSVEMuIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2xlYXIgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdA0KLSAgY29udHJvbGxlciAoTlZJQyk7IGl0IG9ubHkgY2xlYXJzIHRoZSB3YWtldXAgb3V0cHV0IGZyb20gdGhlIFJUQy4NCi0gIE5vdGU6IFlvdSBtdXN0IGNhbGwgdGhlIE1TU19SVENfY2xlYXJfaXJxKCkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyDQotICAgICAgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCkgUlRDIHdha2V1cCBpbnRlcnJ1cHQNCi0gICAgICAgIHNlcnZpY2Ugcm91dGluZSAoSVNSKSBpbiBvcmRlciB0byBwcmV2ZW50IHRoZSBzYW1lIGludGVycnVwdCBldmVudA0KLSAgICAgICAgcmV0cmlnZ2VyaW5nIGEgY2FsbCB0byB0aGUgSVNSLg0KLSAgICAgICAgDQotICBAcGFyYW0NCi0gICAgVGhpcyBmdW5jdGlvbiB0YWtlcyBubyBwYXJhbWV0ZXJzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgDQotICBFeGFtcGxlOg0KLSAgVGhlIGV4YW1wbGUgY29kZSBiZWxvdyBkZW1vaW5zdHJhdGVzIGhvdyB0aGUgTVNTX1JUQ19jbGVhcl9pcnEoKSBmdW5jdGlvbiBpcw0KLSAgaW50ZW5kZWQgdG8gYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSBSVEMgd2FrZXVwIGludGVycnVwdCBzZXJ2aWNlciByb3V0aW5lIHVzZWQNCi0gIGJ5IGFuIGFwcGxpY2F0aW9uIHRvIGhhbmRsZSBSVEMgYWxhcm1zLg0KLSAgQGNvZGUNCi0gICAgI2lmIGRlZmluZWQoX19HTlVDX18pDQotICAgIF9fYXR0cmlidXRlX18oKF9faW50ZXJydXB0X18pKSB2b2lkIFJUQ19XYWtldXBfSVJRSGFuZGxlciggdm9pZCApDQotICAgICNlbHNlDQotICAgIHZvaWQgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCB2b2lkICkNCi0gICAgI2VuZGlmDQotICAgIHsNCi0gICAgICAgIHByb2Nlc3NfYWxhcm0oKTsNCi0gICAgICAgIE1TU19SVENfY2xlYXJfaXJxKCk7DQotICAgIH0NCi0gIEBlbmRjb2RlDQotKi8NCi12b2lkIE1TU19SVENfY2xlYXJfaXJxKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19zZXRfY2FsZW5kYXJfY291bnRfYWxhcm0oKSBmdW5jdGlvbiBzZXRzIHVwIHRoZSBSVEMgdG8gZ2VuZXJhdGUgYW4NCi0gIGFsYXJtIHdoZW4gdGhlIFJUQyBjb3VudCByZWFjaGVzIHRoZSB0aW1lL2RhdGUgc3BlY2lmaWVkIGJ5IHRoZSBhbGFybV92YWx1ZQ0KLSAgcGFyYW1ldGVyLiBUaGUgYWxhcm0gYXNzZXJ0cyBhIHdha2V1cCBpbnRlcnJ1cHQgdG8gdGhlIENvcnRleC1NMy4gVGhpcw0KLSAgZnVuY3Rpb24gZW5hYmxlcyB0aGUgUlRDknMgd2FrZXVwIGludGVycnVwdCBvdXRwdXQsIGhvd2V2ZXIgdGhlIFJUQyB3YWtldXANCi0gIGludGVycnVwdCBpbnB1dCB0byB0aGUgQ29ydGV4LU0zIE5WSUMgbXVzdCBiZSBlbmFibGVkIHNlcGFyYXRlbHkgYnkgY2FsbGluZw0KLSAgdGhlIE1TU19SVENfZW5hYmxlX2lycSgpIGZ1bmN0aW9uLiBUaGUgYWxhcm0gY2FuIGJlIGRpc2FibGVkIGF0IGFueSB0aW1lIGJ5DQotICBjYWxsaW5nIHRoZSBNU1NfUlRDX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24uDQotICANCi0gIFNpbmdsZS1zaG90IGFsYXJtDQotICBUaGUgYWxhcm0gY2FuIGJlIGEgc2luZ2xlLXNob3QgYWxhcm0sIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSBzaW5nbGUgd2FrZXVwDQotICBpbnRlcnJ1cHQgdGhlIGZpcnN0IHRpbWUgdGhlIFJUQyBjb3VudCByZWFjaGVzIHRoZSB0aW1lL2RhdGUgc3BlY2lmaWVkIGJ5DQotICBhbGFybV92YWx1ZS4gQSBzaW5nbGUgc2hvdCBhbGFybSBpcyBhY2hpZXZlZCBieSBzcGVjaWZ5aW5nIGEgdmFsdWUgZm9yIGV2ZXJ5DQotICBmaWVsZCBvZiB0aGUgbXNzX3J0Y19jYWxlbmRhcl90IGRhdGEgc3RydWN0dXJlIHBvaW50ZWQgdG8gYnkgdGhlIGFsYXJtX3ZhbHVlDQotICBwYXJhbWV0ZXIuIFRoZSBSVEMgY291bnRlciB3aWxsIGtlZXAgaW5jcmVtZW50aW5nIGFmdGVyIGEgc2luZ2xlIHNob3QgYWxhcm0NCi0gIG9jY3Vycy4NCi0gIA0KLSAgUGVyaW9kaWMgYWxhcm0NCi0gIFRoZSBhbGFybSBjYW4gYWxzbyBiZSBhIHBlcmlvZGljIGFsYXJtLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgd2FrZXVwIGludGVycnVwdA0KLSAgZXZlcnkgdGltZSB0aGUgUlRDIGNvdW50IHJlYWNoZXMgdGhlIHRpbWUvZGF0ZSBzcGVjaWZpZWQgYnkgYWxhcm1fdmFsdWUsIHdpdGgNCi0gIHRoZSBjb3VudGVyIHJ1bm5pbmcgaW4gYSBjb250aW51b3VzIGxvb3AuIFRoZSBwZXJpb2RpYyBhbGFybSBjYW4gYmUgc2V0IHRvDQotICBvY2N1ciBldmVyeSBtaW51dGUsIGhvdXIsIGRheSwgbW9udGgsIHllYXIsIHdlZWssIGRheSBvZiB0aGUgd2Vlaywgb3IgYW55DQotICB2YWxpZCBjb21iaW5hdGlvbiBvZiB0aGVzZS4gVGhpcyBpcyBhY2hpZXZlZCBieSBzZXR0aW5nIHNvbWUgb2YgdGhlIGZpZWxkcyBvZg0KLSAgdGhlIG1zc19ydGNfY2FsZW5kYXJfdCBkYXRhIHN0cnVjdHVyZSBwb2ludGVkIHRvIGJ5IHRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIsDQotICB0byBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRS4gRm9yIGV4YW1wbGUsIHNldHRpbmcgdGhlIHdlZWtkYXkgZmllbGQgdG8NCi0gIE1TU19SVENfTU9OREFZIGFuZCBhbGwgb3RoZXIgZmllbGRzIHRvIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFIHdpbGwgcmVzdWx0DQotICBpbiBhbiBhbGFybSBvY2N1cnJpbmcgZXZlcnkgTW9uZGF5LiBZb3UgY2FuIHJlZmluZSB0aGUgdGltZSBhdCB3aGljaCB0aGUgYWxhcm0NCi0gIHdpbGwgb2NjdXIgYnkgc3BlY2lmeWluZyB2YWx1ZXMgZm9yIHRoZSBob3VyLCBtaW51dGUgYW5kIHNlY29uZCBmaWVsZHMuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICAgIGNhbGVuZGFyIGNvdW50ZXIgbW9kZS4NCi0gIA0KLSAgQHBhcmFtIGFsYXJtX3ZhbHVlDQotICAgIFRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc19ydGNfY2FsZW5kYXJfdCBkYXRhDQotICAgIHN0cnVjdHVyZSBzcGVjaWZ5aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGF0IHdoaWNoIHRoZSBhbGFybSBpcyB0byBvY2N1ci4gWW91DQotICAgIG11c3QgYXNzaWduIHRoZSByZXF1aXJlZCBkYXRlIGFuZCB0aW1lIHZhbHVlcyB0byB0aGUgbXNzX3J0Y19jYWxlbmRhcl90DQotICAgIHN0cnVjdHVyZSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLiBTb21lIG9mIHRoZSBmaWVsZHMgd2l0aGluIHRoZQ0KLSAgICBtc3NfcnRjX2NhbGVuZGFyX3Qgc3RydWN0dXJlIGNhbiBiZSBzZXQgdG8gTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUsIHRvDQotICAgIGluZGljYXRlIHRoYXQgdGhleSBhcmUgbm90IHRvIGJlIGNvbnNpZGVyZWQgaW4gZGVjaWRpbmcgd2hlbiB0aGUgYWxhcm0gd2lsbA0KLSAgICBvY2N1cjsgdGhpcyBpcyBuZWNlc3Nhcnkgd2hlbiBzZXR0aW5nIHBlcmlvZGljIGFsYXJtcy4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgICAgDQotICBFeGFtcGxlczoNCi0gIA0KLSAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgZGVtb25zdHJhdGVzIGhvdyB0byBjb25maWd1cmUgdGhlIFJUQyB0byBnZW5lcmF0ZSBhDQotICBzaW5nbGUgY2FsZW5kYXIgYWxhcm0gYXQgYSBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lLiBUaGUgYWxhcm0gd2lsbCBvbmx5IG9jY3VyDQotICBvbmNlIGFuZCB0aGUgUlRDIHdpbGwga2VlcCBpbmNyZW1lbnRpbmcgcmVnYXJkbGVzcyBvZiB0aGUgYWxhcm0gdGFraW5nIHBsYWNlLg0KLSAgDQotICBAY29kZQ0KLSAgICBjb25zdCBtc3NfcnRjX2NhbGVuZGFyX3QgaW5pdGlhbF9jYWxlbmRhcl9jb3VudCA9DQotICAgIHsNCi0gICAgICAgIDE1dSwgICAgIHNlY29uZA0KLSAgICAgICAgMzB1LCAgICAgbWludXRlDQotICAgICAgICA2dSwgICAgICBob3VyDQotICAgICAgICA2dSwgICAgICBkYXkNCi0gICAgICAgIDl1LCAgICAgIG1vbnRoDQotICAgICAgICAxMnUsICAgICB5ZWFyDQotICAgICAgICA1dSwgICAgICB3ZWVrZGF5DQotICAgICAgICAzN3UgICAgICB3ZWVrDQotICAgIH07DQotICAgIA0KLSAgICBtc3NfcnRjX2NhbGVuZGFyX3QgYWxhcm1fY2FsZW5kYXJfY291bnQgPQ0KLSAgICB7DQotICAgICAgICAxN3UsICAgICBzZWNvbmQNCi0gICAgICAgIDMwdSwgICAgIG1pbnV0ZQ0KLSAgICAgICAgNnUsICAgICAgaG91cg0KLSAgICAgICAgNnUsICAgICAgZGF5DQotICAgICAgICA5dSwgICAgICBtb250aA0KLSAgICAgICAgMTJ1LCAgICAgeWVhcg0KLSAgICAgICAgNXUsICAgICAgd2Vla2RheQ0KLSAgICAgICAgMzd1ICAgICAgd2Vlaw0KLSAgICB9Ow0KLSAgICANCi0gICAgTVNTX1JUQ19pbml0KE1TU19SVENfQ0FMRU5EQVJfTU9ERSwgUlRDX1BSRVNDQUxFUik7DQotICAgIE1TU19SVENfY2xlYXJfaXJxKCk7DQotICAgIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50KCZpbml0aWFsX2NhbGVuZGFyX2NvdW50KTsNCi0gICAgTVNTX1JUQ19lbmFibGVfaXJxKCk7DQotICAgIE1TU19SVENfc3RhcnQoKTsNCi0gICAgDQotICAgIE1TU19SVENfc2V0X2NhbGVuZGFyX2NvdW50X2FsYXJtKCZhbGFybV9jYWxlbmRhcl9jb3VudCk7DQotICBAZW5kY29kZQ0KLSAgDQotICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgY29kZSBkZW1vbnN0cmF0ZXMgaG93IHRvIGNvbmZpZ3VyZSB0aGUgUlRDIHRvIGdlbmVyYXRlIGENCi0gIHBlcmlvZGljIGNhbGVuZGFyIGFsYXJtLiBUaGUgUlRDIGlzIGNvbmZpZ3VyZWQgdG8gZ2VuZXJhdGUgYW4gYWxhcm0gZXZlcnkNCi0gIFR1ZXNkYXkgYXQgMTY6NDU6MDAuIFRoZSBhbGFybSB3aWxsIHJlb2NjdXIgZXZlcnkgd2VlayB1bnRpbCB0aGUgUlRDIHdha2V1cA0KLSAgaW50ZXJydXB0IGlzIGRpc2FibGVkIHVzaW5nIGEgY2FsbCB0byBNU1NfUlRDX2Rpc2FibGVfaXJxKCkuDQotICANCi0gIEBjb2RlDQotICAgIG1zc19ydGNfY2FsZW5kYXJfdCBpbml0aWFsX2NhbGVuZGFyX2NvdW50ID0NCi0gICAgew0KLSAgICAgICAgNTh1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS1zZWNvbmQNCi0gICAgICAgIDU5dSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tbWludXRlDQotICAgICAgICAyM3UsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLWhvdXINCi0gICAgICAgIDEwdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0tZGF5DQotICAgICAgICA5dSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLW1vbnRoDQotICAgICAgICAxMnUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwtLXllYXINCi0gICAgICAgIE1TU19SVENfTU9OREFZLCAgICAgICAgICAgICAgICAgPC0td2Vla2RheQ0KLSAgICAgICAgMzd1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS13ZWVrDQotICAgIH07DQotICAgIA0KLSAgICBtc3NfcnRjX2NhbGVuZGFyX3QgYWxhcm1fY2FsZW5kYXJfY291bnQgPQ0KLSAgICB7DQotICAgICAgICBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSwgICAgIDwtLXNlY29uZA0KLSAgICAgICAgNDV1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8LS1taW51dGUNCi0gICAgICAgIDE2dSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC0taG91cg0KLSAgICAgICAgTVNTX1JUQ19DQUxFTkRBUl9ET05UX0NBUkUsICAgICA8LS1kYXkNCi0gICAgICAgIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFLCAgICAgPC0tbW9udGgNCi0gICAgICAgIE1TU19SVENfQ0FMRU5EQVJfRE9OVF9DQVJFLCAgICAgPC0teWVhcg0KLSAgICAgICAgTVNTX1JUQ19UVUVTREFZLCAgICAgICAgICAgICAgICA8LS13ZWVrZGF5DQotICAgICAgICBNU1NfUlRDX0NBTEVOREFSX0RPTlRfQ0FSRSAgICAgIDwtLXdlZWsNCi0gICAgfTsNCi0gICAgDQotICAgIE1TU19SVENfaW5pdChNU1NfUlRDX0NBTEVOREFSX01PREUsIFJUQ19QUkVTQ0FMRVIpOw0KLSAgICBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudCgmaW5pdGlhbF9jYWxlbmRhcl9jb3VudCk7DQotICAgIE1TU19SVENfZW5hYmxlX2lycSgpOw0KLSAgICBNU1NfUlRDX3N0YXJ0KCk7DQotICAgIA0KLSAgICBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybSgmYWxhcm1fY2FsZW5kYXJfY291bnQpOw0KLSAgQGVuZGNvZGUNCi0gIA0KLSAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGNvZGUgZGVtb25zdHJhdGVzIHRoZSBjb2RlIHRoYXQgeW91IG5lZWQgdG8gaW5jbHVkZSBpbg0KLSAgeW91ciBhcHBsaWNhdGlvbiB0byBoYW5kbGUgYWxhcm1zLiBJdCBpcyB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBmb3IgdGhlDQotICBSVEMgd2FrZXVwIGludGVycnVwdCBpbnB1dCB0byB0aGUgQ29ydGV4LU0zIE5WSUMuIFlvdSBuZWVkIHRvIGFkZCB5b3VyDQotICBhcHBsaWNhdGlvbiBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaW4gcGxhY2Ugb2YgdGhlIHByb2Nlc3NfYWxhcm0oKSBmdW5jdGlvbiBidXQNCi0gIHlvdSBtdXN0IHJldGFpbiB0aGUgY2FsbCB0byBNU1NfUlRDX2NsZWFyX2lycSgpIHRvIGVuc3VyZSB0aGF0IHRoZSBzYW1lIGFsYXJtDQotICBkb2VzIG5vdCByZXRyaWdnZXIgdGhlIGludGVycnVwdC4NCi0gIA0KLSAgQGNvZGUNCi0gICAgI2lmIGRlZmluZWQoX19HTlVDX18pDQotICAgIF9fYXR0cmlidXRlX18oKF9faW50ZXJydXB0X18pKSB2b2lkIFJUQ19XYWtldXBfSVJRSGFuZGxlciggdm9pZCApDQotICAgICNlbHNlDQotICAgIHZvaWQgUlRDX1dha2V1cF9JUlFIYW5kbGVyKCB2b2lkICkNCi0gICAgI2VuZGlmDQotICAgIHsNCi0gICAgICAgIHByb2Nlc3NfYWxhcm0oKTsNCi0gICAgICAgIE1TU19SVENfY2xlYXJfaXJxKCk7DQotICAgIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCBNU1NfUlRDX3NldF9jYWxlbmRhcl9jb3VudF9hbGFybQ0KLSgNCi0gICAgY29uc3QgbXNzX3J0Y19jYWxlbmRhcl90ICogYWxhcm1fdmFsdWUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1JUQ19zZXRfYmluYXJ5X2NvdW50X2FsYXJtKCkgZnVuY3Rpb24gc2V0cyB1cCB0aGUgUlRDIHRvIGdlbmVyYXRlIGFuDQotICBhbGFybSB3aGVuIHRoZSBSVEMgY291bnQgcmVhY2hlcyB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBhbGFybV92YWx1ZQ0KLSAgcGFyYW1ldGVyLiBUaGUgYWxhcm0gYXNzZXJ0cyBhIHdha2V1cCBpbnRlcnJ1cHQgdG8gdGhlIENvcnRleC1NMy4gVGhpcw0KLSAgZnVuY3Rpb24gZW5hYmxlcyB0aGUgUlRDknMgd2FrZXVwIGludGVycnVwdCBvdXRwdXQsIGhvd2V2ZXIgdGhlIFJUQyB3YWtldXANCi0gIGludGVycnVwdCBpbnB1dCB0byB0aGUgQ29ydGV4LU0zIE5WSUMgbXVzdCBiZSBlbmFibGVkIHNlcGFyYXRlbHkgYnkgY2FsbGluZw0KLSAgdGhlIE1TU19SVENfZW5hYmxlX2lycSgpIGZ1bmN0aW9uLiBUaGUgYWxhcm0gY2FuIGJlIGRpc2FibGVkIGF0IGFueSB0aW1lIGJ5DQotICBjYWxsaW5nIHRoZSBNU1NfUlRDX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24uDQotDQotICBTaW5nbGUtc2hvdCBhbGFybQ0KLSAgVGhlIGFsYXJtIGNhbiBiZSBhIHNpbmdsZS1zaG90IGFsYXJtLCB3aGljaCB3aWxsIGdlbmVyYXRlIGEgc2luZ2xlIHdha2V1cA0KLSAgaW50ZXJydXB0IHRoZSBmaXJzdCB0aW1lIHRoZSBSVEMgY291bnQgcmVhY2hlcyB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZQ0KLSAgYWxhcm1fdmFsdWUgcGFyYW1ldGVyLiBTZXR0aW5nIHRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIgdG8NCi0gIE1TU19SVENfUEVSSU9ESUNfQUxBUk0gcHJvZHVjZXMgYSBzaW5nbGUtc2hvdCBhbGFybS4gVGhlIFJUQyBjb3VudGVyIGNvbnRpbnVlcw0KLSAgaW5jcmVtZW50aW5nIHdoZW4gYSBzaW5nbGUgc2hvdCBhbGFybSBvY2N1cnMuDQotDQotICBQZXJpb2RpYyBhbGFybQ0KLSAgVGhlIGFsYXJtIGNhbiBhbHNvIGJlIGEgcGVyaW9kaWMgYWxhcm0sIHdoaWNoIHdpbGwgZ2VuZXJhdGUgYSB3YWtldXAgaW50ZXJydXB0DQotICBldmVyeSB0aW1lIHRoZSBSVEMgY291bnQgcmVhY2hlcyB0aGUgdmFsdWUgc3BlY2lmaWVkIGJ5IHRoZSBhbGFybV92YWx1ZQ0KLSAgcGFyYW1ldGVyLiBTZXR0aW5nIHRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIgdG8gTVNTX1JUQ19TSU5HTEVfU0hPVF9BTEFSTQ0KLSAgcHJvZHVjZXMgYSBwZXJpb2RpYyBhbGFybS4gVGhlIFJUQyBjb3VudGVyIGF1dG9tYXRpY2FsbHkgd3JhcHMgYXJvdW5kIHRvIHplcm8NCi0gIGFuZCBjb250aW51ZXMgaW5jcmVtZW50aW5nIHdoZW4gYSBwZXJpb2RpYyBhbGFybSBvY2N1cnMuDQotICBOb3RlOiBUaGlzIGZ1bmN0aW9uIG11c3Qgb25seSBiZSB1c2VkIHdoZW4gdGhlIFJUQyBpcyBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4NCi0gICAgICAgIGJpbmFyeSBjb3VudGVyIG1vZGUNCi0gIA0KLSAgQHBhcmFtIGFsYXJtX3ZhbHVlDQotICAgIFRoZSBhbGFybV92YWx1ZSBwYXJhbWV0ZXIgaXMgYSA2NC1iaXQgdW5zaWduZWQgdmFsdWUgc3BlY2lmeWluZyB0aGUgUlRDDQotICAgIGNvdW50ZXIgdmFsdWUgdGhhdCBtdXN0IGJlIHJlYWNoZWQgZm9yIHRoZSByZXF1ZXN0ZWQgYWxhcm0gdG8gb2NjdXIuDQotICANCi0gIEBwYXJhbSBhbGFybV90eXBlDQotICAgIFRoZSBhbGFybV90eXBlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgcmVxdWVzdGVkIGFsYXJtIGlzIGEgc2luZ2xlDQotICAgIHNob3Qgb3IgcGVyaW9kaWMgYWxhcm0uIEl0IGNhbiBvbmx5IHRha2Ugb25lIG9mIHRoZXNlIHR3byB2YWx1ZXM6DQotICAgICAtIE1TU19SVENfU0lOR0xFX1NIT1RfQUxBUk0sDQotICAgICAtIE1TU19SVENfUEVSSU9ESUNfQUxBUk0NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1JUQ19zZXRfYmluYXJ5X2NvdW50X2FsYXJtDQotKA0KLSAgICB1aW50NjRfdCBhbGFybV92YWx1ZSwNCi0gICAgbXNzX3J0Y19hbGFybV90eXBlX3QgYWxhcm1fdHlwZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfUlRDX2dldF91cGRhdGVfZmxhZygpIGZ1bmN0aW9uIGluZGljYXRlcyBpZiB0aGUgUlRDIGNvdW50ZXIgaGFzDQotICBpbmNyZW1lbnRlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcoKS4gSXQgcmV0dXJucw0KLSAgemVybyBpZiBubyBSVEMgY291bnRlciBpbmNyZW1lbnQgaGFzIG9jY3VycmVkLiBJdCByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUgaWYNCi0gIHRoZSBSVEMgY291bnRlciBoYXMgaW5jcmVtZW50ZWQuIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgd2hldGhlciB0aGUgUlRDIGlzDQotICBjb25maWd1cmVkIHRvIG9wZXJhdGUgaW4gY2FsZW5kYXIgb3IgYmluYXJ5IGNvdW50ZXIgbW9kZS4NCi0gIA0KLSAgQHJldHVybg0KLSAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucywgDQotICAgemVybzogICAgIGlmIHRoZSBSVEMgaGFzIG5vdCBpbmNyZW1lbnRlZCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvDQotICAgICAgICAgICAgIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcoKSwgDQotICAgbm9uLXplcm86IGlmIHRoZSBSVEMgaGFzIGluY3JlbWVudGVkIHNpbmNlIHRoZSBsYXN0IGNhbGwgdG8NCi0gICAgICAgICAgICAgTVNTX1JUQ19jbGVhcl91cGRhdGVfZmxhZygpLg0KLQ0KLSAgIA0KLSAgRXhhbXBsZQ0KLSAgVGhpcyBleGFtcGxlIHdhaXRzIGZvciB0aGUgUlRDIHRpbWVyIHRvIGluY3JlbWVudCBieSBvbmUgc2Vjb25kLg0KLSAgQGNvZGUNCi0gICAgdm9pZCB3YWl0X3N0YXJ0X29mX3NlY29uZCh2b2lkKQ0KLSAgICB7DQotICAgICAgICB1aW50MzJfdCBydGNfY291bnRfdXBkYXRlZDsNCi0gICAgICAgIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcoKTsNCi0gICAgICAgIGRvIHsNCi0gICAgICAgICAgICBydGNfY291bnRfdXBkYXRlZCA9IE1TU19SVENfZ2V0X3VwZGF0ZV9mbGFnKCk7DQotICAgICAgICB9IHdoaWxlKCFydGNfY291bnRfdXBkYXRlZCkNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi11aW50MzJfdCBNU1NfUlRDX2dldF91cGRhdGVfZmxhZyh2b2lkKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcoKSBmdW5jdGlvbiBjbGVhcnMgdGhlIENPTlRST0wgcmVnaXN0ZXIgZmxhZyB0aGF0DQotICBpcyBzZXQgd2hlbiB0aGUgUlRDIGNvdW50ZXIgaW5jcmVtZW50cy4gSXQgaXMgdXNlZCBhbG9uZ3NpZGUgZnVuY3Rpb24NCi0gIE1TU19SVENfZ2V0X3VwZGF0ZV9mbGFnKCkgdG8gZGV0ZWN0IFJUQyBjb3VudGVyIGluY3JlbWVudHMuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gICAgDQotICBFeGFtcGxlDQotICBUaGUgZXhhbXBsZSBiZWxvdyB3aWxsIHdhaXQgZm9yIHRoZSBSVEMgdGltZXIgdG8gaW5jcmVtZW50IGJ5IG9uZSBzZWNvbmQuDQotICBAY29kZQ0KLSAgdm9pZCB3YWl0X3N0YXJ0X29mX3NlY29uZCh2b2lkKQ0KLSAgew0KLSAgICAgIHVpbnQzMl90IHJ0Y19jb3VudF91cGRhdGVkOw0KLSAgICAgIE1TU19SVENfY2xlYXJfdXBkYXRlX2ZsYWcoKTsNCi0gICAgICBkbyB7DQotICAgICAgICAgIHJ0Y19jb3VudF91cGRhdGVkID0gTVNTX1JUQ19nZXRfdXBkYXRlX2ZsYWcoKTsNCi0gICAgICB9IHdoaWxlKCFydGNfY291bnRfdXBkYXRlZCkNCi0gIH0NCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCBNU1NfUlRDX2NsZWFyX3VwZGF0ZV9mbGFnKHZvaWQpOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogTVNTX1JUQ19IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBjMmUzYS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3NfY29tYmxrLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3MDMgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTIgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBTbWFydEZ1c2lvbjIgQ09NQkxLIGFjY2VzcyBmdW5jdGlvbnMuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NjE1ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDUgMTQ6NDg6MTAgKzAxMDAgKEZyaSwgMDUgQXByIDIwMTMpICQNCi0gKi8NCi0gDQotI2luY2x1ZGUgIm1zc19jb21ibGsuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIENvbnRyb2wgcmVnaXN0ZXIgYml0IG1hc2tzLg0KLSAqLw0KLSNkZWZpbmUgQ1JfRkxVU0hPVVRfTUFTSyAgICAweDAxdQ0KLSNkZWZpbmUgQ1JfU0laRVRYX01BU0sgICAgICAweDA0dQ0KLSNkZWZpbmUgQ1JfRU5BQkxFX01BU0sgICAgICAweDEwdQ0KLSNkZWZpbmUgQ1JfTE9PUEJBQ0tfTUFTSyAgICAweDIwdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogU3RhdHVzIGFuZCBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVycyBiaXQgbWFza3MuDQotICovDQotI2RlZmluZSBUWFRPS0FZX01BU0sgICAgMHgwMXUNCi0jZGVmaW5lIFJDVk9LQVlfTUFTSyAgICAweDAydQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogREFUQTggcmVnaXN0ZXIgYml0IG1hc2tzLg0KLSAqLw0KLSNkZWZpbmUgREFUQThfQ09NTUFORF9NQVNLICAweDgwMDB1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBDT01CTEsgZHJpdmVyIHN0YXRlcy4NCi0gKi8NCi0jZGVmaW5lIENPTUJMS19JRExFICAgICAgICAgICAgIDB1DQotI2RlZmluZSBDT01CTEtfVFhfQ01EICAgICAgICAgICAxdQ0KLSNkZWZpbmUgQ09NQkxLX1RYX0RBVEEgICAgICAgICAgMnUNCi0jZGVmaW5lIENPTUJMS19XQUlUX1JFU1BPTlNFICAgIDN1DQotI2RlZmluZSBDT01CTEtfUlhfUkVTUE9OU0UgICAgICA0dQ0KLSNkZWZpbmUgQ09NQkxLX1RYX1BBR0VEX0RBVEEgICAgNXUNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENPTUJMSyBpbnRlcnJ1cHQgc2VydmNpZSByb3V0aW5lLg0KLSAqLw0KLXZvaWQgQ29tQmxrX0lSUUhhbmRsZXIodm9pZCk7DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBMb2NhbCBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIHZvaWQgYWJvcnRfY3VycmVudF9jbWQodm9pZCk7DQotc3RhdGljIHZvaWQgc2VuZF9jbWRfb3Bjb2RlKHVpbnQ4X3Qgb3Bjb2RlKTsNCi1zdGF0aWMgdWludDMyX3QgZmlsbF90eF9maWZvKGNvbnN0IHVpbnQ4X3QgKiBwX2NtZCwgdWludDMyX3QgY21kX3NpemUpOw0KLXN0YXRpYyB2b2lkIGhhbmRsZV90eF9va2F5X2lycSh2b2lkKTsNCi1zdGF0aWMgdm9pZCBoYW5kbGVfcnhfb2theV9pcnEodm9pZCk7DQotc3RhdGljIHZvaWQgY29tcGxldGVfcmVxdWVzdCh1aW50MTZfdCByZXNwb25zZV9sZW5ndGgpOw0KLXN0YXRpYyB2b2lkIHByb2Nlc3Nfc3lzX2N0cmxfY29tbWFuZCh1aW50OF90IGNtZF9vcGNvZGUpOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogR2xvYmFsIHZhcmlhYmxlczoNCi0gKi8NCi1zdGF0aWMgdm9sYXRpbGUgdWludDhfdCBnX2NvbWJsa19jbWRfb3Bjb2RlID0gMHU7DQotc3RhdGljIGNvbnN0IHVpbnQ4X3QgKiBnX2NvbWJsa19wX2NtZCA9IDB1Ow0KLXN0YXRpYyB2b2xhdGlsZSB1aW50MTZfdCBnX2NvbWJsa19jbWRfc2l6ZSA9IDB1Ow0KLXN0YXRpYyBjb25zdCB1aW50OF90ICogZ19jb21ibGtfcF9kYXRhID0gMHU7DQotc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90IGdfY29tYmxrX2RhdGFfc2l6ZSA9IDB1Ow0KLXN0YXRpYyB1aW50OF90ICogZ19jb21ibGtfcF9yZXNwb25zZSA9IDB1Ow0KLXN0YXRpYyB1aW50MTZfdCBnX2NvbWJsa19yZXNwb25zZV9zaXplID0gMHU7DQotc3RhdGljIHZvbGF0aWxlIHVpbnQxNl90IGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9IDB1Ow0KLXN0YXRpYyBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyID0gMDsNCi0NCi0vKnR5cGVkZWYgdWludDMyX3QgKCpjb21ibGtfcGFnZV9oYW5kbGVyX3QpKHVpbnQ4X3QgY29uc3QgKiogcHBfbmV4dF9wYWdlKTsNCi0qLw0KLXN0YXRpYyB1aW50MzJfdCAoKmdfY29tYmxrX3BhZ2VfaGFuZGxlcikodWludDhfdCBjb25zdCAqKiBwcF9uZXh0X3BhZ2UpID0gMDsNCi0NCi1zdGF0aWMgdWludDhfdCBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAwdTsNCi0NCi1zdGF0aWMgdWludDhfdCBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19JRExFOw0KLQ0KLXN0YXRpYyBjb21ibGtfYXN5bmNfZXZlbnRfaGFuZGxlcl90IGdfYXN5bmNfZXZlbnRfaGFuZGxlciA9IDA7DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19pbml0KGNvbWJsa19hc3luY19ldmVudF9oYW5kbGVyX3QgYXN5bmNfZXZlbnRfaGFuZGxlcikNCi17DQotICAgIC8qDQotICAgICAqIERpc2FibGUgYW5kIGNsZWFyIHByZXZpb3VzIGludGVycnVwdHMuDQotICAgICAqLw0KLSAgICBOVklDX0Rpc2FibGVJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgPSAwdTsNCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoQ29tQmxrX0lSUW4pOw0KLSAgICANCi0gICAgZ19hc3luY19ldmVudF9oYW5kbGVyID0gYXN5bmNfZXZlbnRfaGFuZGxlcjsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEluaXRpYWxpYWxpemUgQ09NQkxLIGRyaXZlciBzdGF0ZSB2YXJpYWJsZXM6DQotICAgICAqLw0KLSAgICBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAwdTsNCi0gICAgZ19jb21ibGtfY21kX29wY29kZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19wX2NtZCA9IDB1Ow0KLSAgICBnX2NvbWJsa19jbWRfc2l6ZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19wX2RhdGEgPSAwdTsNCi0gICAgZ19jb21ibGtfZGF0YV9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3BfcmVzcG9uc2UgPSAwdTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2Vfc2l6ZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9pZHggPSAwdTsNCi0gICAgZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyID0gMDsNCi0gICAgDQotICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX0lETEU7DQotICAgIA0KLSAgICBDT01CTEstPkNPTlRST0wgfD0gQ1JfRU5BQkxFX01BU0s7DQotICAgIENPTUJMSy0+Q09OVFJPTCAmPSB+Q1JfTE9PUEJBQ0tfTUFTSzsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRW5hYmxlIHJlY2VpdmUgaW50ZXJydXB0IHRvIHJlY2VpdmUgYXN5bmNocm9ub3VzIGV2ZW50cyBmcm9tIHRoZSBzeXN0ZW0NCi0gICAgICogY29udHJvbGxlci4NCi0gICAgICovDQotICAgIENPTUJMSy0+SU5UX0VOQUJMRSAmPSB+VFhUT0tBWV9NQVNLOw0KLSAgICBDT01CTEstPklOVF9FTkFCTEUgfD0gUkNWT0tBWV9NQVNLOw0KLSAgICBOVklDX0VuYWJsZUlSUShDb21CbGtfSVJRbik7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfc2VuZF9jbWRfd2l0aF9wdHINCi0oDQotICAgIHVpbnQ4X3QgY21kX29wY29kZSwNCi0gICAgdWludDMyX3QgY21kX3BhcmFtc19wdHIsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplLA0KLSAgICBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgY29tcGxldGlvbl9oYW5kbGVyDQotKQ0KLXsNCi0gICAgdWludDMyX3QgdHhfb2theTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRGlzYWJsZSBhbmQgY2xlYXIgcHJldmlvdXMgaW50ZXJydXB0cy4NCi0gICAgICovDQotICAgIE5WSUNfRGlzYWJsZUlSUShDb21CbGtfSVJRbik7DQotICAgIENPTUJMSy0+SU5UX0VOQUJMRSA9IDB1Ow0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShDb21CbGtfSVJRbik7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEFib3J0IGN1cnJlbnQgY29tbWFuZCBpZiBhbnkuDQotICAgICAqLw0KLSAgICBhYm9ydF9jdXJyZW50X2NtZCgpOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBJbml0aWFsaWFsaXplIENPTUJMSyBkcml2ZXIgc3RhdGUgdmFyaWFibGVzOg0KLSAgICAgKi8NCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMXU7DQotICAgIGdfY29tYmxrX2NtZF9vcGNvZGUgPSBjbWRfb3Bjb2RlOw0KLSAgICBnX2NvbWJsa19wX2NtZCA9IDB1Ow0KLSAgICBnX2NvbWJsa19jbWRfc2l6ZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19wX2RhdGEgPSAwdTsNCi0gICAgZ19jb21ibGtfZGF0YV9zaXplID0gMHU7DQotICAgIGdfY29tYmxrX3BfcmVzcG9uc2UgPSBwX3Jlc3BvbnNlOw0KLSAgICBnX2NvbWJsa19yZXNwb25zZV9zaXplID0gcmVzcG9uc2Vfc2l6ZTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2VfaWR4ID0gMHU7DQotICAgIGdfY29tYmxrX3BhZ2VfaGFuZGxlciA9IDB1Ow0KLSAgICBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIgPSBjb21wbGV0aW9uX2hhbmRsZXI7DQotICAgIA0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIFNlbmQgY29tbWFuZCBvcGNvZGUgYXMgYSBzaW5nbGUgYnl0ZSB3cml0ZSB0byB0aGUgVHggRklGTy4NCi0gICAgICovDQotICAgIHNlbmRfY21kX29wY29kZShnX2NvbWJsa19jbWRfb3Bjb2RlKTsNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogU2VuZCB0aGUgY29tbWFuZCBwYXJhbWV0ZXJzIHBvaW50ZXIgdG8gdGhlIFR4IEZJRk8gYXMgYSBzaW5nbGUgNCBieXRlcw0KLSAgICAgKiB3cml0ZSB0byB0aGUgVHggRklGTy4NCi0gICAgICovDQotICAgIENPTUJMSy0+Q09OVFJPTCB8PSBDUl9TSVpFVFhfTUFTSzsNCi0gICAgDQotICAgIC8qIFdhaXQgZm9yIHNwYWNlIHRvIGJlY29tZSBhdmFpbGFibGUgaW4gVHggRklGTy4gKi8NCi0gICAgZG8gew0KLSAgICAgICAgdHhfb2theSA9IENPTUJMSy0+U1RBVFVTICYgVFhUT0tBWV9NQVNLOw0KLSAgICB9IHdoaWxlKDB1ID09IHR4X29rYXkpOw0KLSAgICANCi0gICAgLyogU2VuZCBjb21tYW5kIG9wY29kZS4gKi8NCi0gICAgQ09NQkxLLT5EQVRBMzIgPSBjbWRfcGFyYW1zX3B0cjsNCi0gICAgDQotICAgIENPTUJMSy0+Q09OVFJPTCAmPSB+Q1JfU0laRVRYX01BU0s7DQotICAgIA0KLSAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19XQUlUX1JFU1BPTlNFOw0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBFbmFibGUgaW50ZXJydXB0Lg0KLSAgICAgKi8NCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFIHw9IFJDVk9LQVlfTUFTSzsNCi0gICAgTlZJQ19FbmFibGVJUlEoQ29tQmxrX0lSUW4pOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX3NlbmRfY21kDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9jbWQsDQotICAgIHVpbnQxNl90IGNtZF9zaXplLA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhLA0KLSAgICB1aW50MzJfdCBkYXRhX3NpemUsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplLA0KLSAgICBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgY29tcGxldGlvbl9oYW5kbGVyDQotKQ0KLXsNCi0gICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLSAgICANCi0gICAgQVNTRVJUKGNtZF9zaXplID4gMCk7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBEaXNhYmxlIGFuZCBjbGVhciBwcmV2aW91cyBpbnRlcnJ1cHRzLg0KLSAgICAgKi8NCi0gICAgTlZJQ19EaXNhYmxlSVJRKENvbUJsa19JUlFuKTsNCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFID0gMHU7DQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKENvbUJsa19JUlFuKTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEFib3J0IGN1cnJlbnQgY29tbWFuZCBpZiBhbnkuDQotICAgICAqLw0KLSAgICBhYm9ydF9jdXJyZW50X2NtZCgpOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogSW5pdGlhbGlhbGl6ZSBDT01CTEsgZHJpdmVyIHN0YXRlIHZhcmlhYmxlczoNCi0gICAgICovDQotICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDF1Ow0KLSAgICBnX2NvbWJsa19jbWRfb3Bjb2RlID0gcF9jbWRbMF07DQotICAgIGdfY29tYmxrX3BfY21kID0gcF9jbWQ7DQotICAgIGdfY29tYmxrX2NtZF9zaXplID0gY21kX3NpemU7DQotICAgIGdfY29tYmxrX3BfZGF0YSA9IHBfZGF0YTsNCi0gICAgZ19jb21ibGtfZGF0YV9zaXplID0gZGF0YV9zaXplOw0KLSAgICBnX2NvbWJsa19wX3Jlc3BvbnNlID0gcF9yZXNwb25zZTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2Vfc2l6ZSA9IHJlc3BvbnNlX3NpemU7DQotICAgIGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9IDB1Ow0KLSAgICBnX2NvbWJsa19wYWdlX2hhbmRsZXIgPSAwdTsNCi0gICAgZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyID0gY29tcGxldGlvbl9oYW5kbGVyOw0KLSAgICANCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFIHw9IFJDVk9LQVlfTUFTSzsNCi0NCi0gICAgLyoNCi0gICAgICogRmlsbCBGSUZPIHdpdGggY29tbWFuZC4NCi0gICAgICovDQotICAgIHNlbmRfY21kX29wY29kZShnX2NvbWJsa19jbWRfb3Bjb2RlKTsNCi0gICAgc2l6ZV9zZW50ID0gZmlsbF90eF9maWZvKCZwX2NtZFsxXSwgY21kX3NpemUgLSAxdSk7DQotICAgICsrc2l6ZV9zZW50OyAgICAvKiBBZGp1c3QgZm9yIG9wY29kZSBieXRlIHNlbnQuICovDQotICAgIGlmKHNpemVfc2VudCA8IGNtZF9zaXplKQ0KLSAgICB7DQotICAgICAgICBnX2NvbWJsa19jbWRfc2l6ZSA9IGdfY29tYmxrX2NtZF9zaXplIC0gKHVpbnQxNl90KXNpemVfc2VudDsNCi0gICAgICAgIGdfY29tYmxrX3BfY21kID0gJmdfY29tYmxrX3BfY21kW3NpemVfc2VudF07DQotICAgICAgICANCi0gICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1RYX0NNRDsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotICAgICAgICBpZihnX2NvbWJsa19kYXRhX3NpemUgPiAwdSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19UWF9EQVRBOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1dBSVRfUkVTUE9OU0U7DQotICAgICAgICB9DQotICAgIH0NCi0NCi0gICAgLyoNCi0gICAgICogRW5hYmxlIGludGVycnVwdC4NCi0gICAgICovDQotICAgIE5WSUNfRW5hYmxlSVJRKENvbUJsa19JUlFuKTsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19zZW5kX3BhZ2VkX2NtZA0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfY21kLA0KLSAgICB1aW50MTZfdCBjbWRfc2l6ZSwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIHVpbnQzMl90ICgqcGFnZV9yZWFkX2hhbmRsZXIpKHVpbnQ4X3QgY29uc3QgKiopLA0KLSAgICB2b2lkICgqY29tcGxldGlvbl9oYW5kbGVyKSh1aW50OF90ICosIHVpbnQxNl90KQ0KLSkNCi17DQotICAgIHVpbnQzMl90IHNpemVfc2VudDsNCi0gICAgdWludDhfdCBpcnFfZW5hYmxlID0gMHU7DQotICAgIA0KLSAgICBBU1NFUlQoY21kX3NpemUgPiAwdSk7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBEaXNhYmxlIGFuZCBjbGVhciBwcmV2aW91cyBpbnRlcnJ1cHRzLg0KLSAgICAgKi8NCi0gICAgTlZJQ19EaXNhYmxlSVJRKENvbUJsa19JUlFuKTsNCi0gICAgQ09NQkxLLT5JTlRfRU5BQkxFID0gMHU7DQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKENvbUJsa19JUlFuKTsNCi0gICAgDQotICAgIC8qDQotICAgICAqIEFib3J0IGN1cnJlbnQgY29tbWFuZCBpZiBhbnkuDQotICAgICAqLw0KLSAgICBhYm9ydF9jdXJyZW50X2NtZCgpOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogSW5pdGlhbGlhbGl6ZSBDT01CTEsgZHJpdmVyIHN0YXRlIHZhcmlhYmxlczoNCi0gICAgICovDQotICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDF1Ow0KLSAgICBnX2NvbWJsa19jbWRfb3Bjb2RlID0gcF9jbWRbMF07DQotICAgIGdfY29tYmxrX3BfY21kID0gcF9jbWQ7DQotICAgIGdfY29tYmxrX2NtZF9zaXplID0gY21kX3NpemU7DQotICAgIGdfY29tYmxrX3BfZGF0YSA9IDA7DQotICAgIGdfY29tYmxrX2RhdGFfc2l6ZSA9IDB1Ow0KLSAgICBnX2NvbWJsa19wX3Jlc3BvbnNlID0gcF9yZXNwb25zZTsNCi0gICAgZ19jb21ibGtfcmVzcG9uc2Vfc2l6ZSA9IHJlc3BvbnNlX3NpemU7DQotICAgIGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9IDB1Ow0KLSAgICBnX2NvbWJsa19wYWdlX2hhbmRsZXIgPSBwYWdlX3JlYWRfaGFuZGxlcjsNCi0gICAgZ19jb21ibGtfY29tcGxldGlvbl9oYW5kbGVyID0gY29tcGxldGlvbl9oYW5kbGVyOw0KLSAgICANCi0gICAgLyoNCi0gICAgICogRmlsbCBGSUZPIHdpdGggY29tbWFuZC4NCi0gICAgICovDQotICAgIHNlbmRfY21kX29wY29kZShnX2NvbWJsa19jbWRfb3Bjb2RlKTsNCi0gICAgc2l6ZV9zZW50ID0gZmlsbF90eF9maWZvKCZwX2NtZFsxXSwgY21kX3NpemUgLSAxdSk7DQotICAgICsrc2l6ZV9zZW50OyAgICAvKiBBZGp1c3QgZm9yIG9wY29kZSBieXRlIHNlbnQuICovDQotICAgIGlmKHNpemVfc2VudCA8IGNtZF9zaXplKQ0KLSAgICB7DQotICAgICAgICBnX2NvbWJsa19jbWRfc2l6ZSA9IGdfY29tYmxrX2NtZF9zaXplIC0gKHVpbnQxNl90KXNpemVfc2VudDsNCi0gICAgICAgIGdfY29tYmxrX3BfY21kID0gJmdfY29tYmxrX3BfY21kW3NpemVfc2VudF07DQotICAgICAgICANCi0gICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1RYX0NNRDsNCi0gICAgICAgIGlycV9lbmFibGUgPSBUWFRPS0FZX01BU0sgfCBSQ1ZPS0FZX01BU0s7DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBnX2NvbWJsa19jbWRfc2l6ZSA9IDB1Ow0KLSAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfVFhfUEFHRURfREFUQTsNCi0gICAgICAgIGlycV9lbmFibGUgPSBUWFRPS0FZX01BU0sgfCBSQ1ZPS0FZX01BU0s7DQotICAgIH0NCi0NCi0gICAgLyoNCi0gICAgICogRW5hYmxlIGludGVycnVwdC4NCi0gICAgICovDQotICAgIENPTUJMSy0+SU5UX0VOQUJMRSB8PSBpcnFfZW5hYmxlOw0KLSAgICBOVklDX0VuYWJsZUlSUShDb21CbGtfSVJRbik7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ09NQkxLIGludGVycnVwdCBoYW5kbGVyLg0KLSAqLw0KLXZvaWQgQ29tQmxrX0lSUUhhbmRsZXIodm9pZCkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICB1aW50OF90IHR4X29rYXk7DQotICAgIHVpbnQ4X3QgcmN2X29rYXk7DQotICAgIA0KLSAgICBzdGF0dXMgPSAodWludDhfdClDT01CTEstPlNUQVRVUzsNCi0gICAgDQotICAgIC8qIE1hc2sgb2ZmIGludGVycnVwdCB0aGF0IGFyZSBub3QgZW5hYmxlZC4qLw0KLSAgICBzdGF0dXMgJj0gQ09NQkxLLT5JTlRfRU5BQkxFOw0KLSAgICANCi0gICAgcmN2X29rYXkgPSBzdGF0dXMgJiBSQ1ZPS0FZX01BU0s7DQotICAgIGlmKHJjdl9va2F5KQ0KLSAgICB7DQotICAgICAgICBoYW5kbGVfcnhfb2theV9pcnEoKTsNCi0gICAgfQ0KLSAgICAgICAgDQotICAgIHR4X29rYXkgPSBzdGF0dXMgJiBUWFRPS0FZX01BU0s7DQotICAgIGlmKHR4X29rYXkpDQotICAgIHsNCi0gICAgICAgIGhhbmRsZV90eF9va2F5X2lycSgpOw0KLSAgICB9DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBoYW5kbGVfdHhfb2theV9pcnEodm9pZCkNCi17DQotICAgIHN3aXRjaChnX2NvbWJsa19zdGF0ZSkNCi0gICAgew0KLSAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICAgKiBUaGUgVFhfT0tBWSBpbnRlcnJ1cHQgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBmb3Igc3RhdGVzIENPTUJMS19UWF9DTUQNCi0gICAgICAgICAqIGFuZCBDT01CTEtfVFhfREFUQS4gDQotICAgICAgICAgKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX0NNRDoNCi0gICAgICAgICAgICBpZihnX2NvbWJsa19jbWRfc2l6ZSA+IDB1KQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDMyX3Qgc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgICAgICBzaXplX3NlbnQgPSBmaWxsX3R4X2ZpZm8oZ19jb21ibGtfcF9jbWQsIGdfY29tYmxrX2NtZF9zaXplKTsNCi0gICAgICAgICAgICAgICAgaWYoc2l6ZV9zZW50IDwgZ19jb21ibGtfY21kX3NpemUpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gZ19jb21ibGtfY21kX3NpemUgLSAodWludDE2X3Qpc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfcF9jbWQgPSAmZ19jb21ibGtfcF9jbWRbc2l6ZV9zZW50XTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX2NtZF9zaXplID0gMHU7DQotICAgICAgICAgICAgICAgICAgICBpZihnX2NvbWJsa19kYXRhX3NpemUgPiAwdSkNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19UWF9EQVRBOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1dBSVRfUkVTUE9OU0U7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgZWxzZQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgICAgICogVGhpcyBpcyBhbiBpbnZhbGlkIHNpdHVhdGlvbiBpbmRpY2F0aW5nIGEgYnVnIGluIHRoZSBkcml2ZXINCi0gICAgICAgICAgICAgICAgICogb3IgY29ycnVwdGVkIG1lbW9yeS4NCi0gICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgIEFTU0VSVCgwKTsNCi0gICAgICAgICAgICAgICAgYWJvcnRfY3VycmVudF9jbWQoKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX0RBVEE6DQotICAgICAgICAgICAgaWYoZ19jb21ibGtfZGF0YV9zaXplID4gMHUpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICB1aW50MzJfdCBzaXplX3NlbnQ7DQotICAgICAgICAgICAgICAgIHNpemVfc2VudCA9IGZpbGxfdHhfZmlmbyhnX2NvbWJsa19wX2RhdGEsIGdfY29tYmxrX2RhdGFfc2l6ZSk7DQotICAgICAgICAgICAgICAgIGlmKHNpemVfc2VudCA8IGdfY29tYmxrX2RhdGFfc2l6ZSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfZGF0YV9zaXplID0gZ19jb21ibGtfZGF0YV9zaXplIC0gc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfcF9kYXRhID0gJmdfY29tYmxrX3BfZGF0YVtzaXplX3NlbnRdOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQ09NQkxLLT5JTlRfRU5BQkxFICY9IH5UWFRPS0FZX01BU0s7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19XQUlUX1JFU1BPTlNFOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICAgICAqIFRoaXMgaXMgYW4gaW52YWxpZCBzaXR1YXRpb24gaW5kaWNhdGluZyBhIGJ1ZyBpbiB0aGUgZHJpdmVyDQotICAgICAgICAgICAgICAgICAqIG9yIGNvcnJ1cHRlZCBtZW1vcnkuDQotICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICBBU1NFUlQoMCk7DQotICAgICAgICAgICAgICAgIGFib3J0X2N1cnJlbnRfY21kKCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICAgICANCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX1BBR0VEX0RBVEE6DQotICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgKiBSZWFkIGEgcGFnZSBvZiBkYXRhIGlmIHJlcXVpcmVkLg0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIGlmKDB1ID09IGdfY29tYmxrX2RhdGFfc2l6ZSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIGlmKGdfY29tYmxrX3BhZ2VfaGFuZGxlciAhPSAwKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19kYXRhX3NpemUgPSBnX2NvbWJsa19wYWdlX2hhbmRsZXIoJmdfY29tYmxrX3BfZGF0YSk7DQotICAgICAgICAgICAgICAgICAgICBpZigwdSA9PSBnX2NvbWJsa19kYXRhX3NpemUpDQotICAgICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgQ09NQkxLLT5JTlRfRU5BQkxFICY9IH5UWFRPS0FZX01BU0s7DQotICAgICAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfV0FJVF9SRVNQT05TRTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVCgwKTsNCi0gICAgICAgICAgICAgICAgICAgIGFib3J0X2N1cnJlbnRfY21kKCk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgDQotICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgKiBUcmFuc21pdCB0aGUgcGFnZSBkYXRhIG9yIG1vdmUgdG8gQ09NQkxLX1dBSVRfUkVTUE9OU0Ugc3RhdGUgaWYNCi0gICAgICAgICAgICAgKiBubyBmdXJ0aGVyIHBhZ2UgZGF0YSBjb3VsZCBiZSBvYnRhaW5lZCBieSB0aGUgY2FsbCB0byB0aGUgcGFnZQ0KLSAgICAgICAgICAgICAqIGhhbmRsZXIgYWJvdmUuDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgaWYoMHUgPT0gZ19jb21ibGtfZGF0YV9zaXplKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgQ09NQkxLLT5JTlRfRU5BQkxFICY9IH5UWFRPS0FZX01BU0s7DQotICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1dBSVRfUkVTUE9OU0U7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQzMl90IHNpemVfc2VudDsNCi0gICAgICAgICAgICAgICAgc2l6ZV9zZW50ID0gZmlsbF90eF9maWZvKGdfY29tYmxrX3BfZGF0YSwgZ19jb21ibGtfZGF0YV9zaXplKTsNCi0gICAgICAgICAgICAgICAgZ19jb21ibGtfZGF0YV9zaXplID0gZ19jb21ibGtfZGF0YV9zaXplIC0gc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgICAgICBnX2NvbWJsa19wX2RhdGEgPSAmZ19jb21ibGtfcF9kYXRhW3NpemVfc2VudF07DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgDQotICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgICAqIFRoZSBUWF9PS0FZIGludGVycnVwdCBzaG91bGQgTk9UIGJlIGVuYWJsZWQgZm9yIHN0YXRlcyBDT01CTEtfSURMRSwNCi0gICAgICAgICAqIENPTUJMS19XQUlUX1JFU1BPTlNFIGFuZCBDT01CTEtfUlhfUkVTUE9OU0UuDQotICAgICAgICAgKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX0lETEU6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICBjYXNlIENPTUJMS19XQUlUX1JFU1BPTlNFOg0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLw0KLSAgICAgICAgY2FzZSBDT01CTEtfUlhfUkVTUE9OU0U6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgIENPTUJMSy0+SU5UX0VOQUJMRSAmPSB+VFhUT0tBWV9NQVNLOw0KLSAgICAgICAgICAgIGNvbXBsZXRlX3JlcXVlc3QoMHUpOw0KLSAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX0lETEU7DQotICAgICAgICBicmVhazsNCi0gICAgfQ0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgaGFuZGxlX3J4X29rYXlfaXJxKHZvaWQpDQotew0KLSAgICB1aW50MTZfdCBkYXRhMTY7DQotICAgIHVpbnQxNl90IGlzX2NvbW1hbmQ7DQotICAgIA0KLSAgICBkYXRhMTYgPSAodWludDE2X3QpQ09NQkxLLT5EQVRBODsNCi0gICAgaXNfY29tbWFuZCA9IGRhdGExNiAmIERBVEE4X0NPTU1BTkRfTUFTSzsNCi0gICAgICAgICAgICANCi0gICAgc3dpdGNoKGdfY29tYmxrX3N0YXRlKQ0KLSAgICB7DQotICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgICAqIFRoZSBSQ1ZfT0tBWSBpbnRlcnJ1cHQgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBmb3Igc3RhdGVzDQotICAgICAgICAgKiBDT01CTEtfV0FJVF9SRVNQT05TRSBhbmQgQ09NQkxLX1JYX1JFU1BPTlNFLiANCi0gICAgICAgICAqLw0KLSAgICAgICAgY2FzZSBDT01CTEtfV0FJVF9SRVNQT05TRToNCi0gICAgICAgICAgICBpZihpc19jb21tYW5kKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgdWludDhfdCByeGVkX29wY29kZTsNCi0gICAgICAgICAgICAgICAgcnhlZF9vcGNvZGUgPSAodWludDhfdClkYXRhMTY7DQotICAgICAgICAgICAgICAgIGlmKHJ4ZWRfb3Bjb2RlID09IGdfY29tYmxrX2NtZF9vcGNvZGUpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9IDB1Ow0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfcF9yZXNwb25zZVtnX2NvbWJsa19yZXNwb25zZV9pZHhdID0gcnhlZF9vcGNvZGU7DQotICAgICAgICAgICAgICAgICAgICArK2dfY29tYmxrX3Jlc3BvbnNlX2lkeDsNCi0gICAgICAgICAgICAgICAgICAgIGdfY29tYmxrX3N0YXRlID0gQ09NQkxLX1JYX1JFU1BPTlNFOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc19zeXNfY3RybF9jb21tYW5kKHJ4ZWRfb3Bjb2RlKTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIGJyZWFrOw0KLSAgICAgICAgICAgIA0KLSAgICAgICAgY2FzZSBDT01CTEtfUlhfUkVTUE9OU0U6DQotICAgICAgICAgICAgaWYoaXNfY29tbWFuZCkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQ4X3QgcnhlZF9vcGNvZGU7DQotICAgICAgICAgICAgICAgIHJ4ZWRfb3Bjb2RlID0gKHVpbnQ4X3QpZGF0YTE2Ow0KLSAgICAgICAgICAgICAgICBwcm9jZXNzX3N5c19jdHJsX2NvbW1hbmQocnhlZF9vcGNvZGUpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBlbHNlDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBpZihnX2NvbWJsa19yZXNwb25zZV9pZHggPCBnX2NvbWJsa19yZXNwb25zZV9zaXplKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICB1aW50OF90IHJ4ZWRfZGF0YTsNCi0gICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgICAgICAgICAgICAgcnhlZF9kYXRhID0gKHVpbnQ4X3QpZGF0YTE2Ow0KLSAgICAgICAgICAgICAgICAgICAgZ19jb21ibGtfcF9yZXNwb25zZVtnX2NvbWJsa19yZXNwb25zZV9pZHhdID0gcnhlZF9kYXRhOw0KLSAgICAgICAgICAgICAgICAgICAgKytnX2NvbWJsa19yZXNwb25zZV9pZHg7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgDQotICAgICAgICAgICAgICAgIGlmKGdfY29tYmxrX3Jlc3BvbnNlX2lkeCA9PSBnX2NvbWJsa19yZXNwb25zZV9zaXplKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZV9yZXF1ZXN0KGdfY29tYmxrX3Jlc3BvbnNlX2lkeCk7DQotICAgICAgICAgICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19JRExFOw0KLSAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgDQotICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgICAqIFRoZSBSQ1ZfT0tBWSBpbnRlcnJ1cHQgc2hvdWxkIE5PVCBiZSBlbmFibGVkIGZvciBzdGF0ZXMNCi0gICAgICAgICAqIENPTUJMS19JRExFLCBDT01CTEtfVFhfQ01EIGFuZCBDT01CTEtfVFhfREFUQS4gDQotICAgICAgICAgKi8NCi0gICAgICAgIGNhc2UgQ09NQkxLX1RYX1BBR0VEX0RBVEE6DQotICAgICAgICAgICAgLyogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB3aGVuIHRoZXJlIGlzIGFuIGVycm9yLCB3ZSBuZWVkIHRvIHRlcm1pbmF0ZSBsb2FkaW5nIHRoZSBkYXRhICovDQotICAgICAgICAgICAgaWYoIWlzX2NvbW1hbmQpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBnX2NvbWJsa19wX3Jlc3BvbnNlWzFdID0gKHVpbnQ4X3QpZGF0YTE2Ow0KLSAgICAgICAgICAgICAgICBjb21wbGV0ZV9yZXF1ZXN0KDJ1KTsNCi0gICAgICAgICAgICAgICAgZ19jb21ibGtfc3RhdGUgPSBDT01CTEtfSURMRTsNCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgIGNhc2UgQ09NQkxLX0lETEU6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICBjYXNlIENPTUJMS19UWF9DTUQ6DQotICAgICAgICAgICAgLyogRmFsbCB0aHJvdWdoICovDQotICAgICAgICBjYXNlIENPTUJMS19UWF9EQVRBOg0KLSAgICAgICAgICAgIC8qIEZhbGwgdGhyb3VnaCAqLw0KLSAgICAgICAgICAgIGlmKGlzX2NvbW1hbmQpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICB1aW50OF90IHJ4ZWRfb3Bjb2RlOw0KLSAgICAgICAgICAgICAgICByeGVkX29wY29kZSA9ICh1aW50OF90KWRhdGExNjsNCi0gICAgICAgICAgICAgICAgcHJvY2Vzc19zeXNfY3RybF9jb21tYW5kKHJ4ZWRfb3Bjb2RlKTsNCi0gICAgICAgICAgICB9DQotICAgICAgICBicmVhazsNCi0gICAgICAgIA0KLSAgICAgICAgZGVmYXVsdDoNCi0gICAgICAgICAgICBjb21wbGV0ZV9yZXF1ZXN0KDB1KTsNCi0gICAgICAgICAgICBnX2NvbWJsa19zdGF0ZSA9IENPTUJMS19JRExFOw0KLSAgICAgICAgYnJlYWs7DQotICAgIH0NCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIGNvbXBsZXRlX3JlcXVlc3QNCi0oDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX2xlbmd0aA0KLSkNCi17DQotICAgIGlmKGdfY29tYmxrX2NvbXBsZXRpb25faGFuZGxlciAhPSAwKQ0KLSAgICB7DQotICAgICAgICBnX2NvbWJsa19jb21wbGV0aW9uX2hhbmRsZXIoZ19jb21ibGtfcF9yZXNwb25zZSwgcmVzcG9uc2VfbGVuZ3RoKTsNCi0gICAgICAgIGdfY29tYmxrX2NvbXBsZXRpb25faGFuZGxlciA9IDA7DQotICAgICAgICBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAwdTsNCi0gICAgfQ0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgYWJvcnRfY3VycmVudF9jbWQodm9pZCkNCi17DQotICAgIGlmKGdfcmVxdWVzdF9pbl9wcm9ncmVzcykNCi0gICAgew0KLSAgICAgICAgdWludDMyX3QgZmx1c2hfaW5fcHJvZ3Jlc3M7DQotICAgICAgICANCi0gICAgICAgIC8qDQotICAgICAgICAgKiBDYWxsIGNvbXBsZXRpb24gaGFuZGxlciBqdXN0IGluIGNhc2Ugd2UgYXJlIGluIGEgbXVsdGkgdGhyZWFkZWQgc3lzdGVtDQotICAgICAgICAgKiB0byBhdm9pZCBhIHRhc2sgbG9ja3VwLg0KLSAgICAgICAgICovDQotICAgICAgICBjb21wbGV0ZV9yZXF1ZXN0KGdfY29tYmxrX3Jlc3BvbnNlX2lkeCk7DQotICAgICAgICANCi0gICAgICAgIC8qDQotICAgICAgICAgKiBGbHVzaCB0aGUgRklGT3MNCi0gICAgICAgICAqLw0KLSAgICAgICAgQ09NQkxLLT5DT05UUk9MIHw9IENSX0ZMVVNIT1VUX01BU0s7DQotICAgICAgICBkbyB7DQotICAgICAgICAgICAgZmx1c2hfaW5fcHJvZ3Jlc3MgPSBDT01CTEstPkNPTlRST0wgJiBDUl9GTFVTSE9VVF9NQVNLOw0KLSAgICAgICAgfSB3aGlsZShmbHVzaF9pbl9wcm9ncmVzcyk7DQotICAgIH0NCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIHNlbmRfY21kX29wY29kZQ0KLSgNCi0gICAgdWludDhfdCBvcGNvZGUNCi0pDQotew0KLSAgICB1aW50MzJfdCB0eF9va2F5Ow0KLSAgICANCi0gICAgLyogU2V0IHRyYW5zbWl0IEZJRk8gdG8gdHJhbnNmZXIgYnl0ZXMuICovDQotICAgIENPTUJMSy0+Q09OVFJPTCAmPSB+Q1JfU0laRVRYX01BU0s7DQotICAgIA0KLSAgICAvKiBXYWl0IGZvciBzcGFjZSB0byBiZWNvbWUgYXZhaWxhYmxlIGluIFR4IEZJRk8uICovDQotICAgIGRvIHsNCi0gICAgICAgIHR4X29rYXkgPSBDT01CTEstPlNUQVRVUyAmIFRYVE9LQVlfTUFTSzsNCi0gICAgfSB3aGlsZSgwdSA9PSB0eF9va2F5KTsNCi0gICAgDQotICAgIC8qIFNlbmQgY29tbWFuZCBvcGNvZGUuICovDQotICAgIENPTUJMSy0+RlJBTUVfU1RBUlQ4ID0gb3Bjb2RlOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHVpbnQzMl90IGZpbGxfdHhfZmlmbw0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfY21kLA0KLSAgICB1aW50MzJfdCBjbWRfc2l6ZQ0KLSkNCi17DQotICAgIHZvbGF0aWxlIHVpbnQzMl90IHR4X29rYXk7DQotICAgIHVpbnQzMl90IHNpemVfc2VudDsNCi0NCi0gICAgLyogU2V0IHRyYW5zbWl0IEZJRk8gdG8gdHJhbnNmZXIgYnl0ZXMuICovDQotICAgIENPTUJMSy0+Q09OVFJPTCAmPSB+Q1JfU0laRVRYX01BU0s7DQotICAgIA0KLSAgICBzaXplX3NlbnQgPSAwdTsNCi0gICAgdHhfb2theSA9IENPTUJMSy0+U1RBVFVTICYgVFhUT0tBWV9NQVNLOw0KLSAgICB3aGlsZSgodHhfb2theSAhPSAwdSkgJiYgKHNpemVfc2VudCA8IGNtZF9zaXplKSkNCi0gICAgew0KLSAgICAgICAgQ09NQkxLLT5EQVRBOCA9IHBfY21kW3NpemVfc2VudF07DQotICAgICAgICArK3NpemVfc2VudDsNCi0gICAgICAgIHR4X29rYXkgPSBDT01CTEstPlNUQVRVUyAmIFRYVE9LQVlfTUFTSzsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHNpemVfc2VudDsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLXN0YXRpYyB2b2lkIHByb2Nlc3Nfc3lzX2N0cmxfY29tbWFuZCh1aW50OF90IGNtZF9vcGNvZGUpDQotew0KLSAgICBpZihnX2FzeW5jX2V2ZW50X2hhbmRsZXIgIT0gMCkNCi0gICAgew0KLSAgICAgICAgZ19hc3luY19ldmVudF9oYW5kbGVyKGNtZF9vcGNvZGUpOw0KLSAgICB9DQotfQ0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19jb21ibGsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y5YmE3Zi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3N5c19zZXJ2aWNlcy9tc3NfY29tYmxrLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0RnVzaW9uMiBDT01CTEsgYWNjZXNzIGZ1bmN0aW9ucy4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUxNjAgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0xNCAxNDo1MDo0OSArMDAwMCAoVGh1LCAxNCBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgX19NU1NfQ09NQkxLX0hfDQotI2RlZmluZSBfX01TU19DT01CTEtfSF8gMQ0KLQ0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tMnN4eHguaCINCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqDQotICovDQotdHlwZWRlZiB2b2lkKCpjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QpKHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLCB1aW50MTZfdCByZXNwb25zZV9zaXplKTsNCi0NCi10eXBlZGVmIHVpbnQzMl90ICgqY29tYmxrX3BhZ2VfaGFuZGxlcl90KSh1aW50OF90IGNvbnN0ICoqIHBwX25leHRfcGFnZSk7DQotDQotdHlwZWRlZiB2b2lkICgqY29tYmxrX2FzeW5jX2V2ZW50X2hhbmRsZXJfdCkodWludDhfdCBldmVudF9vcGNvZGUpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfaW5pdChjb21ibGtfYXN5bmNfZXZlbnRfaGFuZGxlcl90IGFzeW5jX2V2ZW50X2hhbmRsZXIpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICoNCi0gKi8NCi12b2lkIE1TU19DT01CTEtfc2VuZF9jbWRfd2l0aF9wdHINCi0oDQotICAgIHVpbnQ4X3QgY21kX29wY29kZSwNCi0gICAgdWludDMyX3QgY21kX3BhcmFtc19wdHIsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplLA0KLSAgICBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgY29tcGxldGlvbl9oYW5kbGVyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX3NlbmRfY21kDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9jbWQsDQotICAgIHVpbnQxNl90IGNtZF9zaXplLA0KLSAgICBjb25zdCB1aW50OF90ICogcF9kYXRhLA0KLSAgICB1aW50MzJfdCBkYXRhX3NpemUsDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplLA0KLSAgICBjb21ibGtfY29tcGxldGlvbl9oYW5kbGVyX3QgY29tcGxldGlvbl9oYW5kbGVyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqDQotICovDQotdm9pZCBNU1NfQ09NQkxLX3JlYWQNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGEsDQotICAgIHVpbnQxNl90IGNtZF9zaXplLA0KLSAgICB1aW50OF90ICogcF9yZXNwb25zZSwNCi0gICAgdWludDE2X3QgcmVzcG9uc2Vfc2l6ZSwNCi0gICAgY29tYmxrX2NvbXBsZXRpb25faGFuZGxlcl90IGNvbXBsZXRpb25faGFuZGxlcg0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKg0KLSAqLw0KLXZvaWQgTVNTX0NPTUJMS19zZW5kX3BhZ2VkX2NtZA0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfY21kLA0KLSAgICB1aW50MTZfdCBjbWRfc2l6ZSwNCi0gICAgdWludDhfdCAqIHBfcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX3NpemUsDQotICAgIHVpbnQzMl90ICgqKSh1aW50OF90IGNvbnN0ICoqKSwNCi0gICAgdm9pZCAoKmNvbXBsZXRpb25faGFuZGxlcikodWludDhfdCAqLCB1aW50MTZfdCkNCi0pOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX19NU1NfQ09NQkxLX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzQ1M2I1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19zeXNfc2VydmljZXMuYworKysgL2Rldi9udWxsCkBAIC0xLDgxMyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0RnVzaW9uMiBzeXN0ZW0gc2VydmljZXMuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NjE1ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDUgMTQ6NDg6MTAgKzAxMDAgKEZyaSwgMDUgQXByIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSAibXNzX3N5c19zZXJ2aWNlcy5oIg0KLSNpbmNsdWRlICJtc3NfY29tYmxrLmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL21zc19hc3NlcnQuaCINCi0jaW5jbHVkZSA8c3RyaW5nLmg+DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKg0KLSAqLw0KLS8qDQotICogU2VydmljZSByZXF1ZXN0IGNvbW1hbmQgb3Bjb2RlczoNCi0gKi8NCi0jZGVmaW5lIERFVklDRV9DRVJUSUZJQ0FURV9SRVFVRVNUX0NNRCAgICAgIDB1DQotI2RlZmluZSBTRVJJQUxfTlVNQkVSX1JFUVVFU1RfQ01EICAgICAgICAgICAxdQ0KLSNkZWZpbmUgRkxBU0hfRlJFRVpFX1JFUVVFU1RfQ01EICAgICAgICAgICAgMnUNCi0jZGVmaW5lIEFFUzEyOF9SRVFVRVNUX0NNRCAgICAgICAgICAgICAgICAgIDN1DQotI2RlZmluZSBVU0VSQ09ERV9SRVFVRVNUX0NNRCAgICAgICAgICAgICAgICA0dQ0KLSNkZWZpbmUgREVTSUdOVkVSX1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgNXUNCi0jZGVmaW5lIEFFUzI1Nl9SRVFVRVNUX0NNRCAgICAgICAgICAgICAgICAgIDZ1DQotI2RlZmluZSBLRVlUUkVFX1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgICA5dQ0KLSNkZWZpbmUgU0hBMjU2X1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgICAgMTB1DQotI2RlZmluZSBITUFDX1JFUVVFU1RfQ01EICAgICAgICAgICAgICAgICAgICAxMnUNCi0jZGVmaW5lIFBQVUZfQ0hBTExFTkdFX1JFU1BfUkVRVUVTVF9DTUQgICAgIDE0dQ0KLSNkZWZpbmUgSVNQX1BST0dSQU1NSU5HX1JFUVVFU1RfQ01EICAgICAgICAgMjF1DQotI2RlZmluZSBESUdFU1RfQ0hFQ0tfUkVRVUVTVF9DTUQgICAgICAgICAgICAyM3UNCi0jZGVmaW5lIE5SQkdfU0VMRl9URVNUX1JFUVVFU1RfQ01EICAgICAgICAgIDQwdQ0KLSNkZWZpbmUgTlJCR19JTlNUQU5USUFURV9SRVFVRVNUX0NNRCAgICAgICAgNDF1DQotI2RlZmluZSBOUkJHX0dFTkVSQVRFX1JFUVVFU1RfQ01EICAgICAgICAgICA0MnUNCi0jZGVmaW5lIE5SQkdfUkVTRUVEX1JFUVVFU1RfQ01EICAgICAgICAgICAgIDQzdQ0KLSNkZWZpbmUgTlJCR19VTklOU1RBTlRJQVRFX1JFUVVFU1RfQ01EICAgICAgNDR1DQotI2RlZmluZSBOUkJHX1JFU0VUX1JFUVVFU1RfQ01EICAgICAgICAgICAgICA0NXUNCi0jZGVmaW5lIEZMQVNIRlJFRVpFX1NIVVRET1dOX0NNRCAgICAgICAgICAgIDIyNHUNCi0jZGVmaW5lIFpFUk9JWkFUSU9OX1JFUVVFU1RfQ01EICAgICAgICAgICAgIDI0MHUNCi0NCi0jZGVmaW5lIFBPV0VSX09OX1JFU0VUX0RJR0VTVF9FUlJPUl9DTUQgICAgIDI0MXUNCi0NCi0vKg0KLSAqIFN5c3RlbSBTZXJ2aWNlcyByZXF1ZXN0cyBsZW5ndGg6DQotICovDQotI2RlZmluZSBGTEFTSF9GUkVFWkVfUkVRVUVTVF9MRU5HVEggICAgICAgICAydQ0KLQ0KLS8qDQotICogU2VydmljZSByZXNwb25zZSBsZW5ndGhzOg0KLSAqLw0KLSNkZWZpbmUgU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSCAgICAgICAgICAgNnUNCi0NCi0jZGVmaW5lIFNFUklBTF9OVU1CRVJfU0VSVl9SRVNQX0xFTkdUSCAgICAgIDZ1DQotI2RlZmluZSBVU0VSQ09ERV9TRVJWX1JFU1BfTEVOR1RIICAgICAgICAgICA2dQ0KLSNkZWZpbmUgREVTSUdOVkVSX1NFUlZfUkVTUF9MRU5HVEggICAgICAgICAgNnUNCi0jZGVmaW5lIERFVklDRV9DRVJUX1NFUlZfUkVTUF9MRU5HVEggICAgICAgIDZ1DQotI2RlZmluZSBJU1BfUFJPR19TRVJWX1JFU1BfTEVOR1RIICAgICAgICAgICAydQ0KLSNkZWZpbmUgTlJCR19SRVNFVF9TRVJWX1JFU1BfTEVOR1RIICAgICAgICAgMnUNCi0jZGVmaW5lIE5SQkdfU0VMRl9URVNUX1NFUlZfUkVTUF9MRU5HVEggICAgIDJ1DQotI2RlZmluZSBOUkJHX1VOSU5TVF9TRVJWX1JFU1BfTEVOR1RIICAgICAgICAzdQ0KLQ0KLSNkZWZpbmUgRElHRVNUX0NIRUNLX1NFUlZfUkVTUF9MRU5HVEggICAgICAgMnUNCi0jZGVmaW5lIEZMQVNIX0ZSRUVaRV9TRVJWX1JFU1BfTEVOR1RIICAgICAgIDJ1DQotDQotLyoNCi0gKiBOb24gRGV0ZXJtaW5pc3RpYyBSYW5kb20gQml0IEdlbmVyYXRvciBkZWZpbmVzOg0KLSAqLw0KLSNkZWZpbmUgSU5WQUxJRF9OUkJHX0hBTkRMRSAgICAgMHhGRnUNCi0NCi0vKg0KLSAqIFJUQ19XQUtFVVBfQ1Igc3lzdGVtIHJlZ2lzdGVyIGJpdCBtYXNrczoNCi0gKi8NCi0jZGVmaW5lIFJUQ19XQUtFVVBfRzRDX0VOX01BU0sgICAgICAweDAwMDAwMDA0dQ0KLSNkZWZpbmUgUlRDX1dBS0VVUF9GQUJfRU5fTUFTSyAgICAgIDB4MDAwMDAwMDJ1DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBMb2NhbCBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIHZvaWQgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXIodWludDhfdCAqIHBfcmVzcG9uc2UsIHVpbnQxNl90IHJlc3BvbnNlX3NpemUpOw0KLXN0YXRpYyB2b2lkIHNpZ25hbF9yZXF1ZXN0X3N0YXJ0KHZvaWQpOw0KLXN0YXRpYyB1aW50MTZfdCB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24odm9pZCk7DQotc3RhdGljIHVpbnQ4X3QgZXhlY3V0ZV9zZXJ2aWNlDQotKA0KLSAgICB1aW50OF90IGNtZF9vcGNvZGUsDQotICAgIHVpbnQ4X3QgKiBjbWRfcGFyYW1zX3B0ciwNCi0gICAgdWludDhfdCAqIHJlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9sZW5ndGgNCi0pOw0KLQ0KLXN0YXRpYyB2b2lkIGFzeW5jaHJvbm91c19ldmVudF9oYW5kbGVyKHVpbnQ4X3QgZXZlbnRfb3Bjb2RlKTsNCi0NCi1zdGF0aWMgdm9pZCB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheQ0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBvaW50ZXIsDQotICAgIHVpbnQ4X3QgdGFyZ2V0X2FycmF5W10sDQotICAgIHVpbnQzMl90IGFycmF5X2luZGV4DQotKTsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEdsb2JhbCB2YXJpYWJsZXMNCi0gKi8NCi1zdGF0aWMgdm9sYXRpbGUgdWludDhfdCBnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MgPSAwdTsNCi1zdGF0aWMgdm9sYXRpbGUgdWludDE2X3QgZ19sYXN0X3Jlc3BvbnNlX2xlbmd0aCA9IDB1Ow0KLXN0YXRpYyBzeXNfc2Vydl9hc3luY19ldmVudF9oYW5kbGVyX3QgZ19ldmVudF9oYW5kbGVyID0gMDsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotdm9pZCBNU1NfU1lTX2luaXQoc3lzX3NlcnZfYXN5bmNfZXZlbnRfaGFuZGxlcl90IGV2ZW50X2hhbmRsZXIpDQotew0KLSAgICBNU1NfQ09NQkxLX2luaXQoYXN5bmNocm9ub3VzX2V2ZW50X2hhbmRsZXIpOw0KLSAgICANCi0gICAgZ19ldmVudF9oYW5kbGVyID0gZXZlbnRfaGFuZGxlcjsNCi0gICAgDQotICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDB1Ow0KLSAgICBnX2xhc3RfcmVzcG9uc2VfbGVuZ3RoID0gMHU7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCBhc3luY2hyb25vdXNfZXZlbnRfaGFuZGxlcih1aW50OF90IGV2ZW50X29wY29kZSkNCi17DQotICAgIGlmKGdfZXZlbnRfaGFuZGxlciAhPSAwKQ0KLSAgICB7DQotICAgIHN3aXRjaChldmVudF9vcGNvZGUpDQotICAgICAgICB7DQotICAgICAgICAgICAgY2FzZSBGTEFTSF9GUkVFWkVfU0hVVERPV05fT1BDT0RFOg0KLSAgICAgICAgICAgIGNhc2UgRkxBU0hfRlJFRVpFX0VYSVRfT1BDT0RFOg0KLSAgICAgICAgICAgICAgICBnX2V2ZW50X2hhbmRsZXIoZXZlbnRfb3Bjb2RlKTsNCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgICAgICANCi0gICAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgICAgICAvKiBJZ25vcmUgYWxsIG90aGVyIGV2ZW50cy4gKi8NCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCi0gICAgfQ0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX2dldF9zZXJpYWxfbnVtYmVyDQotKA0KLSAgICB1aW50OF90ICogcF9zZXJpYWxfbnVtYmVyDQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtTRVJJQUxfTlVNQkVSX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShTRVJJQUxfTlVNQkVSX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcF9zZXJpYWxfbnVtYmVyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRVJJQUxfTlVNQkVSX1NFUlZfUkVTUF9MRU5HVEgpOw0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19nZXRfdXNlcl9jb2RlDQotKA0KLSAgICB1aW50OF90ICogcF91c2VyX2NvZGUNCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1VTRVJDT0RFX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShVU0VSQ09ERV9SRVFVRVNUX0NNRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfdXNlcl9jb2RlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVU0VSQ09ERV9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X2Rlc2lnbl92ZXJzaW9uDQotKA0KLSAgICB1aW50OF90ICogcF9kZXNpZ25fdmVyc2lvbg0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbREVTSUdOVkVSX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShERVNJR05WRVJfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwX2Rlc2lnbl92ZXJzaW9uLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVNJR05WRVJfU0VSVl9SRVNQX0xFTkdUSCk7DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX2dldF9kZXZpY2VfY2VydGlmaWNhdGUNCi0oDQotICAgIHVpbnQ4X3QgKiBwX2RldmljZV9jZXJ0aWZpY2F0ZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbREVWSUNFX0NFUlRfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKERFVklDRV9DRVJUSUZJQ0FURV9SRVFVRVNUX0NNRCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBfZGV2aWNlX2NlcnRpZmljYXRlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBERVZJQ0VfQ0VSVF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfZmxhc2hfZnJlZXplKHVpbnQ4X3Qgb3B0aW9ucykNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICB1aW50MTZfdCBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoOw0KLSAgICB1aW50OF90IGZsYXNoX2ZyZWV6ZV9yZXFbRkxBU0hfRlJFRVpFX1JFUVVFU1RfTEVOR1RIXTsNCi0gICAgdWludDhfdCByZXNwb25zZVtGTEFTSF9GUkVFWkVfU0VSVl9SRVNQX0xFTkdUSF07DQotDQotICAgIC8qDQotICAgICAqIFRoZSBGbGFzaCBGcmVlemUgc3lzdGVtIHNlcnZpY2UgaXMgbm90IGF2YWlsYWJsZSBvbiBNMlMwNTAgcmV2IEEgYW5kIHJldiBCLg0KLSAgICAgKi8NCi0gICAgQVNTRVJUKDB4MDAwMEY4MDJ1ICE9IFNZU1JFRy0+REVWSUNFX1ZFUlNJT04pOw0KLSAgICBBU1NFUlQoMHgwMDAxRjgwMnUgIT0gU1lTUkVHLT5ERVZJQ0VfVkVSU0lPTik7DQotICAgIA0KLSAgICAvKg0KLSAgICAgKiBFbmFibGUgUlRDIHdha2UtdXAgaW50ZXJydXB0IHRvIFN5c3RlbSBDb250cm9sbGVyIGFuZCBGUEdBIGZhYnJpYy4NCi0gICAgICovDQotICAgIFNZU1JFRy0+UlRDX1dBS0VVUF9DUiB8PSAoUlRDX1dBS0VVUF9HNENfRU5fTUFTSyB8IFJUQ19XQUtFVVBfRkFCX0VOX01BU0spOw0KLQ0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLQ0KLSAgICBmbGFzaF9mcmVlemVfcmVxWzBdID0gRkxBU0hfRlJFRVpFX1JFUVVFU1RfQ01EOw0KLSAgICBmbGFzaF9mcmVlemVfcmVxWzFdID0gb3B0aW9uczsNCi0NCi0gICAgTVNTX0NPTUJMS19zZW5kX2NtZChmbGFzaF9mcmVlemVfcmVxLCAgICAgICAgICAgICAgIC8qIHBfY21kICovDQotICAgICAgICAgICAgICAgICAgICAgICAgRkxBU0hfRlJFRVpFX1JFUVVFU1RfTEVOR1RILCAgICAvKiBjbWRfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9kYXRhICovDQotICAgICAgICAgICAgICAgICAgICAgICAgMHUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkYXRhX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfcmVzcG9uc2UgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBGTEFTSF9GUkVFWkVfU0VSVl9SRVNQX0xFTkdUSCwgIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2NvbXBsZXRpb25faGFuZGxlcik7ICAgIC8qIGNvbXBsZXRpb25faGFuZGxlciAqLw0KLQ0KLSAgICBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoID0gd2FpdF9mb3JfcmVxdWVzdF9jb21wbGV0aW9uKCk7DQotICAgIA0KLSAgICBpZigoRkxBU0hfRlJFRVpFX1NFUlZfUkVTUF9MRU5HVEggPT0gYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aCkgJiYNCi0gICAgICAgKEZMQVNIX0ZSRUVaRV9SRVFVRVNUX0NNRCA9PSByZXNwb25zZVswXSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHJlc3BvbnNlWzFdOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotI2RlZmluZSBBRVMxMjhfS0VZX0xFTkdUSCAgIDE2dQ0KLSNkZWZpbmUgSVZfTEVOR1RIICAgICAgICAgICAxNnUNCi0NCi0jZGVmaW5lIEFFUzI1Nl9LRVlfTEVOR1RIICAgMzJ1DQotDQotI2RlZmluZSBITUFDX0tFWV9MRU5HVEggICAgIDMydQ0KLQ0KLXVpbnQ4X3QgTVNTX1NZU18xMjhiaXRfYWVzDQotKA0KLSAgICBjb25zdCB1aW50OF90ICoga2V5LA0KLSAgICBjb25zdCB1aW50OF90ICogaXYsDQotICAgIHVpbnQxNl90IG5iX2Jsb2NrcywNCi0gICAgdWludDhfdCBtb2RlLA0KLSAgICB1aW50OF90ICogZGVzdF9hZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogc3JjX2FkZHIpDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHBhcmFtc1s0NF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgbWVtY3B5KCZwYXJhbXNbMF0sIGtleSwgQUVTMTI4X0tFWV9MRU5HVEgpOw0KLSAgICBtZW1jcHkoJnBhcmFtc1sxNl0sIGl2LCBJVl9MRU5HVEgpOw0KLSAgICANCi0gICAgcGFyYW1zWzMyXSA9ICh1aW50OF90KW5iX2Jsb2NrczsNCi0gICAgcGFyYW1zWzMzXSA9ICh1aW50OF90KShuYl9ibG9ja3MgPj4gOHUpOw0KLSAgICBwYXJhbXNbMzRdID0gbW9kZTsNCi0gICAgcGFyYW1zWzM1XSA9IDB1Ow0KLSNpZiAxDQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KGRlc3RfYWRkciwgcGFyYW1zLCAzNnUpOw0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShzcmNfYWRkciwgcGFyYW1zLCA0MHUpOw0KLSNlbHNlICAgIA0KLSAgICBwYXJhbXNbMzZdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIpOw0KLSAgICBwYXJhbXNbMzddID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gOHUpOw0KLSAgICBwYXJhbXNbMzhdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzM5XSA9ICh1aW50OF90KSgodWludDMyX3QpZGVzdF9hZGRyID4+IDI0dSk7DQotDQotICAgIHBhcmFtc1s0MF0gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyKTsNCi0gICAgcGFyYW1zWzQxXSA9ICh1aW50OF90KSgodWludDMyX3Qpc3JjX2FkZHIgPj4gOHUpOw0KLSAgICBwYXJhbXNbNDJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiAxNnUpOw0KLSAgICBwYXJhbXNbNDNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiAyNHUpOw0KLSNlbmRpZg0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoQUVTMTI4X1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTXzI1NmJpdF9hZXMNCi0oIA0KLSAgICBjb25zdCB1aW50OF90ICoga2V5LA0KLSAgICBjb25zdCB1aW50OF90ICogaXYsDQotICAgIHVpbnQxNl90IG5iX2Jsb2NrcywNCi0gICAgdWludDhfdCBtb2RlLA0KLSAgICB1aW50OF90ICogZGVzdF9hZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogc3JjX2FkZHINCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHBhcmFtc1s2MF07DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICANCi0gICAgbWVtY3B5KCZwYXJhbXNbMF0sIGtleSwgQUVTMjU2X0tFWV9MRU5HVEgpOw0KLSAgICBtZW1jcHkoJnBhcmFtc1szMl0sIGl2LCBJVl9MRU5HVEgpOw0KLSAgICANCi0gICAgcGFyYW1zWzQ4XSA9ICh1aW50OF90KW5iX2Jsb2NrczsNCi0gICAgcGFyYW1zWzQ5XSA9ICh1aW50OF90KShuYl9ibG9ja3MgPj4gOHUpOw0KLSAgICBwYXJhbXNbNTBdID0gbW9kZTsNCi0gICAgcGFyYW1zWzUxXSA9IDB1Ow0KLSNpZiAxDQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KGRlc3RfYWRkciwgcGFyYW1zLCA1MnUpOw0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShzcmNfYWRkciwgcGFyYW1zLCA1NnUpOw0KLSNlbHNlICAgIA0KLSAgICBwYXJhbXNbNTJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIpOw0KLSAgICBwYXJhbXNbNTNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gOHUpOw0KLSAgICBwYXJhbXNbNTRdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClkZXN0X2FkZHIgPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzU1XSA9ICh1aW50OF90KSgodWludDMyX3QpZGVzdF9hZGRyID4+IDI0dSk7DQotDQotICAgIHBhcmFtc1s1Nl0gPSAodWludDhfdCkoKHVpbnQzMl90KXNyY19hZGRyKTsNCi0gICAgcGFyYW1zWzU3XSA9ICh1aW50OF90KSgodWludDMyX3Qpc3JjX2FkZHIgPj4gOHUpOw0KLSAgICBwYXJhbXNbNThdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiAxNnUpOw0KLSAgICBwYXJhbXNbNTldID0gKHVpbnQ4X3QpKCh1aW50MzJfdClzcmNfYWRkciA+PiAyNHUpOw0KLSNlbmRpZg0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoQUVTMjU2X1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX3NoYTI1Ng0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfZGF0YV9pbiwNCi0gICAgdWludDMyX3QgbGVuZ3RoLA0KLSAgICB1aW50OF90ICogcmVzdWx0DQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgdWludDhfdCBwYXJhbXNbMTJdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgDQotICAgIHBhcmFtc1swXSA9ICh1aW50OF90KSgodWludDMyX3QpbGVuZ3RoKTsNCi0gICAgcGFyYW1zWzFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGggPj4gOHUpOw0KLSAgICBwYXJhbXNbMl0gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCA+PiAxNnUpOw0KLSAgICBwYXJhbXNbM10gPSAodWludDhfdCkoKHVpbnQzMl90KWxlbmd0aCA+PiAyNHUpOw0KLSAgICANCi0jaWYgMQ0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShyZXN1bHQsIHBhcmFtcywgNHUpOw0KLSAgICB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheShwX2RhdGFfaW4sIHBhcmFtcywgOHUpOw0KLSNlbHNlDQotICAgIHBhcmFtc1s0XSA9ICh1aW50OF90KSgodWludDMyX3QpcmVzdWx0KTsNCi0gICAgcGFyYW1zWzVdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClyZXN1bHQgPj4gOHUpOw0KLSAgICBwYXJhbXNbNl0gPSAodWludDhfdCkoKHVpbnQzMl90KXJlc3VsdCA+PiAxNnUpOw0KLSAgICBwYXJhbXNbN10gPSAodWludDhfdCkoKHVpbnQzMl90KXJlc3VsdCA+PiAyNHUpOw0KLQ0KLSAgICBwYXJhbXNbOF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbik7DQotICAgIHBhcmFtc1s5XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luID4+IDh1KTsNCi0gICAgcGFyYW1zWzEwXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9kYXRhX2luID4+IDE2dSk7DQotICAgIHBhcmFtc1sxMV0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbiA+PiAyNHUpOw0KLSNlbmRpZg0KLSAgICBzdGF0dXMgPSBleGVjdXRlX3NlcnZpY2UoU0hBMjU2X1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX2htYWMNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBrZXksDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2RhdGFfaW4sDQotICAgIHVpbnQzMl90IGxlbmd0aCwNCi0gICAgdWludDhfdCAqIHBfcmVzdWx0DQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgdWludDhfdCBwYXJhbXNbNThdOw0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgDQotICAgIG1lbWNweSgmcGFyYW1zWzBdLCBrZXksIEhNQUNfS0VZX0xFTkdUSCk7DQotICAgIA0KLSAgICBwYXJhbXNbMzJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGgpOw0KLSAgICBwYXJhbXNbMzNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGggPj4gOHUpOw0KLSAgICBwYXJhbXNbMzRdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClsZW5ndGggPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzM1XSA9ICh1aW50OF90KSgodWludDMyX3QpbGVuZ3RoID4+IDI0dSk7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocF9kYXRhX2luLCBwYXJhbXMsIDM2dSk7DQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHBfcmVzdWx0LCBwYXJhbXMsIDQwdSk7DQotI2Vsc2UgICAgDQotICAgIHBhcmFtc1szNl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbik7DQotICAgIHBhcmFtc1szN10gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbiA+PiA4dSk7DQotICAgIHBhcmFtc1szOF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfZGF0YV9pbiA+PiAxNnUpOw0KLSAgICBwYXJhbXNbMzldID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2RhdGFfaW4gPj4gMjR1KTsNCi0NCi0gICAgcGFyYW1zWzQwXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9yZXN1bHQpOw0KLSAgICBwYXJhbXNbNDFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3Jlc3VsdCA+PiA4dSk7DQotICAgIHBhcmFtc1s0Ml0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVzdWx0ID4+IDE2dSk7DQotICAgIHBhcmFtc1s0M10gPSAodWludDhfdCkoKHVpbnQzMl90KXBfcmVzdWx0ID4+IDI0dSk7DQotI2VuZGlmDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShITUFDX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX25yYmdfc2VsZl90ZXN0KHZvaWQpDQotew0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgdWludDE2X3QgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aDsNCi0gICAgdWludDhfdCBzZWxmX3Rlc3Q7DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbTlJCR19TRUxGX1RFU1RfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIA0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLSAgICANCi0gICAgc2VsZl90ZXN0ID0gTlJCR19TRUxGX1RFU1RfUkVRVUVTVF9DTUQ7DQotDQotICAgIE1TU19DT01CTEtfc2VuZF9jbWQoJnNlbGZfdGVzdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogcF9jbWQgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc2VsZl90ZXN0KSwgICAgICAgICAgICAgICAgICAvKiBjbWRfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfZGF0YSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRhdGFfc2l6ZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfcmVzcG9uc2UgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICBOUkJHX1NFTEZfVEVTVF9TRVJWX1JFU1BfTEVOR1RILCAgICAvKiByZXNwb25zZV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXIpOyAgICAgICAgLyogY29tcGxldGlvbl9oYW5kbGVyICovDQotICAgIA0KLSAgICBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoID0gd2FpdF9mb3JfcmVxdWVzdF9jb21wbGV0aW9uKCk7DQotICAgIA0KLSAgICBpZigoTlJCR19TRUxGX1RFU1RfU0VSVl9SRVNQX0xFTkdUSCA9PSBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoKSAmJg0KLSAgICAgICAoTlJCR19TRUxGX1RFU1RfUkVRVUVTVF9DTUQgPT0gcmVzcG9uc2VbMF0pKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSByZXNwb25zZVsxXTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUjsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcGVyc29uYWxpemF0aW9uX3N0ciwNCi0gICAgdWludDE2X3QgcGVyc29uYWxpemF0aW9uX3N0cl9sZW5ndGgsDQotICAgIHVpbnQ4X3QgKiBwX25yYmdfaGFuZGxlDQotKQ0KLXsNCi0gICAgdWludDhfdCByZXNwb25zZVtTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIXTsNCi0gICAgdWludDhfdCBpbnRhbnRpYXRlX3BhcmFtc1s3XTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocGVyc29uYWxpemF0aW9uX3N0ciwgaW50YW50aWF0ZV9wYXJhbXMsIDB1KTsNCi0jZWxzZSAgICANCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbMF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBlcnNvbmFsaXphdGlvbl9zdHIpOw0KLSAgICBpbnRhbnRpYXRlX3BhcmFtc1sxXSA9ICh1aW50OF90KSgodWludDMyX3QpcGVyc29uYWxpemF0aW9uX3N0ciA+PiA4dSk7DQotICAgIGludGFudGlhdGVfcGFyYW1zWzJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwZXJzb25hbGl6YXRpb25fc3RyID4+IDE2dSk7DQotICAgIGludGFudGlhdGVfcGFyYW1zWzNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwZXJzb25hbGl6YXRpb25fc3RyID4+IDI0dSk7DQotI2VuZGlmDQotICAgIGludGFudGlhdGVfcGFyYW1zWzRdID0gKHVpbnQ4X3QpcGVyc29uYWxpemF0aW9uX3N0cl9sZW5ndGg7DQotICAgIGludGFudGlhdGVfcGFyYW1zWzVdID0gKHVpbnQ4X3QpKHBlcnNvbmFsaXphdGlvbl9zdHJfbGVuZ3RoID4+IDh1KTsNCi0gICAgaW50YW50aWF0ZV9wYXJhbXNbNl0gPSBJTlZBTElEX05SQkdfSEFORExFOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKE5SQkdfSU5TVEFOVElBVEVfUkVRVUVTVF9DTUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRhbnRpYXRlX3BhcmFtcywNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSCk7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgaWYoTVNTX1NZU19TVUNDRVNTID09IHN0YXR1cykNCi0gICAgew0KLSAgICAgICAgKnBfbnJiZ19oYW5kbGUgPSBpbnRhbnRpYXRlX3BhcmFtc1s2XTsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX2dlbmVyYXRlDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcF9yZXF1ZXN0ZWRfZGF0YSwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfYWRkaXRpb25hbF9pbnB1dCwNCi0gICAgdWludDhfdCByZXF1ZXN0ZWRfbGVuZ3RoLA0KLSAgICB1aW50OF90IGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoLA0KLSAgICB1aW50OF90IHByX3JlcSwNCi0gICAgdWludDhfdCBucmJnX2hhbmRsZQ0KLSkNCi17DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbU1RBTkRBUkRfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIHVpbnQ4X3QgZ2VuZXJhdGVfcGFyYW1zWzEyXTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocF9yZXF1ZXN0ZWRfZGF0YSwgZ2VuZXJhdGVfcGFyYW1zLCAwdSk7DQotICAgIHdyaXRlX3B0cl92YWx1ZV9pbnRvX2FycmF5KHBfYWRkaXRpb25hbF9pbnB1dCwgZ2VuZXJhdGVfcGFyYW1zLCA0dSk7DQotI2Vsc2UNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzBdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3JlcXVlc3RlZF9kYXRhKTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3JlcXVlc3RlZF9kYXRhID4+IDh1KTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX3JlcXVlc3RlZF9kYXRhID4+IDE2dSk7DQotICAgIGdlbmVyYXRlX3BhcmFtc1szXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9yZXF1ZXN0ZWRfZGF0YSA+PiAyNHUpOw0KLSAgICBnZW5lcmF0ZV9wYXJhbXNbNF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCk7DQotICAgIGdlbmVyYXRlX3BhcmFtc1s1XSA9ICh1aW50OF90KSgodWludDMyX3QpcF9hZGRpdGlvbmFsX2lucHV0ID4+IDh1KTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzZdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gMTZ1KTsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzddID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gMjR1KTsNCi0jZW5kaWYNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzhdID0gcmVxdWVzdGVkX2xlbmd0aDsNCi0gICAgZ2VuZXJhdGVfcGFyYW1zWzldID0gYWRkaXRpb25hbF9pbnB1dF9sZW5ndGg7DQotICAgIGdlbmVyYXRlX3BhcmFtc1sxMF0gPSBwcl9yZXE7DQotICAgIGdlbmVyYXRlX3BhcmFtc1sxMV0gPSBucmJnX2hhbmRsZTsNCi0gICAgDQotICAgIHN0YXR1cyA9IGV4ZWN1dGVfc2VydmljZShOUkJHX0dFTkVSQVRFX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVfcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfbnJiZ19yZXNlZWQNCi0oDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2FkZGl0aW9uYWxfaW5wdXQsDQotICAgIHVpbnQ4X3QgYWRkaXRpb25hbF9pbnB1dF9sZW5ndGgsDQotICAgIHVpbnQ4X3QgbnJiZ19oYW5kbGUNCi0pDQotew0KLSAgICB1aW50OF90IHJlc3BvbnNlW1NUQU5EQVJEX1NFUlZfUkVTUF9MRU5HVEhdOw0KLSAgICB1aW50OF90IHBhcmFtc1s2XTsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotI2lmIDENCi0gICAgd3JpdGVfcHRyX3ZhbHVlX2ludG9fYXJyYXkocF9hZGRpdGlvbmFsX2lucHV0LCBwYXJhbXMsIDB1KTsNCi0jZWxzZQ0KLSAgICBwYXJhbXNbMF0gPSAodWludDhfdCkoKHVpbnQzMl90KXBfYWRkaXRpb25hbF9pbnB1dCk7DQotICAgIHBhcmFtc1sxXSA9ICh1aW50OF90KSgodWludDMyX3QpcF9hZGRpdGlvbmFsX2lucHV0ID4+IDh1KTsNCi0gICAgcGFyYW1zWzJdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gMTZ1KTsNCi0gICAgcGFyYW1zWzNdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwX2FkZGl0aW9uYWxfaW5wdXQgPj4gMjR1KTsNCi0jZW5kaWYNCi0gICAgcGFyYW1zWzRdID0gKHVpbnQ4X3QpYWRkaXRpb25hbF9pbnB1dF9sZW5ndGg7DQotICAgIHBhcmFtc1s1XSA9IG5yYmdfaGFuZGxlOw0KLSAgICANCi0gICAgc3RhdHVzID0gZXhlY3V0ZV9zZXJ2aWNlKE5SQkdfUkVTRUVEX1JFUVVFU1RfQ01ELA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFOREFSRF9TRVJWX1JFU1BfTEVOR1RIKTsNCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogU2VlIG1zc19zeXNfc2VydmljZXMuaCBmb3IgZGV0YWlscy4NCi0gKi8NCi11aW50OF90IE1TU19TWVNfbnJiZ191bmluc3RhbnRpYXRlDQotKA0KLSAgICB1aW50OF90IG5yYmdfaGFuZGxlDQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIHVpbnQxNl90IGFjdHVhbF9yZXNwb25zZV9sZW5ndGg7DQotICAgIHVpbnQ4X3QgdW5pbnN0YW50aWF0ZV9yZXFbMl07DQotICAgIHVpbnQ4X3QgcmVzcG9uc2VbTlJCR19VTklOU1RfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIA0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLSAgICANCi0gICAgdW5pbnN0YW50aWF0ZV9yZXFbMF0gPSBOUkJHX1VOSU5TVEFOVElBVEVfUkVRVUVTVF9DTUQ7DQotICAgIHVuaW5zdGFudGlhdGVfcmVxWzFdID0gbnJiZ19oYW5kbGU7DQotDQotICAgIE1TU19DT01CTEtfc2VuZF9jbWQodW5pbnN0YW50aWF0ZV9yZXEsICAgICAgICAgICAgICAvKiBwX2NtZCAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih1bmluc3RhbnRpYXRlX3JlcSksICAgICAgLyogY21kX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfZGF0YSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGF0YV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsICAgICAgICAgICAgICAgICAgICAgICAvKiBwX3Jlc3BvbnNlICovDQotICAgICAgICAgICAgICAgICAgICAgICAgTlJCR19VTklOU1RfU0VSVl9SRVNQX0xFTkdUSCwgICAvKiByZXNwb25zZV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXIpOyAgICAvKiBjb21wbGV0aW9uX2hhbmRsZXIgKi8NCi0gICAgDQotICAgIGFjdHVhbF9yZXNwb25zZV9sZW5ndGggPSB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24oKTsNCi0gICAgDQotICAgIGlmKChOUkJHX1VOSU5TVF9TRVJWX1JFU1BfTEVOR1RIID09IGFjdHVhbF9yZXNwb25zZV9sZW5ndGgpICYmDQotICAgICAgIChOUkJHX1VOSU5TVEFOVElBVEVfUkVRVUVTVF9DTUQgPT0gcmVzcG9uc2VbMF0pKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSByZXNwb25zZVsxXTsNCi0gICAgfQ0KLSAgICBlbHNlDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUjsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIHN0YXR1czsNCi19DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTZWUgbXNzX3N5c19zZXJ2aWNlcy5oIGZvciBkZXRhaWxzLg0KLSAqLw0KLXN0YXRpYyB1aW50OF90IGdfaXNwX3Jlc3BvbnNlW0lTUF9QUk9HX1NFUlZfUkVTUF9MRU5HVEhdOw0KLXZvaWQgKCpnX2lzcF9jb21wbGV0aW9uX2hhbmRsZXIpKHVpbnQzMl90KSA9IDA7DQotDQotc3RhdGljIHZvaWQgaXNwX3N5c19jb21wbGV0aW9uX2hhbmRsZXINCi0oDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLCANCi0gICAgdWludDE2X3QgbGVuZ3RoDQotKQ0KLXsNCi0gICAgaWYoZ19pc3BfY29tcGxldGlvbl9oYW5kbGVyICE9IDApDQotICAgIHsNCi0gICAgICAgIGdfaXNwX2NvbXBsZXRpb25faGFuZGxlcihwX3Jlc3BvbnNlWzFdKTsNCi0gICAgfQ0KLX0NCi0NCi12b2lkIE1TU19TWVNfc3RhcnRfaXNwDQotKA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQzMl90ICgqcGFnZV9yZWFkX2hhbmRsZXIpKHVpbnQ4X3QgY29uc3QgKiopLA0KLSAgICB2b2lkICgqaXNwX2NvbXBsZXRpb25faGFuZGxlcikodWludDMyX3QpDQotKQ0KLXsNCi0gICAgdWludDhfdCBpc3BfcHJvZ19yZXF1ZXN0WzJdOw0KLSAgICANCi0gICAgc2lnbmFsX3JlcXVlc3Rfc3RhcnQoKTsNCi0gICAgDQotICAgIGlzcF9wcm9nX3JlcXVlc3RbMF0gPSBJU1BfUFJPR1JBTU1JTkdfUkVRVUVTVF9DTUQ7DQotICAgIGlzcF9wcm9nX3JlcXVlc3RbMV0gPSBtb2RlOw0KLSAgICANCi0gICAgZ19pc3BfY29tcGxldGlvbl9oYW5kbGVyID0gaXNwX2NvbXBsZXRpb25faGFuZGxlcjsNCi0NCi0gICAgTVNTX0NPTUJMS19zZW5kX3BhZ2VkX2NtZChpc3BfcHJvZ19yZXF1ZXN0LCAgICAgICAgICAgICAgICAgLyogcF9jbWQgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaXNwX3Byb2dfcmVxdWVzdCksICAgICAgICAgLyogY21kX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX2lzcF9yZXNwb25zZSwgICAgICAgICAgICAgICAgICAgLyogcF9yZXNwb25zZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElTUF9QUk9HX1NFUlZfUkVTUF9MRU5HVEgsIC8qIHJlc3BvbnNlX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlX3JlYWRfaGFuZGxlciwgICAgICAgICAgICAgICAgLyogcGFnZV9oYW5kbGVyICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNwX3N5c19jb21wbGV0aW9uX2hhbmRsZXIpOyAgICAgIC8qIGNvbXBsZXRpb25faGFuZGxlciAqLw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFNlZSBtc3Nfc3lzX3NlcnZpY2VzLmggZm9yIGRldGFpbHMuDQotICovDQotdWludDhfdCBNU1NfU1lTX2NoZWNrX2RpZ2VzdA0KLSgNCi0gICAgdWludDhfdCBvcHRpb25zDQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotICAgIHVpbnQxNl90IGFjdHVhbF9yZXNwb25zZV9sZW5ndGg7DQotICAgIHVpbnQ4X3QgZGlnZXN0X2NoZWNrX3JlcVsyXTsNCi0gICAgdWludDhfdCByZXNwb25zZVtESUdFU1RfQ0hFQ0tfU0VSVl9SRVNQX0xFTkdUSF07DQotICAgIA0KLSAgICBzaWduYWxfcmVxdWVzdF9zdGFydCgpOw0KLSAgICANCi0gICAgZGlnZXN0X2NoZWNrX3JlcVswXSA9IERJR0VTVF9DSEVDS19SRVFVRVNUX0NNRDsNCi0gICAgZGlnZXN0X2NoZWNrX3JlcVsxXSA9IG9wdGlvbnM7DQotDQotICAgIE1TU19DT01CTEtfc2VuZF9jbWQoZGlnZXN0X2NoZWNrX3JlcSwgICAgICAgICAgICAgICAvKiBwX2NtZCAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihkaWdlc3RfY2hlY2tfcmVxKSwgICAgICAgLyogY21kX3NpemUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBfZGF0YSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgIDB1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZGF0YV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UsICAgICAgICAgICAgICAgICAgICAgICAvKiBwX3Jlc3BvbnNlICovDQotICAgICAgICAgICAgICAgICAgICAgICAgRElHRVNUX0NIRUNLX1NFUlZfUkVTUF9MRU5HVEgsICAvKiByZXNwb25zZV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXIpOyAgICAvKiBjb21wbGV0aW9uX2hhbmRsZXIgKi8NCi0gICAgDQotICAgIGFjdHVhbF9yZXNwb25zZV9sZW5ndGggPSB3YWl0X2Zvcl9yZXF1ZXN0X2NvbXBsZXRpb24oKTsNCi0gICAgDQotICAgIGlmKChESUdFU1RfQ0hFQ0tfU0VSVl9SRVNQX0xFTkdUSCA9PSBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoKSAmJg0KLSAgICAgICAoRElHRVNUX0NIRUNLX1JFUVVFU1RfQ01EID09IHJlc3BvbnNlWzBdKSkNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gcmVzcG9uc2VbMV07DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSBNU1NfU1lTX1VORVhQRUNURURfRVJST1I7DQotICAgIH0NCi0gICAgDQotICAgIHJldHVybiBzdGF0dXM7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdWludDhfdCBleGVjdXRlX3NlcnZpY2UNCi0oDQotICAgIHVpbnQ4X3QgY21kX29wY29kZSwNCi0gICAgdWludDhfdCAqIGNtZF9wYXJhbXNfcHRyLA0KLSAgICB1aW50OF90ICogcmVzcG9uc2UsDQotICAgIHVpbnQxNl90IHJlc3BvbnNlX2xlbmd0aA0KLSkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLSAgICB1aW50MTZfdCBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoOw0KLSAgICANCi0gICAgc2lnbmFsX3JlcXVlc3Rfc3RhcnQoKTsNCi0gICAgDQotICAgIE1TU19DT01CTEtfc2VuZF9jbWRfd2l0aF9wdHIoY21kX29wY29kZSwgICAgICAgICAgICAgICAgICAgIC8qIGNtZF9vcGNvZGUgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWludDMyX3QpY21kX3BhcmFtc19wdHIsICAgICAgLyogY21kX3BhcmFtc19wdHIgKi8NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSwgICAgICAgICAgICAgICAgICAgICAgLyogcF9yZXNwb25zZSAqLw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlX2xlbmd0aCwgICAgICAgICAgICAgICAvKiByZXNwb25zZV9zaXplICovDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXIpOyAgIC8qIGNvbXBsZXRpb25faGFuZGxlciAqLw0KLSAgICANCi0gICAgYWN0dWFsX3Jlc3BvbnNlX2xlbmd0aCA9IHdhaXRfZm9yX3JlcXVlc3RfY29tcGxldGlvbigpOw0KLSAgICANCi0gICAgaWYoKHJlc3BvbnNlX2xlbmd0aCA9PSBhY3R1YWxfcmVzcG9uc2VfbGVuZ3RoKSAmJiAoY21kX29wY29kZSA9PSByZXNwb25zZVswXSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHJlc3BvbnNlWzFdOw0KLSAgICB9DQotICAgIGVsc2UNCi0gICAgew0KLSAgICAgICAgc3RhdHVzID0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SOw0KLSAgICB9DQotICAgIA0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgcmVxdWVzdF9jb21wbGV0aW9uX2hhbmRsZXINCi0oDQotICAgIHVpbnQ4X3QgKiBwX3Jlc3BvbnNlLA0KLSAgICB1aW50MTZfdCByZXNwb25zZV9zaXplDQotKQ0KLXsNCi0gICAgZ19yZXF1ZXN0X2luX3Byb2dyZXNzID0gMHU7DQotICAgIGdfbGFzdF9yZXNwb25zZV9sZW5ndGggPSByZXNwb25zZV9zaXplOw0KLX0NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqDQotICovDQotc3RhdGljIHZvaWQgc2lnbmFsX3JlcXVlc3Rfc3RhcnQodm9pZCkNCi17DQotICAgIC8qIFdhaXQgZm9yIGN1cnJlbnQgcmVxdWVzdCB0byBjb21wbGV0ZS4gKi8NCi0gICAgd2hpbGUoZ19yZXF1ZXN0X2luX3Byb2dyZXNzKQ0KLSAgICB7DQotICAgICAgICA7DQotICAgIH0NCi0gICAgDQotICAgIGdfcmVxdWVzdF9pbl9wcm9ncmVzcyA9IDF1Ow0KLSAgICBnX2xhc3RfcmVzcG9uc2VfbGVuZ3RoID0gMHU7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdWludDE2X3Qgd2FpdF9mb3JfcmVxdWVzdF9jb21wbGV0aW9uKHZvaWQpDQotew0KLSAgICB3aGlsZShnX3JlcXVlc3RfaW5fcHJvZ3Jlc3MpDQotICAgIHsNCi0gICAgICAgIDsNCi0gICAgfQ0KLSAgICANCi0gICAgcmV0dXJuIGdfbGFzdF9yZXNwb25zZV9sZW5ndGg7DQotfQ0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICoNCi0gKi8NCi1zdGF0aWMgdm9pZCB3cml0ZV9wdHJfdmFsdWVfaW50b19hcnJheQ0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBvaW50ZXIsDQotICAgIHVpbnQ4X3QgdGFyZ2V0X2FycmF5W10sDQotICAgIHVpbnQzMl90IGFycmF5X2luZGV4DQotKQ0KLXsNCi0gICAgdGFyZ2V0X2FycmF5W2FycmF5X2luZGV4XSA9ICh1aW50OF90KSgodWludDMyX3QpcG9pbnRlcik7DQotICAgIHRhcmdldF9hcnJheVthcnJheV9pbmRleCArIDFdID0gKHVpbnQ4X3QpKCh1aW50MzJfdClwb2ludGVyID4+IDh1KTsNCi0gICAgdGFyZ2V0X2FycmF5W2FycmF5X2luZGV4ICsgMl0gPSAodWludDhfdCkoKHVpbnQzMl90KXBvaW50ZXIgPj4gMTZ1KTsNCi0gICAgdGFyZ2V0X2FycmF5W2FycmF5X2luZGV4ICsgM10gPSAodWludDhfdCkoKHVpbnQzMl90KXBvaW50ZXIgPj4gMjR1KTsNCi19DQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc19zeXNfc2VydmljZXMvbXNzX3N5c19zZXJ2aWNlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOGVmY2MzLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3Nfc3lzX3NlcnZpY2VzL21zc19zeXNfc2VydmljZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDg4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0RnVzaW9uMiBNU1MgU3lzdGVtIFNlcnZpY2VzIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyIHB1YmxpYyBBUEkuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NTkxICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDQgMTU6NTU6MTEgKzAxMDAgKFRodSwgMDQgQXByIDIwMTMpICQNCi0gKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgU3lzdGVtIFNlcnZpY2VzIEJhcmUgTWV0YWwgRHJpdmVyLg0KLQ0KLSAgQHNlY3Rpb24gaW50cm9fc2VjIEludHJvZHVjdGlvbg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIGEgY29tbXVuaWNhdGlvbg0KLSAgYmxvY2sgKENPTU1fQkxLKSBhbGxvd2luZyBpdCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBTbWFydEZ1c2lvbjIgU3lzdGVtDQotICBDb250cm9sbGVyLiBUaGUgU21hcnRGdXNpb24yIFN5c3RlbSBDb250cm9sbGVyIHBlcmZvcm1zIGEgdmFyaWV0eSBvZiBzeXN0ZW0NCi0gIHdpZGUgc2VydmljZXMuIFRoaXMgc29mdHdhcmUgZHJpdmVyIHByb3ZpZGVzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0byBhY2Nlc3MNCi0gIHRoZXNlIFN5c3RlbSBTZXJ2aWNlcy4gVGhlIGRyaXZlciBjYW4gYmUgYWRhcHRlZCBmb3IgdXNlIGFzIHBhcnQgb2YgYW4NCi0gIG9wZXJhdGluZyBzeXN0ZW0sIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFkYXB0YXRpb24gbGF5ZXIgYmV0d2VlbiB0aGUNCi0gIGRyaXZlciBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkcml2ZXIgbW9kZWwgaXMgb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhlDQotICBkcml2ZXIuDQotICANCi0gIEBzZWN0aW9uIGh3X2RlcGVuZGVuY2llcyBIYXJkd2FyZSBGbG93IERlcGVuZGVuY2llcw0KLSAgVGhlIE1TUyBTeXN0ZW0gU2VydmljZXMgZHJpdmVyIGRvZXMgbm90IHJlcXVpcmUgYW55IGNvbmZpZ3VyYXRpb24uIEl0IHJlbGllcw0KLSAgb24gdGhlIFNtYXJ0RnVzaW9uMiBjb21tdW5pY2F0aW9uIGJsb2NrIChNU1NfQ09NTV9CTEspIHRvIGNvbW11bmljYXRlIHdpdGggdGhlDQotICBTeXN0ZW0gQ29udHJvbGxlci4gVGhlIE1TU19DT01NX0JMSyBpcyBhbHdheXMgZW5hYmxlZC4NCi0gIFRoZSBiYXNlIGFkZHJlc3MsIHJlZ2lzdGVyIGFkZHJlc3NlcyBhbmQgaW50ZXJydXB0IG51bWJlciBhc3NpZ25tZW50IGZvciB0aGUNCi0gIE1TU19DT01NX0JMSyBhcmUgZGVmaW5lZCBhcyBjb25zdGFudHMgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuIFlvdSBtdXN0DQotICBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgaW5jbHVkZWQgaW4gdGhlIHByb2plY3QNCi0gIHNldHRpbmdzIG9mIHRoZSBzb2Z0d2FyZSB0b29sIGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IGFuZCB0aGF0IGl0IGlzDQotICBnZW5lcmF0ZWQgaW50byB5b3VyIHByb2plY3QuDQotICANCi0gIEBzZWN0aW9uIHRoZW9yeV9vcCBUaGVvcnkgb2YgT3BlcmF0aW9uDQotICBUaGUgU3lzdGVtIFNlcnZpY2VzIGRyaXZlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNtYXJ0RnVzaW9uMiBTeXN0ZW0NCi0gIENvbnRyb2xsZXIgc2VydmljZXMuIFRoZXNlIHN5c3RlbSBzZXJ2aWNlcyBhcmUgbG9vc2VseSBncm91cGVkIGludG8gdGhlDQotICBmb2xsb3dpbmcgZmVhdHVyZXM6DQotICAgIC0gUmVhZGluZyBzeXN0ZW0gaW5mb3JtYXRpb24NCi0gICAgLSBDcnlwdG9ncmFwaHkNCi0gICAgLSBOb24tZGV0ZXJtaW5pc3RpYyByYW5kb20gYml0IGdlbmVyYXRvcg0KLSAgICAtIEZsYXNoKkZyZWV6ZQ0KLSAgTm90ZTogUmVmZXIgdG8gdGhlIGZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBmb3IgZnVydGhlciBkZXRhaWxzIGFib3V0IHRoZQ0KLSAgICAgICAgZmVhdHVyZXMgb2YgZWFjaCBpbmRpdmlkdWFsIHNlcnZpY2UuDQotDQotICBSZWFkaW5nIFN5c3RlbSBJbmZvcm1hdGlvbg0KLSAgVGhlIFN5c3RlbSBTZXJ2aWNlcyBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gcmVhZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUNCi0gIFNtYXJ0RnVzaW9uMiBkZXZpY2UgYW5kIHRoZSBkZXNpZ24gcHJvZ3JhbW1lZCBpbnRvIGl0IHVzaW5nIHRoZSBmb2xsb3dpbmcNCi0gIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfU1lTX2dldF9zZXJpYWxfbnVtYmVyKCkNCi0gICAgLSBNU1NfU1lTX2dldF91c2VyX2NvZGUoKQ0KLSAgICAtIE1TU19TWVNfZ2V0X2Rlc2lnbl92ZXJzaW9uKCkNCi0gICAgLSBNU1NfU1lTX2dldF9kZXZpY2VfY2VydGlmaWNhdGUoKQ0KLSAgICANCi0gIENyeXB0b2dyYXBoeSBTZXJ2aWNlcw0KLSAgVGhlIFN5c3RlbSBTZXJ2aWNlcyBkcml2ZXIgcHJvdmlkZXMgY3J5cHRvZ3JhcGhpYyBzZXJ2aWNlcyB1c2luZyB0aGUgZm9sbG93aW5nDQotICBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1NZU18xMjhiaXRfYWVzKCkNCi0gICAgLSBNU1NfU1lTXzI1NmJpdF9hZXMoKQ0KLSAgICAtIE1TU19TWVNfc2hhMjU2KCkNCi0gICAgLSBNU1NfU1lTX2htYWMoKQ0KLSAgICANCi0gIE5vbi1EZXRlcm1pbmlzdGljIFJhbmRvbSBCaXQgR2VuZXJhdG9yDQotICBUaGUgU3lzdGVtIFNlcnZpY2VzIGRyaXZlciBwcm92aWRlcyByYW5kb20gbnVtYmVyIGdlbmVyYXRpb24gc2VydmljZXMgdXNpbmcNCi0gIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19TWVNfbnJiZ19pbnN0YW50aWF0ZSgpDQotICAgIC0gTVNTX1NZU19ucmJnX3NlbGZfdGVzdCgpDQotICAgIC0gTVNTX1NZU19ucmJnX2dlbmVyYXRlKCkNCi0gICAgLSBNU1NfU1lTX25yYmdfcmVzZWVkKCkNCi0gICAgLSBNU1NfU1lTX25yYmdfdW5pbnN0YW50aWF0ZSgpDQotICAgIA0KLSAgRmxhc2gqRnJlZXplDQotICBUaGUgU3lzdGVtIFNlcnZpY2VzIGRyaXZlciBjYW4gYmUgdXNlZCB0byByZXF1ZXN0IHRoZSBzeXN0ZW0gdG8gZW50ZXINCi0gIEZsYXNoKkZyZWV6ZSBtb2RlIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb246DQotICAgIC0gTVNTX1NZU19mbGFzaF9mcmVlemUoKQ0KLSAgICANCi0gKi8vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLw0KLQ0KLSNpZm5kZWYgX19NU1NfU1lTX1NFUlZJQ0VTX0hfDQotI2RlZmluZSBfX01TU19TWVNfU0VSVklDRVNfSF8gMQ0KLQ0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tMnN4eHguaCINCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIFN0YXR1cyBjb2RlczoNCi0gKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIGJ5IG11bHRpcGxlIHNlcnZpY2VzIHRvIGNvbW11bmljYXRlIHRoZSBvdXRjb21lIG9mIGENCi0gIHN5c3RlbSBzZXJ2aWNlcyByZXF1ZXN0LiBUaGVzZSBzdGF0dXMgY29kZXMgYXJlIHVzZWQgYWNyb3NzIGFsbCB0eXBlcyBvZg0KLSAgc2VydmljZXMuDQotICANCi0gIC0gTVNTX1NZU19TVUNDRVNTOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gc2VydmljZXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS4gDQotICAgICAgDQotICAtIE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgc3lzdGVtIGZhaWxlZCBpbiBhbiB1bmV4cGVjdGVkIHdheS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBTeXN0ZW0gQ29udHJvbGxlciBjb3VsZCBub3QgYWNjZXNzIHRoZSBtZW1vcnkgdXNlZCB0bw0KLSAgICAgIHBhc3MgcGFyYW1ldGVycyB0byB0aGUgU3lzdGVtIENvbnRyb2xsZXIgb3IgdG8gcmV0dXJuIGEgc2VydmljZSByZXN1bHQgdG8NCi0gICAgICB0aGUgQ29ydGV4LU0zLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWToNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgcmVxdWVzdGVkIHN5c3RlbSBzZXJ2aWNlIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlDQotICAgICAgU21hcnRGdXNpb24yIGRldmljZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVI6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3RlZCBzeXN0ZW0gc2VydmljZSBoYXMgYmVlbiBkaXNhYmxlZCBhcyBwYXJ0IG9mDQotICAgICAgdGhlIGhhcmR3YXJlIGRlc2lnbi4NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfU1VDQ0VTUyAgICAgICAgICAgICAgICAgICAgICAgICAwdQ0KLSNkZWZpbmUgTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SICAgICAgICAgICAgICAgIDIwMHUNCi0NCi0jZGVmaW5lIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUiAgICAgICAgICAgICAgICAxMjd1DQotI2RlZmluZSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWSAgICAgMjU0dQ0KLSNkZWZpbmUgTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVIgICAgICAgIDI1NXUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFByb2dyYW1taW5nIHNlcnZpY2VzIHNwZWNpZmljIHN0YXR1cyBjb2RlczoNCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfQ0hBSU5JTkdfTUlTTUFUQ0ggICAgICAgICAgICAgICAgICAgMXUNCi0jZGVmaW5lIE1TU19TWVNfVU5FWFBFQ1RFRF9EQVRBX1JFQ0VJVkVEICAgICAgICAgICAgMnUNCi0jZGVmaW5lIE1TU19TWVNfSU5WQUxJRF9FTkNSWVBUSU9OX0tFWSAgICAgICAgICAgICAgM3UNCi0jZGVmaW5lIE1TU19TWVNfSU5WQUxJRF9DT01QT05FTlRfSEVBREVSICAgICAgICAgICAgNHUNCi0jZGVmaW5lIE1TU19TWVNfQkFDS19MRVZFTF9OT1RfU0FUSVNGSUVEICAgICAgICAgICAgNXUNCi0jZGVmaW5lIE1TU19TWVNfRFNOX0JJTkRJTkdfTUlTTUFUQ0ggICAgICAgICAgICAgICAgN3UNCi0jZGVmaW5lIE1TU19TWVNfSUxMRUdBTF9DT01QT05FTlRfU0VRVUVOQ0UgICAgICAgICAgOHUNCi0jZGVmaW5lIE1TU19TWVNfSU5TVUZGSUNJRU5UX0RFVl9DQVBBQklMSVRJRVMgICAgICAgOXUNCi0jZGVmaW5lIE1TU19TWVNfSU5DT1JSRUNUX0RFVklDRV9JRCAgICAgICAgICAgICAgICAgMTB1DQotI2RlZmluZSBNU1NfU1lTX1VOU1VQUE9SVEVEX0JJVFNUUkVBTV9QUk9UX1ZFUiAgICAgIDExdQ0KLSNkZWZpbmUgTVNTX1NZU19WRVJJRllfTk9UX1BFUk1JVFRFRF9PTl9CSVRTVFIgICAgICAxMnUNCi0jZGVmaW5lIE1TU19TWVNfQUJPUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTI3dQ0KLSNkZWZpbmUgTVNTX1NZU19OVk1fVkVSSUZZX0ZBSUxFRCAgICAgICAgICAgICAgICAgICAxMjl1DQotI2RlZmluZSBNU1NfU1lTX0RFVklDRV9TRUNVUklUWV9QUk9URUNURUQgICAgICAgICAgIDEzMHUNCi0jZGVmaW5lIE1TU19TWVNfUFJPR1JBTU1JTkdfTU9ERV9OT1RfRU5BQkxFRCAgICAgICAgMTMxdQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGVzZSBjb25zdGFudHMgYXJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgZXZlbnRfb3Bjb2RlIHBhcmFtZXRlciBmb3IgdGhlDQotICBldmVudF9oYW5kbGVyKCkgZnVuY3Rpb24gcmVnaXN0ZXJlZCB3aXRoIHRoZSBNU1NfU1lTX2luaXQoKSBmdW5jdGlvbi4gVGhleSBhcmUNCi0gIHVzZWQgdG8gc3BlY2lmeSB3aGljaCBhc3luY2hyb25vdXMgZXZlbnQgaXMgbm90aWZpZWQgdG8gdGhlIENvcnRleC1NMyBzb2Z0d2FyZQ0KLSAgYnkgdGhlIFN5c3RlbSBDb250cm9sbGVyLiBBc3luY2hyb25vdXMgZXZlbnRzIGFyZSBzZW50IGJ5IHRoZSBTeXN0ZW0NCi0gIENvbnRyb2xsZXIgdG8gdGhlIENvcnRleC1NMyB3aGVuIHNvbWUgc3lzdGVtIGV2ZW50cyBvZiBpbnRlcmVzdCBvY2N1ci4NCi0gIA0KLSAgLSBGTEFTSF9GUkVFWkVfU0hVVERPV05fT1BDT0RFOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBzeXN0ZW0gaXMgYmVpbmcgc2h1dGRvd24gYXMgYSByZXN1bHQgb2YgZW50ZXJpbmcgdGhlDQotICAgICAgRmxhc2gqRnJlZXplIG1vZGUuDQotICAgICAgDQotICAtIEZMQVNIX0ZSRUVaRV9FWElUX09QQ09ERToNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgc3lzdGVtIGlzIGV4aXRpbmcgRmxhc2gqRnJlZXplIG1vZGUuDQotICovDQotI2RlZmluZSBGTEFTSF9GUkVFWkVfU0hVVERPV05fT1BDT0RFICAgIDB4RTB1DQotI2RlZmluZSBGTEFTSF9GUkVFWkVfRVhJVF9PUENPREUgICAgICAgIDB4RTF1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCB0byBzcGVjaWZ5IHRoZSBvcHRpb25zIHBhcmFtZXRlciBmb3IgdGhlDQotICBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSgpIGZ1bmN0aW9uLg0KLSAgDQotICAtIE1TU19TWVNfRlBHQV9QT1dFUl9ET1dOOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSgpIGZ1bmN0aW9uIHNob3VsZCByZXF1ZXN0IHRoZSBGUEdBDQotICAgICAgZmFicmljIHRvIGVudGVyIEZsYXNoKkZyZWV6ZSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX0VOVk0wX1BPV0VSX0RPV046DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIE1TU19TWVNfZmxhc2hfZnJlZXplKCkgZnVuY3Rpb24gc2hvdWxkIHJlcXVlc3QgZU5WTTAgdG8NCi0gICAgICBlbnRlciBGbGFzaCpGcmVlemUgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19FTlZNMV9QT1dFUl9ET1dOOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSgpIGZ1bmN0aW9uIHNob3VsZCByZXF1ZXN0IGVOVk0xIHRvDQotICAgICAgZW50ZXIgRmxhc2gqRnJlZXplIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfTVBMTF9QT1dFUl9ET1dOOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBNU1NfU1lTX2ZsYXNoX2ZyZWV6ZSgpIGZ1bmN0aW9uIHNob3VsZCByZXF1ZXN0IHRoZSBNU1MNCi0gICAgICBQTEwgdG8gZW50ZXIgRmxhc2gqRnJlZXplIG1vZGUuDQotICovDQotI2RlZmluZSBNU1NfU1lTX0ZQR0FfUE9XRVJfRE9XTiAgICAgMHgwMHUNCi0jZGVmaW5lIE1TU19TWVNfRU5WTTBfUE9XRVJfRE9XTiAgICAweDAxdQ0KLSNkZWZpbmUgTVNTX1NZU19FTlZNMV9QT1dFUl9ET1dOICAgIDB4MDJ1DQotI2RlZmluZSBNU1NfU1lTX01QTExfUE9XRVJfRE9XTiAgICAgMHgwNHUNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlc2UgY29uc3RhbnRzIGFyZSB1c2VkIHRvIHNwZWNpZnkgdGhlIG1vZGUgcGFyYW1ldGVyIGZvciB0aGUNCi0gIE1TU19TWVNfMTI4YWVzKCkgYW5kIE1TU19TWVNfMjU2Yml0X2FlcygpIGZ1bmN0aW9ucy4NCi0gIA0KLSAgLSBNU1NfU1lTX0VDQl9FTkNSWVBUOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjcnlwdG9ncmFwaHkgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gZW5jcnlwdGlvbiB1c2luZw0KLSAgICAgIHRoZSBFbGVjdHJvbmljIENvZGVib29rIChFQ0IpIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfRUNCX0RFQ1JZUFQ6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNyeXB0b2dyYXBoeSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSBkZWNyeXB0aW9uIHVzaW5nDQotICAgICAgdGhlIEVsZWN0cm9uaWMgQ29kZWJvb2sgKEVDQikgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19DQkNfRU5DUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGVuY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgQ2lwaGVyLUJsb2NrIENoYWluaW5nIChDQkMpIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfQ0JDX0RFQ1JZUFQ6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNyeXB0b2dyYXBoeSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSBkZWNyeXB0aW9uIHVzaW5nDQotICAgICAgdGhlIENpcGhlci1CbG9jayBDaGFpbmluZyAoQ0JDKSBtb2RlLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX09GQl9FTkNSWVBUOg0KLSAgICAgIEluZGljYXRlcyB0aGF0IHRoZSBjcnlwdG9ncmFwaHkgZnVuY3Rpb24gc2hvdWxkIHBlcmZvcm0gZW5jcnlwdGlvbiB1c2luZw0KLSAgICAgIHRoZSBPdXRwdXQgRmVlZGJhY2sgKE9GQikgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19PRkJfREVDUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGRlY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgT3V0cHV0IEZlZWRiYWNrIChPRkIpIG1vZGUuDQotICAgICAgDQotICAtIE1TU19TWVNfQ1RSX0VOQ1JZUFQ6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGNyeXB0b2dyYXBoeSBmdW5jdGlvbiBzaG91bGQgcGVyZm9ybSBlbmNyeXB0aW9uIHVzaW5nDQotICAgICAgdGhlIENvdW50ZXIgKENUUikgbW9kZS4NCi0gICAgICANCi0gIC0gTVNTX1NZU19DVFJfREVDUllQVDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgY3J5cHRvZ3JhcGh5IGZ1bmN0aW9uIHNob3VsZCBwZXJmb3JtIGRlY3J5cHRpb24gdXNpbmcNCi0gICAgICB0aGUgQ291bnRlciAoQ1RSKSBtb2RlLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19FQ0JfRU5DUllQVCAgICAgMHgwMHUNCi0jZGVmaW5lIE1TU19TWVNfRUNCX0RFQ1JZUFQgICAgIDB4ODB1DQotI2RlZmluZSBNU1NfU1lTX0NCQ19FTkNSWVBUICAgICAweDAxdQ0KLSNkZWZpbmUgTVNTX1NZU19DQkNfREVDUllQVCAgICAgMHg4MXUNCi0jZGVmaW5lIE1TU19TWVNfT0ZCX0VOQ1JZUFQgICAgIDB4MDJ1DQotI2RlZmluZSBNU1NfU1lTX09GQl9ERUNSWVBUICAgICAweDgydQ0KLSNkZWZpbmUgTVNTX1NZU19DVFJfRU5DUllQVCAgICAgMHgwM3UNCi0jZGVmaW5lIE1TU19TWVNfQ1RSX0RFQ1JZUFQgICAgIDB4ODN1DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFRoZXNlIGNvbnN0YW50cyBhcmUgdXNlZCBieSBub24gZGV0ZXJtaW5pc3RpYyByYW5kb20gYml0IGdlbmVyYXRvciAoTkRSQkcpDQotICBzZXJ2aWNlcyB0byBjb21tdW5pY2F0ZSB0aGUgb3V0Y29tZSBvZiBhIHN5c3RlbSBzZXJ2aWNlcyByZXF1ZXN0LiBUaGVzZSBzdGF0dXMNCi0gIGNvZGVzIGFyZSBvbmx5IHVzZWQgYnkgTkRSQkcgc2VydmljZXMuDQotICANCi0gIC0gTVNTX1NZU19OUkJHX0NBVEFTVFJPUEhJQ19FUlJPUjoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCBhIGNhdGFzdHJvcGhpYyBlcnJvciBvY2N1cnJlZC4gDQotICAgICAgDQotICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgbWF4aW11bSBudW1iZXIgb2YgTkRSQkcgaW5zdGFuY2VzIGhhcyBiZWVuIGV4Y2VlZGVkLg0KLSAgICAgIFlvdSBuZWVkIHRvIHJlbGVhc2UgYWxyZWFkeSBpbnN0YW50aWF0ZWQgTkRSQkcgaW5zdGFuY2VzIHVzaW5nIHRoZQ0KLSAgICAgIE1TU19TWVNfbmRyYmdfdW5pbnN0YW50aWF0ZSgpIGZ1bmN0aW9uLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEU6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIGhhbmRsZSBwYXJhbWV0ZXIgaGFzIGFuIGludmFsaWQgdmFsdWUuDQotICAgICAgDQotICAtIE1TU19TWVNfTlJCR19HRU5fUkVRX1RPT19CSUc6DQotICAgICAgSW5kaWNhdGVzIHRoYXQgdGhlIHJlcXVlc3RlZCByYW5kb20gbnVtYmVyIGlzIHRvbyBsb25nLiBUaGUgcmVxdWVzdGVkDQotICAgICAgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgdGhhdCBjYW4gYmUgZ2VuZXJhdGVkLg0KLSAgICAgIA0KLSAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRDoNCi0gICAgICBJbmRpY2F0ZXMgdGhhdCB0aGUgc3VwcGxpZWQgYWRkaXRpb25hbCBkYXRhIGxlbmd0aCBpcyBleGNlZWRlZC4NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfTlJCR19DQVRBU1RST1BISUNfRVJST1IgICAgIDF1DQotI2RlZmluZSBNU1NfU1lTX05SQkdfTUFYX0lOU1RfRVhDRUVERUQgICAgICAydQ0KLSNkZWZpbmUgTVNTX1NZU19OUkJHX0lOVkFMSURfSEFORExFICAgICAgICAgM3UNCi0jZGVmaW5lIE1TU19TWVNfTlJCR19HRU5fUkVRX1RPT19CSUcgICAgICAgIDR1DQotI2RlZmluZSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRCAgICA1dQ0KLQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgc3lzX3NlcnZfYXN5bmNfZXZlbnRfaGFuZGxlcl90IHR5cGVkZWYgc3BlY2lmaWVzIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgb2YNCi0gIGFuIGFzeW5jaHJvbm91cyBldmVudCBoYW5kbGVyIHRoYXQgY2FuIGJlIHJlZ2lzdGVyZWQgd2l0aCB0aGUgU3lzdGVtIFNlcnZpY2VzDQotICBkcml2ZXIgdG8gaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMuIFRoaXMgaXMgdGhlIHByb3RvdHlwZSBvZiBhIGZ1bmN0aW9uIGNhbg0KLSAgYmUgb3B0aW9uYWxseSBpbXBsZW1lbnRlZCBieSB0aGUgYXBwbGljYXRpb24gdG8gaGFuZGxlIGFzeW5jaHJvbm91cyBldmVudHMNCi0gIHN1Y2ggYXMgRmxhc2gqRnJlZXplIHNodXRkb3duIGFuZCBGbGFzaCpGcmVlemUgZXhpdC4NCi0gKi8NCi10eXBlZGVmIHZvaWQgKCpzeXNfc2Vydl9hc3luY19ldmVudF9oYW5kbGVyX3QpKHVpbnQ4X3QgZXZlbnRfb3Bjb2RlKTsNCi0gDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoaXMgY29uc3RhbnQgaXMgdXNlZCBhcyBwYXJhbWV0ZXIgdG8gdGhlIE1TU19TWVNfaW5pdCgpIGZ1bmN0aW9uIHRvIGluZGljYXRlDQotICB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGRvZXMgbm90IHN1cHBseSBhbiBhc3luY2hyb25vdXMgZXZlbnQgaGFuZGxlcg0KLSAgZnVuY3Rpb24uDQotICovDQotI2RlZmluZSBNU1NfU1lTX05PX0VWRU5UX0hBTkRMRVIgICAgKChzeXNfc2Vydl9hc3luY19ldmVudF9oYW5kbGVyX3QpMCkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfaW5pdCBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgc3lzdGVtIHNlcnZpY2VzIGNvbW11bmljYXRpb24gd2l0aA0KLSAgdGhlIFN5c3RlbSBDb250cm9sbGVyLg0KLSAgIA0KLSAgQHBhcmFtDQotICAgIFRoZSBldmVudF9oYW5kbGVyIHBhcmFtZXRlciBzcGVjaWZpZXMgYW4gb3B0aW9uYWwgYXN5bmNocm9ub3VzIGV2ZW50DQotICAgIGhhbmRsZXIgZnVuY3Rpb24uIFRoaXMgZXZlbnQgaGFuZGxlciBmdW5jdGlvbiBpcyBwcm92aWRlZCBieSB0aGUNCi0gICAgYXBwbGljYXRpb24uIEl0IHdpbGwgYmUgY2FsbGVkIGJ5IHRoZSBTeXN0ZW0gU2VydmljZXMgZHJpdmVyIHdoZW5ldmVyIGFuDQotICAgIGFzeW5jaHJvbm91cyBldmVudCBpcyByZWNlaXZlZCBmcm9tIHRoZSBTbWFydEZ1c2lvbjIgU3lzdGVtIGNvbnRyb2xsZXIuDQotICAgIFRoaXMgZXZlbnQgaGFuZGxlciBpcyB0eXBpY2FsbHkgdXNlZCB0byBoYW5kbGUgZW50cnkgYW5kIGV4aXQgb2YNCi0gICAgRmxhc2gqRnJlZXplIG1vZGUuDQotICAgIA0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAqLw0KLXZvaWQgTVNTX1NZU19pbml0KHN5c19zZXJ2X2FzeW5jX2V2ZW50X2hhbmRsZXJfdCBldmVudF9oYW5kbGVyKTsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIERldmljZSBhbmQgRGVzaWduIEluZm9ybWF0aW9uIFNlcnZpY2VzLg0KLSAqLw0KLSANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfZ2V0X3NlcmlhbF9udW1iZXIgZnVuY3Rpb24gZmV0Y2hlcyB0aGUgMTI4LWJpdCBEZXZpY2UgU2VyaWFsDQotICBOdW1iZXIgKERTTikuDQotICANCi0gIEBwYXJhbSBwX3NlcmlhbF9udW1iZXINCi0gICAgVGhlIHBfc2VyaWFsX251bWJlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSAxNi1ieXRlcyBidWZmZXIgd2hlcmUgdGhlDQotICAgIHNlcmlhbCBudW1iZXIgd2lsbCBiZSB3cml0dGVuIGJ5IHRoaXMgc3lzdGVtIHNlcnZpY2UuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfZ2V0X3NlcmlhbF9udW1iZXIgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1VORVhQRUNURURfRVJST1INCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X3NlcmlhbF9udW1iZXINCi0oDQotICAgIHVpbnQ4X3QgKiBwX3NlcmlhbF9udW1iZXINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICAgVGhlIE1TU19TWVNfZ2V0X3VzZXJfY29kZSBmdW5jdGlvbnMgZmV0Y2hlcyB0aGUgMzItYml0IFVTRVJDT0RFLg0KLSAgDQotICBAcGFyYW0gcF91c2VyX2NvZGUNCi0gICAgVGhlIHBfdXNlcl9jb2RlIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIDQtYnl0ZXMgYnVmZmVyIHdoZXJlIHRoZQ0KLSAgICBVU0VSQ09ERSB3aWxsIGJlIHdyaXR0ZW4gYnkgdGhpcyBzeXN0ZW0gc2VydmljZS4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19nZXRfdXNlcl9jb2RlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SDQotICovDQotdWludDhfdCBNU1NfU1lTX2dldF91c2VyX2NvZGUNCi0oDQotICAgIHVpbnQ4X3QgKiBwX3VzZXJfY29kZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTX2dldF9kZXNpZ25fdmVyc2lvbiBmdW5jdGlvbiBmZXRjaGVzIHRoZSBkZXNpZ24gdmVyc2lvbi4NCi0gIA0KLSAgQHBhcmFtIHBfZGVzaWduX3ZlcnNpb24NCi0gICAgVGhlIHBfZGVzaWduX3ZlcnNpb24gcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgMi1ieXRlcyBidWZmZXIgd2hlcmUgdGhlDQotICAgIGRlc2lnbiB2ZXJzaW9uIHdpbGwgYmUgd3JpdHRlbiBieSB0aGlzIHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX2dldF9kZXNpZ25fdmVyc2lvbiBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfVU5FWFBFQ1RFRF9FUlJPUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19nZXRfZGVzaWduX3ZlcnNpb24NCi0oDQotICAgIHVpbnQ4X3QgKiBwX2Rlc2lnbl92ZXJzaW9uDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfZ2V0X2RldmljZV9jZXJ0aWZpY2F0ZSBmdW5jdGlvbiBmZXRjaGVzIHRoZSBkZXZpY2UgY2VydGlmaWNhdGUuDQotICANCi0gIEBwYXJhbSBwX2RldmljZV9jZXJ0aWZpY2F0ZQ0KLSAgICBUaGUgcF9kZXZpY2VfY2VydGlmaWNhdGUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgNTEyLWJ5dGVzIGJ1ZmZlcg0KLSAgICB3aGVyZSB0aGUgZGV2aWNlIGNlcnRpZmljYXRlIHdpbGwgYmUgd3JpdHRlbiBieSB0aGlzIHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX2dldF9kZXZpY2VfY2VydGlmaWNhdGUgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cw0KLSAgICBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1VORVhQRUNURURfRVJST1INCi0gKi8NCi11aW50OF90IE1TU19TWVNfZ2V0X2RldmljZV9jZXJ0aWZpY2F0ZQ0KLSgNCi0gICAgdWludDhfdCAqIHBfZGV2aWNlX2NlcnRpZmljYXRlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfZmxhc2hfZnJlZXplIGZ1bmN0aW9uIHJlcXVlc3RzIHRoZSBGUEdBIHRvIGVudGVyIHRoZSBGbGFzaCpGcmVlemUNCi0gIG1vZGUuDQotICANCi0gIEBwYXJhbSBvcHRpb25zDQotICAgIFRoZSBvcHRpb25zIHBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byBwb3dlciBkb3duIGFkZGl0aW9uYWwgcGFydHMgb2YNCi0gICAgU21hcnRGdXNpb24yIHdoZW4gdGhlIEZQR0EgZmFicmljIGVudGVycyBGbGFzaCpGcmVlemUgbW9kZS4gVGhpcyBwYXJhbWV0ZXINCi0gICAgaXMgYSBiaXQgbWFzayBvZiB0aGUgZm9sbG93aW5nIG9wdGlvbnM6DQotICAgICAgICAtIE1TU19TWVNfRlBHQV9QT1dFUl9ET1dODQotICAgICAgICAtIE1TU19TWVNfRU5WTTBfUE9XRVJfRE9XTg0KLSAgICAgICAgLSBNU1NfU1lTX0VOVk0xX1BPV0VSX0RPV04NCi0gICAgICAgIC0gTVNTX1NZU19NUExMX1BPV0VSX0RPV04NCi0gICAgTVNTX1NZU19GUEdBX1BPV0VSX0RPV04gb24gaXRzIG93biB3aWxsIG9ubHkgcG93ZXIgZG93biB0aGUgRlBHQSBmYWJyaWMuDQotICAgIE1TU19TWVNfRU5WTTBfUE9XRVJfRE9XTiBhbmQgTVNTX1NZU19FTlZNMV9QT1dFUl9ET1dOIHNwZWNpZnkgdGhhdCBlTlZNDQotICAgIGJsb2NrcyAwIGFuZCAxIHJlc3BlY3RpdmVseSBzaG91bGQgZW50ZXIgdGhlIGRlZXAgcG93ZXIgZG93biBzdGF0ZSBkdXJpbmcNCi0gICAgRmxhc2gqRnJlZXplLg0KLSAgICBNU1NfU1lTX01QTExfUE9XRVJfRE9XTiBzcGVjaWZpZXMgdGhhdCB0aGUgTVNTIFBMTCBpcyBwb3dlcmVkIGRvd24gZHVyaW5nDQotICAgIHRoZSBGbGFzaCpGcmVlemUgcGVyaW9kLg0KLSAgICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfZmxhc2hfZnJlZXplIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19VTkVYUEVDVEVEX0VSUk9SDQotICAgICAgICANCi0gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgaG93IHRvIHJlcXVlc3QgdGhlIEZQR0EgZmFicmljIGFuZCBib3RoDQotICBlTlZNMCBhbmQgZU5WTTEgdG8gZW50ZXIgdGhlIEZsYXNoKkZyZWV6ZSBtb2RlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1NZU19mbGFzaF9mcmVlemUoTVNTX1NZU19GUEdBX1BPV0VSX0RPV04gfCBNU1NfU1lTX0VOVk0wX1BPV0VSX0RPV04gfCBNU1NfU1lTX01QTExfUE9XRVJfRE9XTik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19mbGFzaF9mcmVlemUodWludDhfdCBvcHRpb25zKTsNCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIENyeXB0b2dyYXBoaWMgU2VydmljZXMuDQotICovDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTXzEyOGJpdF9hZXMgZnVuY3Rpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBTbWFydEZ1c2lvbjIgQUVTLTEyOA0KLSAgY3J5cHRvZ3JhcGh5IHNlcnZpY2UuDQotICANCi0gIEBwYXJhbSBrZXkNCi0gICAgVGhlIGtleSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMTYtYnl0ZXMgYXJyYXkgY29udGFpbmluZyB0aGUga2V5IHRvIHVzZQ0KLSAgICBmb3IgdGhlIHJlcXVlc3RlZCBlbmNyeXB0aW9uL2RlY3J5cHRpb24gb3BlcmF0aW9uLg0KLSAgDQotICBAcGFyYW0gaXYNCi0gICAgVGhlIGl2IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAxNi1ieXRlcyBhcnJheSBjb250YWluaW5nIHRoZQ0KLSAgICBpbnRpYWxpemF0aW9uIHZlY3RvciB0aGF0IHdpbGwgYmUgdXNlZCBhcyBwYXJ0IG9mIHRoZSByZXF1ZXN0ZWQgDQotICAgIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb24uIEl0cyB1c2UgaXMgZGlmZmVyZW50IGRlcGVuZGluZyBvbiB0aGUgbW9kZS4NCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IE1vZGUgfCAgICAgICAgICAgICBVc2FnZSAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgRUNCICB8IElnbm9yZWQuICAgICAgICAgICAgICAgICAgICAgICB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBDQkMgIHwgUmFuZG9taXphdGlvbi4gICAgICAgICAgICAgICAgIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IE9GQiAgfCBSYW5kb21pemF0aW9uLiAgICAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgQ1RSICB8IFVzZWQgYXMgaW5pdGlhbCBjb3VudGVyIHZhbHVlLiB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgDQotICBAcGFyYW0gbmJfYmxvY2tzDQotICAgIFRoZSBuYl9ibG9ja3MgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIDEyOC1iaXQgYmxvY2tzIG9mDQotICAgIHBsYWludGV4dC9jaXBoZXJ0ZXh0IHRvIGJlIHByb2Nlc3NlZCBieSB0aGUgQUVTLTEyOCBzeXN0ZW0gc2VydmljZS4NCi0gIA0KLSAgQHBhcmFtIG1vZGUNCi0gICAgVGhlIG1vZGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgY2lwaGVyIG1vZGUgb2Ygb3BlcmF0aW9uIGFuZCB3aGV0aGVyIHRoZQ0KLSAgICBzb3VyY2UgdGV4dCBtdXN0IGJlIGVuY3J5cHRlZCBvciBkZWNyeXB0ZWQuIFRoZSBtb2RlcyBvZiBvcGVyYXRpb24gYXJlOg0KLSAgICAgICAgLSBFbGVjdHJvbmljIENvZGVib29rIChFQ0IpDQotICAgICAgICAtIENpcGhlci1CbG9jayBDaGFpbmluZyAoQ0JDKQ0KLSAgICAgICAgLSBPdXRwdXQgRmVlZGJhY2sgKE9GQikNCi0gICAgICAgIC0gQ291bnRlciAoQ1RSKQ0KLSAgICBUaGUgQ1RSIG1vZGUgdXNlcyB0aGUgY29udGVudCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gdmVjdG9yIGFzIGl0cyBpbnRpYWwNCi0gICAgY291bnRlciB2YWx1ZS4gVGhlIGNvdW50ZXIgaW5jcmVtZW50IGlzIDJeNjQuDQotICAgIEFsbG93ZWQgdmFsdWVzIGZvciB0aGUgbW9kZSBwYXJhbWV0ZXIgYXJlOg0KLSAgICAgICAgLSBNU1NfU1lTX0VDQl9FTkNSWVBUDQotICAgICAgICAtIE1TU19TWVNfRUNCX0RFQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19DQkNfRU5DUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0NCQ19ERUNSWVBUDQotICAgICAgICAtIE1TU19TWVNfT0ZCX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19PRkJfREVDUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0NUUl9FTkNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ1RSX0RFQ1JZUFQNCi0gICAgDQotICBAcGFyYW0gZGVzdF9hZGRyDQotICAgIFRoZSBkZXN0X2FkZHIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5IGJ1ZmZlciB3aGVyZSB0aGUgcmVzdWx0DQotICAgIG9mIHRoZSBlbmNyeXB0aW9uL2RlY3J5cHRpb24gb3BlcmF0aW9uIHdpbGwgYmUgc3RvcmVkLg0KLSAgDQotICBAcGFyYW0gc3JjX2FkZHINCi0gICAgVGhlIHNyY19hZGRyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSBidWZmZXIgY29udGFpbmcgdGhlIHNvdXJjZQ0KLSAgICBwbGFpbnRleHQvY2lwaGVydGV4dCB0byBiZSBlbmNyeXB0ZWQvZGVjcnlwdGVkLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTXzEyOGJpdF9hZXMgZnVuY3Rpb24gcmV0dXJucyBvbmUgb2YgZm9sbG93aW5nIHN0YXR1cyBjb2RlczoNCi0gICAgICAgIC0gTVNTX1NZU19TVUNDRVNTDQotICAgICAgICAtIE1TU19TWVNfTUVNX0FDQ0VTU19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU18xMjhiaXRfYWVzDQotKA0KLSAgICBjb25zdCB1aW50OF90ICoga2V5LA0KLSAgICBjb25zdCB1aW50OF90ICogaXYsDQotICAgIHVpbnQxNl90IG5iX2Jsb2NrcywNCi0gICAgdWludDhfdCBtb2RlLA0KLSAgICB1aW50OF90ICogZGVzdF9hZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogc3JjX2FkZHINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU18yNTZiaXRfYWVzIGZ1bmN0aW9uIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgU21hcnRGdXNpb24yIEFFUy0yNTYNCi0gIGNyeXB0b2dyYXBoeSBzZXJ2aWNlLg0KLSAgDQotICBAcGFyYW0ga2V5DQotICAgIFRoZSBrZXkgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIDMyLWJ5dGVzIGFycmF5IGNvbnRhaW5pbmcgdGhlIGtleSB0byB1c2UNCi0gICAgZm9yIHRoZSByZXF1ZXN0ZWQgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIG9wZXJhdGlvbi4NCi0gIA0KLSAgQHBhcmFtIGl2DQotICAgIFRoZSBpdiBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMTYtYnl0ZXMgYXJyYXkgY29udGFpbmluZyB0aGUNCi0gICAgaW50aWFsaXphdGlvbiB2ZWN0b3IgdGhhdCB3aWxsIGJlIHVzZWQgYXMgcGFydCBvZiB0aGUgcmVxdWVzdGVkIA0KLSAgICBlbmNyeXB0aW9uL2RlY3J5cHRpb24gb3BlcmF0aW9uLiBJdHMgdXNlIGlzIGRpZmZlcmVudCBkZXBlbmRpbmcgb24gdGhlIG1vZGUuDQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBNb2RlIHwgICAgICAgICAgICAgVXNhZ2UgICAgICAgICAgICAgIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IEVDQiAgfCBJZ25vcmVkLiAgICAgICAgICAgICAgICAgICAgICAgfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICAgIHwgQ0JDICB8IFJhbmRvbWl6YXRpb24uICAgICAgICAgICAgICAgICB8DQotICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgICAgfCBPRkIgIHwgUmFuZG9taXphdGlvbi4gICAgICAgICAgICAgICAgIHwNCi0gICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAgICB8IENUUiAgfCBVc2VkIGFzIGluaXRpYWwgY291bnRlciB2YWx1ZS4gfA0KLSAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIA0KLSAgQHBhcmFtIG5iX2Jsb2Nrcw0KLSAgICBUaGUgbmJfYmxvY2tzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiAxMjgtYml0IGJsb2NrcyBvZg0KLSAgICBwbGFpbnRleHQvY2lwaGVydGV4dCByZXF1ZXN0ZWQgdG8gYmUgcHJvY2Vzc2VkIGJ5IHRoZSBBRVMtMTI4IHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBjaXBoZXIgbW9kZSBvZiBvcGVyYXRpb24gYW5kIHdoZXRoZXIgdGhlDQotICAgIHNvdXJjZSB0ZXh0IG11c3QgYmUgZW5jcnlwdGVkIG9yIGRlY3J5cHRlZC4gVGhlIG1vZGVzIG9mIG9wZXJhdGlvbiBhcmU6DQotICAgICAgICAtIEVsZWN0cm9uaWMgQ29kZWJvb2sgKEVDQikNCi0gICAgICAgIC0gQ3lwaGVyLUJsb2NrIENoYWluaW5nIChDQkMpDQotICAgICAgICAtIE91dHB1dCBGZWVkYmFjayAoT0ZCKQ0KLSAgICAgICAgLSBDb3VudGVyIChDVFIpDQotICAgIFRoZSBDVFIgbW9kZSB1c2VzIHRoZSBjb250ZW50IG9mIHRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgYXMgaXRzIGludGlhbA0KLSAgICBjb3VudGVyIHZhbHVlLiBUaGUgY291bnRlciBpbmNyZW1lbnQgaXMgMl42NC4NCi0gICAgQWxsb3dlZCB2YWx1ZXMgZm9yIHRoZSBtb2RlIHBhcmFtZXRlciBhcmU6DQotICAgICAgICAtIE1TU19TWVNfRUNCX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19FQ0JfREVDUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX0NCQ19FTkNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ0JDX0RFQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19PRkJfRU5DUllQVA0KLSAgICAgICAgLSBNU1NfU1lTX09GQl9ERUNSWVBUDQotICAgICAgICAtIE1TU19TWVNfQ1RSX0VOQ1JZUFQNCi0gICAgICAgIC0gTVNTX1NZU19DVFJfREVDUllQVA0KLSAgICANCi0gIEBwYXJhbSBkZXN0X2FkZHINCi0gICAgVGhlIGRlc3RfYWRkciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQNCi0gICAgb2YgdGhlIGVuY3J5cHRpb24vZGVjcnlwdGlvbiBvcGVyYXRpb24gd2lsbCBiZSBzdG9yZWQuDQotICANCi0gIEBwYXJhbSBzcmNfYWRkcg0KLSAgICBUaGUgc3JjX2FkZHIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgbWVtb3J5IGJ1ZmZlciBjb250YWluZyB0aGUgc291cmNlDQotICAgIHBsYWludGV4dC9jaXBoZXJ0ZXh0IHRvIGJlIGVuY3J5cHRlZC9kZWNyeXB0ZWQuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfMjU2Yml0X2FlcyBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICovDQotdWludDhfdCBNU1NfU1lTXzI1NmJpdF9hZXMNCi0oIA0KLSAgICBjb25zdCB1aW50OF90ICoga2V5LA0KLSAgICBjb25zdCB1aW50OF90ICogaXYsDQotICAgIHVpbnQxNl90IG5iX2Jsb2NrcywNCi0gICAgdWludDhfdCBtb2RlLA0KLSAgICB1aW50OF90ICogZGVzdF9hZGRyLA0KLSAgICBjb25zdCB1aW50OF90ICogc3JjX2FkZHINCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19zaGEyNTYgZnVuY3Rpb24gcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBTbWFydEZ1c2lvbjIgU0hBLTI1Ng0KLSAgY3J5cHRvZ3JhcGh5IHNlcnZpY2UuDQotICANCi0gIEBwYXJhbSBwX2RhdGFfaW4NCi0gICAgVGhlIHBfZGF0YV9pbiBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgbG9jYXRpb24gY29udGFpbmluZyB0aGUNCi0gICAgZGF0YSB0aGF0IHdpbGwgYmUgaGFzaGVkIHVzaW5nIHRoZSBTSEEtMjU2IHN5c3RlbSBzZXJ2aWNlLg0KLSAgDQotICBAcGFyYW0gbGVuZ3RoDQotICAgIFRoZSBsZW5ndGggcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbGVuZ3RoIGluIGJpdHMgb2YgdGhlIGRhdGEgdG8gaGFzaC4NCi0gIA0KLSAgQHBhcmFtIHJlc3VsdA0KLSAgICBUaGUgcmVzdWx0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSAzMiBieXRlcyBidWZmZXIgd2hlcmUgdGhlIGhhc2ggcmVzdWx0DQotICAgIHdpbGwgYmUgc3RvcmVkLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX3NoYTI1NiBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19NRU1fQUNDRVNTX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICovDQotdWludDhfdCBNU1NfU1lTX3NoYTI1Ng0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfZGF0YV9pbiwNCi0gICAgdWludDMyX3QgbGVuZ3RoLA0KLSAgICB1aW50OF90ICogcmVzdWx0DQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfaG1hYyBmdW5jdGlvbiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIFNtYXJ0RnVzaW9uMiBITUFDDQotICBjcnlwdG9ncmFwaHkgc2VydmljZS4gVGhlIEhNQUMgc3lzdGVtIHNlcnZpY2UgZ2VuZXJhdGVzIG1lc3NhZ2UgYXV0aGVudGljYXRpb24NCi0gIGNvZGVzIHVzaW5nIHRoZSBTSEEtMjU2IGhhc2ggZnVuY3Rpb24uDQotICANCi0gIEBwYXJhbSBrZXkNCi0gICAgVGhlIGtleSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMzIgYnl0ZXMgYXJyYXkgY29udGFpbmluZyB0aGUga2V5IHVzZWQNCi0gICAgdG8gZ2VuZXJhdGUgdGhlIG1lc3NhZ2UgYXV0aGVudGljYXRpb24gY29kZS4NCi0gIA0KLSAgQHBhcmFtIHBfZGF0YV9pbg0KLSAgICBUaGUgcF9kYXRhX2luIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gYmUgYXV0aGVudGljYXRlZC4NCi0gIA0KLSAgQHBhcmFtIGxlbmd0aA0KLSAgICBUaGUgbGVuZ3RoIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBkYXRhIGJ5dGVzIGZvciB3aGljaCB0byBnZW5lcmF0ZQ0KLSAgICB0aGUgYXV0aGVudGljYXRpb24gY29kZS4gSXQgaXMgdGhlIHNpemUgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSB0aGUNCi0gICAgcF9kYXRhX2luIHBhcmFtZXRlci4NCi0gIA0KLSAgQHBhcmFtIHBfcmVzdWx0DQotICAgIFRoZSBwX3Jlc3VsdCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMzIgYnl0ZXMgYnVmZmVyIHdoZXJlIHRoZQ0KLSAgICBhdXRoZW50aWNhdGlvbiBjb2RlIGdlbmVyYXRlZCBieSB0aGUgSE1BQyBzeXN0ZW0gc2VydmljZSB3aWxsIGJlIHN0b3JlZC4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19obWFjIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX01FTV9BQ0NFU1NfRVJST1INCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gKi8NCi11aW50OF90IE1TU19TWVNfaG1hYw0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIGtleSwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfZGF0YV9pbiwNCi0gICAgdWludDMyX3QgbGVuZ3RoLA0KLSAgICB1aW50OF90ICogcF9yZXN1bHQNCi0pOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ1JJIExpY2Vuc2VkIFNlcnZpY2VzLg0KLSAqLw0KLSNkZWZpbmUgU1lTX1NFUlZJQ0VfTk9UX0xJQ0VOQ0VEICAgICAgICAyNDN1DQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBOb24gRGV0ZXJtaW5pc3RpYyBSYW5kb20gQml0IEdlbmVyYXRvciBTZXJ2aWNlcy4NCi0gKi8NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfbnJiZ19zZWxmX3Rlc3QoKSBmdW5jdGlvbiBwZXJmb3JtcyBhIHNlbGYgdGVzdCBvZiB0aGUNCi0gIG5vbi1kZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yIChOUkJHKS4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19ucmJnX3NlbGZfdGVzdCBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0NBVEFTVFJPUEhJQ19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0lOU1RfRVhDRUVERUQNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0lOVkFMSURfSEFORExFDQotICAgICAgICAtIE1TU19TWVNfTlJCR19HRU5fUkVRX1RPT19CSUcNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX01BWF9MRU5HVEhfRVhDRUVERUQNCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX0ZBQ1RPUlkNCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gKi8NCi11aW50OF90IE1TU19TWVNfbnJiZ19zZWxmX3Rlc3Qodm9pZCk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTX25yYmdfaW5zdGFudGlhdGUoKSBmdW5jdGlvbiBpbnN0YW50aWF0ZXMgYSBub24tZGV0ZXJtaW5pc3RpYw0KLSAgcmFuZG9tIGJpdCBnZW5lcmF0b3IgKE5SQkcpIGluc3RhbmNlLiBBIG1heGltdW0gb2YgdHdvIGNvbmN1cnJlbnQgaW5zdGFuY2VzDQotICBhcmUgYXZhaWxhYmxlLg0KLSAgDQotICBAcGFyYW0gcGVyc29uYWxpemF0aW9uX3N0cg0KLSAgICBUaGUgcGVyc29uYWxpemF0aW9uX3N0ciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgYQ0KLSAgICByYW5kb20gYml0IGdlbmVyYXRvciBwZXJzb25hbGl6YXRpb24gc3RyaW5nLiBUaGUgcGVyc29uYWxpemF0aW9uIHN0cmluZw0KLSAgICBjYW4gYmUgdXAgdG8gMTI4IGJ5dGVzIGxvbmcuDQotICANCi0gIEBwYXJhbSBwZXJzb25hbGl6YXRpb25fc3RyX2xlbmd0aA0KLSAgICBUaGUgcGVyc29uYWxpemF0aW9uX3N0cl9sZW5ndGggcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgYnl0ZSBsZW5ndGggb2YgdGhlDQotICAgIHBlcnNvbmFsaXphdGlvbiBzdHJpbmcgcG9pbnRlZCB0byBieSBwZXJzb25hbGl6YXRpb25fc3RyLg0KLSAgDQotICBAcGFyYW0gcF9ucmJnX2hhbmRsZQ0KLSAgICBUaGUgcF9ucmJnX2hhbmRsZSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnl0ZSB0aGF0IHdpbGwgY29udGFpbiB0aGUNCi0gICAgaGFuZGxlIG9mIHRoZSBpbnN0YW50aWF0ZWQgTlJCRyBpZiB0aGlzIGZ1bmN0aW9uIGNhbGwgc3VjZWVkcy4NCi0gIA0KLSAgQHJldHVybg0KLSAgICBUaGUgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWQ0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlDQotKA0KLSAgICBjb25zdCB1aW50OF90ICogcGVyc29uYWxpemF0aW9uX3N0ciwNCi0gICAgdWludDE2X3QgcGVyc29uYWxpemF0aW9uX3N0cl9sZW5ndGgsDQotICAgIHVpbnQ4X3QgKiBwX25yYmdfaGFuZGxlDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19TWVNfbnJiZ19nZW5lcmF0ZSBmdW5jdGlvbiBnZW5lcmF0ZXMgYSByYW5kb20gYml0IHNlcXVlbmNlIHVwIHRvDQotICAxMjggYnl0ZXMgbG9uZy4NCi0gIA0KLSAgQHBhcmFtIHBfcmVxdWVzdGVkX2RhdGENCi0gICAgVGhlIHBfcmVxdWVzdGVkX2RhdGEgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlIHRoZSByZXF1ZXN0ZWQNCi0gICAgcmFuZG9tIGRhdGEgd2lsbCBiZSBzdG9yZWQgb24gY29tcGxldGlvbiBvZiB0aGlzIHN5c3RlbSBzZXJ2aWRlLg0KLSAgDQotICBAcGFyYW0gcF9hZGRpdGlvbmFsX2lucHV0DQotICAgIFRoZSBwX2FkZGl0aW9uYWxfaW5wdXQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGNvbnRhaW5pbmcNCi0gICAgYWRkaXRpb25hbCBpbnB1dCBkYXRhIGZvciB0aGUgcmFuZG9tIGJpdCBnZW5lcmF0aW9uLg0KLSAgDQotICBAcGFyYW0gcmVxdWVzdGVkX2xlbmd0aA0KLSAgICBUaGUgcmVxdWVzdGVkX2xlbmd0aCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmFuZG9tIGRhdGEgYnl0ZXMNCi0gICAgcmVxdWVzdGVkIHRvIGJlIGdlbmVyYXRlZC4gVGhlIG1heGltdW0gZ2VuZXJhdGVkIGRhdGEgbGVuZ3RoIGlzIDEyOCBieXRlcy4NCi0gIA0KLSAgQHBhcmFtIGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoDQotICAgIFRoZSBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYWRkZGl0b25hbA0KLSAgICBpbnB1dCBieXRlcyB0byB1c2UgaW4gdGhlIHJhbmRvbSBkYXRhIGdlbmVyYXRpb24uDQotICANCi0gIEBwYXJhbSBwcl9yZXENCi0gICAgVGhlIHByX3JlcSBwYXJhbWV0ZXIgc3BlY2lmaWVzIGlmIHByZWRpY3Rpb24gcmVzaXN0YW5jZSBpcyByZXF1ZXN0ZWQuDQotICANCi0gIEBwYXJhbSBucmJnX2hhbmRsZQ0KLSAgICBUaGUgbnJiZ19oYW5kbGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBub24tZGV0ZXJtaW5pc3RpYyByYW5kb20gYml0DQotICAgIGdlbmVyYXRvciAoTlJCRykgaW5zdGFuY2Ugd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSByYW5kb20gZGF0YS4gVGhlDQotICAgIHZhbHVlIG9mIG5yYmdfaGFuZGxlIGlzIG9idGFpbmVkIGFzIGEgcmVzdWx0IG9mIGEgcHJldmlvdXMgY2FsbCB0byB0aGUNCi0gICAgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlKCkgZnVuY3Rpb24uDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfbnJiZ19nZW5lcmF0ZSBmdW5jdGlvbiByZXR1cm5zIG9uZSBvZiBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0NBVEFTVFJPUEhJQ19FUlJPUg0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0lOU1RfRVhDRUVERUQNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0lOVkFMSURfSEFORExFDQotICAgICAgICAtIE1TU19TWVNfTlJCR19HRU5fUkVRX1RPT19CSUcNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX01BWF9MRU5HVEhfRVhDRUVERUQNCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX0ZBQ1RPUlkNCi0gICAgICAgIC0gTVNTX1NZU19TRVJWSUNFX0RJU0FCTEVEX0JZX1VTRVINCi0gICANCi0gKi8NCi11aW50OF90IE1TU19TWVNfbnJiZ19nZW5lcmF0ZQ0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfcmVxdWVzdGVkX2RhdGEsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX2FkZGl0aW9uYWxfaW5wdXQsDQotICAgIHVpbnQ4X3QgcmVxdWVzdGVkX2xlbmd0aCwNCi0gICAgdWludDhfdCBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aCwNCi0gICAgdWludDhfdCBwcl9yZXEsDQotICAgIHVpbnQ4X3QgbnJiZ19oYW5kbGUNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1NZU19ucmJnX3Jlc2VlZCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVzZWVkIHRoZSBub24tZGV0ZXJtaW5pc3RpYw0KLSAgcmFuZG9tIGJpdCBnZW5lcmF0b3IgKE5SQkcpIGlkZW50aWZpZWQgYnkgdGhlIG5yYmdfaGFuZGxlIHBhcmFtZXRlci4NCi0gIA0KLSAgQHBhcmFtIHBfYWRkaXRpb25hbF9pbnB1dA0KLSAgICBUaGUgYWRkaXRpb25hbF9pbnB1dF9sZW5ndGggcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwNCi0gICAgaW5wdXQgYnl0ZXMgdXNlZCB0byByZXNlZWQgdGhlIE5SQkcgaWRlbnRpZmllZCBieSB0aGUgbnJiZ19oYW5kbGUgcGFyYW1ldGVyLg0KLSAgDQotICBAcGFyYW0gYWRkaXRpb25hbF9pbnB1dF9sZW5ndGgNCi0gICAgVGhlIGFkZGl0aW9uYWxfaW5wdXRfbGVuZ3RoIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsDQotICAgIGlucHV0IGJ5dGVzIHVzZWQgdG8gcmVzZWVkIHRoZSBOUkJHLg0KLSAgDQotICBAcGFyYW0gbnJiZ19oYW5kbGUNCi0gICAgVGhlIG5yYmdfaGFuZGxlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggTlJCRyBpbnN0YW5jZSB0byByZXNlZWQuIFRoZSB2YWx1ZQ0KLSAgICBvZiBucmJnX2hhbmRsZSBpcyBvYnRhaW5lZCBhcyBhIHJlc3VsdCBvZiBhIHByZXZpb3VzIGNhbGwgdG8gdGhlDQotICAgIE1TU19TWVNfbnJiZ19pbnN0YW50aWF0ZSgpIGZ1bmN0aW9uLg0KLSAgDQotICBAcmV0dXJuDQotICAgIFRoZSBNU1NfU1lTX25yYmdfcmVzZWVkIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWQ0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAgIA0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX3Jlc2VlZA0KLSgNCi0gICAgY29uc3QgdWludDhfdCAqIHBfYWRkaXRpb25hbF9pbnB1dCwNCi0gICAgdWludDhfdCBhZGRpdGlvbmFsX2lucHV0X2xlbmd0aCwNCi0gICAgdWludDhfdCBucmJnX2hhbmRsZQ0KLSk7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfU1lTX25yYmdfdW5pbnN0YW50aWF0ZSgpIGZ1bmN0aW9uIHJlbGVhc2VzIHRoZSBub24tZGV0ZXJtaW5pc3RpYw0KLSAgcmFuZG9tIGJpdCBnZW5lcmF0b3IgKE5SQkcpIGlkZW50aWZpZWQgYnkgdGhlIG5yYmdfaGFuZGxlIHBhcmFtZXRlci4NCi0gIA0KLSAgQHBhcmFtIG5yYmdfaGFuZGxlDQotICAgIFRoZSBucmJnX2hhbmRsZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoaWNoIE5SQkcgaW5zdGFuY2Ugd2lsbCBiZSByZWxlYXNlZC4NCi0gICAgVGhlIHZhbHVlIG9mIG5yYmdfaGFuZGxlIGlzIG9idGFpbmVkIGFzIGEgcmVzdWx0IG9mIGEgcHJldmlvdXMgY2FsbCB0byB0aGUNCi0gICAgTVNTX1NZU19ucmJnX2luc3RhbnRpYXRlKCkgZnVuY3Rpb24uDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfbnJiZ191bmluc3RhbnRpYXRlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIGZvbGxvd2luZyBzdGF0dXMgY29kZXM6DQotICAgICAgICAtIE1TU19TWVNfU1VDQ0VTUw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfQ0FUQVNUUk9QSElDX0VSUk9SDQotICAgICAgICAtIE1TU19TWVNfTlJCR19NQVhfSU5TVF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfSU5WQUxJRF9IQU5ETEUNCi0gICAgICAgIC0gTVNTX1NZU19OUkJHX0dFTl9SRVFfVE9PX0JJRw0KLSAgICAgICAgLSBNU1NfU1lTX05SQkdfTUFYX0xFTkdUSF9FWENFRURFRA0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfRkFDVE9SWQ0KLSAgICAgICAgLSBNU1NfU1lTX1NFUlZJQ0VfRElTQUJMRURfQllfVVNFUg0KLSAgIA0KLSAqLw0KLXVpbnQ4X3QgTVNTX1NZU19ucmJnX3VuaW5zdGFudGlhdGUNCi0oDQotICAgIHVpbnQ4X3QgbnJiZ19oYW5kbGUNCi0pOw0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogUHJvZ3JhbW1pbmcgU2VydmljZXMuDQotICovDQotDQotI2RlZmluZSBNU1NfU1lTX1BST0dfQVVUSEVOVElDQVRFICAgIDB1DQotI2RlZmluZSBNU1NfU1lTX1BST0dfUFJPR1JBTSAgICAgICAgIDF1DQotI2RlZmluZSBNU1NfU1lTX1BST0dfVkVSSUZZICAgICAgICAgIDJ1DQotICAgDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBJU1AgU2VydmljZSBhbGxvd3MgdGhlIE1TUyBDb3J0ZXgtTTMgcHJvY2Vzc29yIHRvIGRpcmVjdGx5IHByb3ZpZGUgYQ0KLSAgYml0c3RyZWFtIGZvciBwcm9ncmFtbWluZy4gVGhlIElTUCBTZXJ2aWNlIGlzIGluaXRpYXRlZCBieSBhIGNhbGwgdG8NCi0gIE1TU19TWVNfc3RhcnRfaXNwKCkuIFRoZSBJU1AgU2VydmljZSBjYW46DQotICAgIC0gYXV0aGVudGljYXRlIGEgcHJvZ3JhbW1pbmcgYml0c3RyZWFtDQotICAgIC0gcHJvZ3JhbSBhIGJpdHN0cmVhbQ0KLSAgICAtIHZlcmlmeSB0aGF0IGEgcHJvZ3JhbW1pbmcgYml0c3RyZWFtIGhhcyBiZWVuIGNvcnJlY3RseSBwcm9ncmFtbWVkDQotDQotICBUaGUgYXBwbGljYXRpb24gbXVzdCBwcm92aWRlIHR3byBmdW5jdGlvbnMgYXMgcGFyYW1ldGVyIHRvIHRoZQ0KLSAgTVNTX1NZU19zdGFydF9pc3AoKSBmdW5jdGlvbi4gVGhlIGZpcnN0IGZ1bmN0aW9uIHdpbGwgYmUgdXNlZCBieSB0aGUgSVNQDQotICBTZXJ2aWNlIHRvIHJlYWQgdGhlIHByb2dyYW1taW5nIGJpdHN0cmVhbS4gVGhlIHNlY29uZCBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgYnkNCi0gIHRoZSBJU1AgU2VydmljZSB0byBub3RpZnkgdGhlIGFwcGxpY2F0aW9uIHRoYXQgdGhlIElTUCBTZXJ2aWNlIGNvbXBsZXRlZC4NCi0gIA0KLSAgQHBhcmFtIG1vZGUNCi0gICAgVGhlIG1vZGUgcGFyYW1ldGVyIHNwZWNpZmllcyBJU1Agc2VydmljZSB0byBwZXJmb3JtLiBJdCBjYW4gYmUgb25lIG9mOg0KLSAgICAgICAgLSBNU1NfU1lTX1BST0dfQVVUSEVOVElDQVRFDQotICAgICAgICAtIE1TU19TWVNfUFJPR19QUk9HUkFNDQotICAgICAgICAtIE1TU19TWVNfUFJPR19WRVJJRlkNCi0gDQotICBAcGFyYW0gcGFnZV9yZWFkX2hhbmRsZXINCi0gICAgVGhlIHBhZ2VfcmVhZF9oYW5kbGVyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBmdW5jdGlvbiB3aXRoIHRoZQ0KLSAgICBmb2xsb3dpbmcgcHJvdG90eXBlOg0KLSAgICAgICAgdWludDMyX3QgcGFnZV9yZWFkX2hhbmRsZXIodWludDggY29uc3QgKiogcHBfbmV4dF9wYWdlKTsNCi0gDQotICBAcGFyYW0gaXNwX2NvbXBsZXRpb25faGFuZGxlcg0KLSAgICBUaGUgaXNwX2NvbXBsZXRpb25faGFuZGxlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgZnVuY3Rpb24gd2l0aCB0aGUNCi0gICAgZm9sbG93aW5nIHByb3RvdHlwZS4gVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZSBJU1Agc2VydmljZQ0KLSAgICBjb21wbGV0ZXMuDQotIA0KLSAgICBUaGUgaXNwX2NvbXBsZXRpb25faGFuZGxlciBmdW5jdGlvbiB3aWxsIHJlY2VpdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgc3RhdHVzDQotICAgIGNvZGVzOg0KLSAgICAgICAgLSBNU1NfU1lTX1NVQ0NFU1MNCi0gICAgICAgIC0gTVNTX1NZU19DSEFJTklOR19NSVNNQVRDSA0KLSAgICAgICAgLSBNU1NfU1lTX1VORVhQRUNURURfREFUQV9SRUNFSVZFRA0KLSAgICAgICAgLSBNU1NfU1lTX0lOVkFMSURfRU5DUllQVElPTl9LRVkNCi0gICAgICAgIC0gTVNTX1NZU19JTlZBTElEX0NPTVBPTkVOVF9IRUFERVINCi0gICAgICAgIC0gTVNTX1NZU19CQUNLX0xFVkVMX05PVF9TQVRJU0ZJRUQNCi0gICAgICAgIC0gTVNTX1NZU19EU05fQklORElOR19NSVNNQVRDSA0KLSAgICAgICAgLSBNU1NfU1lTX0lMTEVHQUxfQ09NUE9ORU5UX1NFUVVFTkNFDQotICAgICAgICAtIE1TU19TWVNfSU5TVUZGSUNJRU5UX0RFVl9DQVBBQklMSVRJRVMNCi0gICAgICAgIC0gTVNTX1NZU19JTkNPUlJFQ1RfREVWSUNFX0lEDQotICAgICAgICAtIE1TU19TWVNfVU5TVVBQT1JURURfQklUU1RSRUFNX1BST1RfVkVSDQotICAgICAgICAtIE1TU19TWVNfVkVSSUZZX05PVF9QRVJNSVRURURfT05fQklUU1RSDQotICAgICAgICAtIE1TU19TWVNfQUJPUlQNCi0gICAgICAgIC0gTVNTX1NZU19OVk1fVkVSSUZZX0ZBSUxFRA0KLSAgICAgICAgLSBNU1NfU1lTX0RFVklDRV9TRUNVUklUWV9QUk9URUNURUQNCi0gICAgICAgIC0gTVNTX1NZU19QUk9HUkFNTUlOR19NT0RFX05PVF9FTkFCTEVEDQotICAgICAgICAtIE1TU19TWVNfU0VSVklDRV9ESVNBQkxFRF9CWV9VU0VSDQotICAgICAgICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gKi8NCi12b2lkIE1TU19TWVNfc3RhcnRfaXNwDQotKA0KLSAgICB1aW50OF90IG1vZGUsDQotICAgIHVpbnQzMl90ICgqcGFnZV9yZWFkX2hhbmRsZXIpKHVpbnQ4X3QgY29uc3QgKiopLA0KLSAgICB2b2lkICgqaXNwX2NvbXBsZXRpb25faGFuZGxlcikodWludDMyX3QpDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgUmVjYWxjdWxhdGVzIGFuZCBjb21wYXJlcyBkaWdlc3RzIG9mIHNlbGVjdGVkIGNvbXBvbmVudHMuDQotICANCi0gIEBwYXJhbSBvcHRpb25zDQotICAgIFRoZSBvcHRpb25zIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggY29tcG9uZW50cycgZGlnZXN0IHdpbGwgYmUgcmVjYWxjdWxhdGVkDQotICAgIGFuZCBjaGVja2VkLiBFYWNoIGJpdCBpcyB1c2VkIHRvIGlkZW50aWZ5IGEgY29tcG9uZXRuIGFzIGZvbGxvd3M6DQotICAgICAgICAtIGJpdCAwOiBGUEdBIGZhYnJpYw0KLSAgICAgICAgLSBiaXQgMTogZU5WTTANCi0gICAgICAgIC0gYml0IDI6IGVOVk0xDQotICAgIE5vdGU6IFRoZSBGUEdBIGZhYnJpYyB3aWxsIGVudGVyIHRoZSBGbGFzaEZyZWV6ZSBzdGF0ZSBpZiBwb3dlcmVkIHVwIHdoZW4NCi0gICAgICAgICAgaXRzIGRpZ2VzdCBpcyBjaGVja2VkLg0KLSANCi0gIEByZXR1cm4NCi0gICAgVGhlIE1TU19TWVNfY2hlY2tfZGlnZXN0IGZ1bmN0aW9uIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgZGlnZXN0IGNoZWNrLiBUaGUNCi0gICAgbWVhbmluZyBvZiB0aGUgZGlnZXN0IGNoZWNrIHJldHVybiB2YWx1ZSBpcyBhcyBmb2xsb3dzOg0KLSAgICAgICAgYml0IDA6IEZhYnJpYyBkaWdlc3QgZXJyb3INCi0gICAgICAgIGJpdCAxOiBFTlZNMCBkaWdlc3QgZXJyb3INCi0gICAgICAgIGJpdCAyOiBFTlZNMSBkaWdlc3QgZXJyb3INCi0gICAgQSAnMScgaW4gb25lIG9mIHRoZSBhYm92ZSBiaXRzIGluZGljYXRlcyBhIGRpZ2VzdCBtaXNtYXRjaC4NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfRElHRVNUX0NIRUNLX0ZBQlJJQyAgICAgMHgwMXUNCi0jZGVmaW5lIE1TU19TWVNfRElHRVNUX0NIRUNLX0VOVk0wICAgICAgMHgwMnUNCi0jZGVmaW5lIE1TU19TWVNfRElHRVNUX0NIRUNLX0VOVk0xICAgICAgMHgwNHUNCi0NCi11aW50OF90IE1TU19TWVNfY2hlY2tfZGlnZXN0DQotKA0KLSAgICB1aW50OF90IG9wdGlvbnMNCi0pOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX19NU1NfU1lTX1NFUlZJQ0VTX0hfICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc190aW1lci9tc3NfdGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdGltZXIvbXNzX3RpbWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiNWUwNTEuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc190aW1lci9tc3NfdGltZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIHRpbWVyIGRyaXZlciBBUEkuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MTExICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDItMTggMTc6MDM6MDkgKzAwMDAgKE1vbiwgMTggRmViIDIwMTMpICQNCi0gKi8NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qLy8qKg0KLSAgQG1haW5wYWdlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgQmFyZSBNZXRhbCBEcml2ZXIuDQotDQotICBAc2VjdGlvbiBpbnRyb19zZWMgSW50cm9kdWN0aW9uDQotICBUaGUgU21hcnRGdXNpb24yIE1pY3JvY29udHJvbGxlciBTdWJzeXN0ZW0gKE1TUykgaW5jbHVkZXMgYSB0aW1lciBoYXJkd2FyZQ0KLSAgYmxvY2sgd2hpY2ggY2FuIGJlIHVzZWQgYXMgdHdvIGluZGVwZW5kZW50IDMyLWJpdHMgdGltZXJzIG9yIGFzIGEgc2luZ2xlDQotICA2NC1iaXRzIHRpbWVyIGluIHBlcmlvZGljIG9yIG9uZS1zaG90IG1vZGUuIA0KLQ0KLSAgVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB0aGUgTVNTIHRpbWVyIGFzIHBhcnQNCi0gIG9mIGEgYmFyZSBtZXRhbCBzeXN0ZW0gd2hlcmUgbm8gb3BlcmF0aW5nIHN5c3RlbSBpcyBhdmFpbGFibGUuIFRoZXNlIGRyaXZlcnMNCi0gIGNhbiBiZSBhZGFwdGVkIGZvciB1c2UgYXMgcGFydCBvZiBhbiBvcGVyYXRpbmcgc3lzdGVtIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24NCi0gIG9mIHRoZSBhZGFwdGF0aW9uIGxheWVyIGJldHdlZW4gdGhpcyBkcml2ZXIgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtJ3MgZHJpdmVyDQotICBtb2RlbCBpcyBvdXRzaWRlIHRoZSBzY29wZSBvZiB0aGlzIGRyaXZlci4NCi0gIA0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gIFRoZSBNU1MgVGltZXIgZHJpdmVyIHVzZXMgdGhlIFNtYXJ0RnVzaW9uMiAiQ29ydGV4IE1pY3JvY29udHJvbGVyIFNvZnR3YXJlDQotICBJbnRlcmZhY2UgU3RhbmRhcmQgLSBQZXJpcGhlcmFsIEFjY2VzcyBMYXllciIgKENNU0lTLVBBTCkgdG8gYWNjZXNzIGhhZHdhcmUNCi0gIHJlZ2lzdGVycy4gWW91IG11c3QgZW5zdXJlIHRoYXQgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUy1QQUwgaXMgZWl0aGVyIGluY2x1ZGVkDQotICBpbiB0aGUgc29mdHdhcmUgdG9vbGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IG9yIGlzIGluY2x1ZGVkIGluIHlvdXINCi0gIHByb2plY3QuIFRoZSBtb3N0IHVwLXRvLWRhdGUgU21hcnRGdXNpb24yIENNU0lTLVBBTCBmaWxlcyBjYW4gYmUgb2J0YWluZWQgdXNpbmcNCi0gIHRoZSBBY3RlbCBGaXJtd2FyZSBDYXRhbG9nLg0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgY2FuIGJlIHVzZWQgaW4gb25lIG9mIHR3byBtdXR1YWxseSBleGNsdXNpdmUgbW9kZXM7DQotICBlaXRoZXIgYXMgYSBzaW5nbGUgNjQtYml0cyB0aW1lciBvciBhcyB0d28gaW5kZXBlbmRlbnQgMzItYml0cyB0aW1lcnMuIFRoZSBNU1MNCi0gIFRpbWVyIGNhbiBiZSB1c2VkIGluIGVpdGhlciBwZXJpb2RpYyBtb2RlIG9yIG9uZS1zaG90IG1vZGUuIEEgdGltZXIgY29uZmlndXJlZA0KLSAgZm9yIHBlcmlvZGljIG1vZGUgb3BlcmF0aW9ucyB3aWxsIGdlbmVyYXRlIGFuIGludGVycnVwdCBhbmQgcmVsb2FkIGl0cw0KLSAgZG93bi1jb3VudGVyIHdoZW4gaXQgcmVhY2hlcyAwLiBUaGUgdGltZXIgd2lsbCB0aGVuIGNvbnRpbnVlIGRlY3JlbWVudGluZyBmcm9tDQotICBpdHMgcmVsb2FkIHZhbHVlIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGludGVycnVwdCB0byBiZSBjbGVhcmVkLiBBIHRpbWVyDQotICBjb25maWd1cmVkIGZvciBvbmUtc2hvdCBtb2RlIHdpbGwgb25seSBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgb25jZSB3aGVuIGl0cw0KLSAgZG93bi1jb3VudGVyIHJlYWNoZXMgMC4gSXQgbXVzdCBiZSBleHBsaXRjaXRseSByZWxvYWRlZCB0byBzdGFydCBkZWNyZW1lbnRpbmcNCi0gIGFnYWluLg0KLSAgDQotICBUaGUgTVNTIFRpbWVyIGRyaXZlciBmdW5jdGlvbnMgYXJlIGdyb3VwZWQgaW50byB0aGUgZm9sbG93aW5nIGNhdGVnb3JpZXM6DQotICAgIC0gSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24NCi0gICAgLSBUaW1lciBjb250cm9sDQotICAgIC0gSW50ZXJydXB0IGNvbnRyb2wNCi0gIA0KLSAgVGhlIE1TUyBUaW1lciBkcml2ZXIgcHJvdmlkZXMgdGhyZWUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zOg0KLSAgICAtIE1TU19USU0xX2luaXQoKQ0KLSAgICAtIE1TU19USU0yX2luaXQoKQ0KLSAgICAtIE1TU19USU02NF9pbml0KCkNCi0gIFRoZSBNU1MgVGltZXIgZHJpdmVyIGlzIGluaXRpYWxpemVkIHRocm91Z2ggY2FsbHMgdG8gdGhlc2UgZnVuY3Rpb25zIGFuZCBhdA0KLSAgbGVhc3Qgb25lIG9mIHRoZW0gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgVGltZXIgZHJpdmVyIGZ1bmN0aW9ucw0KLSAgY2FuIGJlIGNhbGxlZC4NCi0gIFlvdSBzaG91bGQgb25seSB1c2UgdGhlIE1TU19USU0xX2luaXQoKSBhbmQgTVNTX1RJTTJfaW5pdCgpIGZ1bmN0aW9ucyBpZiB5b3UNCi0gIGludGVuZCB0byB1c2UgdGhlIHRpbWVyIGluIDMyLWJpdHMgbW9kZS4gVXNlIHRoZSBNU1NfVElNNjRfaW5pdCgpIGZ1bmN0aW9uIGlzDQotICB5b3UgaW50ZW5kIHRvIHVzZSB0aGUgTVNTIFRpbWVyIGFzIGEgc2luZ2xlIDY0LWJpdHMgdGltZXIuIFRoZSBpbml0aWFsaXphdGlvbg0KLSAgZnVuY3Rpb25zIHRha2UgYSBzaW5nbGUgcGFyYW1ldGVyIHNwZWNpZnlpbmcgdGhlIG9wZXJhdGluZyBtb2RlIG9mIHRoZSB0aW1lcg0KLSAgYmVpbmcgaW5pdGlhbGl6ZWQuDQotICANCi0gIE9uY2UgaW5pdGlhbGl6ZWQgYSB0aW1lciBjYW4gYmUgY29udHJvbGxlZCB1c2luZyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoNCi0gICAgLSBNU1NfVElNMV9sb2FkX2ltbWVkaWF0ZSgpDQotICAgIC0gTVNTX1RJTTFfbG9hZF9iYWNrZ3JvdW5kKCkNCi0gICAgLSBNU1NfVElNMV9nZXRfY3VycmVudF92YWx1ZSgpDQotICAgIC0gTVNTX1RJTTFfc3RhcnQoKQ0KLSAgICAtIE1TU19USU0xX3N0b3AoKQ0KLSAgICAtIE1TU19USU0yX2xvYWRfaW1tZWRpYXRlKCkNCi0gICAgLSBNU1NfVElNMl9sb2FkX2JhY2tncm91bmQoKQ0KLSAgICAtIE1TU19USU0yX2dldF9jdXJyZW50X3ZhbHVlKCkNCi0gICAgLSBNU1NfVElNMl9zdGFydCgpDQotICAgIC0gTVNTX1RJTTJfc3RvcCgpDQotICAgIC0gTVNTX1RJTTY0X2xvYWRfaW1tZWRpYXRlKCkNCi0gICAgLSBNU1NfVElNNjRfbG9hZF9iYWNrZ3JvdW5kKCkNCi0gICAgLSBNU1NfVElNNjRfZ2V0X2N1cnJlbnRfdmFsdWUoKQ0KLSAgICAtIE1TU19USU02NF9zdGFydCgpDQotICAgIC0gTVNTX1RJTTY0X3N0b3AoKQ0KLSAgDQotICBUaW1lciBpbnRlcnJ1cHRzIGFyZSBjb250cm9sbGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOg0KLSAgICAtIE1TU19USU0xX2VuYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU0xX2Rpc2FibGVfaXJxKCkNCi0gICAgLSBNU1NfVElNMV9jbGVhcl9pcnEoKQ0KLSAgICAtIE1TU19USU0yX2VuYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU0yX2Rpc2FibGVfaXJxKCkNCi0gICAgLSBNU1NfVElNMl9jbGVhcl9pcnEoKQ0KLSAgICAtIE1TU19USU02NF9lbmFibGVfaXJxKCkNCi0gICAgLSBNU1NfVElNNjRfZGlzYWJsZV9pcnEoKQ0KLSAgICAtIE1TU19USU02NF9jbGVhcl9pcnEoKQ0KLSAgDQotICBUaGUgZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgdGhlIHRpbWVyIGludGVycnVwdCBoYW5kbGVycyBhcmU6DQotICAgIC0gdm9pZCBUaW1lcjFfSVJRSGFuZGxlciggdm9pZCApDQotICAgIC0gdm9pZCBUaW1lcjJfSVJRSGFuZGxlciggdm9pZCApDQotICBFbnRyaWVzIGZvciB0aGVzZSBpbnRlcnJ1cHQgaGFuZGxlcnMgYXJlIHByb3ZpZGVkIGluIHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMtUEFMDQotICB2ZWN0b3IgdGFibGUuIFRvIGFkZCBhIFRpbWVyIDEgaW50ZXJydXB0IGhhbmRsZXIsIHlvdSBtdXN0IGltcGxlbWVudCBhDQotICBUaW1lcjFfSVJRSGFuZGxlciggKSBmdW5jdGlvbiBhcyBwYXJ0IG9mIHlvdXIgYXBwbGljYXRpb24gY29kZS4gVG8gYWRkIGENCi0gIFRpbWVyIDIgaW50ZXJydXB0IGhhbmRsZXIsIHlvdSBtdXN0IGltcGxlbWVudCBhIFRpbWVyMl9JUlFIYW5kbGVyKCApIGZ1bmN0aW9uDQotICBhcyBwYXJ0IG9mIHlvdXIgYXBwbGljYXRpb24gY29kZS4gV2hlbiB1c2luZyB0aGUgTVNTIFRpbWVyIGFzIGEgNjQtYml0IHRpbWVyLA0KLSAgeW91IG11c3QgaW1wbGVtZW50IGEgVGltZXIxX0lSUUhhbmRsZXIoICkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyDQotICBhcHBsaWNhdGlvbiBjb2RlLiBUaGUgVGltZXIgMiBpbnRlcnJ1cHQgaXMgbm90IHVzZWQgd2hlbiB0aGUgTVNTIFRpbWVyIGlzDQotICBjb25maWd1cmVkIGFzIGEgNjQtYml0IHRpbWVyLg0KLSAgDQotICovLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8NCi0jaWZuZGVmIE1TU19USU1FUl9IXw0KLSNkZWZpbmUgTVNTX1RJTUVSX0hfDQotDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZiANCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAqIFRpbWVyIG1vZGUgc2VsZWN0aW9uLiBUaGlzIGVudW1lcmF0aW9uIGlzIHVzZWQgdG8gc2VsZWN0IGJldHdlZW4gdGhlIHR3bw0KLSAqIHBvc3NpYmxlIHRpbWVyIG1vZGVzIG9mIG9wZXJhdGlvbjogcGVyaW9kaWMgYW5kIG9uZS1zaG90IG1vZGUuIEl0IGlzIHVzZWQgYXMNCi0gKiBhbiBhcmd1bWVudCB0byB0aGUgTVNTX1RJTTFfaW5pdCgpLCBNU1NfVElNMl9pbml0KCkgYW5kIE1TU19USU02NF9pbml0KCkNCi0gKiBmdW5jdGlvbnMuDQotICogTVNTX1RJTUVSX1BFUklPRElDX01PREU6DQotICogIEluIHBlcmlvZGljIG1vZGUgdGhlIHRpbWVyIGdlbmVyYXRlcyBpbnRlcnJ1cHRzIGF0IGNvbnN0YW50IGludGVydmFscy4gT24gDQotICogIHJlYWNoaW5nIHplcm8sIHRoZSB0aW1lcidzIGNvdW50ZXIgaXMgcmVsb2FkZWQgd2l0aCBhIHZhbHVlIGhlbGQgaW4gYQ0KLSAqICByZWdpc3RlciBhbmQgYmVnaW5zIGNvdW50aW5nIGRvd24gYWdhaW4uDQotICogTVNTX1RJTUVSX09ORV9TSE9UX01PREU6DQotICogIFRoZSB0aW1lciBnZW5lcmF0ZXMgYSBzaW5nbGUgaW50ZXJydXB0IGluIHRoaXMgbW9kZS4gT24gcmVhY2hpbmcgemVybywgdGhlDQotICogIHRpbWVyJ3MgY291bnRlciBoYWx0cyB1bnRpbCByZXByb2dyYW1tZWQgYnkgdGhlIHVzZXIuDQotICovDQotdHlwZWRlZiBlbnVtIF9fbXNzX3RpbWVyX21vZGVfdA0KLXsNCi0gICAgTVNTX1RJTUVSX1BFUklPRElDX01PREUgPSAwLA0KLSAgICBNU1NfVElNRVJfT05FX1NIT1RfTU9ERSA9IDENCi19IG1zc190aW1lcl9tb2RlX3Q7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9pbml0KCkgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgYmxvY2sgZm9yDQotICB1c2UgYXMgYSAzMi1iaXQgdGltZXIgYW5kIHNlbGVjdHMgdGhlIG9wZXJhdGluZyBtb2RlIGZvciBUaW1lciAxLiBUaGlzIGZ1bmN0aW9uDQotICB0YWtlcyB0aGUgTVNTIFRpbWVyIGJsb2NrIG91dCBvZiByZXNldCBpbiBjYXNlIHRoaXMgaGFzbpJ0IGJlZW4gZG9uZSBhbHJlYWR5LA0KLSAgc3RvcHMgVGltZXIgMSwgZGlzYWJsZXMgaXRzIGludGVycnVwdCBhbmQgc2V0cyB0aGUgVGltZXIgMSBvcGVyYXRpbmcgbW9kZS4NCi0gIFBsZWFzZSBub3RlIHRoYXQgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgYmxvY2sgY2Fubm90IGJlIHVzZWQgYm90aCBhcyBhDQotICA2NC1iaXQgYW5kIDMyLWJpdCB0aW1lci4gQ2FsbGluZyBNU1NfVElNMV9pbml0KCkgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzDQotICBjb25maWd1cmF0aW9uIG9mIHRoZSBNU1MgVGltZXIgYXMgYSA2NC1iaXQgdGltZXIuDQotDQotIA0KLSAgQHBhcmFtIG1vZGUNCi0gICAgVGhlIG1vZGUgcGFyYW1ldGVyIHNwZWNpZmllcyB3aGV0aGVyIHRoZSB0aW1lciB3aWxsIG9wZXJhdGUgaW4gcGVyaW9kaWMgb3INCi0gICAgb25lLXNob3QgbW9kZS4gQWxsb3dlZCB2YWx1ZXMgZm9yIHRoaXMgcGFyYW1ldGVyIGFyZToNCi0gICAgICAgIC0gTVNTX1RJTUVSX1BFUklPRElDX01PREUNCi0gICAgICAgIC0gTVNTX1RJTUVSX09ORV9TSE9UX01PREUNCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMV9pbml0KG1zc190aW1lcl9tb2RlX3QgbW9kZSkNCi17DQotICAgIE5WSUNfRGlzYWJsZUlSUShUaW1lcjFfSVJRbik7ICAgICAgICAgICAgIC8qIERpc2FibGUgdGltZXIgMSBpcnEgaW4gdGhlIENvcnRleC1NMyBOVklDICovICANCi0gICAgDQotICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgJj0gflNZU1JFR19USU1FUl9TT0ZUUkVTRVRfTUFTSzsgLyogVGFrZSB0aW1lciBibG9jayBvdXQgb2YgcmVzZXQgKi8NCi0gICAgDQotICAgIFRJTUVSLT5USU02NF9NT0RFID0gMHU7ICAgICAgICAgICAgICAgICAgICAgLyogc3dpdGNoIHRvIDMyIGJpdHMgbW9kZSAqLw0KLSAgICANCi0gICAgVElNRVJfQklUQkFORC0+VElNMUVOQUJMRSA9IDB1OyAgICAgICAgICAgICAvKiBkaXNhYmxlIHRpbWVyICovDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTFJTlRFTiA9IDB1OyAgICAgICAgICAgICAgLyogZGlzYWJsZSBpbnRlcnJ1cHQgKi8NCi0gICAgVElNRVJfQklUQkFORC0+VElNMU1PREUgPSAodWludDMyX3QpbW9kZTsgICAvKiBzZXQgbW9kZSAoY29udGludW91cy9vbmUtc2hvdCkgKi8NCi0gICAgDQotICAgIFRJTUVSLT5USU0xX1JJUyA9IDF1OyAgICAgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgdGltZXIgMSBpbnRlcnJ1cHQgKi8NCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoVGltZXIxX0lSUW4pOyAgICAgICAgLyogY2xlYXIgdGltZXIgMSBpbnRlcnJ1cHQgd2l0aGluIE5WSUMgKi8NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9zdGFydCgpIGZ1bmN0aW9uIGVuYWJsZXMgVGltZXIgMSBhbmQgc3RhcnRzIGl0cyBkb3duLWNvdW50ZXINCi0gIGRlY3JlbWVudGluZyBmcm9tIHRoZSBsb2FkX3ZhbHVlIHNwZWNpZmllZCBpbiBwcmV2aW91cyBjYWxscyB0byB0aGUNCi0gIE1TU19USU0xX2xvYWRfaW1tZWRpYXRlKCkgb3IgTVNTX1RJTTFfbG9hZF9iYWNrZ3JvdW5kKCkgZnVuY3Rpb25zLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0xX3N0YXJ0KHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xRU5BQkxFID0gMXU7ICAgIC8qIGVuYWJsZSB0aW1lciAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX3N0b3AoKSBmdW5jdGlvbiBkaXNhYmxlcyBUaW1lciAxIGFuZCBzdG9wcyBpdHMgZG93bi1jb3VudGVyDQotICBkZWNyZW1lbnRpbmcuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfc3RvcCh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNMUVOQUJMRSA9IDB1OyAgICAvKiBkaXNhYmxlIHRpbWVyICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTFfZ2V0X2N1cnJlbnRfdmFsdWUoKSByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBUaW1lciAxDQotICBkb3duLWNvdW50ZXIuDQotICANCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSAzMi1iaXRzIGN1cnJlbnQgdmFsdWUgb2YgdGhlIFRpbWVyIDEgZG93bi1jb3VudGVyLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB1aW50MzJfdCBNU1NfVElNMV9nZXRfY3VycmVudF92YWx1ZSh2b2lkKQ0KLXsNCi0gICAgcmV0dXJuIFRJTUVSLT5USU0xX1ZBTDsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9sb2FkX2ltbWVkaWF0ZSgpIGZ1bmN0aW9uIGxvYWRzIHRoZSB2YWx1ZSBwYXNzZWQgYnkgdGhlDQotICBsb2FkX3ZhbHVlIHBhcmFtZXRlciBpbnRvIHRoZSBUaW1lciAxIGRvd24tY291bnRlci4gVGhlIGNvdW50ZXIgd2lsbCBkZWNyZW1lbnQNCi0gIGltbWVkaWF0ZWx5IGZyb20gdGhpcyB2YWx1ZSBvbmNlIFRpbWVyIDEgaXMgZW5hYmxlZC4gVGhlIE1TUyBUaW1lciB3aWxsDQotICBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgd2hlbiB0aGUgY291bnRlciByZWFjaGVzIHplcm8gaWYgVGltZXIgMSBpbnRlcnJ1cHRzIGFyZQ0KLSAgZW5hYmxlZC4gVGhpcyBmdW5jdGlvbiBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHdoZW4gVGltZXIgMSBpcyBjb25maWd1cmVkIGZvcg0KLSAgb25lLXNob3QgbW9kZSB0byB0aW1lIGEgc2luZ2xlIGRlbGF5Lg0KLSANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlDQotICAgIFRoZSBsb2FkX3ZhbHVlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHZhbHVlIGZyb20gd2hpY2ggdGhlIFRpbWVyIDEgZG93bi1jb3VudGVyDQotICAgIHdpbGwgc3RhcnQgZGVjcmVtZW50aW5nIGZyb20uDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfbG9hZF9pbW1lZGlhdGUodWludDMyX3QgbG9hZF92YWx1ZSkNCi17DQotICAgIFRJTUVSLT5USU0xX0xPQURWQUwgPSBsb2FkX3ZhbHVlOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2xvYWRfYmFja2dyb3VuZCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc3BlY2lmeSB0aGUgdmFsdWUgdGhhdCB3aWxsDQotICBiZSByZWxvYWRlZCBpbnRvIHRoZSBUaW1lciAxIGRvd24tY291bnRlciB0aGUgbmV4dCB0aW1lIHRoZSBjb3VudGVyIHJlYWNoZXMNCi0gIHplcm8uIFRoaXMgZnVuY3Rpb24gaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBUaW1lciAxIGlzIGNvbmZpZ3VyZWQgZm9yIHBlcmlvZGljDQotICBtb2RlIG9wZXJhdGlvbiB0byBzZWxlY3Qgb3IgY2hhbmdlIHRoZSBkZWxheSBwZXJpb2QgYmV0d2VlbiB0aGUgaW50ZXJydXB0cw0KLSAgZ2VuZXJhdGVkIGJ5IFRpbWVyIDEuDQotIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWUNCi0gICAgVGhlIGxvYWRfdmFsdWUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIGxvYWRlZCBpbnRvIHRoZQ0KLSAgICBUaW1lciAxIGRvd24tY291bnRlciB0aGUgbmV4dCB0aW1lIHRoZSBkb3duLWNvdW50ZXIgcmVhY2hlcyB6ZXJvLiBUaGUgVGltZXINCi0gICAgMSBkb3duLWNvdW50ZXIgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcgZnJvbSB0aGlzIHZhbHVlIGFmdGVyIHRoZSBjdXJyZW50DQotICAgIGNvdW50IGV4cGlyZXMuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfbG9hZF9iYWNrZ3JvdW5kKHVpbnQzMl90IGxvYWRfdmFsdWUpDQotew0KLSAgICBUSU1FUi0+VElNMV9CR0xPQURWQUwgPSBsb2FkX3ZhbHVlOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0xX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiBmb3INCi0gIFRpbWVyIDEuIFRoaXMgZnVuY3Rpb24gYWxzbyBlbmFibGVzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQNCi0gIGNvbnRyb2xsZXIuIFRoZSBUaW1lcjFfSVJRSGFuZGxlcigpIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBUaW1lciAxDQotICBpbnRlcnJ1cHQgb2NjdXJzLg0KLSAgTm90ZTogTm90ZTogCUEgVGltZXIxX0lSUUhhbmRsZXIoKSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlZmluZWQsIHdpdGgNCi0gIHdlYWsgbGlua2FnZSwgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUy1QQUwuIFlvdSBtdXN0IHByb3ZpZGUgeW91ciBvd24NCi0gIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUaW1lcjFfSVJRSGFuZGxlcigpIGZ1bmN0aW9uLCB0aGF0IHdpbGwgb3ZlcnJpZGUgdGhlDQotICBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCB0byBzdWl0IHlvdXIgYXBwbGljYXRpb24uDQotDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfZW5hYmxlX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNMUlOVEVOID0gMXU7DQotICAgIE5WSUNfRW5hYmxlSVJRKFRpbWVyMV9JUlFuKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbg0KLSAgZm9yIFRpbWVyIDEuIFRoaXMgZnVuY3Rpb24gYWxzbyBkaXNhYmxlcyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIGludGVycnVwdCBjb250cm9sbGVyLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0xX2Rpc2FibGVfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0xSU5URU4gPSAwdTsNCi0gICAgTlZJQ19EaXNhYmxlSVJRKFRpbWVyMV9JUlFuKTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMV9jbGVhcl9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNsZWFyIGEgcGVuZGluZyBpbnRlcnJ1cHQgZnJvbQ0KLSAgVGltZXIgMS4gVGhpcyBmdW5jdGlvbiBhbHNvIGNsZWFycyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMgaW50ZXJydXB0DQotICBjb250cm9sbGVyLg0KLSAgTm90ZTogWW91IG11c3QgY2FsbCB0aGUgTVNTX1RJTTFfY2xlYXJfaXJxKCkgZnVuY3Rpb24gYXMgcGFydCBvZiB5b3VyDQotICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgVGltZXIxX0lSUUhhbmRsZXIoKSBUaW1lciAxIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUNCi0gIChJU1IpIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0IGV2ZW50IHJldHJpZ2dlcmluZyBhIGNhbGwgdG8gdGhlDQotICBJU1IuDQotDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTFfY2xlYXJfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUi0+VElNMV9SSVMgPSAxdTsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNMl9pbml0KCkgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgYmxvY2sgZm9yDQotICB1c2UgYXMgYSAzMi1iaXQgdGltZXIgYW5kIHNlbGVjdHMgdGhlIG9wZXJhdGluZyBtb2RlIGZvciBUaW1lciAyLiBUaGlzIGZ1bmN0aW9uDQotICB0YWtlcyB0aGUgTVNTIFRpbWVyIGJsb2NrIG91dCBvZiByZXNldCBpbiBjYXNlIHRoaXMgaGFzbpJ0IGJlZW4gZG9uZSBhbHJlYWR5LA0KLSAgc3RvcHMgVGltZXIgMiwgZGlzYWJsZXMgaXRzIGludGVycnVwdCBhbmQgc2V0cyB0aGUgVGltZXIgMiBvcGVyYXRpbmcgbW9kZS4NCi0gIE5vdGU6IFBsZWFzZSBub3RlIHRoYXQgdGhlIFNtYXJ0RnVzaW9uMiBNU1MgVGltZXIgYmxvY2sgY2Fubm90IGJlIHVzZWQgYm90aCBhcw0KLSAgYSA2NC1iaXQgYW5kIDMyLWJpdCB0aW1lci4gQ2FsbGluZyBNU1NfVElNMl9pbml0KCkgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzDQotICBjb25maWd1cmF0aW9uIG9mIHRoZSBNU1MgVGltZXIgYXMgYSA2NC1iaXQgdGltZXIuDQotICANCi0gIEBwYXJhbSBtb2RlDQotICAgIFRoZSBtb2RlIHBhcmFtZXRlciBzcGVjaWZpZXMgd2hldGhlciB0aGUgdGltZXIgd2lsbCBvcGVyYXRlIGluIHBlcmlvZGljIG9yDQotICAgIG9uZS1zaG90IG1vZGUuIEFsbG93ZWQgdmFsdWVzIGZvciB0aGlzIHBhcmFtZXRlciBhcmU6DQotICAgICAgICAtIE1TU19USU1FUl9QRVJJT0RJQ19NT0RFDQotICAgICAgICAtIE1TU19USU1FUl9PTkVfU0hPVF9NT0RFIA0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX2luaXQobXNzX3RpbWVyX21vZGVfdCBtb2RlKQ0KLXsNCi0gICAgTlZJQ19EaXNhYmxlSVJRKFRpbWVyMl9JUlFuKTsgICAgICAgICAgICAgLyogRGlzYWJsZSB0aW1lciAyIGlycSBpbiB0aGUgQ29ydGV4LU0zIE5WSUMgKi8gIA0KLSAgICANCi0gICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+U1lTUkVHX1RJTUVSX1NPRlRSRVNFVF9NQVNLOyAvKiBUYWtlIHRpbWVyIGJsb2NrIG91dCBvZiByZXNldCAqLw0KLSAgICANCi0gICAgVElNRVItPlRJTTY0X01PREUgPSAwdTsgICAgICAgICAgICAgICAgICAgICAvKiBzd2l0Y2ggdG8gMzIgYml0cyBtb2RlICovDQotICAgIA0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0yRU5BQkxFID0gMHU7ICAgICAgICAgICAgIC8qIGRpc2FibGUgdGltZXIgKi8NCi0gICAgVElNRVJfQklUQkFORC0+VElNMklOVEVOID0gMHU7ICAgICAgICAgICAgICAvKiBkaXNhYmxlIGludGVycnVwdCAqLw0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0yTU9ERSA9ICh1aW50MzJfdCltb2RlOyAgIC8qIHNldCBtb2RlIChjb250aW51b3VzL29uZS1zaG90KSAqLw0KLSAgICANCi0gICAgVElNRVItPlRJTTJfUklTID0gMXU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciB0aW1lciAyIGludGVycnVwdCAqLw0KLSAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShUaW1lcjJfSVJRbik7ICAgICAgICAvKiBjbGVhciB0aW1lciAyIGludGVycnVwdCB3aXRoaW4gTlZJQyAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0yX3N0YXJ0KCkgZnVuY3Rpb24gZW5hYmxlcyBUaW1lciAyIGFuZCAgc3RhcnRzIGl0cyBkb3duLWNvdW50ZXINCi0gIGRlY3JlbWVudGluZyBmcm9tIHRoZSBsb2FkX3ZhbHVlIHNwZWNpZmllZCBpbiBwcmV2aW91cyBjYWxscyB0byB0aGUNCi0gIE1TU19USU0yX2xvYWRfaW1tZWRpYXRlKCkgb3IgTVNTX1RJTTJfbG9hZF9iYWNrZ3JvdW5kKCkgZnVuY3Rpb25zLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX3N0YXJ0KHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0yRU5BQkxFID0gMXU7ICAgIC8qIGVuYWJsZSB0aW1lciAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0yX3N0b3AoKSBmdW5jdGlvbiBkaXNhYmxlcyBUaW1lciAyIGFuZCBzdG9wcyBpdHMgZG93bi1jb3VudGVyDQotICBkZWNyZW1lbnRpbmcuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTJfc3RvcCh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNMkVOQUJMRSA9IDB1OyAgICAvKiBkaXNhYmxlIHRpbWVyICovDQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfZ2V0X2N1cnJlbnRfdmFsdWUoKSByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBUaW1lciAyDQotICBkb3duLWNvdW50ZXIuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHVpbnQzMl90IE1TU19USU0yX2dldF9jdXJyZW50X3ZhbHVlKHZvaWQpDQotew0KLSAgICByZXR1cm4gVElNRVItPlRJTTJfVkFMOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0yX2xvYWRfaW1tZWRpYXRlKCkgZnVuY3Rpb24gbG9hZHMgdGhlIHZhbHVlIHBhc3NlZCBieSB0aGUNCi0gIGxvYWRfdmFsdWUgcGFyYW1ldGVyIGludG8gdGhlIFRpbWVyIDIgZG93bi1jb3VudGVyLiBUaGUgY291bnRlciB3aWxsIGRlY3JlbWVudA0KLSAgaW1tZWRpYXRlbHkgZnJvbSB0aGlzIHZhbHVlIG9uY2UgVGltZXIgMiBpcyBlbmFibGVkLiBUaGUgTVNTIFRpbWVyIHdpbGwNCi0gIGdlbmVyYXRlIGFuIGludGVycnVwdCB3aGVuIHRoZSBjb3VudGVyIHJlYWNoZXMgemVybyBpZiBUaW1lciAyIGludGVycnVwdHMgYXJlDQotICBlbmFibGVkLiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2hlbiBUaW1lciAyIGlzIGNvbmZpZ3VyZWQgZm9yDQotICBvbmUtc2hvdCBtb2RlIHRvIHRpbWUgYSBzaW5nbGUgZGVsYXkuDQotICANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlDQotICAgIFRoZSBsb2FkX3ZhbHVlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHZhbHVlIGZyb20gd2hpY2ggdGhlIFRpbWVyIDINCi0gICAgZG93bi1jb3VudGVyIHdpbGwgc3RhcnQgZGVjcmVtZW50aW5nLiANCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMl9sb2FkX2ltbWVkaWF0ZSh1aW50MzJfdCBsb2FkX3ZhbHVlKQ0KLXsNCi0gICAgVElNRVItPlRJTTJfTE9BRFZBTCA9IGxvYWRfdmFsdWU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfbG9hZF9iYWNrZ3JvdW5kKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSB2YWx1ZSB0aGF0IHdpbGwNCi0gIGJlIHJlbG9hZGVkIGludG8gdGhlIFRpbWVyIDIgZG93bi1jb3VudGVyIHRoZSBuZXh0IHRpbWUgdGhlIGNvdW50ZXIgcmVhY2hlcw0KLSAgemVyby4gVGhpcyBmdW5jdGlvbiBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIFRpbWVyIDIgaXMgY29uZmlndXJlZCBmb3IgcGVyaW9kaWMNCi0gIG1vZGUgb3BlcmF0aW9uIHRvIHNlbGVjdCBvciBjaGFuZ2UgdGhlIGRlbGF5IHBlcmlvZCBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHRzDQotICBnZW5lcmF0ZWQgYnkgVGltZXIgMi4NCi0gIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWUNCi0gICAgVGhlIGxvYWRfdmFsdWUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIGxvYWRlZCBpbnRvIHRoZQ0KLSAgICBUaW1lciAyIGRvd24tY291bnRlciB0aGUgbmV4dCB0aW1lIHRoZSBkb3duLWNvdW50ZXIgcmVhY2hlcyB6ZXJvLiBUaGUgVGltZXINCi0gICAgMiBkb3duLWNvdW50ZXIgd2lsbCBzdGFydCBkZWNyZW1lbnRpbmcgZnJvbSB0aGlzIHZhbHVlIGFmdGVyIHRoZSBjdXJyZW50DQotICAgIGNvdW50IGV4cGlyZXMuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTJfbG9hZF9iYWNrZ3JvdW5kKHVpbnQzMl90IGxvYWRfdmFsdWUpDQotew0KLSAgICBUSU1FUi0+VElNMl9CR0xPQURWQUwgPSBsb2FkX3ZhbHVlOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU0yX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiBmb3INCi0gIFRpbWVyIDIuIFRoaXMgZnVuY3Rpb24gYWxzbyBlbmFibGVzIHRoZSBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMyBpbnRlcnJ1cHQNCi0gIGNvbnRyb2xsZXIuIFRoZSBUaW1lcjJfSVJRSGFuZGxlcigpIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBUaW1lciAyDQotICBpbnRlcnJ1cHQgb2NjdXJzLg0KLSAgTm90ZTogQSBUaW1lcjJfSVJRSGFuZGxlcigpIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgZGVmaW5lZCwgd2l0aCB3ZWFrDQotICBsaW5rYWdlLCBpbiB0aGUgU21hcnRGdXNpb24yIENNU0lTLVBBTC4gWW91IG11c3QgcHJvdmlkZSB5b3VyIG93biBpbXBsZW1lbnRhdGlvbg0KLSAgb2YgdGhlIFRpbWVyMl9JUlFIYW5kbGVyKCkgZnVuY3Rpb24sIHRoYXQgd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdA0KLSAgaW1wbGVtZW50YXRpb24sIHRvIHN1aXQgeW91ciBhcHBsaWNhdGlvbi4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMl9lbmFibGVfaXJxKHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU0ySU5URU4gPSAxdTsNCi0gICAgTlZJQ19FbmFibGVJUlEoIFRpbWVyMl9JUlFuICk7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGRpc2FibGUgaW50ZXJydXB0IGdlbmVyYXRpb24NCi0gIGZvciBUaW1lciAyLiBUaGlzIGZ1bmN0aW9uIGFsc28gZGlzYWJsZXMgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zDQotICBpbnRlcnJ1cHQgY29udHJvbGxlci4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNMl9kaXNhYmxlX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNMklOVEVOID0gMHU7DQotICAgIE5WSUNfRGlzYWJsZUlSUShUaW1lcjJfSVJRbik7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTJfY2xlYXJfaXJxKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBjbGVhciBhIHBlbmRpbmcgaW50ZXJydXB0IGZyb20NCi0gIFRpbWVyIDIuIFRoaXMgZnVuY3Rpb24gYWxzbyBjbGVhcnMgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIGludGVycnVwdA0KLSAgY29udHJvbGxlci4NCi0gIE5vdGU6IFlvdSBtdXN0IGNhbGwgdGhlIE1TU19USU0yX2NsZWFyX2lycSgpIGZ1bmN0aW9uIGFzIHBhcnQgb2YgeW91cg0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFRpbWVyMl9JUlFIYW5kbGVyKCkgVGltZXIgMiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lDQotICAoSVNSKSBpbiBvcmRlciB0byBwcmV2ZW50IHRoZSBzYW1lIGludGVycnVwdCBldmVudCByZXRyaWdnZXJpbmcgYSBjYWxsIHRvIHRoZQ0KLSAgSVNSLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU0yX2NsZWFyX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVItPlRJTTJfUklTID0gMXU7DQotfQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovLyoqDQotICBUaGUgTVNTX1RJTTY0X2luaXQoKSBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBmb3INCi0gIHVzZSBhcyBhIHNpbmdsZSA2NC1iaXQgdGltZXIgYW5kIHNlbGVjdHMgdGhlIG9wZXJhdGluZyBtb2RlIG9mIHRoZSB0aW1lci4gVGhpcw0KLSAgZnVuY3Rpb24gdGFrZXMgdGhlIE1TUyBUaW1lciBibG9jayBvdXQgb2YgcmVzZXQgaW4gY2FzZSB0aGlzIGhhc26SdCBiZWVuIGRvbmUNCi0gIGFscmVhZHksIHN0b3BzIHRoZSB0aW1lciwgZGlzYWJsZXMgaXRzIGludGVycnVwdHMgYW5kIHNldHMgdGhlIHRpbWVyJ3MNCi0gIG9wZXJhdGluZyBtb2RlLg0KLSAgTm90ZTogUGxlYXNlIG5vdGUgdGhhdCB0aGUgU21hcnRGdXNpb24yIE1TUyBUaW1lciBibG9jayBjYW5ub3QgYmUgdXNlZCBib3RoIGFzDQotICBhIDY0LWJpdCBhbmQgMzItYml0IHRpbWVyLiBDYWxsaW5nIE1TU19USU02NF9pbml0KCkgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzDQotICBjb25maWd1cmF0aW9uIG9mIHRoZSBNU1MgVGltZXIgYXMgYSAzMi1iaXQgdGltZXIuDQotDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoZXRoZXIgdGhlIHRpbWVyIHdpbGwgb3BlcmF0ZSBpbiBwZXJpb2RpYyBvcg0KLSAgICBvbmUtc2hvdCBtb2RlLiBBbGxvd2VkIHZhbHVlcyBmb3IgdGhpcyBwYXJhbWV0ZXIgYXJlOg0KLSAgICAgICAgLSBNU1NfVElNRVJfUEVSSU9ESUNfTU9ERQ0KLSAgICAgICAgLSBNU1NfVElNRVJfT05FX1NIT1RfTU9ERSANCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfaW5pdChtc3NfdGltZXJfbW9kZV90IG1vZGUpDQotew0KLSAgICBOVklDX0Rpc2FibGVJUlEoVGltZXIxX0lSUW4pOyAgICAgICAgIC8qIGRpc2FibGUgdGltZXIgMSBpbnRlcnJ1cHQgd2l0aGluIE5WSUMgKi8NCi0gICAgTlZJQ19EaXNhYmxlSVJRKFRpbWVyMl9JUlFuKTsgICAgICAgICAvKiBkaXNhYmxlIHRpbWVyIDIgaW50ZXJydXB0IHdpdGhpbiBOVklDICovDQotICAgIA0KLSAgICBTWVNSRUctPlNPRlRfUlNUX0NSICY9IH5TWVNSRUdfVElNRVJfU09GVFJFU0VUX01BU0s7IC8qIFRha2UgdGltZXIgYmxvY2sgb3V0IG9mIHJlc2V0ICovDQotICAgIA0KLSAgICBUSU1FUi0+VElNNjRfTU9ERSA9IDF1OyAgICAgICAgICAgICAgICAgICAgIC8qIHN3aXRjaCB0byA2NCBiaXRzIG1vZGUgKi8NCi0gICAgDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTY0RU5BQkxFID0gMHU7ICAgICAgICAgICAgLyogZGlzYWJsZSB0aW1lciAqLw0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU02NElOVEVOID0gMHU7ICAgICAgICAgICAgIC8qIGRpc2FibGUgaW50ZXJydXB0ICovDQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTY0TU9ERSA9ICh1aW50MzJfdCltb2RlOyAgLyogc2V0IG1vZGUgKGNvbnRpbnVvdXMvb25lLXNob3QpICovDQotICAgIA0KLSAgICBUSU1FUi0+VElNMV9SSVMgPSAxdTsgICAgICAgICAgICAgICAgICAgLyogY2xlYXIgdGltZXIgMSBpbnRlcnJ1cHQgKi8NCi0gICAgVElNRVItPlRJTTJfUklTID0gMXU7ICAgICAgICAgICAgICAgICAgIC8qIGNsZWFyIHRpbWVyIDIgaW50ZXJydXB0ICovDQotICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKFRpbWVyMV9JUlFuKTsgICAgLyogY2xlYXIgdGltZXIgMSBpbnRlcnJ1cHQgd2l0aGluIE5WSUMgKi8NCi0gICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoVGltZXIyX0lSUW4pOyAgICAvKiBjbGVhciB0aW1lciAyIGludGVycnVwdCB3aXRoaW4gTlZJQyAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9zdGFydCgpIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIDY0LWJpdCB0aW1lciBhbmQgc3RhcnRzIGl0cw0KLSAgZG93bi1jb3VudGVyIGRlY3JlbWVudGluZyBmcm9tIHRoZSBsb2FkX3ZhbHVlIHNwZWNpZmllZCBpbiBwcmV2aW91cyBjYWxscyB0bw0KLSAgdGhlIE1TU19USU02NF9sb2FkX2ltbWVkaWF0ZSgpIG9yIE1TU19USU02NF9sb2FkX2JhY2tncm91bmQoKSBmdW5jdGlvbnMuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X3N0YXJ0KHZvaWQpDQotew0KLSAgICBUSU1FUl9CSVRCQU5ELT5USU02NEVOQUJMRSA9IDF1OyAgICAvKiBlbmFibGUgdGltZXIgKi8NCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNNjRfc3RvcCgpIGZ1bmN0aW9uIGRpc2FibGVzIHRoZSA2NC1iaXQgdGltZXIgYW5kIHN0b3BzIGl0cw0KLSAgZG93bi1jb3VudGVyIGRlY3JlbWVudGluZy4NCi0gKi8NCi1zdGF0aWMgX19JTkxJTkUgdm9pZCBNU1NfVElNNjRfc3RvcCh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNNjRFTkFCTEUgPSAwdTsgICAgLyogZGlzYWJsZSB0aW1lciAqLw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9nZXRfY3VycmVudF92YWx1ZSgpIGlzIHVzZWQgdG8gcmVhZCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUNCi0gIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIuIA0KLSANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlX3UNCi0gICAgVGhlIGxvYWRfdmFsdWVfdSBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMzItYml0IHZhcmlhYmxlIHdoZXJlIHRoZSB1cHBlcg0KLSAgICAzMiBiaXRzIG9mIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgYmUgY29waWVkLg0KLSAgICANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlX2wNCi0gICAgVGhlIGxvYWRfdmFsdWVfbCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgMzItYml0IHZhcmlhYmxlIHdoZXJlIHRoZSBsb3dlcg0KLSAgICAzMiBiaXRzIG9mIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgYmUgY29waWVkLg0KLSAgICANCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICB1aW50MzJfdCBjdXJyZW50X3ZhbHVlX3UgPSAwOw0KLSAgICB1aW50MzJfdCBjdXJyZW50X3ZhbHVlX2wgPSAwOw0KLSAgICBNU1NfVElNNjRfZ2V0X2N1cnJlbnRfdmFsdWUoICZjdXJyZW50X3ZhbHVlX3UsICZjdXJyZW50X3ZhbHVlX2wgKTsNCi0gIEBlbmRjb2RlDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2dldF9jdXJyZW50X3ZhbHVlDQotKA0KLSAgICB1aW50MzJfdCAqIGxvYWRfdmFsdWVfdSwNCi0gICAgdWludDMyX3QgKiBsb2FkX3ZhbHVlX2wNCi0pDQotew0KLSAgICAqbG9hZF92YWx1ZV9sID0gVElNRVItPlRJTTY0X1ZBTF9MOw0KLSAgICAqbG9hZF92YWx1ZV91ID0gVElNRVItPlRJTTY0X1ZBTF9VOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9sb2FkX2ltbWVkaWF0ZSgpIGZ1bmN0aW9uIGxvYWRzIHRoZSB2YWx1ZXMgcGFzc2VkIGJ5IHRoZQ0KLSAgbG9hZF92YWx1ZV91IGFuZCBsb2FkX3ZhbHVlX2wgcGFyYW1ldGVycyBpbnRvIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyLg0KLSAgVGhlIGNvdW50ZXIgd2lsbCBkZWNyZW1lbnQgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY29uY2F0ZW5hdGVkIDY0LWJpdCB2YWx1ZSBvbmNlDQotICB0aGUgNjQtYml0IHRpbWVyIGlzIGVuYWJsZWQuIFRoZSBNU1MgVGltZXIgd2lsbCBnZW5lcmF0ZSBhbiBpbnRlcnJ1cHQgd2hlbiB0aGUNCi0gIGNvdW50ZXIgcmVhY2hlcyB6ZXJvIGlmIDY0LWJpdCB0aW1lciBpbnRlcnJ1cHRzIGFyZSBlbmFibGVkLiBUaGlzIGZ1bmN0aW9uIGlzDQotICBpbnRlbmRlZCB0byBiZSB1c2VkIHdoZW4gdGhlIDY0LWJpdCB0aW1lciBpcyBjb25maWd1cmVkIGZvciBvbmUtc2hvdCBtb2RlIHRvDQotICB0aW1lIGEgc2luZ2xlIGRlbGF5Lg0KLSANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlX3UNCi0gICAgVGhlIGxvYWRfdmFsdWVfdSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSA2NC1iaXQgdGltZXINCi0gICAgbG9hZCB2YWx1ZSBmcm9tIHdoaWNoIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgc3RhcnQgZGVjcmVtZW50aW5nLg0KLSAgICANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlX2wNCi0gICAgVGhlIGxvYWRfdmFsdWVfbCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBsb3dlciAzMiBiaXRzIG9mIHRoZSA2NC1iaXQgdGltZXINCi0gICAgbG9hZCB2YWx1ZSBmcm9tIHdoaWNoIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgc3RhcnQgZGVjcmVtZW50aW5nLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU02NF9sb2FkX2ltbWVkaWF0ZQ0KLSgNCi0gICAgdWludDMyX3QgbG9hZF92YWx1ZV91LA0KLSAgICB1aW50MzJfdCBsb2FkX3ZhbHVlX2wNCi0pDQotew0KLSAgICBUSU1FUi0+VElNNjRfTE9BRFZBTF9VID0gbG9hZF92YWx1ZV91Ow0KLSAgICBUSU1FUi0+VElNNjRfTE9BRFZBTF9MID0gbG9hZF92YWx1ZV9sOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9sb2FkX2JhY2tncm91bmQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIDY0LWJpdCB2YWx1ZQ0KLSAgdGhhdCB3aWxsIGJlIHJlbG9hZGVkIGludG8gdGhlIDY0LWJpdCB0aW1lciBkb3duLWNvdW50ZXIgdGhlIG5leHQgdGltZSB0aGUNCi0gIGNvdW50ZXIgcmVhY2hlcyB6ZXJvLiBUaGlzIGZ1bmN0aW9uIGlzIHR5cGljYWxseSB1c2VkIHdoZW4gdGhlIDY0LWJpdCB0aW1lciBpcw0KLSAgY29uZmlndXJlZCBmb3IgcGVyaW9kaWMgbW9kZSBvcGVyYXRpb24gdG8gc2VsZWN0IG9yIGNoYW5nZSB0aGUgZGVsYXkgcGVyaW9kDQotICBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHRzIGdlbmVyYXRlZCBieSB0aGUgNjQtYml0IHRpbWVyLg0KLSANCi0gIEBwYXJhbSBsb2FkX3ZhbHVlX3UNCi0gICAgVGhlIGxvYWRfdmFsdWVfdSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB1cHBlciAzMiBiaXRzIG9mIHRoZSA2NC1iaXQgdGltZXINCi0gICAgbG9hZCB2YWx1ZS4gVGhlIGNvbmNhdGVuYXRlZCA2NC1iaXQgdmFsdWUgZm9ybWVkIGZyb20gbG9hZF92YWx1ZV91IGFuZA0KLSAgICBsb2FkX3ZhbHVlX2wgd2lsbCBiZSBsb2FkZWQgaW50byB0aGUgNjQtYml0IHRpbWVyIGRvd24tY291bnRlciB0aGUgbmV4dA0KLSAgICB0aW1lIHRoZSBkb3duLWNvdW50ZXIgcmVhY2hlcyB6ZXJvLiBUaGUgNjQtYml0IHRpbWVyIGRvd24tY291bnRlciB3aWxsIHN0YXJ0DQotICAgIGRlY3JlbWVudGluZyBmcm9tIHRoZSBjb25jYXRlbmF0ZWQgNjQtYml0IHZhbHVlIGFmdGVyIHRoZSBjdXJyZW50IGNvdW50DQotICAgIGV4cGlyZXMuDQotICAgIA0KLSAgQHBhcmFtIGxvYWRfdmFsdWVfbA0KLSAgICBUaGUgbG9hZF92YWx1ZV9sIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGxvd2VyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB0aW1lcg0KLSAgICBsb2FkIHZhbHVlLiBUaGUgY29uY2F0ZW5hdGVkIDY0LWJpdCB2YWx1ZSBmb3JtZWQgZnJvbSBsb2FkX3ZhbHVlX3UgYW5kDQotICAgIGxvYWRfdmFsdWVfbCB3aWxsIGJlIGxvYWRlZCBpbnRvIHRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHRoZSBuZXh0IHRpbWUNCi0gICAgdGhlIGRvd24tY291bnRlciByZWFjaGVzIHplcm8uIFRoZSA2NC1iaXQgdGltZXIgZG93bi1jb3VudGVyIHdpbGwgc3RhcnQNCi0gICAgZGVjcmVtZW50aW5nIGZyb20gdGhlIGNvbmNhdGVuYXRlZCA2NC1iaXQgdmFsdWUgYWZ0ZXIgdGhlIGN1cnJlbnQgY291bnQNCi0gICAgZXhwaXJlcy4NCi0gDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2xvYWRfYmFja2dyb3VuZA0KLSgNCi0gICAgdWludDMyX3QgbG9hZF92YWx1ZV91LA0KLSAgICB1aW50MzJfdCBsb2FkX3ZhbHVlX2wNCi0pDQotew0KLSAgICBUSU1FUi0+VElNNjRfQkdMT0FEVkFMX1UgPSBsb2FkX3ZhbHVlX3U7DQotICAgIFRJTUVSLT5USU02NF9CR0xPQURWQUxfTCA9IGxvYWRfdmFsdWVfbDsNCi19DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8vKioNCi0gIFRoZSBNU1NfVElNNjRfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIGludGVycnVwdCBnZW5lcmF0aW9uIGZvcg0KLSAgdGhlIDY0LWJpdCB0aW1lci4gVGhpcyBmdW5jdGlvbiBhbHNvIGVuYWJsZXMgdGhlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zDQotICBpbnRlcnJ1cHQgY29udHJvbGxlci4gVGhlIFRpbWVyMV9JUlFIYW5kbGVyKCkgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2hlbiBhDQotICA2NC1iaXQgdGltZXIgaW50ZXJydXB0IG9jY3Vycy4NCi0gIE5vdGU6IEEgVGltZXIxX0lSUUhhbmRsZXIoKSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlzIGRlZmluZWQsIHdpdGggd2Vhaw0KLSAgbGlua2FnZSwgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUy1QQUwuIFlvdSBtdXN0IHByb3ZpZGUgeW91ciBvd24NCi0gIGltcGxlbWVudGF0aW9uIG9mIHRoZSBUaW1lcjFfSVJRSGFuZGxlcigpIGZ1bmN0aW9uLCB0aGF0IHdpbGwgb3ZlcnJpZGUgdGhlDQotICBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCB0byBzdWl0IHlvdXIgYXBwbGljYXRpb24uDQotICBOb3RlOiBUaGUgTVNTX1RJTTY0X2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBlbmFibGVzIGFuZCB1c2VzIFRpbWVyIDEgaW50ZXJydXB0cw0KLSAgZm9yIHRoZSA2NC1iaXQgdGltZXIuIFRpbWVyIDIgaW50ZXJydXB0cyByZW1haW4gZGlzYWJsZWQuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2VuYWJsZV9pcnEodm9pZCkNCi17DQotICAgIFRJTUVSX0JJVEJBTkQtPlRJTTY0SU5URU4gPSAxdTsNCi0gICAgTlZJQ19FbmFibGVJUlEoVGltZXIxX0lSUW4pOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBpbnRlcnJ1cHQgZ2VuZXJhdGlvbg0KLSAgZm9yIHRoZSA2NC1iaXQgdGltZXIuIFRoaXMgZnVuY3Rpb24gYWxzbyBkaXNhYmxlcyB0aGUgaW50ZXJydXB0IGluIHRoZQ0KLSAgQ29ydGV4LU0zIGludGVycnVwdCBjb250cm9sbGVyLg0KLSAqLw0KLXN0YXRpYyBfX0lOTElORSB2b2lkIE1TU19USU02NF9kaXNhYmxlX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVJfQklUQkFORC0+VElNNjRJTlRFTiA9IDB1Ow0KLSAgICBOVklDX0Rpc2FibGVJUlEoVGltZXIxX0lSUW4pOw0KLX0NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLy8qKg0KLSAgVGhlIE1TU19USU02NF9jbGVhcl9pcnEoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNsZWFyIGEgcGVuZGluZyBpbnRlcnJ1cHQgZnJvbQ0KLSAgdGhlIDY0LWJpdCB0aW1lci4gVGhpcyBmdW5jdGlvbiBhbHNvIGNsZWFycyB0aGUgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIGludGVycnVwdCBjb250cm9sbGVyLg0KLSAgTm90ZTogWW91IG11c3QgY2FsbCB0aGUgTVNTX1RJTTY0X2NsZWFyX2lycSgpIGZ1bmN0aW9uIGFzIHBhcnQgb2YgeW91cg0KLSAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFRpbWVyMV9JUlFIYW5kbGVyKCkgNjQtYml0IHRpbWVyIGludGVycnVwdCBzZXJ2aWNlDQotICByb3V0aW5lIChJU1IpIGluIG9yZGVyIHRvIHByZXZlbnQgdGhlIHNhbWUgaW50ZXJydXB0IGV2ZW50IHJldHJpZ2dlcmluZyBhDQotICBjYWxsIHRvIHRoZSBJU1IuDQotICovDQotc3RhdGljIF9fSU5MSU5FIHZvaWQgTVNTX1RJTTY0X2NsZWFyX2lycSh2b2lkKQ0KLXsNCi0gICAgVElNRVItPlRJTTY0X1JJUyA9IDF1Ow0KLX0NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qTVNTX1RJTUVSX0hfKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnQvbXNzX3VhcnQuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjAwYWNjLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc2MiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogU21hcnRGdXNpb24yIE1pY3JvY29udHJvbGxlciBTdWJzeXN0ZW0gTU1VQVJUIGJhcmUgbWV0YWwgc29mdHdhcmUgZHJpdmVyDQotICogaW1wbGVtZW50YXRpb24uDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1NjEwICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDUgMTQ6MTk6MzAgKzAxMDAgKEZyaSwgMDUgQXByIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSAibXNzX3VhcnQuaCINCi0jaW5jbHVkZSAibXNzX3VhcnRfcmVncy5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9tc3NfYXNzZXJ0LmgiDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL2h3X3JlZ19pby5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9zeXN0ZW1fbTJzeHh4LmgiDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotZXh0ZXJuICJDIiB7DQotI2VuZGlmDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBEZWZpbmVzDQotICovDQotI2RlZmluZSBUWF9DT01QTEVURSAgICAgICAgICAgIDB1DQotI2RlZmluZSBUWF9GSUZPX1NJWkUgICAgICAgICAgIDE2dQ0KLQ0KLSNkZWZpbmUgRkNSX1RSSUdfTEVWRUxfTUFTSyAgICAweEMwdQ0KLQ0KLSNkZWZpbmUgSUlSRl9NQVNLICAgICAgICAgICAgICAweDBGdQ0KLQ0KLSNkZWZpbmUgSU5WQUxJRF9JTlRFUlJVUFQgICAgICAwdQ0KLSNkZWZpbmUgSU5WQUxJRF9JUlFfSEFORExFUiAgICAoKG1zc191YXJ0X2lycV9oYW5kbGVyX3QpIDApDQotI2RlZmluZSBOVUxMX0hBTkRMRVIgICAgICAgICAgICgobXNzX3VhcnRfaXJxX2hhbmRsZXJfdCkgMCkNCi0NCi0jZGVmaW5lIE1TU19VQVJUX0RBVEFfUkVBRFkgICAgKCh1aW50OF90KSAweDAxKQ0KLQ0KLSNkZWZpbmUgU1lOQ19BU1lOQ19NT0RFX01BU0sgICAoMHg3dSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFBvc3NpYmxlIHZhbHVlcyBmb3IgSW50ZXJydXB0IElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyIEZpZWxkLg0KLSAqLw0KLSNkZWZpbmUgSUlSRl9NT0RFTV9TVEFUVVMgICAweDAwdQ0KLSNkZWZpbmUgSUlSRl9USFJFICAgICAgICAgICAweDAydQ0KLSNkZWZpbmUgSUlSRl9NTUkgICAgICAgICAgICAweDAzdQ0KLSNkZWZpbmUgSUlSRl9SWF9EQVRBICAgICAgICAweDA0dQ0KLSNkZWZpbmUgSUlSRl9SWF9MSU5FX1NUQVRVUyAweDA2dQ0KLSNkZWZpbmUgSUlSRl9EQVRBX1RJTUVPVVQgICAweDBDdQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogUmVjZWl2ZXIgZXJyb3Igc3RhdHVzIG1hc2suDQotICovDQotI2RlZmluZSBTVEFUVVNfRVJST1JfTUFTSyAgICAoIE1TU19VQVJUX09WRVJVTl9FUlJPUiB8IE1TU19VQVJUX1BBUklUWV9FUlJPUiB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfRlJBTUlOR19FUlJPUiAgfCBNU1NfVUFSVF9CUkVBS19FUlJPUiB8IFwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfRklGT19FUlJPUikNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIENvcnRleC1NMyBpbnRlcnJ1cHQgaGFuZGxlciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgYXMgcGFydCBvZiB0aGUgTVNTIFVBUlQNCi0gKiBkcml2ZXIuDQotICovDQotI2lmIGRlZmluZWQoX19HTlVDX18pDQotX19hdHRyaWJ1dGVfXygoX19pbnRlcnJ1cHRfXykpIHZvaWQgVUFSVDBfSVJRSGFuZGxlcih2b2lkKTsNCi0jZWxzZQ0KLXZvaWQgVUFSVDBfSVJRSGFuZGxlcih2b2lkKTsNCi0jZW5kaWYNCi0NCi0jaWYgZGVmaW5lZChfX0dOVUNfXykNCi1fX2F0dHJpYnV0ZV9fKChfX2ludGVycnVwdF9fKSkgdm9pZCBVQVJUMV9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbHNlDQotdm9pZCBVQVJUMV9JUlFIYW5kbGVyKHZvaWQpOw0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTG9jYWwgZnVuY3Rpb25zLg0KLSAqLw0KLXN0YXRpYyB2b2lkIGdsb2JhbF9pbml0KG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgICAgICAgICAgICAgICAgICAgICB1aW50OF90IGxpbmVfY29uZmlnKTsNCi1zdGF0aWMgdm9pZCBNU1NfVUFSVF9pc3IobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCk7DQotc3RhdGljIHZvaWQgZGVmYXVsdF90eF9oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpOw0KLQ0KLXN0YXRpYyB2b2lkIGNvbmZpZ19iYXVkX2Rpdmlzb3JzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkcmF0ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBJbnN0YW5jZSBkZWZpbml0aW9ucw0KLSAqLw0KLW1zc191YXJ0X2luc3RhbmNlX3QgZ19tc3NfdWFydDA7DQotbXNzX3VhcnRfaW5zdGFuY2VfdCBnX21zc191YXJ0MTsNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIFB1YmxpYyBGdW5jdGlvbnMNCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfaW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcNCi0pDQotew0KLSAgICAvKiBUaGUgZHJpdmVyIGV4cGVjdHMgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxIHRvIGJlIHRoZSBvbmx5DQotICAgICAqIG1zc191YXJ0X2luc3RhbmNlX3QgaW5zdGFuY2VzIHVzZWQgdG8gaWRlbnRpZnkgVUFSVDAgYW5kIFVBUlQxLiAqLw0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIC8qIFBlcmZvcm0gZ2VuZXJpYyBpbml0aWFsaXphdGlvbiAqLw0KLSAgICBnbG9iYWxfaW5pdCh0aGlzX3VhcnQsIGJhdWRfcmF0ZSwgbGluZV9jb25maWcpOw0KLQ0KLSAgICAvKiBEaXNhYmxlIExJTiBtb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLCBFTElOKTsNCi0NCi0gICAgLyogRGlzYWJsZSBJckRBIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsIEVJUkQpOw0KLQ0KLSAgICAvKiBEaXNhYmxlIFNtYXJ0Q2FyZCBNb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLCBFRVJSKTsNCi0NCi0gICAgLyogc2V0IGRlZmF1bHQgdHggaGFuZGxlciBmb3IgYXV0b21hdGVkIFRYIHVzaW5nIGludGVycnVwdCBpbiBVU0FSVCBtb2RlICovDQotICAgIHRoaXNfdWFydC0+dHhfaGFuZGxlciA9IGRlZmF1bHRfdHhfaGFuZGxlcjsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZCBNU1NfVUFSVF9saW5faW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcNCi0pDQotew0KLSAgICAvKiBUaGUgZHJpdmVyIGV4cGVjdHMgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxIHRvIGJlIHRoZSBvbmx5DQotICAgICAqIG1zc191YXJ0X2luc3RhbmNlX3QgaW5zdGFuY2VzIHVzZWQgdG8gaWRlbnRpZnkgVUFSVDAgYW5kIFVBUlQxLiAqLw0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIC8qIFBlcmZvcm0gZ2VuZXJpYyBpbml0aWFsaXphdGlvbiAqLw0KLSAgICBnbG9iYWxfaW5pdCh0aGlzX3VhcnQsIGJhdWRfcmF0ZSwgbGluZV9jb25maWcpOw0KLQ0KLSAgICAgLyogRW5hYmxlIExJTiBtb2RlICovDQotICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCwgRUxJTik7DQotDQotICAgIC8qIERpc2FibGUgSXJEQSBtb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLCBFSVJEKTsNCi0NCi0gICAgLyogRGlzYWJsZSBTbWFydENhcmQgTW9kZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMiwgRUVSUik7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9pcmRhX2luaXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QqIHRoaXNfdWFydCwNCi0gICAgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICB1aW50OF90IGxpbmVfY29uZmlnLA0KLSAgICBtc3NfdWFydF9yemlfcG9sYXJpdHlfdCByeHBvbCwNCi0gICAgbXNzX3VhcnRfcnppX3BvbGFyaXR5X3QgdHhwb2wsDQotICAgIG1zc191YXJ0X3J6aV9wdWxzZXdpZHRoX3QgcHcNCi0pDQotew0KLSAgICAvKiBUaGUgZHJpdmVyIGV4cGVjdHMgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxIHRvIGJlIHRoZSBvbmx5DQotICAgICAqIG1zc191YXJ0X2luc3RhbmNlX3QgaW5zdGFuY2VzIHVzZWQgdG8gaWRlbnRpZnkgVUFSVDAgYW5kIFVBUlQxLiAqLw0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIC8qIFBlcmZvcm0gZ2VuZXJpYyBpbml0aWFsaXphdGlvbiAqLw0KLSAgICBnbG9iYWxfaW5pdCh0aGlzX3VhcnQsIGJhdWRfcmF0ZSwgbGluZV9jb25maWcpOw0KLQ0KLSAgICAgLyogRW5hYmxlIExJTiBtb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLCBFTElOKTsNCi0NCi0gICAgLyogRGlzYWJsZSBJckRBIG1vZGUgKi8NCi0gICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLCBFSVJEKTsNCi0gICAgKChyeHBvbCA9PSBNU1NfVUFSVF9BQ1RJVkVfTE9XKSA/IGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVJUlgpIDoNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFSVJYKSk7DQotDQotICAgICgodHhwb2wgPT0gTVNTX1VBUlRfQUNUSVZFX0xPVykgPyBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFSVRYKSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRUlUWCkpOw0KLQ0KLSAgICAoKHB3ID09IE1TU19VQVJUXzNfQllfMTYpID8gY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRUlUUCkgOg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0xLEVJVFApKTsNCi0gICAgLyogRGlzYWJsZSBTbWFydENhcmQgTW9kZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMiwgRUVSUik7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zbWFydGNhcmRfaW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcNCi0pDQotew0KLSAgICAvKiBUaGUgZHJpdmVyIGV4cGVjdHMgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxIHRvIGJlIHRoZSBvbmx5DQotICAgICAqIG1zc191YXJ0X2luc3RhbmNlX3QgaW5zdGFuY2VzIHVzZWQgdG8gaWRlbnRpZnkgVUFSVDAgYW5kIFVBUlQxLiAqLw0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIC8qIFBlcmZvcm0gZ2VuZXJpYyBpbml0aWFsaXphdGlvbiAqLw0KLSAgICBnbG9iYWxfaW5pdCh0aGlzX3VhcnQsIGJhdWRfcmF0ZSwgbGluZV9jb25maWcpOw0KLQ0KLSAgICAvKiBEaXNhYmxlIExJTiBtb2RlICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLCBFTElOKTsNCi0NCi0gICAgLyogRGlzYWJsZSBJckRBIG1vZGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsIEVJUkQpOw0KLQ0KLSAgICAvKiBFbmFibGUgU21hcnRDYXJkIE1vZGUgOiBPbmx5IHdoZW4gZGF0YSBpcyA4LWJpdCBhbmQgMiBzdG9wIGJpdHMqLw0KLSAgICBpZiggKCBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX1RXT19TVE9QX0JJVFMpID09DQotICAgICAgICAobGluZV9jb25maWcgJiAoTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9UV09fU1RPUF9CSVRTKSkpDQotICAgIHsNCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMiwgRUVSUik7DQotICAgICAgICAvKiBFbmFibGUgc2luZ2xlIHdpcmUgaGFsZi1kdXBsZXggbW9kZSAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLEVTV00pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9wb2xsZWRfdHgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwYnVmZiwNCi0gICAgdWludDMyX3QgdHhfc2l6ZQ0KLSkNCi17DQotICAgIHVpbnQzMl90IGNoYXJfaWR4ID0gMHU7DQotICAgIHVpbnQzMl90IHNpemVfc2VudDsNCi0gICAgdWludDhfdCBzdGF0dXM7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKHBidWZmICE9ICggKHVpbnQ4X3QgKikwKSk7DQotICAgIEFTU0VSVCh0eF9zaXplID4gMHUpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgIChwYnVmZiAhPSAoKHVpbnQ4X3QgKikwKSkgJiYgKHR4X3NpemUgPiAwdSkpDQotICAgIHsNCi0gICAgICAgICAvKiBSZW1haW4gaW4gdGhpcyBsb29wIHVudGlsIHRoZSBlbnRpcmUgaW5wdXQgYnVmZmVyDQotICAgICAgICAgICogaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gdGhlIFVBUlQuDQotICAgICAgICAgICovDQotICAgICAgICBkbyB7DQotICAgICAgICAgICAgLyogUmVhZCB0aGUgTGluZSBTdGF0dXMgUmVnaXN0ZXIgYW5kIHVwZGF0ZSB0aGUgc3RpY2t5IHJlY29yZCAqLw0KLSAgICAgICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gc3RhdHVzOw0KLQ0KLSAgICAgICAgICAgIC8qIENoZWNrIGlmIFRYIEZJRk8gaXMgZW1wdHkuICovDQotICAgICAgICAgICAgaWYoc3RhdHVzICYgTVNTX1VBUlRfVEhSRSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIHVpbnQzMl90IGZpbGxfc2l6ZSA9IFRYX0ZJRk9fU0laRTsNCi0NCi0gICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdHJhbnNtaXQuICovDQotICAgICAgICAgICAgICAgIGlmKHR4X3NpemUgPCBUWF9GSUZPX1NJWkUpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIGZpbGxfc2l6ZSA9IHR4X3NpemU7DQotICAgICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgICAgLyogRmlsbCB0aGUgVFggRklGTyB3aXRoIHRoZSBjYWxjdWxhdGVkIHRoZSBudW1iZXIgb2YgYnl0ZXMuICovDQotICAgICAgICAgICAgICAgIGZvcihzaXplX3NlbnQgPSAwdTsgc2l6ZV9zZW50IDwgZmlsbF9zaXplOyArK3NpemVfc2VudCkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgLyogU2VuZCBuZXh0IGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyLiAqLw0KLSAgICAgICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPlRIUiA9IHBidWZmW2NoYXJfaWR4XTsNCi0gICAgICAgICAgICAgICAgICAgIGNoYXJfaWR4Kys7DQotICAgICAgICAgICAgICAgIH0NCi0NCi0gICAgICAgICAgICAgICAgLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgdW50cmFuc21pdHRlZCBieXRlcyByZW1haW5pbmcuICovDQotICAgICAgICAgICAgICAgIHR4X3NpemUgLT0gc2l6ZV9zZW50Ow0KLSAgICAgICAgICAgIH0NCi0gICAgICAgIH0gd2hpbGUodHhfc2l6ZSk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3BvbGxlZF90eF9zdHJpbmcNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwX3N6X3N0cmluZw0KLSkNCi17DQotICAgIHVpbnQzMl90IGNoYXJfaWR4ID0gMHU7DQotICAgIHVpbnQzMl90IGZpbGxfc2l6ZTsNCi0gICAgdWludDhfdCBkYXRhX2J5dGU7DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChwX3N6X3N0cmluZyAhPSAoKHVpbnQ4X3QgKikwKSk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAocF9zel9zdHJpbmcgIT0gKCh1aW50OF90ICopMCkpKQ0KLSAgICB7DQotICAgICAgICAvKiBHZXQgdGhlIGZpcnN0IGRhdGEgYnl0ZSBmcm9tIHRoZSBpbnB1dCBidWZmZXIgKi8NCi0gICAgICAgIGRhdGFfYnl0ZSA9IHBfc3pfc3RyaW5nW2NoYXJfaWR4XTsNCi0NCi0gICAgICAgIC8qIEZpcnN0IGNoZWNrIGZvciB0aGUgTlVMTCB0ZXJtaW5hdG9yIGJ5dGUuDQotICAgICAgICAgKiBUaGVuIHJlbWFpbiBpbiB0aGlzIGxvb3AgdW50aWwgdGhlIGVudGlyZSBzdHJpbmcgaW4gdGhlIGlucHV0IGJ1ZmZlcg0KLSAgICAgICAgICogaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gdGhlIFVBUlQuDQotICAgICAgICAgKi8NCi0gICAgICAgIHdoaWxlKDB1ICE9IGRhdGFfYnl0ZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBXYWl0IHVudGlsIFRYIEZJRk8gaXMgZW1wdHkuICovDQotICAgICAgICAgICAgZG8gew0KLSAgICAgICAgICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotICAgICAgICAgICAgfSB3aGlsZSAoMHUgPT0gKHN0YXR1cyAmIE1TU19VQVJUX1RIUkUpKTsNCi0NCi0gICAgICAgICAgICAvKiBTZW5kIGJ5dGVzIGZyb20gdGhlIGlucHV0IGJ1ZmZlciB1bnRpbCB0aGUgVFggRklGTyBpcyBmdWxsDQotICAgICAgICAgICAgICogb3Igd2UgcmVhY2ggdGhlIE5VTEwgdGVybWluYXRvciBieXRlLg0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIGZpbGxfc2l6ZSA9IDB1Ow0KLSAgICAgICAgICAgIHdoaWxlKCgwdSAhPSBkYXRhX2J5dGUpICYmIChmaWxsX3NpemUgPCBUWF9GSUZPX1NJWkUpKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyogU2VuZCB0aGUgZGF0YSBieXRlICovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5USFIgPSBkYXRhX2J5dGU7DQotICAgICAgICAgICAgICAgICsrZmlsbF9zaXplOw0KLSAgICAgICAgICAgICAgICBjaGFyX2lkeCsrOw0KLSAgICAgICAgICAgICAgICAvKiBHZXQgdGhlIG5leHQgZGF0YSBieXRlIGZyb20gdGhlIGlucHV0IGJ1ZmZlciAqLw0KLSAgICAgICAgICAgICAgICBkYXRhX2J5dGUgPSBwX3N6X3N0cmluZ1tjaGFyX2lkeF07DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9pcnFfdHgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiBwYnVmZiwNCi0gICAgdWludDMyX3QgdHhfc2l6ZQ0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKHBidWZmICE9ICgodWludDhfdCAqKTApKTsNCi0gICAgQVNTRVJUKHR4X3NpemUgPiAwdSk7DQotDQotICAgIGlmKCh0eF9zaXplID4gMHUpICYmICggcGJ1ZmYgIT0gKCh1aW50OF90ICopMCkpICYmDQotICAgICAgKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpKQ0KLSAgICB7DQotICAgICAgICAvKkluaXRpYWxpc2UgdGhlIHRyYW5zbWl0IGluZm8gZm9yIHRoZSBVQVJUIGluc3RhbmNlIHdpdGggdGhlIGFyZ3VtZW50cy4qLw0KLSAgICAgICAgdGhpc191YXJ0LT50eF9idWZmZXIgPSBwYnVmZjsNCi0gICAgICAgIHRoaXNfdWFydC0+dHhfYnVmZl9zaXplID0gdHhfc2l6ZTsNCi0gICAgICAgIHRoaXNfdWFydC0+dHhfaWR4ID0gKHVpbnQxNl90KTA7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIGFzc2lnbiBkZWZhdWx0IGhhbmRsZXIgZm9yIGRhdGEgdHJhbnNmZXIgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+dHhfaGFuZGxlciA9IGRlZmF1bHRfdHhfaGFuZGxlcjsNCi0NCi0gICAgICAgIC8qIGVuYWJsZXMgVFggaW50ZXJydXB0ICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JRVIsRVRCRUkpOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIENvcnRleC1NMyBOVklDLiAqLw0KLSAgICAgICAgTlZJQ19FbmFibGVJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi1pbnQ4X3QNCi1NU1NfVUFSVF90eF9jb21wbGV0ZQ0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIGludDhfdCByZXRfdmFsdWUgPSAwOw0KLSAgICB1aW50OF90IHN0YXR1cyA9IDB1Ow0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIFJlYWQgdGhlIExpbmUgU3RhdHVzIFJlZ2lzdGVyIGFuZCB1cGRhdGUgdGhlIHN0aWNreSByZWNvcmQuICovDQotICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gc3RhdHVzOw0KLQ0KLSAgICAgICAgaWYoKFRYX0NPTVBMRVRFID09IHRoaXNfdWFydC0+dHhfYnVmZl9zaXplKSAmJg0KLSAgICAgICAgICAgKChzdGF0dXMgJiBNU1NfVUFSVF9URU1UKSAhPSAwdSkpDQotICAgICAgICB7DQotICAgICAgICAgICAgcmV0X3ZhbHVlID0gKGludDhfdCkxOw0KLSAgICAgICAgfQ0KLSAgICB9DQotICAgIHJldHVybiByZXRfdmFsdWU7DQotfQ0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXNpemVfdA0KLU1TU19VQVJUX2dldF9yeA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCAqIHJ4X2J1ZmYsDQotICAgIHNpemVfdCBidWZmX3NpemUNCi0pDQotew0KLSAgICBzaXplX3Qgcnhfc2l6ZSA9IDB1Ow0KLSAgICB1aW50OF90IHN0YXR1cyA9IDB1Ow0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChyeF9idWZmICE9ICgodWludDhfdCAqKTApKTsNCi0gICAgQVNTRVJUKGJ1ZmZfc2l6ZSA+IDB1KTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChyeF9idWZmICE9ICgodWludDhfdCAqKTApKSAmJiAoYnVmZl9zaXplID4gMHUpKQ0KLSAgICB7DQotICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gc3RhdHVzOw0KLQ0KLSAgICAgICAgd2hpbGUoKChzdGF0dXMgJiBNU1NfVUFSVF9EQVRBX1JFQURZKSAhPSAwdSkgJiYNCi0gICAgICAgICAgICAgIChyeF9zaXplIDwgYnVmZl9zaXplKSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICByeF9idWZmW3J4X3NpemVdID0gdGhpc191YXJ0LT5od19yZWctPlJCUjsNCi0gICAgICAgICAgICArK3J4X3NpemU7DQotICAgICAgICAgICAgc3RhdHVzID0gdGhpc191YXJ0LT5od19yZWctPkxTUjsNCi0gICAgICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotICAgICAgICB9DQotICAgIH0NCi0gICAgcmV0dXJuIHJ4X3NpemU7DQotfQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfaXJxDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfdCBpcnFfbWFzaw0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKE1TU19VQVJUX0lOVkFMSURfSVJRID4gaXJxX21hc2spOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfSVJRID4gaXJxX21hc2spKQ0KLSAgICB7DQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIGlycV9tYXNrIGVuY29kaW5nOiAxLSBlbmFibGUNCi0gICAgICAgICAqIGJpdCAwIC0gUmVjZWl2ZSBEYXRhIEF2YWlsYWJsZSBJbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCAxIC0gVHJhbnNtaXR0ZXIgSG9sZGluZyAgUmVnaXN0ZXIgRW1wdHkgSW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgMiAtIFJlY2VpdmVyIExpbmUgU3RhdHVzIEludGVycnVwdA0KLSAgICAgICAgICogYml0IDMgLSBNb2RlbSBTdGF0dXMgSW50ZXJydXB0DQotICAgICAgICAgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5JRVIgfD0gKHVpbnQ4X3QpaXJxX21hc2sgJiBJSVJGX01BU0s7DQotDQotICAgICAgICAvKg0KLSAgICAgICAgICogYml0IDQgLSBSZWNlaXZlciB0aW1lLW91dCBpbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCA1IC0gTkFDSyAvIEVSUiBzaWduYWwgaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgNiAtIFBJRCBwYXJpdHkgZXJyb3IgaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgNyAtIExJTiBicmVhayBkZXRlY3Rpb24gaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgOCAtIExJTiBTeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQNCi0gICAgICAgICAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPklFTSB8PSAodWludDhfdCkoKCh1aW50MzJfdClpcnFfbWFzayAmIH4oKHVpbnQzMl90KUlJUkZfTUFTSykpID4+IDR1KTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfaXJxDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfdCBpcnFfbWFzaw0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogaXJxX21hc2sgZW5jb2Rpbmc6IDEgLSBkaXNhYmxlDQotICAgICAgICAgKiBiaXQgMCAtIFJlY2VpdmUgRGF0YSBBdmFpbGFibGUgSW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgMSAtIFRyYW5zbWl0dGVyIEhvbGRpbmcgIFJlZ2lzdGVyIEVtcHR5IEludGVycnVwdA0KLSAgICAgICAgICogYml0IDIgLSBSZWNlaXZlciBMaW5lIFN0YXR1cyBJbnRlcnJ1cHQNCi0gICAgICAgICAqIGJpdCAzIC0gTW9kZW0gU3RhdHVzIEludGVycnVwdA0KLSAgICAgICAgICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+SUVSICY9ICgodWludDhfdCkofigodWludDMyX3QpaXJxX21hc2sgJiAodWludDMyX3QpSUlSRl9NQVNLKSkpOw0KLQ0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIGJpdCA0IC0gUmVjZWl2ZXIgdGltZS1vdXQgaW50ZXJydXB0DQotICAgICAgICAgKiBiaXQgNSAtIE5BQ0sgLyBFUlIgc2lnbmFsIGludGVycnVwdA0KLSAgICAgICAgICogYml0IDYgLSBQSUQgcGFyaXR5IGVycm9yIGludGVycnVwdA0KLSAgICAgICAgICogYml0IDcgLSBMSU4gYnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdA0KLSAgICAgICAgICogYml0IDggLSBMSU4gU3luYyBkZXRlY3Rpb24gaW50ZXJydXB0DQotICAgICAgICAgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5JRU0gfD0gKHVpbnQ4X3QpKH4oKCh1aW50MzJfdClpcnFfbWFzayAmIH4oKHVpbnQzMl90KUlJUkZfTUFTSykpID4+IDh1KSk7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIGlmKGlycV9tYXNrID09IElJUkZfTUFTSykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICAvKiBEaXNhYmxlIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIENvcnRleC1NMyBOVklDLiAqLw0KLSAgICAgICAgICAgIE5WSUNfRGlzYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLQ0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqICAgICAgIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCAgICAgIGhhbmRsZXIsDQotICAgIG1zc191YXJ0X3J4X3RyaWdfbGV2ZWxfdCAgICB0cmlnZ2VyX2xldmVsDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSICk7DQotICAgIEFTU0VSVCh0cmlnZ2VyX2xldmVsIDwgTVNTX1VBUlRfRklGT19JTlZBTElEX1RSSUdfTEVWRUwpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikgJiYNCi0gICAgICAgKHRyaWdnZXJfbGV2ZWwgPCBNU1NfVUFSVF9GSUZPX0lOVkFMSURfVFJJR19MRVZFTCkpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+cnhfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBTZXQgdGhlIHJlY2VpdmUgaW50ZXJydXB0IHRyaWdnZXIgbGV2ZWwuICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+RkNSID0gKHRoaXNfdWFydC0+aHdfcmVnLT5GQ1IgJg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90KSh+KCh1aW50OF90KUZDUl9UUklHX0xFVkVMX01BU0spKSkgfA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90KXRyaWdnZXJfbGV2ZWw7DQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSByZWNlaXZlIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFUkJGSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbG9vcGJhY2sNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiAgIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfbG9vcGJhY2tfdCAgICAgbG9vcGJhY2sNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChNU1NfVUFSVF9JTlZBTElEX0xPT1BCQUNLID4gbG9vcGJhY2spOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgfHwNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfTE9PUEJBQ0sgPiBsb29wYmFjaykpDQotICAgIHsNCi0gICAgICAgIHN3aXRjaChsb29wYmFjaykNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBjYXNlIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09GRjoNCi0gICAgICAgICAgICAgICAgLyogRGlzYWJsZSBsb2NhbCBsb29wYmFjayAqLw0KLSAgICAgICAgICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1DUixMT09QKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9MT0NBTF9MT09QQkFDS19PTjoNCi0gICAgICAgICAgICAgICAgLyogRW5hYmxlIGxvY2FsIGxvb3BiYWNrICovDQotICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1DUixMT09QKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9SRU1PVEVfTE9PUEJBQ0tfT0ZGOg0KLSAgICAgICAgICAgIGNhc2UgTVNTX1VBUlRfQVVUT19FQ0hPX09GRjoNCi0gICAgICAgICAgICAgICAgLyogRGlzYWJsZSByZW1vdGUgbG9vcGJhY2sgJiBhdXRvbWF0aWMgZWNobyovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5NQ1IgJj0gflJMT09QX01BU0s7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLQ0KLSAgICAgICAgICAgIGNhc2UgTVNTX1VBUlRfUkVNT1RFX0xPT1BCQUNLX09OOg0KLSAgICAgICAgICAgICAgICAvKiBFbmFibGUgcmVtb3RlIGxvb3BiYWNrICovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5NQ1IgfD0gKDF1IDw8IFJMT09QKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9BVVRPX0VDSE9fT046DQotICAgICAgICAgICAgICAgIC8qIEVuYWJsZSBhdXRvbWF0aWMgZWNobyAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+TUNSIHw9ICgxdSA8PCBFQ0hPKTsNCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBNU1NfVUFSVF9JTlZBTElEX0xPT1BCQUNLOg0KLSAgICAgICAgICAgICAgICAvKiBGYWxsIHRocm91Z2ggdG8gZGVmYXVsdC4gKi8NCi0gICAgICAgICAgICBkZWZhdWx0Og0KLSAgICAgICAgICAgICAgICBBU1NFUlQoMCk7DQotICAgICAgICAgICAgICAgIGJyZWFrOw0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVUFSVDAgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZS4NCi0gKiBVQVJUMF9JUlFIYW5kbGVyIGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgQ29ydGV4LU0zIHZlY3RvciB0YWJsZSBhcyBwYXJ0IG9mIHRoZQ0KLSAqIEZ1c2lvbiAyIENNU0lTLg0KLSAqLw0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQ0KLV9fYXR0cmlidXRlX18oKF9faW50ZXJydXB0X18pKSB2b2lkIFVBUlQwX0lSUUhhbmRsZXIodm9pZCkNCi0jZWxzZQ0KLXZvaWQgVUFSVDBfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbmRpZg0KLXsNCi0gICAgTVNTX1VBUlRfaXNyKCZnX21zc191YXJ0MCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVUFSVDEgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZS4NCi0gKiBVQVJUMl9JUlFIYW5kbGVyIGlzIGluY2x1ZGVkIHdpdGhpbiB0aGUgQ29ydGV4LU0zIHZlY3RvciB0YWJsZSBhcyBwYXJ0IG9mIHRoZQ0KLSAqIEZ1c2lvbiAyIENNU0lTLg0KLSAqLw0KLSNpZiBkZWZpbmVkKF9fR05VQ19fKQ0KLV9fYXR0cmlidXRlX18oKF9faW50ZXJydXB0X18pKSB2b2lkIFVBUlQxX0lSUUhhbmRsZXIodm9pZCkNCi0jZWxzZQ0KLXZvaWQgVUFSVDFfSVJRSGFuZGxlcih2b2lkKQ0KLSNlbmRpZg0KLXsNCi0gICAgTVNTX1VBUlRfaXNyKCZnX21zc191YXJ0MSk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhzdGF0dXNfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPmxpbmVzdHNfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSByZWNlaXZlciBsaW5lIHN0YXR1cyBpbnRlcnJ1cHQuICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JRVIsRUxTSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfdHhfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPnR4X2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogTWFrZSBUWCBidWZmZXIgaW5mbyBpbnZhbGlkICovDQotICAgICAgICB0aGlzX3VhcnQtPnR4X2J1ZmZlciA9IChjb25zdCB1aW50OF90ICopMDsNCi0gICAgICAgIHRoaXNfdWFydC0+dHhfYnVmZl9zaXplID0gMHU7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSB0cmFuc21pdHRlciBob2xkaW5nIHJlZ2lzdGVyIEVtcHR5IGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFVEJFSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPm1vZGVtc3RzX2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIGludGVycnVwdHMgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKHRoaXNfdWFydC0+aXJxbik7DQotDQotICAgICAgICAvKiBFbmFibGUgbW9kZW0gc3RhdHVzIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFRFNTSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXNpemVfdA0KLU1TU19VQVJUX2ZpbGxfdHhfZmlmbw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHR4X2J1ZmZlciwNCi0gICAgc2l6ZV90IHR4X3NpemUNCi0pDQotew0KLSAgICB1aW50OF90IHN0YXR1cyA9IDB1Ow0KLSAgICBzaXplX3Qgc2l6ZV9zZW50ID0gMHU7DQotDQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKHR4X2J1ZmZlciAhPSAoICh1aW50OF90ICopMCkpOw0KLSAgICBBU1NFUlQodHhfc2l6ZSA+IDApOw0KLQ0KLSAgICAvKiBGaWxsIHRoZSBVQVJUJ3MgVHggRklGTyB1bnRpbCB0aGUgRklGTyBpcyBmdWxsIG9yIHRoZSBjb21wbGV0ZSBpbnB1dA0KLSAgICAgKiBidWZmZXIgaGFzIGJlZW4gd3JpdHRlbi4gKi8NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgICh0eF9idWZmZXIgIT0gKCh1aW50OF90ICopMCkpICAgJiYNCi0gICAgICAgKHR4X3NpemUgPiAwdSkpDQotICAgIHsNCi0gICAgICAgIHN0YXR1cyA9IHRoaXNfdWFydC0+aHdfcmVnLT5MU1I7DQotICAgICAgICB0aGlzX3VhcnQtPnN0YXR1cyB8PSBzdGF0dXM7DQotDQotICAgICAgICBpZihzdGF0dXMgJiBNU1NfVUFSVF9USFJFKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHVpbnQzMl90IGZpbGxfc2l6ZSA9IFRYX0ZJRk9fU0laRTsNCi0NCi0gICAgICAgICAgICBpZih0eF9zaXplIDwgVFhfRklGT19TSVpFKQ0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgZmlsbF9zaXplID0gdHhfc2l6ZTsNCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgLyogRmlsbCB1cCBGSUZPICovDQotICAgICAgICAgICAgZm9yKHNpemVfc2VudCA9IDB1OyBzaXplX3NlbnQgPCBmaWxsX3NpemU7ICsrc2l6ZV9zZW50KQ0KLSAgICAgICAgICAgIHsNCi0NCi0gICAgICAgICAgICAgICAgLyogU2VuZCBuZXh0IGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyLiAqLw0KLSAgICAgICAgICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+VEhSID0gdHhfYnVmZmVyW3NpemVfc2VudF07DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotICAgIHJldHVybiBzaXplX3NlbnQ7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfcnhfc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXMgPSBNU1NfVUFSVF9JTlZBTElEX1BBUkFNOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiBFeHRyYWN0IFVBUlQgcmVjZWl2ZSBlcnJvciBzdGF0dXMuDQotICAgICAgICAgKiBCaXQgMSAtIE92ZXJmbG93IGVycm9yIHN0YXR1cw0KLSAgICAgICAgICogQml0IDIgLSBQYXJpdHkgZXJyb3Igc3RhdHVzDQotICAgICAgICAgKiBCaXQgMyAtIEZyYW1lIGVycm9yIHN0YXR1cw0KLSAgICAgICAgICogQml0IDQgLSBCcmVhayBpbnRlcnJ1cHQgaW5kaWNhdG9yDQotICAgICAgICAgKiBCaXQgNyAtIEZJRk8gZGF0YSBlcnJvciBzdGF0dXMNCi0gICAgICAgICAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gKHRoaXNfdWFydC0+aHdfcmVnLT5MU1IpOw0KLSAgICAgICAgc3RhdHVzID0gKHRoaXNfdWFydC0+c3RhdHVzICYgU1RBVFVTX0VSUk9SX01BU0spOw0KLSAgICAgICAgLyogQ2xlYXIgdGhlIHN0aWNreSBzdGF0dXMgYWZ0ZXIgcmVhZGluZyAqLw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgPSAwdTsNCi0gICAgfQ0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi11aW50OF90DQotTVNTX1VBUlRfZ2V0X21vZGVtX3N0YXR1cw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzID0gTVNTX1VBUlRfSU5WQUxJRF9QQVJBTTsNCi0NCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKg0KLSAgICAgICAgICogRXh0cmFjdCBVQVJUIG1vZGVtIHN0YXR1cyBhbmQgcGxhY2UgaW4gbG93ZXIgYml0cyBvZiAic3RhdHVzIi4NCi0gICAgICAgICAqIEJpdCAwIC0gRGVsdGEgQ2xlYXIgdG8gU2VuZCBJbmRpY2F0b3INCi0gICAgICAgICAqIEJpdCAxIC0gRGVsdGEgQ2xlYXIgdG8gUmVjZWl2ZSBJbmRpY2F0b3INCi0gICAgICAgICAqIEJpdCAyIC0gVHJhaWxpbmcgZWRnZSBvZiBSaW5nIEluZGljYXRvciBkZXRlY3Rvcg0KLSAgICAgICAgICogQml0IDMgLSBEZWx0YSBEYXRhIENhcnJpZXIgRGV0ZWN0IGluZGljYXRvcg0KLSAgICAgICAgICogQml0IDQgLSBDbGVhciBUbyBTZW5kDQotICAgICAgICAgKiBCaXQgNSAtIERhdGEgU2V0IFJlYWR5DQotICAgICAgICAgKiBCaXQgNiAtIFJpbmcgSW5kaWNhdG9yDQotICAgICAgICAgKiBCaXQgNyAtIERhdGEgQ2FycmllciBEZXRlY3QNCi0gICAgICAgICAqLw0KLSAgICAgICAgc3RhdHVzID0gdGhpc191YXJ0LT5od19yZWctPk1TUjsNCi0gICAgfQ0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIE1TU19VQVJUX2dldF90eF9zdGF0dXMuDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXVpbnQ4X3QNCi1NU1NfVUFSVF9nZXRfdHhfc3RhdHVzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgdWludDhfdCBzdGF0dXMgPSBNU1NfVUFSVF9UWF9CVVNZOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIFJlYWQgdGhlIExpbmUgU3RhdHVzIFJlZ2lzdGVyIGFuZCB1cGRhdGUgdGhlIHN0aWNreSByZWNvcmQuICovDQotICAgICAgICBzdGF0dXMgPSB0aGlzX3VhcnQtPmh3X3JlZy0+TFNSOw0KLSAgICAgICAgdGhpc191YXJ0LT5zdGF0dXMgfD0gc3RhdHVzOw0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIEV4dHJhY3QgdGhlIHRyYW5zbWl0IHN0YXR1cyBiaXRzIGZyb20gdGhlIFVBUlQncyBMaW5lIFN0YXR1cyBSZWdpc3Rlci4NCi0gICAgICAgICAqIEJpdCA1IC0gVHJhbnNtaXR0ZXIgSG9sZGluZyBSZWdpc3Rlci9GSUZPIEVtcHR5IChUSFJFKSBzdGF0dXMuIChJZiA9IDEsIFRYIEZJRk8gaXMgZW1wdHkpDQotICAgICAgICAgKiBCaXQgNiAtIFRyYW5zbWl0dGVyIEVtcHR5IChURU1UKSBzdGF0dXMuIChJZiA9IDEsIGJvdGggVFggRklGTyBhbmQgc2hpZnQgcmVnaXN0ZXIgYXJlIGVtcHR5KQ0KLSAgICAgICAgICovDQotICAgICAgICBzdGF0dXMgJj0gKE1TU19VQVJUX1RIUkUgfCBNU1NfVUFSVF9URU1UKTsNCi0gICAgfQ0KLSAgICByZXR1cm4gc3RhdHVzOw0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2JyZWFrDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBzZXQgYnJlYWsgY2hhcmVjdGVyIG9uIFR4IGxpbmUgKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixTQik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2NsZWFyX2JyZWFrDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiByZW1vdmUgYnJlYWsgY2hhcmVjdGVyIGZyb20gVHggbGluZSAqLw0KLSAgICAgICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5MQ1IsU0IpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcGlkcGVpX2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUik7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKSkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5waWRfcGVpX2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIGludGVycnVwdHMgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKCB0aGlzX3VhcnQtPmlycW4gKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBQSUQgcGFyaXR5IGVycm9yIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFTSxFUElEX1BFSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbGluYnJlYWtfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPmJyZWFrX2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIGludGVycnVwdHMgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKCB0aGlzX3VhcnQtPmlycW4gKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBMSU4gYnJlYWsgZGV0ZWN0aW9uIGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFTSxFTElOQkkpOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIENvcnRleC1NMyBOVklDLiAqLw0KLSAgICAgICAgTlZJQ19FbmFibGVJUlEodGhpc191YXJ0LT5pcnFuKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2xpbnN5bmNfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKTsNCi0NCi0gICAgaWYoKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpICYmDQotICAgICAgIChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpKQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPnN5bmNfaGFuZGxlciA9IGhhbmRsZXI7DQotDQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgaW50ZXJydXB0cyAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoIHRoaXNfdWFydC0+aXJxbiApOw0KLQ0KLSAgICAgICAgLyogRW5hYmxlIExJTiBzeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQuICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JRU0sRUxJTlNJKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiBDb3J0ZXgtTTMgTlZJQy4gKi8NCi0gICAgICAgIE5WSUNfRW5hYmxlSVJRKHRoaXNfdWFydC0+aXJxbik7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9uYWNrX2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUik7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoaGFuZGxlciAhPSBJTlZBTElEX0lSUV9IQU5ETEVSKSkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5uYWNrX2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIGludGVycnVwdHMgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKCB0aGlzX3VhcnQtPmlycW4gKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSBMSU4gc3luYyBkZXRlY3Rpb24gaW50ZXJydXB0LiAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUVNLEVOQUNLSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfdGltZW91dF9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChoYW5kbGVyICE9IElOVkFMSURfSVJRX0hBTkRMRVIpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKGhhbmRsZXIgIT0gSU5WQUxJRF9JUlFfSEFORExFUikpDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+cnRvX2hhbmRsZXIgPSBoYW5kbGVyOw0KLQ0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIGludGVycnVwdHMgKi8NCi0gICAgICAgIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKCB0aGlzX3VhcnQtPmlycW4gKTsNCi0NCi0gICAgICAgIC8qIEVuYWJsZSByZWNlaXZlciB0aW1lb3V0IGludGVycnVwdC4gKi8NCi0gICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFTSxFUlRPSSk7DQotDQotICAgICAgICAvKiBFbmFibGUgVUFSVCBpbnN0YW5jZSBpbnRlcnJ1cHQgaW4gQ29ydGV4LU0zIE5WSUMuICovDQotICAgICAgICBOVklDX0VuYWJsZUlSUSh0aGlzX3VhcnQtPmlycW4pOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfaGFsZl9kdXBsZXgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIGVuYWJsZSBzaW5nbGUgd2lyZSBoYWxmLWR1cGxleCBtb2RlICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRVNXTSk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfaGFsZl9kdXBsZXgNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIGVuYWJsZSBzaW5nbGUgd2lyZSBoYWxmLWR1cGxleCBtb2RlICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFU1dNKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3J4X2VuZGlhbg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfZW5kaWFuX3QgZW5kaWFuDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoTVNTX1VBUlRfSU5WQUxJRF9FTkRJQU4gPiBlbmRpYW4pOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfRU5ESUFOID4gZW5kaWFuKSkNCi0gICAgew0KLSAgICAgICAgLyogQ29uZmlndXJlIE1TQiBmaXJzdCAvIExTQiBmaXJzdCBmb3IgcmVjZWl2ZXIgKi8NCi0gICAgICAgICgoTVNTX1VBUlRfTElUVExFRU5EID09IGVuZGlhbikgPyAoY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRV9NU0JfUlgpKSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9SWCkpKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3R4X2VuZGlhbg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfZW5kaWFuX3QgZW5kaWFuDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLSAgICBBU1NFUlQoTVNTX1VBUlRfSU5WQUxJRF9FTkRJQU4gPiBlbmRpYW4pOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfRU5ESUFOID4gZW5kaWFuKSkNCi0gICAgew0KLSAgICAgICAgLyogQ29uZmlndXJlIE1TQiBmaXJzdCAvIExTQiBmaXJzdCBmb3IgdHJhbnNtaXR0ZXIgKi8NCi0gICAgICAgICgoTVNTX1VBUlRfTElUVExFRU5EID09IGVuZGlhbikgPyAoY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRV9NU0JfVFgpKSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMSxFX01TQl9UWCkpICkgOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfZmlsdGVyX2xlbmd0aA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfZmlsdGVyX2xlbmd0aF90IGxlbmd0aA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKE1TU19VQVJUX0lOVkFMSURfRklMVEVSX0xFTkdUSCA+IGxlbmd0aCk7DQotDQotICAgIGlmKCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKSAmJg0KLSAgICAgICAoTVNTX1VBUlRfSU5WQUxJRF9GSUxURVJfTEVOR1RIID4gbGVuZ3RoKSkNCi0gICAgew0KLSAgICAgICAgLyogQ29uZmlndXJlIGdsaXRjaCBmaWx0ZXIgbGVuZ3RoICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+R0ZSID0gKHVpbnQ4X3QpbGVuZ3RoOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfYWZtDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogRGlzYWJsZSBSWCBGSUZPIHRpbGwgYWRkcmVzcyBmbGFnIHdpdGggY29ycmVjdCBhZGRyZXNzIGlzIHJlY2VpdmVkICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRUFGTSk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfYWZtDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogRW5hYmxlIFJYIEZJRk8gaXJyZXNwZWN0aXZlIG9mIGFkZHJlc3MgZmxhZyBhbmQNCi0gICAgICAgICAgIGNvcnJlY3QgYWRkcmVzcyBpcyByZWNlaXZlZCAqLw0KLSAgICAgICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRUFGTSk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2VuYWJsZV9hZmNsZWFyDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogRW5hYmxlIGFkZHJlc3MgZmxhZyBjbGVhcmluZyAqLw0KLSAgICAgICAgLyogRGlzYWJsZSBSWCBGSUZPIHRpbGwgYW5vdGhlciBhZGRyZXNzIGZsYWcgd2l0aA0KLSAgICAgICAgICAgY29ycmVjdCBhZGRyZXNzIGlzIHJlY2VpdmVkICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTIsRUFGQyk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfYWZjbGVhcg0KLSgNCi0gICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qIERpc2FibGUgYWRkcmVzcyBmbGFnIGNsZWFyaW5nICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFQUZDKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZW5hYmxlX3J4X3RpbWVvdXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQ4X3QgdGltZW91dA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLyogTG9hZCB0aGUgcmVjZWl2ZSB0aW1lb3V0IHZhbHVlICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+UlRPID0gdGltZW91dDsNCi0gICAgICAgIC8qRW5hYmxlIHJlY2VpdmVyIHRpbWUtb3V0ICovDQotICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRVJUTyk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfcnhfdGltZW91dA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgLypEaXNhYmxlIHJlY2VpdmVyIHRpbWUtb3V0ICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFUlRPKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZW5hYmxlX3R4X3RpbWVfZ3VhcmQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQ4X3QgdGltZWd1YXJkDQotKQ0KLXsNCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICAvKiBMb2FkIHRoZSB0cmFuc21pdHRlciB0aW1lIGd1YXJkIHZhbHVlICovDQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZy0+VFRHID0gdGltZWd1YXJkOw0KLSAgICAgICAgLypFbmFibGUgdHJhbnNtaXR0ZXIgdGltZSBndWFyZCAqLw0KLSAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0wLEVUVEcpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9kaXNhYmxlX3R4X3RpbWVfZ3VhcmQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpDQotICAgIHsNCi0gICAgICAgIC8qRGlzYWJsZSB0cmFuc21pdHRlciB0aW1lIGd1YXJkICovDQotICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMCxFVFRHKTsNCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2FkZHJlc3MNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQ4X3QgYWRkcmVzcw0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkFEUiA9IGFkZHJlc3M7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBTZWUgbXNzX3VhcnQuaCBmb3IgZGV0YWlscyBvZiBob3cgdG8gdXNlIHRoaXMgZnVuY3Rpb24uDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9yZWFkeV9tb2RlDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9yZWFkeV9tb2RlX3QgbW9kZQ0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0gICAgQVNTRVJUKE1TU19VQVJUX0lOVkFMSURfUkVBRFlfTU9ERSA+IG1vZGUpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfUkVBRFlfTU9ERSA+IG1vZGUgKSApDQotICAgIHsNCi0gICAgICAgIC8qIENvbmZpZ3VyZSBtb2RlIDAgb3IgbW9kZSAxIGZvciBUWFJEWSBhbmQgUlhSRFkgKi8NCi0gICAgICAgICgoTVNTX1VBUlRfUkVBRFlfTU9ERTAgPT0gbW9kZSkgPyBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkZDUixSRFlNT0RFKSA6DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+RkNSLFJEWU1PREUpICk7DQotICAgIH0NCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBDb25maWd1cmUgYmF1ZCBkaXZpc29ycyB1c2luZyBmcmFjdGlvbmFsIGJhdWQgcmF0ZSBpZiBwb3NzaWJsZS4NCi0gKi8NCi1zdGF0aWMgdm9pZA0KLWNvbmZpZ19iYXVkX2Rpdmlzb3JzDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkcmF0ZQ0KLSkNCi17DQotICAgIEFTU0VSVCgodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKTsNCi0NCi0gICAgaWYoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkNCi0gICAgew0KLSAgICAgICAgdWludDMyX3QgYmF1ZF92YWx1ZTsNCi0gICAgICAgIHVpbnQzMl90IGJhdWRfdmFsdWVfYnlfNjQ7DQotICAgICAgICB1aW50MzJfdCBiYXVkX3ZhbHVlX2J5XzEyODsNCi0gICAgICAgIHVpbnQzMl90IGZyYWN0aW9uYWxfYmF1ZF92YWx1ZTsNCi0gICAgICAgIHVpbnQzMl90IHBjbGtfZnJlcTsNCi0NCi0gICAgICAgIHRoaXNfdWFydC0+YmF1ZHJhdGUgPSBiYXVkcmF0ZTsNCi0NCi0gICAgICAgIC8qIEZvcmNlIHRoZSB2YWx1ZSBvZiB0aGUgQ01TSVMgZ2xvYmFsIHZhcmlhYmxlcyBob2xkaW5nIHRoZSB2YXJpb3VzIHN5c3RlbQ0KLSAgICAgICAgICAqIGNsb2NrIGZyZXF1ZW5jaWVzIHRvIGJlIHVwZGF0ZWQuICovDQotICAgICAgICBTeXN0ZW1Db3JlQ2xvY2tVcGRhdGUoKTsNCi0gICAgICAgIGlmKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApDQotICAgICAgICB7DQotICAgICAgICAgICAgcGNsa19mcmVxID0gZ19GcmVxdWVuY3lQQ0xLMDsNCi0gICAgICAgIH0NCi0gICAgICAgIGVsc2UNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBwY2xrX2ZyZXEgPSBnX0ZyZXF1ZW5jeVBDTEsxOw0KLSAgICAgICAgfQ0KLQ0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIENvbXB1dGUgYmF1ZCB2YWx1ZSBiYXNlZCBvbiByZXF1ZXN0ZWQgYmF1ZCByYXRlIGFuZCBQQ0xLIGZyZXF1ZW5jeS4NCi0gICAgICAgICAqIFRoZSBiYXVkIHZhbHVlIGlzIGNvbXB1dGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgZXF1YXRpb246DQotICAgICAgICAgKiAgICAgIGJhdWRfdmFsdWUgPSBQQ0xLX0ZyZXF1ZW5jeSAvIChiYXVkX3JhdGUgKiAxNikNCi0gICAgICAgICAqLw0KLSAgICAgICAgYmF1ZF92YWx1ZV9ieV8xMjggPSAoOHUgKiBwY2xrX2ZyZXEpIC8gYmF1ZHJhdGU7DQotICAgICAgICBiYXVkX3ZhbHVlX2J5XzY0ID0gYmF1ZF92YWx1ZV9ieV8xMjggLyAydTsNCi0gICAgICAgIGJhdWRfdmFsdWUgPSBiYXVkX3ZhbHVlX2J5XzY0IC8gNjR1Ow0KLSAgICAgICAgZnJhY3Rpb25hbF9iYXVkX3ZhbHVlID0gYmF1ZF92YWx1ZV9ieV82NCAtIChiYXVkX3ZhbHVlICogNjR1KTsNCi0gICAgICAgIGZyYWN0aW9uYWxfYmF1ZF92YWx1ZSArPSAoYmF1ZF92YWx1ZV9ieV8xMjggLSAoYmF1ZF92YWx1ZSAqIDEyOHUpKSAtIChmcmFjdGlvbmFsX2JhdWRfdmFsdWUgKiAydSk7DQotDQotICAgICAgICAvKiBBc3NlcnQgaWYgaW50ZWdlciBiYXVkIHZhbHVlIGZpdHMgaW4gMTYtYml0LiAqLw0KLSAgICAgICAgQVNTRVJUKGJhdWRfdmFsdWUgPD0gVUlOVDE2X01BWCk7DQotDQotICAgICAgICBpZihiYXVkX3ZhbHVlIDw9ICh1aW50MzJfdClVSU5UMTZfTUFYKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGlmKGJhdWRfdmFsdWUgPiAxdSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICAgICAqIFVzZSBGcmF0aW9uYWwgYmF1ZCByYXRlIGRpdmlzb3JzDQotICAgICAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgICAgICAvKiBzZXQgZGl2aXNvciBsYXRjaCAqLw0KLSAgICAgICAgICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5MQ1IsRExBQik7DQotDQotICAgICAgICAgICAgICAgIC8qIG1zYiBvZiBiYXVkIHZhbHVlICovDQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5ETVIgPSAodWludDhfdCkoYmF1ZF92YWx1ZSA+PiA4KTsNCi0gICAgICAgICAgICAgICAgLyogbHNiIG9mIGJhdWQgdmFsdWUgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkRMUiA9ICh1aW50OF90KWJhdWRfdmFsdWU7DQotDQotICAgICAgICAgICAgICAgIC8qIHJlc2V0IGRpdmlzb3IgbGF0Y2ggKi8NCi0gICAgICAgICAgICAgICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5MQ1IsRExBQik7DQotDQotICAgICAgICAgICAgICAgIC8qIEVuYWJsZSBGcmFjdGlvbmFsIGJhdWQgcmF0ZSAqLw0KLSAgICAgICAgICAgICAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRUZCUik7DQotDQotICAgICAgICAgICAgICAgIC8qIExvYWQgdGhlIGZyYWN0aW9uYWwgYmF1ZCByYXRlIHJlZ2lzdGVyICovDQotICAgICAgICAgICAgICAgIEFTU0VSVChmcmFjdGlvbmFsX2JhdWRfdmFsdWUgPD0gKHVpbnQzMl90KVVJTlQ4X01BWCk7DQotICAgICAgICAgICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5ERlIgPSAodWludDhfdClmcmFjdGlvbmFsX2JhdWRfdmFsdWU7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGVsc2UNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8qDQotICAgICAgICAgICAgICAgICAqIERvIE5PVCB1c2UgRnJhdGlvbmFsIGJhdWQgcmF0ZSBkaXZpc29ycy4NCi0gICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgIC8qIHNldCBkaXZpc29yIGxhdGNoICovDQotICAgICAgICAgICAgICAgIHNldF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPkxDUixETEFCKTsNCi0NCi0gICAgICAgICAgICAgICAgLyogbXNiIG9mIGJhdWQgdmFsdWUgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkRNUiA9ICh1aW50OF90KShiYXVkX3ZhbHVlID4+IDh1KTsNCi0gICAgICAgICAgICAgICAgLyogbHNiIG9mIGJhdWQgdmFsdWUgKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPkRMUiA9ICh1aW50OF90KWJhdWRfdmFsdWU7DQotDQotICAgICAgICAgICAgICAgIC8qIHJlc2V0IGRpdmlzb3IgbGF0Y2ggKi8NCi0gICAgICAgICAgICAgICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5MQ1IsRExBQik7DQotDQotICAgICAgICAgICAgICAgIC8qIERpc2FibGUgRnJhY3Rpb25hbCBiYXVkIHJhdGUgKi8NCi0gICAgICAgICAgICAgICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRUZCUik7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgfQ0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogU2VlIG1zc191YXJ0LmggZm9yIGRldGFpbHMgb2YgaG93IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLg0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfdXNhcnRfbW9kZQ0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfdXNhcnRfbW9kZV90IG1vZGUNCi0pDQotew0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVChNU1NfVUFSVF9JTlZBTElEX1NZTkNfTU9ERSA+IG1vZGUpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKE1TU19VQVJUX0lOVkFMSURfU1lOQ19NT0RFID4gbW9kZSkpDQotICAgIHsNCi0gICAgICAgIC8qIE5vdGhpbmcgdG8gZG8gZm9yIHRoZSBiYXVkcmF0ZTogb3BlcmF0ZXMgYXQgUENMSyAvIDIgKyBnbGl0Y2ggZmlsdGVyIGxlbmd0aCAqLw0KLSAgICAgICAgLyogQ2xlYXIgdGhlIEVTWU4gYml0cyAyOjAgKi8NCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnLT5NTTAgJj0gflNZTkNfQVNZTkNfTU9ERV9NQVNLOw0KLSAgICAgICAgdGhpc191YXJ0LT5od19yZWctPk1NMCB8PSAodWludDhfdCltb2RlOw0KLSAgICB9DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTG9jYWwgRnVuY3Rpb25zDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiBHbG9iYWwgaW5pdGlhbGl6YXRpb24gZm9yIGFsbCBtb2Rlcw0KLSAqLw0KLXN0YXRpYyB2b2lkIGdsb2JhbF9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50MzJfdCBiYXVkX3JhdGUsDQotICAgIHVpbnQ4X3QgbGluZV9jb25maWcNCi0pDQotew0KLSAgICAvKiBUaGUgZHJpdmVyIGV4cGVjdHMgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxIHRvIGJlIHRoZSBvbmx5DQotICAgICAqIG1zc191YXJ0X2luc3RhbmNlX3QgaW5zdGFuY2VzIHVzZWQgdG8gaWRlbnRpZnkgVUFSVDAgYW5kIFVBUlQxLiAqLw0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotDQotICAgIGlmKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApDQotICAgIHsNCi0gICAgICAgIHRoaXNfdWFydC0+aHdfcmVnID0gVUFSVDA7DQotICAgICAgICB0aGlzX3VhcnQtPmlycW4gPSBVQVJUMF9JUlFuOw0KLSAgICAgICAgLyogcmVzZXQgVUFSVDAgKi8NCi0gICAgICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgfD0gU1lTUkVHX01NVUFSVDBfU09GVFJFU0VUX01BU0s7DQotICAgICAgICAvKiBDbGVhciBhbnkgcHJldmlvdXNseSBwZW5kZWQgVUFSVDAgaW50ZXJydXB0ICovDQotICAgICAgICBOVklDX0NsZWFyUGVuZGluZ0lSUShVQVJUMF9JUlFuKTsNCi0gICAgICAgIC8qIFRha2UgVUFSVDAgb3V0IG9mIHJlc2V0LiAqLw0KLSAgICAgICAgU1lTUkVHLT5TT0ZUX1JTVF9DUiAmPSB+U1lTUkVHX01NVUFSVDBfU09GVFJFU0VUX01BU0s7DQotICAgIH0NCi0gICAgZWxzZQ0KLSAgICB7DQotICAgICAgICB0aGlzX3VhcnQtPmh3X3JlZyA9IFVBUlQxOw0KLSAgICAgICAgdGhpc191YXJ0LT5pcnFuID0gVUFSVDFfSVJRbjsNCi0gICAgICAgIC8qIFJlc2V0IFVBUlQxICovDQotICAgICAgICBTWVNSRUctPlNPRlRfUlNUX0NSIHw9IFNZU1JFR19NTVVBUlQxX1NPRlRSRVNFVF9NQVNLOw0KLSAgICAgICAgLyogQ2xlYXIgYW55IHByZXZpb3VzbHkgcGVuZGVkIFVBUlQxIGludGVycnVwdCAqLw0KLSAgICAgICAgTlZJQ19DbGVhclBlbmRpbmdJUlEoVUFSVDFfSVJRbik7DQotICAgICAgICAvKiBUYWtlIFVBUlQxIG91dCBvZiByZXNldC4gKi8NCi0gICAgICAgIFNZU1JFRy0+U09GVF9SU1RfQ1IgJj0gflNZU1JFR19NTVVBUlQxX1NPRlRSRVNFVF9NQVNLOw0KLSAgICB9DQotDQotICAgIC8qIGRpc2FibGUgaW50ZXJydXB0cyAqLw0KLSAgICB0aGlzX3VhcnQtPmh3X3JlZy0+SUVSID0gMHU7DQotDQotICAgIC8qIEZJRk8gY29uZmlndXJhdGlvbiAqLw0KLSAgICB0aGlzX3VhcnQtPmh3X3JlZy0+RkNSID0gKHVpbnQ4X3QpTVNTX1VBUlRfRklGT19TSU5HTEVfQllURTsNCi0gICAgLyogY2xlYXIgcmVjZWl2ZXIgRklGTyAqLw0KLSAgICBzZXRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5GQ1IsQ0xFQVJfUlhfRklGTyk7DQotICAgIC8qIGNsZWFyIHRyYW5zbWl0dGVyIEZJRk8gKi8NCi0gICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+RkNSLENMRUFSX1RYX0ZJRk8pOw0KLQ0KLSAgICAvKiBzZXQgZGVmYXVsdCBSRUFEWSBtb2RlIDogTW9kZSAwKi8NCi0gICAgLyogZW5hYmxlIFJYUkRZTiBhbmQgVFhSRFlOIHBpbnMuIFRoZSBlYXJsaWVyIEZDUiB3cml0ZSB0byBzZXQgdGhlIFRYIEZJRk8NCi0gICAgICogdHJpZ2dlciBsZXZlbCBpbmFkdmVydGVudGx5IGRpc2FibGVkIHRoZSBGQ1JfUlhSRFlfVFhSRFlOX0VOIGJpdC4gKi8NCi0gICAgc2V0X2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+RkNSLFJYUkRZX1RYUkRZTl9FTik7DQotDQotICAgIC8qIGRpc2FibGUgbG9vcGJhY2sgOiBsb2NhbCAqIHJlbW90ZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1DUixMT09QKTsNCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NQ1IsUkxPT1ApOw0KLQ0KLSAgICAvKiBzZXQgZGVmYXVsdCBUWCBlbmRpYW4gKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRV9NU0JfVFgpOw0KLSAgICAvKiBzZXQgZGVmYXVsdCBSWCBlbmRpYW4gKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTEsRV9NU0JfUlgpOw0KLQ0KLSAgICAvKiBkZWZhdWx0IEFGTSA6IGRpc2FibGVkICovDQotICAgIGNsZWFyX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+TU0yLEVBRk0pOw0KLQ0KLSAgICAvKiBkaXNhYmxlIFRYIHRpbWUgZ2F1cmQgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRVRURyk7DQotDQotICAgIC8qIHNldCBkZWZhdWx0IFJYIHRpbWVvdXQgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRVJUTyk7DQotDQotICAgIC8qIGRpc2FibGUgZnJhY3Rpb25hbCBiYXVkLXJhdGUgKi8NCi0gICAgY2xlYXJfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5NTTAsRUZCUik7DQotDQotICAgIC8qIGRpc2FibGUgc2luZ2xlIHdpcmUgbW9kZSAqLw0KLSAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPk1NMixFU1dNKTsNCi0NCi0gICAgLyogc2V0IGZpbHRlciB0byBtaW5pbXVtIHZhbHVlICovDQotICAgIHRoaXNfdWFydC0+aHdfcmVnLT5HRlIgPSAwdTsNCi0gICAgLyogc2V0IGRlZmF1bHQgVFggdGltZSBnYXVyZCAqLw0KLSAgICB0aGlzX3VhcnQtPmh3X3JlZy0+VFRHID0gMHU7DQotICAgIC8qIHNldCBkZWZhdWx0IFJYIHRpbWVvdXQgKi8NCi0gICAgdGhpc191YXJ0LT5od19yZWctPlJUTyA9IDB1Ow0KLQ0KLSAgICAvKg0KLSAgICAgKiBDb25maWd1cmUgYmF1ZCByYXRlIGRpdmlzb3JzLiBUaGlzIHVzZXMgdGhlIGZyYXRpb25hbCBiYXVkIHJhdGUgZGl2aXNvcg0KLSAgICAgKiB3aGVyZSBwb3NzaWJsZSB0byBwcm92aWRlIHRoZSBtb3N0IGFjY3VyYXRlIGJhdWQgcmF0IHBvc3NpYmxlLg0KLSAgICAgKi8NCi0gICAgY29uZmlnX2JhdWRfZGl2aXNvcnModGhpc191YXJ0LCBiYXVkX3JhdGUpOw0KLQ0KLSAgICAvKiBzZXQgdGhlIGxpbmUgY29udHJvbCByZWdpc3RlciAoYml0IGxlbmd0aCwgc3RvcCBiaXRzLCBwYXJpdHkpICovDQotICAgIHRoaXNfdWFydC0+aHdfcmVnLT5MQ1IgPSBsaW5lX2NvbmZpZzsNCi0NCi0gICAgLyogSW5zdGFuY2Ugc2V0dXAgKi8NCi0gICAgdGhpc191YXJ0LT5iYXVkcmF0ZSA9IGJhdWRfcmF0ZTsNCi0gICAgdGhpc191YXJ0LT5saW5lY29uZmlnID0gbGluZV9jb25maWc7DQotICAgIHRoaXNfdWFydC0+dHhfYnVmZl9zaXplID0gVFhfQ09NUExFVEU7DQotICAgIHRoaXNfdWFydC0+dHhfYnVmZmVyID0gKGNvbnN0IHVpbnQ4X3QgKikwOw0KLSAgICB0aGlzX3VhcnQtPnR4X2lkeCA9IDB1Ow0KLQ0KLSAgICAvKiBEZWZhdWx0IGhhbmRsZXJzIGZvciBNU1MgVUFSVCBpbnRlcnJ1cHRzICovDQotICAgIHRoaXNfdWFydC0+cnhfaGFuZGxlciAgICAgICA9IE5VTExfSEFORExFUjsNCi0gICAgdGhpc191YXJ0LT50eF9oYW5kbGVyICAgICAgID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPmxpbmVzdHNfaGFuZGxlciAgPSBOVUxMX0hBTkRMRVI7DQotICAgIHRoaXNfdWFydC0+bW9kZW1zdHNfaGFuZGxlciA9IE5VTExfSEFORExFUjsNCi0gICAgdGhpc191YXJ0LT5ydG9faGFuZGxlciAgICAgID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPm5hY2tfaGFuZGxlciAgICAgPSBOVUxMX0hBTkRMRVI7DQotICAgIHRoaXNfdWFydC0+cGlkX3BlaV9oYW5kbGVyICA9IE5VTExfSEFORExFUjsNCi0gICAgdGhpc191YXJ0LT5icmVha19oYW5kbGVyICAgID0gTlVMTF9IQU5ETEVSOw0KLSAgICB0aGlzX3VhcnQtPnN5bmNfaGFuZGxlciAgICAgPSBOVUxMX0hBTkRMRVI7DQotDQotICAgIC8qIEluaXRpYWxpemUgdGhlIHN0aWNreSBzdGF0dXMgKi8NCi0gICAgdGhpc191YXJ0LT5zdGF0dXMgPSAwdTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBJbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIHRyaWdnZXJlZCBieSBhbnkgTVNTIFVBUlQgaW50ZXJydXB0LiBUaGlzIHJvdXRpbmUNCi0gKiB3aWxsIGNhbGwgdGhlIGhhbmRsZXIgZnVuY3Rpb24gYXBwcm9wcmlhdGUgdG8gdGhlIGludGVycnVwdCBmcm9tIHRoZQ0KLSAqIGhhbmRsZXJzIHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCBjYWxscyB0byB0aGUNCi0gKiBNU1NfVUFSVF9zZXRfKl9oYW5kbGVyKCkgZnVuY3Rpb25zLCBvciBpdCB3aWxsIGNhbGwgdGhlIGRlZmF1bHRfdHhfaGFuZGxlcigpDQotICogZnVuY3Rpb24gaW4gcmVzcG9uc2UgdG8gdHJhbnNtaXQgaW50ZXJydXB0cyBpZiBNU1NfVUFSVF9pcnFfdHgoKSBpcyB1c2VkIHRvDQotICogdHJhbnNtaXQgZGF0YS4NCi0gKi8NCi1zdGF0aWMgdm9pZA0KLU1TU19VQVJUX2lzcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIHVpbnQ4X3QgaWlyZjsNCi0NCi0gICAgQVNTRVJUKCh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQwKSB8fCAodGhpc191YXJ0ID09ICZnX21zc191YXJ0MSkpOw0KLQ0KLSAgICBpZigodGhpc191YXJ0ID09ICZnX21zc191YXJ0MCkgfHwgKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDEpKQ0KLSAgICB7DQotICAgICAgICBpaXJmID0gdGhpc191YXJ0LT5od19yZWctPklJUiAmIElJUkZfTUFTSzsNCi0NCi0gICAgICAgIHN3aXRjaCAoaWlyZikNCi0gICAgICAgIHsNCi0gICAgICAgICAgICBjYXNlIElJUkZfTU9ERU1fU1RBVFVTOiAgLyogTW9kZW0gc3RhdHVzIGludGVycnVwdCAqLw0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPm1vZGVtc3RzX2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5tb2RlbXN0c19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+bW9kZW1zdHNfaGFuZGxlcikpKHRoaXNfdWFydCk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBJSVJGX1RIUkU6IC8qIFRyYW5zbWl0dGVyIEhvbGRpbmcgUmVnaXN0ZXIgRW1wdHkgKi8NCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT50eF9oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+dHhfaGFuZGxlcikNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT50eF9oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIElJUkZfUlhfREFUQTogICAgICAvKiBSZWNlaXZlZCBEYXRhIEF2YWlsYWJsZSAqLw0KLSAgICAgICAgICAgIGNhc2UgSUlSRl9EQVRBX1RJTUVPVVQ6IC8qIFJlY2VpdmVkIERhdGEgVGltZWQtb3V0ICovDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+cnhfaGFuZGxlcik7DQotICAgICAgICAgICAgICAgIGlmKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnJ4X2hhbmRsZXIpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+cnhfaGFuZGxlcikpKHRoaXNfdWFydCk7DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICB9DQotICAgICAgICAgICAgYnJlYWs7DQotDQotICAgICAgICAgICAgY2FzZSBJSVJGX1JYX0xJTkVfU1RBVFVTOiAgLyogTGluZSBTdGF0dXMgSW50ZXJydXB0ICovDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+bGluZXN0c19oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+bGluZXN0c19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+bGluZXN0c19oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBicmVhazsNCi0NCi0gICAgICAgICAgICBjYXNlIElJUkZfTU1JOg0KLSAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgLyogSWRlbnRpZnkgbXVsdGltb2RlIGludGVycnVwdHMgYW5kIGhhbmRsZSAqLw0KLQ0KLSAgICAgICAgICAgICAgICAvKiBSZWNlaXZlciB0aW1lLW91dCBpbnRlcnJ1cHQgKi8NCi0gICAgICAgICAgICAgICAgaWYocmVhZF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklJTSxFUlRPSSkpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5ydG9faGFuZGxlcik7DQotICAgICAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5ydG9faGFuZGxlcikNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAoKih0aGlzX3VhcnQtPnJ0b19oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICAvKiBOQUNLIGludGVycnVwdCAqLw0KLSAgICAgICAgICAgICAgICBpZihyZWFkX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUlNLEVOQUNLSSkpDQotICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5uYWNrX2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+bmFja19oYW5kbGVyKQ0KLSAgICAgICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgICAgICgqKHRoaXNfdWFydC0+bmFja19oYW5kbGVyKSkodGhpc191YXJ0KTsNCi0gICAgICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgICAgICAvKiBQSUQgcGFyaXR5IGVycm9yIGludGVycnVwdCAqLw0KLSAgICAgICAgICAgICAgICBpZihyZWFkX2JpdF9yZWc4KCZ0aGlzX3VhcnQtPmh3X3JlZy0+SUlNLEVQSURfUEVJKSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnBpZF9wZWlfaGFuZGxlcik7DQotICAgICAgICAgICAgICAgICAgICBpZihOVUxMX0hBTkRMRVIgIT0gdGhpc191YXJ0LT5waWRfcGVpX2hhbmRsZXIpDQotICAgICAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICAgICAgKCoodGhpc191YXJ0LT5waWRfcGVpX2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgICAgIC8qIExJTiBicmVhayBkZXRlY3Rpb24gaW50ZXJydXB0ICovDQotICAgICAgICAgICAgICAgIGlmKHJlYWRfYml0X3JlZzgoJnRoaXNfdWFydC0+aHdfcmVnLT5JSU0sRUxJTkJJKSkNCi0gICAgICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPmJyZWFrX2hhbmRsZXIpOw0KLSAgICAgICAgICAgICAgICAgICAgaWYoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+YnJlYWtfaGFuZGxlcikNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAoKih0aGlzX3VhcnQtPmJyZWFrX2hhbmRsZXIpKSh0aGlzX3VhcnQpOw0KLSAgICAgICAgICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgICAgICB9DQotDQotICAgICAgICAgICAgICAgIC8qIExJTiBTeW5jIGRldGVjdGlvbiBpbnRlcnJ1cHQgKi8NCi0gICAgICAgICAgICAgICAgaWYocmVhZF9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklJTSxFTElOU0kpKQ0KLSAgICAgICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoTlVMTF9IQU5ETEVSICE9IHRoaXNfdWFydC0+c3luY19oYW5kbGVyKTsNCi0gICAgICAgICAgICAgICAgICAgIGlmKE5VTExfSEFORExFUiAhPSB0aGlzX3VhcnQtPnN5bmNfaGFuZGxlcikNCi0gICAgICAgICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgICAgICAgICAoKih0aGlzX3VhcnQtPnN5bmNfaGFuZGxlcikpKHRoaXNfdWFydCk7DQotICAgICAgICAgICAgICAgICAgICB9DQotICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgICAgYnJlYWs7DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIGRlZmF1bHQ6DQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBBU1NFUlQoSU5WQUxJRF9JTlRFUlJVUFQpOw0KLSAgICAgICAgICAgIH0NCi0gICAgICAgICAgICBicmVhazsNCi0gICAgICAgIH0NCi0gICAgfQ0KLX0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFNlZSBtc3NfdWFydC5oIGZvciBkZXRhaWxzIG9mIGhvdyB0byB1c2UgdGhpcyBmdW5jdGlvbi4NCi0gKi8NCi1zdGF0aWMgdm9pZA0KLWRlZmF1bHRfdHhfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSkNCi17DQotICAgIHVpbnQ4X3Qgc3RhdHVzOw0KLQ0KLSAgICBBU1NFUlQoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSk7DQotICAgIEFTU0VSVCgoICh1aW50OF90ICopMCApICE9IHRoaXNfdWFydC0+dHhfYnVmZmVyKTsNCi0gICAgQVNTRVJUKDB1IDwgdGhpc191YXJ0LT50eF9idWZmX3NpemUpOw0KLQ0KLSAgICBpZigoKHRoaXNfdWFydCA9PSAmZ19tc3NfdWFydDApIHx8ICh0aGlzX3VhcnQgPT0gJmdfbXNzX3VhcnQxKSkgJiYNCi0gICAgICAgKCgodWludDhfdCAqKTAgKSAhPSB0aGlzX3VhcnQtPnR4X2J1ZmZlcikgJiYNCi0gICAgICAgKDB1IDwgdGhpc191YXJ0LT50eF9idWZmX3NpemUpKQ0KLSAgICB7DQotICAgICAgICAvKiBSZWFkIHRoZSBMaW5lIFN0YXR1cyBSZWdpc3RlciBhbmQgdXBkYXRlIHRoZSBzdGlja3kgcmVjb3JkLiAqLw0KLSAgICAgICAgc3RhdHVzID0gdGhpc191YXJ0LT5od19yZWctPkxTUjsNCi0gICAgICAgIHRoaXNfdWFydC0+c3RhdHVzIHw9IHN0YXR1czsNCi0NCi0gICAgICAgIC8qDQotICAgICAgICAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhcyBhIHJlc3VsdCBvZiBhIFRIUkUgaW50ZXJydXB0Lg0KLSAgICAgICAgICogVmVyaWZ5IHRoYXQgdGhpcyBpcyB0cnVlIGJlZm9yZSBwcm9jZWVkaW5nIHRvIHRyYW5zbWl0IGRhdGEuDQotICAgICAgICAgKi8NCi0gICAgICAgIGlmKHN0YXR1cyAmIE1TU19VQVJUX1RIUkUpDQotICAgICAgICB7DQotICAgICAgICAgICAgdWludDMyX3QgaTsNCi0gICAgICAgICAgICB1aW50MzJfdCBmaWxsX3NpemUgPSBUWF9GSUZPX1NJWkU7DQotICAgICAgICAgICAgdWludDMyX3QgdHhfcmVtYWluID0gdGhpc191YXJ0LT50eF9idWZmX3NpemUgLSB0aGlzX3VhcnQtPnR4X2lkeDsNCi0NCi0gICAgICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyB0byB0cmFuc21pdC4gKi8NCi0gICAgICAgICAgICBpZih0eF9yZW1haW4gPCBUWF9GSUZPX1NJWkUpDQotICAgICAgICAgICAgew0KLSAgICAgICAgICAgICAgICBmaWxsX3NpemUgPSB0eF9yZW1haW47DQotICAgICAgICAgICAgfQ0KLQ0KLSAgICAgICAgICAgIC8qIEZpbGwgdGhlIFRYIEZJRk8gd2l0aCB0aGUgY2FsY3VsYXRlZCB0aGUgbnVtYmVyIG9mIGJ5dGVzLiAqLw0KLSAgICAgICAgICAgIGZvcihpID0gMHU7IGkgPCBmaWxsX3NpemU7ICsraSkNCi0gICAgICAgICAgICB7DQotICAgICAgICAgICAgICAgIC8qIFNlbmQgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIGJ1ZmZlci4gKi8NCi0gICAgICAgICAgICAgICAgdGhpc191YXJ0LT5od19yZWctPlRIUiA9IHRoaXNfdWFydC0+dHhfYnVmZmVyW3RoaXNfdWFydC0+dHhfaWR4XTsNCi0gICAgICAgICAgICAgICAgKyt0aGlzX3VhcnQtPnR4X2lkeDsNCi0gICAgICAgICAgICB9DQotICAgICAgICB9DQotDQotICAgICAgICAvKiBGbGFnIFR4IGFzIGNvbXBsZXRlIGlmIGFsbCBkYXRhIGhhcyBiZWVuIHB1c2hlZCBpbnRvIHRoZSBUeCBGSUZPLiAqLw0KLSAgICAgICAgaWYodGhpc191YXJ0LT50eF9pZHggPT0gdGhpc191YXJ0LT50eF9idWZmX3NpemUpDQotICAgICAgICB7DQotICAgICAgICAgICAgdGhpc191YXJ0LT50eF9idWZmX3NpemUgPSBUWF9DT01QTEVURTsNCi0gICAgICAgICAgICAvKiBkaXNhYmxlcyBUWCBpbnRlcnJ1cHQgKi8NCi0gICAgICAgICAgICBjbGVhcl9iaXRfcmVnOCgmdGhpc191YXJ0LT5od19yZWctPklFUixFVEJFSSk7DQotICAgICAgICB9DQotICAgIH0NCi19DQotDQotI2lmZGVmIF9fY3BsdXNwbHVzDQotfQ0KLSNlbmRpZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkYWJiNzguLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzL21zc191YXJ0L21zc191YXJ0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNjM5ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDExLTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbSBNTVVBUlQgYmFyZSBtZXRhbCBzb2Z0d2FyZSBkcml2ZXINCi0gKiBwdWJsaWMgQVBJLg0KLSAqDQotICogU1ZOICRSZXZpc2lvbjogNTYxMCAkDQotICogU1ZOICREYXRlOiAyMDEzLTA0LTA1IDE0OjE5OjMwICswMTAwIChGcmksIDA1IEFwciAyMDEzKSAkDQotICovDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki8vKioNCi0gIEBtYWlucGFnZSBTbWFydEZ1c2lvbjIgTVNTIFVBUlQgQmFyZSBNZXRhbCBEcml2ZXIuDQotICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gIEBzZWN0aW9uIGludHJvX3NlYyBJbnRyb2R1Y3Rpb24NCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAgVGhlIFNtYXJ0RnVzaW9uMiBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtIChNU1MpIGluY2x1ZGVzIHR3byBtdWx0aS1tb2RlIFVBUlQNCi0gIChNTVVBUlQpIHBlcmlwaGVyYWxzIGZvciBzZXJpYWwgY29tbXVuaWNhdGlvbi4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgYSBzZXQgb2YNCi0gIGZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgdGhlIE1TUyBNTVVBUlRzICBhcyBwYXJ0IG9mIGEgYmFyZSBtZXRhbCBzeXN0ZW0NCi0gIHdoZXJlIG5vIG9wZXJhdGluZyBzeXN0ZW0gaXMgYXZhaWxhYmxlLiBUaGVzZSBkcml2ZXJzIGNhbiBiZSBhZGFwdGVkIGZvciB1c2UNCi0gIGFzIHBhcnQgb2YgYW4gb3BlcmF0aW5nIHN5c3RlbSwgYnV0IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWRhcHRhdGlvbiBsYXllcg0KLSAgYmV0d2VlbiB0aGlzIGRyaXZlciBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0ncyBkcml2ZXIgbW9kZWwgaXMgb3V0c2lkZSB0aGUNCi0gIHNjb3BlIG9mIHRoaXMgZHJpdmVyLg0KLSAgTm90ZTogTVNTIFVBUlQgaXMgc3lub255bW91cyB3aXRoIE1TUyBNTVVBUlQgaW4gdGhpcyBkb2N1bWVudC4NCi0gIA0KLSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICBAc2VjdGlvbiBod19kZXBlbmRlbmNpZXMgSGFyZHdhcmUgRmxvdyBEZXBlbmRlbmNpZXMNCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAgVGhlIGNvbmZpZ3VyYXRpb24gb2YgYWxsIGZlYXR1cmVzIG9mIHRoZSBNU1MgTU1VQVJUIHBlcmlwaGVyYWxzIGlzIGNvdmVyZWQgYnkNCi0gIHRoaXMgZHJpdmVyIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgU21hcnRGdXNpb24yIElPTVVYIGNvbmZpZ3VyYXRpb24uDQotICBTbWFydEZ1c2lvbjIgYWxsb3dzIG11bHRpcGxlIG5vbi1jb25jdXJyZW50IHVzZXMgb2Ygc29tZSBleHRlcm5hbCBwaW5zIHRocm91Z2gNCi0gIElPTVVYIGNvbmZpZ3VyYXRpb24uIFRoaXMgZmVhdHVyZSBhbGxvd3Mgb3B0aW1pemF0aW9uIG9mIGV4dGVybmFsIHBpbiB1c2FnZSBieQ0KLSAgYXNzaWduaW5nIGV4dGVybmFsIHBpbnMgZm9yIHVzZSBieSBlaXRoZXIgdGhlIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW0gb3IgdGhlDQotICBGUEdBIGZhYnJpYy4gVGhlIE1TUyBNTVVBUlQgc2VyaWFsIHNpZ25hbHMgYXJlIHJvdXRlZCB0aHJvdWdoIElPTVVYcyB0byB0aGUNCi0gIFNtYXJ0RnVzaW9uMiBkZXZpY2UgZXh0ZXJuYWwgcGlucy4gVGhlIE1TUyBNTVVBUlQgc2VyaWFsIHNpZ25hbHMgbWF5IGFsc28gYmUNCi0gIHJvdXRlZCB0aHJvdWdoIElPTVVYcyB0byB0aGUgU21hcnRGdXNpb24yIEZQR0EgZmFicmljLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbg0KLSAgSU9NVVgsIHJlZmVyIHRvIHRoZSBJT01VWCBzZWN0aW9uIG9mIHRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyDQotICBTdWJzeXN0ZW0gKE1TUykgVXNlcpJzIEd1aWRlLg0KLSAgVGhlIElPTVVYcyBhcmUgY29uZmlndXJlZCB1c2luZyB0aGUgU21hcnRGdXNpb24yIE1TUyBjb25maWd1cmF0b3IgdG9vbC4gWW91DQotICBtdXN0IGVuc3VyZSB0aGF0IHRoZSBNU1MgTU1VQVJUIHBlcmlwaGVyYWxzIGFyZSBlbmFibGVkIGFuZCBjb25maWd1cmVkIGluIHRoZQ0KLSAgU21hcnRGdXNpb24yIE1TUyBjb25maWd1cmF0b3IgaWYgeW91IHdpc2ggdG8gdXNlIHRoZW0uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uDQotICBJT01VWHMsIHJlZmVyIHRvIHRoZSBJT01VWCBzZWN0aW9uIG9mIHRoZSBTbWFydEZ1c2lvbjIgTWljcm9jb250cm9sbGVyDQotICBTdWJzeXN0ZW0gKE1TUykgVXNlcpJzIEd1aWRlLg0KLSAgVGhlIGJhc2UgYWRkcmVzcywgcmVnaXN0ZXIgYWRkcmVzc2VzIGFuZCBpbnRlcnJ1cHQgbnVtYmVyIGFzc2lnbm1lbnQgZm9yIHRoZQ0KLSAgTVNTIE1NVUFSVCBwZXJpcGhlcmFscyBhcmUgZGVmaW5lZCBhcyBjb25zdGFudHMgaW4gdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwuDQotICBZb3UgbXVzdCBlbnN1cmUgdGhhdCB0aGUgbGF0ZXN0IFNtYXJ0RnVzaW9uMiBDTVNJUyBIQUwgaXMgaW5jbHVkZWQgaW4gdGhlDQotICBwcm9qZWN0IHNldHRpbmdzIG9mIHRoZSBzb2Z0d2FyZSB0b29sIGNoYWluIHVzZWQgdG8gYnVpbGQgeW91ciBwcm9qZWN0IGFuZA0KLSAgdGhhdCBpdCBpcyBnZW5lcmF0ZWQgaW50byB5b3VyIHByb2plY3QuDQotICANCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAgQHNlY3Rpb24gdGhlb3J5X29wIFRoZW9yeSBvZiBPcGVyYXRpb24NCi0gID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAgVGhlIE1TUyBNTVVBUlQgZHJpdmVyIGZ1bmN0aW9ucyBhcmUgZ3JvdXBlZCBpbnRvIHRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllczoNCi0gICAgLSBJbml0aWFsaXphdGlvbiBhbmQgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMNCi0gICAgLSBQb2xsZWQgdHJhbnNtaXQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zDQotICAgIC0gSW50ZXJydXB0IGRyaXZlbiB0cmFuc21pdCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMNCi0gICAgDQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24NCi0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBUaGUgTVNTIE1NVUFSVCBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGZvdXIgYnJvYWQgbW9kZXMgb2Ygb3BlcmF0aW9uOg0KLSAgICAtIFVBUlQgb3IgVVNBUlQgbW9kZQ0KLSAgICAtIExJTiBtb2RlDQotICAgIC0gSXJEQSBtb2RlDQotICAgIC0gU21hcnRjYXJkIG9yIElTTyA3ODE2IG1vZGUNCi0gIFRoZSBNU1MgTU1VQVJUIGRyaXZlciBwcm92aWRlcyB0aGUgTVNTX1VBUlRfaW5pdCgpLCBNU1NfVUFSVF9saW5faW5pdCgpLA0KLSAgTVNTX1VBUlRfaXJkYV9pbml0KCkgYW5kIE1TU19VQVJUX3NtYXJ0Y2FyZF9pbml0KCkgZnVuY3Rpb25zIHRvIGluaXRpYWxpemUgdGhlDQotICBNU1MgTU1VQVJUcyBmb3Igb3BlcmF0aW9uIGluIG9uZSBvZiB0aGVzZSBtb2Rlcy4gT25lIG9mIHRoZXNlIGluaXRpYWxpemF0aW9uDQotICBmdW5jdGlvbnMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgTU1VQVJUIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlDQotICBjYWxsZWQuIFRoZSBNU1MgTU1VQVJUIG9wZXJhdGluZyBtb2RlcyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlOyB0aGVyZWZvcmUgb25seQ0KLSAgb25lIG9mIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgbXVzdCBiZSBjYWxsZWQuIFRoZSBmaXJzdCBwYXJhbWV0ZXIgb2YgdGhlDQotICBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgaXMgYSBwb2ludGVyIHRvIG9uZSBvZiB0d28gZ2xvYmFsIGRhdGEgc3RydWN0dXJlcw0KLSAgdXNlZCB0byBzdG9yZSBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgZWFjaCBNU1MgTU1VQVJULiBBIHBvaW50ZXIgdG8gdGhlc2UgZGF0YQ0KLSAgc3RydWN0dXJlcyBpcyBhbHNvIHVzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBtYW55IG9mIHRoZSBkcml2ZXIgZnVuY3Rpb25zDQotICB0byBpZGVudGlmeSB3aGljaCBNU1MgTU1VQVJUIHdpbGwgYmUgdXNlZCBieSB0aGUgY2FsbGVkIGZ1bmN0aW9uLiBUaGUgbmFtZXMgb2YNCi0gIHRoZXNlIHR3byBkYXRhIHN0cnVjdHVyZXMgYXJlIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MS4gVGhlcmVmb3JlLCBhbnkgY2FsbA0KLSAgdG8gYW4gTVNTIE1NVUFSVCBmdW5jdGlvbiBzaG91bGQgYmUgb2YgdGhlIGZvcm0gDQotICBNU1NfVUFSVF9mdW5jdGlvbl9uYW1lKCAmZ19tc3NfdWFydDAsIC4uLiApIG9yDQotICBNU1NfVUFSVF9mdW5jdGlvbl9uYW1lKCAmZ19tc3NfdWFydDEsIC4uLiApLg0KLSAgDQotICBVQVJUIG9yIFVTQVJUIE1vZGUNCi0gIEZvciB0aGUgVUFSVCBvciBVU0FSVCBtb2RlcyBvZiBvcGVyYXRpb24sIHRoZSBNU1MgTU1VQVJUIGRyaXZlciBpcyBpbml0aWFsaXplZA0KLSAgdGhyb3VnaCBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX2luaXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgVUFSVJJzDQotICBjb25maWd1cmF0aW9uIGFzIGl0cyBwYXJhbWV0ZXJzLiBUaGUgTVNTX1VBUlRfaW5pdCgpIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkDQotICBiZWZvcmUgYW55IG90aGVyIE1TUyBNTVVBUlQgZHJpdmVyIGZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLg0KLSAgVGhlIE1TU19VQVJUX2luaXQoKSBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBiYXVkIHJhdGUgYmFzZWQgb24gdGhlIGlucHV0IGJhdWQNCi0gIHJhdGUgcGFyYW1ldGVyIGFuZCBpZiBwb3NzaWJsZSB1c2VzIGEgZnJhY3Rpb25hbCBiYXVkIHJhdGUgZm9yIGdyZWF0ZXINCi0gIHByZWNpc2lvbi4gVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgTElOLCBJckRBIGFuZCBTbWFydENhcmQgbW9kZXMuDQotICANCi0gIExJTiBtb2RlDQotICBGb3IgdGhlIExJTiBtb2RlIG9mIG9wZXJhdGlvbiwgdGhlIE1TUyBNTVVBUlQgZHJpdmVyIGlzIGluaXRpYWxpemVkIHRocm91Z2ggYQ0KLSAgY2FsbCB0byB0aGUgTVNTX1VBUlRfbGluX2luaXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgTElOIG5vZGWScw0KLSAgY29uZmlndXJhdGlvbiBhcyBpdHMgcGFyYW1ldGVycy4gVGhlIE1TU19VQVJUX2xpbl9pbml0KCkgZnVuY3Rpb24gbXVzdCBiZQ0KLSAgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgTVNTIE1NVUFSVCBkcml2ZXIgZnVuY3Rpb25zIGNhbiBiZSBjYWxsZWQuIFRoZQ0KLSAgTVNTX1VBUlRfbGluX2luaXQoKSBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBiYXVkIHJhdGUgYmFzZWQgb24gdGhlIGlucHV0IGJhdWQNCi0gIHJhdGUgcGFyYW1ldGVyIGFuZCBpZiBwb3NzaWJsZSB1c2VzIGEgZnJhY3Rpb25hbCBiYXVkIHJhdGUgZm9yIGdyZWF0ZXINCi0gIHByZWNpc2lvbi4gVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgSXJEQSBhbmQgU21hcnRDYXJkIG1vZGVzLg0KLSAgVGhlIGRyaXZlciBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgTElOIG1vZGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1VBUlRfc2V0X2JyZWFrKCkNCi0gICAgLSBNU1NfVUFSVF9jbGVhcl9icmVhaygpDQotICAgIC0gTVNTX1VBUlRfc2V0X3BpZHBlaV9oYW5kbGVyKCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfbGluYnJlYWtfaGFuZGxlcigpDQotICAgIC0gTVNTX1VBUlRfc2V0X2xpbnN5bmNfaGFuZGxlcigpDQotICBOb3RlOiBUaGVzZSBMSU4gbW9kZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgdGhlDQotICBNU1NfVUFSVF9saW5faW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCi0gIA0KLSAgSXJEQSBtb2RlDQotICBGb3IgdGhlIElyREEgbW9kZSBvZiBvcGVyYXRpb24sIHRoZSBkcml2ZXIgaXMgaW5pdGlhbGl6ZWQgdGhyb3VnaCBhIGNhbGwgdG8NCi0gIHRoZSBNU1NfVUFSVF9pcmRhX2luaXQoKSBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgSXJEQSBub2RlknMNCi0gIGNvbmZpZ3VyYXRpb24gYXMgaXRzIHBhcmFtZXRlcnMuIFRoZSBNU1NfVUFSVF9pcmRhX2luaXQoKSBmdW5jdGlvbiBtdXN0IGJlDQotICBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBNU1MgTU1VQVJUIGRyaXZlciBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4gVGhlDQotICBNU1NfVUFSVF9pcmRhX2luaXQoKSBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBiYXVkIHJhdGUgYmFzZWQgb24gdGhlIGlucHV0IGJhdWQNCi0gIHJhdGUgcGFyYW1ldGVyIGFuZCBpZiBwb3NzaWJsZSB1c2VzIGEgZnJhY3Rpb25hbCBiYXVkIHJhdGUgZm9yIGdyZWF0ZXINCi0gIHByZWNpc2lvbi4gVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgTElOIGFuZCBTbWFydENhcmQgbW9kZXMuDQotICANCi0gIFNtYXJ0Y2FyZCBvciBJU08gNzgxNiBtb2RlDQotICBGb3IgdGhlIFNtYXJ0Y2FyZCBvciBJU08gNzgxNiBtb2RlIG9mIG9wZXJhdGlvbiwgdGhlIGRyaXZlciBpcyBpbml0aWFsaXplZA0KLSAgdGhyb3VnaCBhIGNhbGwgdG8gdGhlIE1TU19VQVJUX3NtYXJ0Y2FyZF9pbml0KCkgZnVuY3Rpb24uIFRoaXMgZnVuY3Rpb24gdGFrZXMNCi0gIHRoZSBzbWFydGNhcmQgY29uZmlndXJhdGlvbiBhcyBpdHMgcGFyYW1ldGVycy4gVGhlIE1TU19VQVJUX3NtYXJ0Y2FyZF9pbml0KCkNCi0gIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgTVNTIE1NVUFSVCBkcml2ZXIgZnVuY3Rpb25zIGNhbiBiZQ0KLSAgY2FsbGVkLiBUaGUgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKSBmdW5jdGlvbiBjb25maWd1cmVzIHRoZSBiYXVkIHJhdGUgYmFzZWQNCi0gIG9uIHRoZSBpbnB1dCBiYXVkIHJhdGUgcGFyYW1ldGVyIGFuZCBpZiBwb3NzaWJsZSB1c2VzIGEgZnJhY3Rpb25hbCBiYXVkIHJhdGUNCi0gIGZvciBncmVhdGVyIHByZWNpc2lvbi4gVGhpcyBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgTElOIGFuZCBJckRBIG1vZGVzLg0KLSAgVGhlIGRyaXZlciBhbHNvIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgU21hcnRjYXJkIG1vZGUgY29uZmlndXJhdGlvbiBmdW5jdGlvbnM6DQotICAgIC0gTVNTX1VBUlRfZW5hYmxlX2hhbGZkdXBsZXgoKQ0KLSAgICAtIE1TU19VQVJUX2Rpc2FibGVfaGFsZmR1cGxleCgpDQotICAgIC0gTVNTX1VBUlRfc2V0X25hY2tfaGFuZGxlcigpDQotICBOb3RlOiBUaGVzZSBTbWFydGNhcmQgbW9kZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXINCi0gIHRoZSBNU1NfVUFSVF9zbWFydGNhcmRfaW5pdCgpIGZ1bmN0aW9uIGlzIGNhbGxlZC4NCi0gIA0KLSAgQ29tbW9uIENvbmZpZ3VyYXRpb24gRnVuY3Rpb25zDQotICBUaGUgZHJpdmVyIGFsc28gcHJvdmlkZXMgdGhlIGNvbmZpZ3VyYXRpb24gZnVuY3Rpb25zIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCBhbGwNCi0gIE1TUyBNTVVBUlQgb3BlcmF0aW5nIG1vZGVzLiBUaGVzZSBjb21tb24gY29uZmlndXJhdGlvbiBmdW5jdGlvbnMgYXJlIGFzDQotICBmb2xsb3dzOg0KLSAgICAtIE1TU19VQVJUX3NldF9yeF9lbmRpYW4oKQ0KLSAgICAtIE1TU19VQVJUX3NldF90eF9lbmRpYW4oKQ0KLSAgICAtIE1TU19VQVJUX2VuYWJsZV9hZmNsZWFyKCkNCi0gICAgLSBNU1NfVUFSVF9kaXNhYmxlX2FmY2xlYXIoKQ0KLSAgICAtIE1TU19VQVJUX2VuYWJsZV9yeF90aW1lb3V0KCkNCi0gICAgLSBNU1NfVUFSVF9kaXNhYmxlX3J4X3RpbWVvdXQoKQ0KLSAgICAtIE1TU19VQVJUX2VuYWJsZV90eF90aW1lX2d1YXJkKCkNCi0gICAgLSBNU1NfVUFSVF9kaXNhYmxlX3R4X3RpbWVfZ3VhcmQoKQ0KLSAgICAtIE1TU19VQVJUX3NldF9hZGRyZXNzKCkNCi0gICAgLSBNU1NfVUFSVF9zZXRfcmVhZHlfbW9kZSgpDQotICAgIC0gTVNTX1VBUlRfc2V0X3VzYXJ0X21vZGUoKQ0KLSAgICAtIE1TU19VQVJUX3NldF9maWx0ZXJfbGVuZ3RoKCkNCi0gICAgLSBNU1NfVUFSVF9lbmFibGVfYWZtKCkNCi0gICAgLSBNU1NfVUFSVF9kaXNhYmxlX2FmbSgpDQotICBOb3RlOiBUaGVzZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9ucyBjYW4gb25seSBiZSBjYWxsZWQgYWZ0ZXIgb25lIG9mIHRoZQ0KLSAgICAgICAgTVNTX1VBUlRfaW5pdCgpLCBNU1NfVUFSVF9saW5faW5pdCgpLCBNU1NfVUFSVF9pcmRhX2luaXQoKSBvcg0KLSAgICAgICAgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKSBmdW5jdGlvbnMgaXMgY2FsbGVkLg0KLSAgDQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgDQotICBQb2xsZWQgVHJhbnNtaXQgYW5kIFJlY2VpdmUgT3BlcmF0aW9ucw0KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIFRoZSBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gdHJhbnNtaXQgYW5kIHJlY2VpdmUgZGF0YSBvbmNlIGluaXRpYWxpemVkLiANCi0gIERhdGEgaXMgdHJhbnNtaXR0ZWQgdXNpbmcgdGhlIE1TU19VQVJUX3BvbGxlZF90eCgpIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzDQotICBibG9ja2luZywgbWVhbmluZyB0aGF0IGl0IHdpbGwgb25seSByZXR1cm4gb25jZSB0aGUgZGF0YSBwYXNzZWQgdG8gdGhlDQotICBmdW5jdGlvbiBoYXMgYmVlbiBzZW50IHRvIHRoZSBNU1MgTU1VQVJUIGhhcmR3YXJlIHRyYW5zbWl0dGVyLiBEYXRhIHJlY2VpdmVkDQotICBieSB0aGUgTVNTIE1NVUFSVCBoYXJkd2FyZSByZWNlaXZlciBjYW4gYmUgcmVhZCBieSB0aGUgTVNTX1VBUlRfZ2V0X3J4KCkNCi0gIGZ1bmN0aW9uLg0KLSAgVGhlIE1TU19VQVJUX3BvbGxlZF90eF9zdHJpbmcoKSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byB0cmFuc21pdCBhIE5VTEwgKJFcMJIpDQotICB0ZXJtaW5hdGVkIHN0cmluZyBpbiBwb2xsZWQgbW9kZS4gVGhpcyBmdW5jdGlvbiBpcyBibG9ja2luZywgbWVhbmluZyB0aGF0IGl0DQotICB3aWxsIG9ubHkgcmV0dXJuIG9uY2UgdGhlIGRhdGEgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBoYXMgYmVlbiBzZW50IHRvIHRoZSBNU1MNCi0gIE1NVUFSVCBoYXJkd2FyZSB0cmFuc21pdHRlci4NCi0gIFRoZSBNU1NfVUFSVF9maWxsX3R4X2ZpZm8oKSBmdW5jdGlvbiBmaWxscyB0aGUgTVNTIE1NVUFSVCBoYXJkd2FyZSB0cmFuc21pdA0KLSAgRklGTyB3aXRoIGRhdGEgZnJvbSBhIGJ1ZmZlciBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZg0KLSAgYnl0ZXMgdHJhbnNmZXJyZWQgdG8gdGhlIEZJRk8uIElmIHRoZSB0cmFuc21pdCBGSUZPIGlzIG5vdCBlbXB0eSB3aGVuIHRoZQ0KLSAgTVNTX1VBUlRfZmlsbF90eF9maWZvKCkgZnVuY3Rpb24gaXMgY2FsbGVkIGl0IHJldHVybnMgaW1tZWRpYXRlbHkgd2l0aG91dA0KLSAgdHJhbnNmZXJyaW5nIGFueSBkYXRhIHRvIHRoZSBGSUZPLg0KLSAgDQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gIEludGVycnVwdCBEcml2ZW4gT3BlcmF0aW9ucw0KLSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICBUaGUgZHJpdmVyIGNhbiBhbHNvIHRyYW5zbWl0IG9yIHJlY2VpdmUgZGF0YSB1bmRlciBpbnRlcnJ1cHQgY29udHJvbCwgZnJlZWluZw0KLSAgeW91ciBhcHBsaWNhdGlvbiB0byBwZXJmb3JtIG90aGVyIHRhc2tzIHVudGlsIGFuIGludGVycnVwdCBvY2N1cnMgaW5kaWNhdGluZw0KLSAgdGhhdCB0aGUgZHJpdmVyknMgYXR0ZW50aW9uIGlzIHJlcXVpcmVkLg0KLSAgDQotICBJbnRlcnJ1cHQgSGFuZGxlcnMNCi0gIFRoZSBNU1MgTU1VQVJUIGRyaXZlciBzdXBwb3J0cyBhbGwgdHlwZXMgb2YgaW50ZXJydXB0IHRyaWdnZXJlZCBieSB0aGUgTVNTDQotICBNTVVBUlQuIFRoZSBkcml2ZXKScyBpbnRlcm5hbCB0b3AgbGV2ZWwgaW50ZXJydXB0IGhhbmRsZXIgaWRlbnRpZmllcyB0aGUNCi0gIHNvdXJjZSBvZiB0aGUgTVNTIE1NVUFSVCBpbnRlcnJ1cHQgYW5kIGNhbGxzIHRoZSBjb3JyZXNwb25kaW5nIGxvd2VyIGxldmVsDQotICBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgeW91IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCB3aXRoIHRoZSBkcml2ZXIgdGhyb3VnaCBjYWxscw0KLSAgdG8gdGhlIE1TU19VQVJUX3NldF9yeF9oYW5kbGVyKCksIE1TU19VQVJUX3NldF90eF9oYW5kbGVyKCksDQotICBNU1NfVUFSVF9zZXRfcnhzdGF0dXNfaGFuZGxlcigpLCBhbmQgTVNTX1VBUlRfc2V0X21vZGVtc3RhdHVzX2hhbmRsZXIoKQ0KLSAgZnVuY3Rpb25zLiBZb3UgYXJlIHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGVzZSBsb3dlciBsZXZlbCBpbnRlcnJ1cHQNCi0gIGhhbmRsZXJzIGFzIHBhcnQgb2YgeW91ciBhcHBsaWNhdGlvbiBwcm9ncmFtIGFuZCByZWdpc3RlcmluZyB0aGVtIHdpdGggdGhlDQotICBkcml2ZXIuDQotICBOb3RlOiBUaGUgU21hcnRGdXNpb24yIENNU0lTLVBBTCBkZWZpbmVzIHRoZSBVQVJUMF9JUlFIYW5kbGVyKCkgYW5kDQotICAgICAgICBVQVJUMV9JUlFIYW5kbGVyKCkgZnVuY3Rpb25zICh3aXRoIHdlYWsgbGlua2FnZSkgYW5kIGFzc2lnbnMgdGhlbSBhcyB0aGUNCi0gICAgICAgIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmVzIChJU1IpIGZvciB0aGUgTVNTIE1NVUFSVCBpbnRlcnJ1cHQgaW5wdXRzIHRvDQotICAgICAgICB0aGUgQ29ydGV4LU0zIE5WSUMuIFRoZSBNU1MgTU1VQVJUIGRyaXZlciBwcm92aWRlcyB0aGUgaW1wbGVtZW50YXRpb24NCi0gICAgICAgIGZ1bmN0aW9ucyBmb3IgYm90aCBvZiB0aGVzZSBJU1JzIGZyb20gd2hpY2ggaXQgY2FsbHMgaXRzIG93biBpbnRlcm5hbA0KLSAgICAgICAgdG9wIGxldmVsLCBpbnRlcnJ1cHQgaGFuZGxlciBmdW5jdGlvbi4NCi0gIFRoZSBNU1NfVUFSVF9lbmFibGVfaXJxKCkgYW5kIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb25zIGFyZSB1c2VkIHRvDQotICBlbmFibGUgb3IgZGlzYWJsZSB0aGUgcmVjZWl2ZWQgbGluZSBzdGF0dXMsIHJlY2VpdmVkIGRhdGEgYXZhaWxhYmxlL2NoYXJhY3Rlcg0KLSAgdGltZW91dCwgdHJhbnNtaXQgaG9sZGluZyByZWdpc3RlciBlbXB0eSBhbmQgbW9kZW0gc3RhdHVzIGludGVycnVwdHMgYXQgdGhlDQotICBNU1MgTU1VQVJUIGxldmVsLiBUaGUgTVNTX1VBUlRfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGFsc28gZW5hYmxlcyB0aGUgTVNTDQotICBNTVVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGF0IHRoZSBDb3J0ZXgtTTMgbGV2ZWwuDQotICANCi0gIFRyYW5zbWl0dGluZyBEYXRhDQotICBJbnRlcnJ1cHQtZHJpdmVuIHRyYW5zbWl0IGlzIGluaXRpYXRlZCBieSBhIGNhbGwgdG8gTVNTX1VBUlRfaXJxX3R4KCksDQotICBzcGVjaWZ5aW5nIHRoZSBibG9jayBvZiBkYXRhIHRvIHRyYW5zbWl0LiBZb3VyIGFwcGxpY2F0aW9uIGlzIHRoZW4gZnJlZSB0bw0KLSAgcGVyZm9ybSBvdGhlciB0YXNrcyBhbmQgaW5xdWlyZSBsYXRlciB3aGV0aGVyIHRyYW5zbWl0IGhhcyBjb21wbGV0ZWQgYnkNCi0gIGNhbGxpbmcgdGhlIE1TU19VQVJUX3R4X2NvbXBsZXRlKCkgZnVuY3Rpb24uIFRoZSBNU1NfVUFSVF9pcnFfdHgoKSBmdW5jdGlvbg0KLSAgZW5hYmxlcyB0aGUgVUFSVJJzIHRyYW5zbWl0IGhvbGRpbmcgcmVnaXN0ZXIgZW1wdHkgKFRIUkUpIGludGVycnVwdCBhbmQgdGhlbiwNCi0gIHdoZW4gdGhlIGludGVycnVwdCBnb2VzIGFjdGl2ZSwgdGhlIGRyaXZlcpJzIGRlZmF1bHQgVEhSRSBpbnRlcnJ1cHQgaGFuZGxlcg0KLSAgdHJhbnNmZXJzIHRoZSBkYXRhIGJsb2NrIHRvIHRoZSBVQVJUIHVudGlsIHRoZSBlbnRpcmUgYmxvY2sgaXMgdHJhbnNtaXR0ZWQuDQotICBOb3RlOiBZb3UgY2FuIHVzZSB0aGUgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSBmdW5jdGlvbiB0byBhc3NpZ24gYW4NCi0gICAgICAgIGFsdGVybmF0aXZlIGhhbmRsZXIgdG8gdGhlIFRIUkUgaW50ZXJydXB0LiBJbiB0aGlzIGNhc2UsIHlvdSBtdXN0IG5vdA0KLSAgICAgICAgdXNlIHRoZSBNU1NfVUFSVF9pcnFfdHgoKSBmdW5jdGlvbiB0byBpbml0aWF0ZSB0aGUgdHJhbnNtaXQsIGFzIHRoaXMNCi0gICAgICAgIHdpbGwgcmUtYXNzaWduIHRoZSBkcml2ZXKScyBkZWZhdWx0IFRIUkUgaW50ZXJydXB0IGhhbmRsZXIgdG8gdGhlIFRIUkUNCi0gICAgICAgIGludGVycnVwdC4gSW5zdGVhZCwgeW91ciBhbHRlcm5hdGl2ZSBUSFJFIGludGVycnVwdCBoYW5kbGVyIG11c3QgaW5jbHVkZQ0KLSAgICAgICAgYSBjYWxsIHRvIHRoZSBNU1NfVUFSVF9maWxsX3R4X2ZpZm8oKSBmdW5jdGlvbiB0byB0cmFuc2ZlciB0aGUgZGF0YSB0bw0KLSAgICAgICAgdGhlIFVBUlQuDQotICANCi0gIFJlY2VpdmluZyBEYXRhDQotICBJbnRlcnJ1cHQtZHJpdmVuIHJlY2VpdmUgaXMgcGVyZm9ybWVkIGJ5IGZpcnN0IGNhbGxpbmcNCi0gIE1TU19VQVJUX3NldF9yeF9oYW5kbGVyKCkgdG8gcmVnaXN0ZXIgYSByZWNlaXZlIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB3aWxsIGJlDQotICBjYWxsZWQgYnkgdGhlIGRyaXZlciB3aGVuZXZlciByZWNlaXZlIGRhdGEgaXMgYXZhaWxhYmxlLiBZb3UgbXVzdCBwcm92aWRlIHRoaXMNCi0gIHJlY2VpdmUgaGFuZGxlciBmdW5jdGlvbiB3aGljaCBtdXN0IGluY2x1ZGUgYSBjYWxsIHRvIHRoZSBNU1NfVUFSVF9nZXRfcngoKQ0KLSAgZnVuY3Rpb24gdG8gYWN0dWFsbHkgcmVhZCB0aGUgcmVjZWl2ZWQgZGF0YS4NCi0gIA0KLSAgLS0tLS0tLS0tLS0NCi0gIFVBUlQgU3RhdHVzDQotICAtLS0tLS0tLS0tLQ0KLSAgVGhlIGZ1bmN0aW9uIE1TU19VQVJUX2dldF9yeF9zdGF0dXMoKSBpcyB1c2VkIHRvIHJlYWQgdGhlIHJlY2VpdmVyIGVycm9yDQotICBzdGF0dXMuIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgb3ZlcnJ1biwgcGFyaXR5LCBmcmFtaW5nLCBicmVhaywgYW5kIEZJRk8NCi0gIGVycm9yIHN0YXR1cyBvZiB0aGUgcmVjZWl2ZXIuDQotICBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygpIGlzIHVzZWQgdG8gcmVhZCB0aGUgdHJhbnNtaXR0ZXIgc3RhdHVzLg0KLSAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0cmFuc21pdCBlbXB0eSAoVEVNVCkgYW5kIHRyYW5zbWl0IGhvbGRpbmcgcmVnaXN0ZXINCi0gIGVtcHR5IChUSFJFKSBzdGF0dXMgb2YgdGhlIHRyYW5zbWl0dGVyLg0KLSAgVGhlIGZ1bmN0aW9uIE1TU19VQVJUX2dldF9tb2RlbV9zdGF0dXMoKSBpcyB1c2VkIHRvIHJlYWQgdGhlIG1vZGVtIHN0YXR1cw0KLSAgZmxhZ3MuIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbW9kZW0gc3RhdHVzIHJlZ2lzdGVyLg0KLSAgDQotICAtLS0tLS0tLQ0KLSAgTG9vcGJhY2sNCi0gIC0tLS0tLS0tDQotICBUaGUgTVNTX1VBUlRfc2V0X2xvb3BiYWNrKCkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gbG9jYWxseSBsb29wYmFjayB0aGUgVHgNCi0gIGFuZCBSeCBsaW5lcyBvZiBhIFVBUlQuIFRoaXMgaXMgbm90IHRvIGJlIGNvbmZ1c2VkIHdpdGggdGhlIGxvb3BiYWNrIG9mIFVBUlQwDQotICB0byBVQVJUMSwgd2hpY2ggY2FuIGJlIGFjaGlldmVkIHRocm91Z2ggdGhlIG1pY3JvY29udHJvbGxlciBzdWJzeXN0ZW2ScyBzeXN0ZW0NCi0gIHJlZ2lzdGVycy4NCi0gIA0KLSAqLy8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovDQotI2lmbmRlZiBfX01TU19VQVJUX0hfDQotI2RlZmluZSBfX01TU19VQVJUX0hfIDENCi0NCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbTJzeHh4LmgiDQotI2luY2x1ZGUgPHN0ZGRlZi5oPg0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLWV4dGVybiAiQyIgew0KLSNlbmRpZg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBCYXVkIHJhdGVzDQotICBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSB1c2VkIHRvIHNwZWNpZnkgc3RhbmRhcmQgYmF1ZCByYXRlcyBhcyBhDQotICBwYXJhbWV0ZXIgdG8gdGhlIE1TU19VQVJUX2luaXQoKSBmdW5jdGlvbi4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUXzExMF9CQVVEICAgICAgIDExMA0KLSNkZWZpbmUgTVNTX1VBUlRfMzAwX0JBVUQgICAgICAgMzAwDQotI2RlZmluZSBNU1NfVUFSVF8xMjAwX0JBVUQgICAgICAxMjAwDQotI2RlZmluZSBNU1NfVUFSVF8yNDAwX0JBVUQgICAgICAyNDAwDQotI2RlZmluZSBNU1NfVUFSVF80ODAwX0JBVUQgICAgICA0ODAwDQotI2RlZmluZSBNU1NfVUFSVF85NjAwX0JBVUQgICAgICA5NjAwDQotI2RlZmluZSBNU1NfVUFSVF8xOTIwMF9CQVVEICAgICAxOTIwMA0KLSNkZWZpbmUgTVNTX1VBUlRfMzg0MDBfQkFVRCAgICAgMzg0MDANCi0jZGVmaW5lIE1TU19VQVJUXzU3NjAwX0JBVUQgICAgIDU3NjAwDQotI2RlZmluZSBNU1NfVUFSVF8xMTUyMDBfQkFVRCAgICAxMTUyMDANCi0jZGVmaW5lIE1TU19VQVJUXzIzMDQwMF9CQVVEICAgIDIzMDQwMA0KLSNkZWZpbmUgTVNTX1VBUlRfNDYwODAwX0JBVUQgICAgNDYwODAwDQotI2RlZmluZSBNU1NfVUFSVF85MjE2MDBfQkFVRCAgICA5MjE2MDANCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgRGF0YSBCaXRzIExlbmd0aA0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFyZSB1c2VkIHRvIGJ1aWxkIHRoZSB2YWx1ZSBvZiB0aGUgTVNTX1VBUlRfaW5pdCgpDQotICBmdW5jdGlvbiBsaW5lX2NvbmZpZyBwYXJhbWV0ZXIuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9EQVRBXzVfQklUUyAgICAgKCAodWludDhfdCkgMHgwMCApDQotI2RlZmluZSBNU1NfVUFSVF9EQVRBXzZfQklUUyAgICAgKCAodWludDhfdCkgMHgwMSApDQotI2RlZmluZSBNU1NfVUFSVF9EQVRBXzdfQklUUyAgICAgKCAodWludDhfdCkgMHgwMiApDQotI2RlZmluZSBNU1NfVUFSVF9EQVRBXzhfQklUUyAgICAgKCAodWludDhfdCkgMHgwMyApDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFBhcml0eQ0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFyZSB1c2VkIHRvIGJ1aWxkIHRoZSB2YWx1ZSBvZiB0aGUgTVNTX1VBUlRfaW5pdCgpDQotICBmdW5jdGlvbiBsaW5lX2NvbmZpZyBwYXJhbWV0ZXIuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9OT19QQVJJVFkgICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfT0REX1BBUklUWSAgICAgICAgICAoICh1aW50OF90KSAweDA4ICkNCi0jZGVmaW5lIE1TU19VQVJUX0VWRU5fUEFSSVRZICAgICAgICAgKCAodWludDhfdCkgMHgxOCApDQotI2RlZmluZSBNU1NfVUFSVF9TVElDS19QQVJJVFlfMCAgICAgICggKHVpbnQ4X3QpIDB4MzggKQ0KLSNkZWZpbmUgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzEgICAgICAoICh1aW50OF90KSAweDI4ICkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgTnVtYmVyIG9mIFN0b3AgQml0cw0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFyZSB1c2VkIHRvIGJ1aWxkIHRoZSB2YWx1ZSBvZiB0aGUgTVNTX1VBUlRfaW5pdCgpDQotICBmdW5jdGlvbiBsaW5lX2NvbmZpZyBwYXJhbWV0ZXIuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9PTkVfU1RPUF9CSVQgICAgICAgICggKHVpbnQ4X3QpIDB4MDAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfT05FSEFMRl9TVE9QX0JJVCAgICAoICh1aW50OF90KSAweDA0ICkNCi0jZGVmaW5lIE1TU19VQVJUX1RXT19TVE9QX0JJVFMgICAgICAgKCAodWludDhfdCkgMHgwNCApDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFJlY2VpdmVyIEVycm9yIFN0YXR1cw0KLSAgVGhlIGZvbGxvd2luZyBkZWZpbmVzIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgVUFSVCByZWNlaXZlciBlcnJvciB0eXBlLg0KLSAgVGhlc2UgYml0IG1hc2sgY29uc3RhbnRzIGFyZSB1c2VkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUNCi0gIE1TU19VQVJUX2dldF9yeF9zdGF0dXMoKSBmdW5jdGlvbiB0byBmaW5kIG91dCBpZiBhbnkgZXJyb3JzIG9jY3VycmVkIHdoaWxlDQotICByZWNlaXZpbmcgZGF0YS4NCi0gKi8NCi0jZGVmaW5lIE1TU19VQVJUX0lOVkFMSURfUEFSQU0gICAgKCAodWludDhfdCkweEZGICkNCi0jZGVmaW5lIE1TU19VQVJUX05PX0VSUk9SICAgICAgICAgKCAodWludDhfdCkweDAwICkNCi0jZGVmaW5lIE1TU19VQVJUX09WRVJVTl9FUlJPUiAgICAgKCAodWludDhfdCkweDAyICkNCi0jZGVmaW5lIE1TU19VQVJUX1BBUklUWV9FUlJPUiAgICAgKCAodWludDhfdCkweDA0ICkNCi0jZGVmaW5lIE1TU19VQVJUX0ZSQU1JTkdfRVJST1IgICAgKCAodWludDhfdCkweDA4ICkNCi0jZGVmaW5lIE1TU19VQVJUX0JSRUFLX0VSUk9SICAgICAgKCAodWludDhfdCkweDEwICkNCi0jZGVmaW5lIE1TU19VQVJUX0ZJRk9fRVJST1IgICAgICAgKCAodWludDhfdCkweDgwICkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVHJhbnNtaXR0ZXIgU3RhdHVzDQotICBUaGUgZm9sbG93aW5nIGRlZmluaXRpb25zIGFyZSB1c2VkIHRvIGRldGVybWluZSB0aGUgVUFSVCB0cmFuc21pdHRlciBzdGF0dXMuDQotICBUaGVzZSBiaXQgbWFzayBjb25zdGFudHMgYXJlIHVzZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZQ0KLSAgTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygpIGZ1bmN0aW9uIHRvIGZpbmQgb3V0IHRoZSBzdGF0dXMgb2YgdGhlIHRyYW5zbWl0dGVyLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1VBUlRfVFhfQlVTWSAgICAgICAgICAoICh1aW50OF90KSAweDAwICkNCi0jZGVmaW5lIE1TU19VQVJUX1RIUkUgICAgICAgICAgICAgKCAodWludDhfdCkgMHgyMCApDQotI2RlZmluZSBNU1NfVUFSVF9URU1UICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4NDAgKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBNb2RlbSBTdGF0dXMNCi0gIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG1vZGVtIHN0YXR1cy4gVGhlc2UgYml0DQotICBtYXNrIGNvbnN0YW50cyBhcmUgdXNlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlDQotICBNU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzKCkgZnVuY3Rpb24gdG8gZmluZCBvdXQgdGhlIG1vZGVtIHN0YXR1cyBvZg0KLSAgdGhlIFVBUlQuDQotICovDQotI2RlZmluZSBNU1NfVUFSVF9EQ1RTICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDEgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRERTUiAgICAgICAgICAgICAoICh1aW50OF90KSAweDAyICkNCi0jZGVmaW5lIE1TU19VQVJUX1RFUkkgICAgICAgICAgICAgKCAodWludDhfdCkgMHgwNCApDQotI2RlZmluZSBNU1NfVUFSVF9ERENEICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4MDggKQ0KLSNkZWZpbmUgTVNTX1VBUlRfQ1RTICAgICAgICAgICAgICAoICh1aW50OF90KSAweDEwICkNCi0jZGVmaW5lIE1TU19VQVJUX0RTUiAgICAgICAgICAgICAgKCAodWludDhfdCkgMHgyMCApDQotI2RlZmluZSBNU1NfVUFSVF9SSSAgICAgICAgICAgICAgICggKHVpbnQ4X3QpIDB4NDAgKQ0KLSNkZWZpbmUgTVNTX1VBUlRfRENEICAgICAgICAgICAgICAoICh1aW50OF90KSAweDgwICkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhpcyB0eXBlZGVmIHNwZWNpZmllcyB0aGUgaXJxX21hc2sgcGFyYW1ldGVyIGZvciB0aGUgTVNTX1VBUlRfZW5hYmxlX2lycSgpDQotICBhbmQgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbnMuIFRoZSBkcml2ZXIgZGVmaW5lcyBhIHNldCBvZiBiaXQgbWFza3MNCi0gIHRoYXQgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHZhbHVlIG9mIHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIuIEEgYml0d2lzZSBPUiBvZg0KLSAgdGhlc2UgYml0IG1hc2tzIGlzIHVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgbXVsdGlwbGUgTVNTIE1NVUFSVCBpbnRlcnJ1cHRzLg0KLSAqLw0KLXR5cGVkZWYgdWludDE2X3QgbXNzX3VhcnRfaXJxX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBmb2xsb3dpbmcgZGVmaW5lcyBzcGVjaWZ5IHRoZSBpbnRlcnJ1cHQgbWFza3MgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIE1TUw0KLSAgTU1VQVJUIGludGVycnVwdHMuIFRoZXkgYXJlIHVzZWQgdG8gYnVpbGQgdGhlIHZhbHVlIG9mIHRoZSBpcnFfbWFzayBwYXJhbWV0ZXINCi0gIGZvciB0aGUgTVNTX1VBUlRfZW5hYmxlX2lycSgpIGFuZCBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9ucy4gQSBiaXR3aXNlDQotICBPUiBvZiB0aGVzZSBjb25zdGFudHMgaXMgdXNlZCB0byBlbmFibGUgb3IgZGlzYWJsZSBtdWx0aXBsZSBpbnRlcnJ1cHRzLg0KLSAqLw0KLSNkZWZpbmUgTVNTX1VBUlRfUkJGX0lSUSAgICAgICAgMHgwMDENCi0jZGVmaW5lIE1TU19VQVJUX1RCRV9JUlEgICAgICAgIDB4MDAyDQotI2RlZmluZSBNU1NfVUFSVF9MU19JUlEgICAgICAgICAweDAwNA0KLSNkZWZpbmUgTVNTX1VBUlRfTVNfSVJRICAgICAgICAgMHgwMDgNCi0jZGVmaW5lIE1TU19VQVJUX1JUT19JUlEgICAgICAgIDB4MDEwDQotI2RlZmluZSBNU1NfVUFSVF9OQUNLX0lSUSAgICAgICAweDAyMA0KLSNkZWZpbmUgTVNTX1VBUlRfUElEUEVfSVJRICAgICAgMHgwNDANCi0jZGVmaW5lIE1TU19VQVJUX0xJTkJfSVJRICAgICAgIDB4MDgwDQotI2RlZmluZSBNU1NfVUFSVF9MSU5TX0lSUSAgICAgICAweDEwMA0KLSNkZWZpbmUgTVNTX1VBUlRfSU5WQUxJRF9JUlEgICAgVUlOVDE2X01BWA0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGlzIGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgcmVjZWl2ZXIgRklGTyB0cmlnZ2VyIGxldmVsLiBUaGlzIGlzIHRoZSBudW1iZXINCi0gIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSByZWNlaXZlZCBiZWZvcmUgdGhlIFVBUlQgZ2VuZXJhdGVzIGEgcmVjZWl2ZSBkYXRhDQotICBhdmFpbGFibGUgaW50ZXJydXB0LiBJdCBwcm92aWRlcyB0aGUgYWxsb3dlZCB2YWx1ZXMgZm9yIHRoZQ0KLSAgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSBmdW5jdGlvbiB0cmlnZ2VyX2xldmVsIHBhcmFtZXRlci4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfVUFSVF9GSUZPX1NJTkdMRV9CWVRFICAgID0gMHgwMCwNCi0gICAgTVNTX1VBUlRfRklGT19GT1VSX0JZVEVTICAgICA9IDB4NDAsDQotICAgIE1TU19VQVJUX0ZJRk9fRUlHSFRfQllURVMgICAgPSAweDgwLA0KLSAgICBNU1NfVUFSVF9GSUZPX0ZPVVJURUVOX0JZVEVTID0gMHhDMCwNCi0gICAgTVNTX1VBUlRfRklGT19JTlZBTElEX1RSSUdfTEVWRUwNCi19IG1zc191YXJ0X3J4X3RyaWdfbGV2ZWxfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIGxvb3BiYWNrIGNvbmZpZ3VyYXRpb24gb2YgdGhlIFVBUlQuIEl0IHByb3ZpZGVzDQotICB0aGUgYWxsb3dlZCB2YWx1ZXMgZm9yIHRoZSBNU1NfVUFSVF9zZXRfbG9vcGJhY2soKSBmdW5jdGlvbpJzIGxvb3BiYWNrDQotICBwYXJhbWV0ZXIuIFVzZSBNU1NfVUFSVF9MT0NBTF9MT09QQkFDS19PTiB0byBzZXQgdXAgdGhlIFVBUlQgdG8gbG9jYWxseQ0KLSAgbG9vcGJhY2sgaXRzIFR4IGFuZCBSeCBsaW5lcy4gVXNlIE1TU19VQVJUX1JFTU9URV9MT09QQkFDS19PTiB0byBzZXQgdXAgdGhlDQotICBVQVJUIGluIHJlbW90ZSBsb29wYmFjayBtb2RlLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09GRiwNCi0gICAgTVNTX1VBUlRfTE9DQUxfTE9PUEJBQ0tfT04sDQotICAgIE1TU19VQVJUX1JFTU9URV9MT09QQkFDS19PRkYsDQotICAgIE1TU19VQVJUX1JFTU9URV9MT09QQkFDS19PTiwNCi0gICAgTVNTX1VBUlRfQVVUT19FQ0hPX09GRiwNCi0gICAgTVNTX1VBUlRfQVVUT19FQ0hPX09OLA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX0xPT1BCQUNLDQotfSBtc3NfdWFydF9sb29wYmFja190Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBJckRBIGlucHV0IC8gb3V0cHV0IHBvbGFyaXR5Lg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIFJaSSBtb2RlbSBwb2xhcml0eSBmb3IgaW5wdXQgYW5kIG91dHB1dCBzaWduYWxzLiANCi0gIFRoaXMgaXMgcGFzc2VkIGFzIHBhcmFtZXRlcnMgaW4gTVNTX1VBUlRfaXJkYV9pbml0KCkgZnVuY3Rpb24uDQotICovDQotdHlwZWRlZiBlbnVtIHsNCi0gICAgTVNTX1VBUlRfQUNUSVZFX0xPVyA9IDB1LA0KLSAgICBNU1NfVUFSVF9BQ1RJVkVfSElHSCA9IDF1LA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX1BPTEFSSVRZDQotfSBtc3NfdWFydF9yemlfcG9sYXJpdHlfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgSXJEQSBpbnB1dCAvIG91dHB1dCBwdWxzZSB3aWR0aC4NCi0gIFRoaXMgZW51bWVyYXRpb24gc3BlY2lmaWVzIHRoZSBSWkkgbW9kZW0gcHVsc2Ugd2lkdGggZm9yIGlucHV0IGFuZCBvdXRwdXQgc2lnbmFscy4gDQotICBUaGlzIGlzIHBhc3NlZCBhcyBwYXJhbWV0ZXJzIGluIE1TU19VQVJUX2lyZGFfaW5pdCgpIGZ1bmN0aW9uLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUXzNfQllfMTYgPSAwdSwNCi0gICAgTVNTX1VBUlRfMV9CWV80ID0gMXUsDQotICAgIE1TU19VQVJUX0lOVkFMSURfUFcNCi19IG1zc191YXJ0X3J6aV9wdWxzZXdpZHRoX3Q7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFR4IC8gUnggZW5kaWFuZXNzLg0KLSAgVGhpcyBlbnVtZXJhdGlvbiBzcGVjaWZpZXMgdGhlIE1TQiBmaXJzdCBvciBMU0IgZmlyc3QgZm9yIE1TUyBVQVJUIHRyYW5zbWl0dGVyIA0KLSAgYW5kIHJlY2VpdmVyLiBUaGUgcGFyYW1ldGVyIG9mIHRoaXMgdHlwZSBzaGFsbCBiZSBwYXNzZWQgaW4gDQotICBNU1NfVUFSVF9zZXRfcnhfZW5kaWFuKClhbmQgTVNTX1VBUlRfc2V0X3R4X2VuZGlhbigpIGZ1bmN0aW9ucy4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfVUFSVF9MSVRUTEVFTkQsDQotICAgIE1TU19VQVJUX0JJR0VORCwNCi0gICAgTVNTX1VBUlRfSU5WQUxJRF9FTkRJQU4NCi19IG1zc191YXJ0X2VuZGlhbl90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBHbGl0Y2ggZmlsdGVyIGxlbmd0aC4NCi0gIFRoaXMgZW51bWVyYXRpb24gc3BlY2lmaWVzIHRoZSBnbGl0Y2ggZmlsdGVyIGxlbmd0aC4gVGhlIGZ1bmN0aW9uIA0KLSAgTVNTX1VBUlRfc2V0X2ZpbHRlcl9sZW5ndGgoKSBhY2NlcHRzIHRoZSBwYXJhbWV0ZXIgb2YgdGhpcyB0eXBlLg0KLSAqLw0KLXR5cGVkZWYgZW51bSB7DQotICAgIE1TU19VQVJUX0xFTjAgPSAwLA0KLSAgICBNU1NfVUFSVF9MRU4xID0gMSwNCi0gICAgTVNTX1VBUlRfTEVOMiA9IDIsDQotICAgIE1TU19VQVJUX0xFTjMgPSAzLA0KLSAgICBNU1NfVUFSVF9MRU40ID0gNCwNCi0gICAgTVNTX1VBUlRfTEVONSA9IDUsDQotICAgIE1TU19VQVJUX0xFTjYgPSA2LA0KLSAgICBNU1NfVUFSVF9MRU43ID0gNywNCi0gICAgTVNTX1VBUlRfSU5WQUxJRF9GSUxURVJfTEVOR1RIID0gOA0KLX0gbXNzX3VhcnRfZmlsdGVyX2xlbmd0aF90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUWFJEWSBhbmQgUlhSRFkgbW9kZS4NCi0gIFRoaXMgZW51bWVyYXRpb24gc3BlY2lmaWVzIHRoZSBUWFJEWSBhbmQgUlhSRFkgc2lnbmFsIG1vZGVzLiBUaGUgZnVuY3Rpb24gDQotICBNU1NfVUFSVF9zZXRfcmVhZHlfbW9kZSgpIGFjY2VwdHMgdGhlIHBhcmFtZXRlciBvZiB0aGlzIHR5cGUuDQotICovDQotdHlwZWRlZiBlbnVtIHsNCi0gICAgTVNTX1VBUlRfUkVBRFlfTU9ERTAsDQotICAgIE1TU19VQVJUX1JFQURZX01PREUxLA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX1JFQURZX01PREUNCi19IG1zc191YXJ0X3JlYWR5X21vZGVfdDsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVVNBUlQgbW9kZSBvZiBvcGVyYXRpb24uDQotICBUaGlzIGVudW1lcmF0aW9uIHNwZWNpZmllcyB0aGUgbW9kZSBvZiBvcGVyYXRpb24gb2YgTVNTIFVBUlQgd2hlbiBvcGVyYXRpbmcgDQotICBhcyBVU0FSVC4gVGhlIGZ1bmN0aW9uIE1TU19VQVJUX3NldF91c2FydF9tb2RlKCkgYWNjZXB0cyB0aGUgcGFyYW1ldGVyIG9mIHRoaXMgdHlwZS4NCi0gKi8NCi10eXBlZGVmIGVudW0gew0KLSAgICBNU1NfVUFSVF9BU1lOQ19NT0RFICAgICAgICAgICAgICAgPSAwLA0KLSAgICBNU1NfVUFSVF9TWU5DX1NMQVZFX1BPU19FREdFX0NMSyAgPSAxLA0KLSAgICBNU1NfVUFSVF9TWU5DX1NMQVZFX05FR19FREdFX0NMSyAgPSAyLA0KLSAgICBNU1NfVUFSVF9TWU5DX01BU1RFUl9QT1NfRURHRV9DTEsgPSAzLA0KLSAgICBNU1NfVUFSVF9TWU5DX01BU1RFUl9ORUdfRURHRV9DTEsgPSA0LA0KLSAgICBNU1NfVUFSVF9JTlZBTElEX1NZTkNfTU9ERSAgICAgICAgPSA1DQotfSBtc3NfdWFydF91c2FydF9tb2RlX3Q7DQotDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIE1TUyBVQVJUIGluc3RhbmNlIHR5cGUuDQotICBUaGlzIGlzIHR5cGUgZGVmaW5pdGlvbiBmb3IgTVNTIFVBUlQgaW5zdGFuY2UuIFlvdSBuZWVkIHRvIGNyZWF0ZSBhbmQNCi0gIG1haW50YWluIGEgcmVjb3JkIG9mIHRoaXMgdHlwZS4gVGhpcyBob2xkcyBhbGwgZGF0YSByZWdhcmRpbmcgdGhlIE1TUyBVQVJUDQotICBpbnN0YW5jZQ0KLSAqLw0KLXR5cGVkZWYgc3RydWN0ICBtc3NfdWFydF9pbnN0YW5jZSBtc3NfdWFydF9pbnN0YW5jZV90Ow0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBJbnRlcnJ1cHQgaGFuZGxlciBwcm90b3R5cGUuDQotICBUaGlzIHR5cGVkZWYgc3BlY2lmaWVzIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIE1TUyBVQVJUIGludGVycnVwdCBoYW5kbGVycy4NCi0gIEFsbCBpbnRlcnJ1cHQgaGFuZGxlcnMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBNU1MgVUFSVCBkcml2ZXIgbXVzdCBiZSBvZiB0aGlzIHR5cGUuDQotICBUaGUgaW50ZXJydXB0IGhhbmRsZXJzIGFyZSByZWdpc3RlcmVkIHdpdGggdGhlIGRyaXZlciB0aHJvdWdoIHRoZQ0KLSAgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSwgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSwNCi0gIE1TU19VQVJUX3NldF9yeHN0YXR1c19oYW5kbGVyKCksIGFuZCBNU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcigpDQotICBmdW5jdGlvbnMuDQotICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gZWl0aGVyIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxIHRvDQotICBpZGVudGlmeSB0aGUgTVNTIFVBUlQgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGhhbmRsZXIgZnVuY3Rpb24uDQotICovDQotdHlwZWRlZiB2b2lkICgqbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCkoIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQgKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgbXNzX3VhcnRfaW5zdGFuY2UuDQotICBUaGVyZSBpcyBvbmUgaW5zdGFuY2Ugb2YgdGhpcyBzdHJ1Y3R1cmUgZm9yIGVhY2ggaW5zdGFuY2Ugb2YgdGhlDQotICBtaWNyb2NvbnRyb2xsZXIgc3Vic3lzdGVtknMgVUFSVHMuIEluc3RhbmNlcyBvZiB0aGlzIHN0cnVjdHVyZSBhcmUgdXNlZCB0bw0KLSAgaWRlbnRpZnkgYSBzcGVjaWZpYyBVQVJULiBBIHBvaW50ZXIgdG8gYW4gaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgdGhlDQotICBtc3NfdWFydF9pbnN0YW5jZV90IHN0cnVjdHVyZSBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0bw0KLSAgTVNTIFVBUlQgZHJpdmVyIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB3aGljaCBVQVJUIHNob3VsZCBwZXJmb3JtIHRoZQ0KLSAgcmVxdWVzdGVkIG9wZXJhdGlvbi4NCi0gKi8NCi1zdHJ1Y3QgbXNzX3VhcnRfaW5zdGFuY2V7DQotICAgIC8qIENNU0lTIHJlbGF0ZWQgZGVmaW5lcyBpZGVudGlmeWluZyB0aGUgVUFSVCBoYXJkd2FyZS4gKi8NCi0gICAgVUFSVF9UeXBlRGVmICogICAgICAgICAgaHdfcmVnOyAgICAgLyohPCBQb2ludGVyIHRvIFVBUlQgcmVnaXN0ZXJzLiAqLw0KLSAgICBJUlFuX1R5cGUgICAgICAgICAgICAgICBpcnFuOyAgICAgICAvKiE8IFVBUlQncyBDb3J0ZXgtTTMgTlZJQyBpbnRlcnJ1cHQgbnVtYmVyLiAqLw0KLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBiYXVkcmF0ZTsgICAvKiE8IE9wZXJhdGluZyBiYXVkIHJhdGUuICovDQotICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIGxpbmVjb25maWc7IC8qITwgTGluZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMuICovDQotICAgIHVpbnQ4X3QgICAgICAgICAgICAgICAgIHN0YXR1czsgICAgIC8qITwgU3RpY2t5IGxpbmUgc3RhdHVzLiAqLw0KLQ0KLSAgICAvKiB0cmFuc21pdCByZWxhdGVkIGluZm8gKHVzZWQgd2l0aCBpbnRlcnJ1cHQgZHJpdmVuIHRyYW5zbWl0KTogKi8NCi0gICAgY29uc3QgdWludDhfdCAqIHR4X2J1ZmZlcjsgICAgICAgICAgLyohPCBQb2ludGVyIHRvIHRyYW5zbWl0IGJ1ZmZlci4gKi8NCi0gICAgdWludDMyX3QgICAgICAgIHR4X2J1ZmZfc2l6ZTsgICAgICAgLyohPCBUcmFuc21pdCBidWZmZXIgc2l6ZS4gKi8NCi0gICAgdWludDMyX3QgICAgICAgIHR4X2lkeDsgICAgICAgICAgICAgLyohPCBJbmRleCB3aXRoaW4gdHJhbnNtaXQgYnVmZmVyIG9mIG5leHQgYnl0ZSB0byB0cmFuc21pdC4qLw0KLQ0KLSAgICAvKiBsaW5lIHN0YXR1cyBpbnRlcnJ1cHQgaGFuZGxlcjoqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGxpbmVzdHNfaGFuZGxlcjsgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIGxpbmUgc3RhdHVzIGhhbmRsZXIuICovDQotICAgIC8qIHJlY2VpdmUgaW50ZXJydXB0IGhhbmRsZXI6Ki8NCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCByeF9oYW5kbGVyOyAgICAgICAgLyohPCBQb2ludGVyIHRvIHVzZXIgcmVnaXN0ZXJlZCByZWNlaXZlciBoYW5kbGVyLiAqLw0KLSAgICAvKiB0cmFuc21pdCBpbnRlcnJ1cHQgaGFuZGxlcjoqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IHR4X2hhbmRsZXI7ICAgICAgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIHRyYW5zbWl0IGhhbmRsZXIuICovDQotICAgIC8qIG1vZGVtIHN0YXR1cyBpbnRlcnJ1cHQgaGFuZGxlcjoqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IG1vZGVtc3RzX2hhbmRsZXI7ICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIG1vZGVtIHN0YXR1cyBoYW5kbGVyLiAqLw0KLSAgICAvKiByZWNlaXZlciB0aW1lb3V0IGludGVycnVwdCBoYW5kbGVyICovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgcnRvX2hhbmRsZXI7ICAgICAgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgcmVjZWl2ZXIgdGltZW91dCBoYW5kbGVyLiAqLw0KLSAgICAvKiBOQUNLIGludGVycnVwdCBoYW5kbGVyICovDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgbmFja19oYW5kbGVyOyAgICAgIC8qITwgUG9pbnRlciB0byB1c2VyIHJlZ2lzdGVyZWQgTkFDSyBoYW5kbGVyLiAqLw0KLSAgICAvKiBQSUQgcGFyaXR5IHBycm9yIGludGVycnVwIGhhbmRsZXIgKi8NCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBwaWRfcGVpX2hhbmRsZXI7ICAgLyohPCBQb2ludGVyIHRvIHVzZXIgcmVnaXN0ZXJlZCBQSUQgcGFyaXR5IGVycm9yIGhhbmRsZXIuICovDQotICAgIC8qIExJTiBicmVhayBpbnRlcnJ1cHQgaGFuZGxlciAqLw0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGJyZWFrX2hhbmRsZXI7ICAgICAvKiE8IFBvaW50ZXIgdG8gdXNlciByZWdpc3RlcmVkIExJTiBicmVhayBoYW5kbGVyLiAqLw0KLSAgICAvKiBMSU4gc3luYyBkZXRlY3Rpb24gaW50ZXJydXB0IGhhbmRsZXIgKi8NCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBzeW5jX2hhbmRsZXI7ICAgICAgLyohPCBQb2ludGVyIHRvIHVzZXIgcmVnaXN0ZXJlZCBMSU4gc3luYyBkZWN0ZWN0aW9uIGhhbmRsZXIuICovDQotfTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhpcyBpbnN0YW5jZSBvZiBtc3NfdWFydF9pbnN0YW5jZV90IGhvbGRzIGFsbCBkYXRhIHJlbGF0ZWQgdG8gdGhlIG9wZXJhdGlvbnMNCi0gIHBlcmZvcm1lZCBieSBVQVJUMC4gVGhlIGZ1bmN0aW9uIE1TU19VQVJUX2luaXQoKSBpbml0aWFsaXplcyB0aGlzIHN0cnVjdHVyZS4NCi0gIEEgcG9pbnRlciB0byBnX21zc191YXJ0MCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byBNU1MgVUFSVCBkcml2ZXINCi0gIGZ1bmN0aW9ucyB0byBpbmRpY2F0ZSB0aGF0IFVBUlQwIHNob3VsZCBwZXJmb3JtIHRoZSByZXF1ZXN0ZWQgb3BlcmF0aW9uLg0KLSAqLw0KLWV4dGVybiBtc3NfdWFydF9pbnN0YW5jZV90IGdfbXNzX3VhcnQwOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGlzIGluc3RhbmNlIG9mIG1zc191YXJ0X2luc3RhbmNlX3QgaG9sZHMgYWxsIGRhdGEgcmVsYXRlZCB0byB0aGUgb3BlcmF0aW9ucw0KLSAgcGVyZm9ybWVkIGJ5IFVBUlQxLiBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfaW5pdCgpIGluaXRpYWxpemVzIHRoaXMgc3RydWN0dXJlLg0KLSAgQSBwb2ludGVyIHRvIGdfbXNzX3VhcnQxIGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvIE1TUyBVQVJUIGRyaXZlcg0KLSAgZnVuY3Rpb25zIHRvIGluZGljYXRlIHRoYXQgVUFSVDEgc2hvdWxkIHBlcmZvcm0gdGhlIHJlcXVlc3RlZCBvcGVyYXRpb24uDQotICovDQotZXh0ZXJuIG1zc191YXJ0X2luc3RhbmNlX3QgZ19tc3NfdWFydDE7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9pbml0KCkgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgYW5kIGNvbmZpZ3VyZXMgb25lIG9mIHRoZSBTbWFydEZ1c2lvbjINCi0gIE1TUyBVQVJUcyB3aXRoIHRoZSBjb25maWd1cmF0aW9uIHBhc3NlZCBhcyBhIHBhcmFtZXRlci4gVGhlIGNvbmZpZ3VyYXRpb24NCi0gIHBhcmFtZXRlcnMgYXJlIHRoZSBiYXVkX3JhdGUgd2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYmF1ZCB2YWx1ZSBhbmQgdGhlDQotICBsaW5lX2NvbmZpZyB3aGljaCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGxpbmUgY29uZmlndXJhdGlvbiAoYml0IGxlbmd0aCwNCi0gIHN0b3AgYml0cyBhbmQgcGFyaXR5KS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3Qgc3RydWN0dXJlDQotICAgIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0byBiZSBpbml0aWFsaXplZC4gVGhlcmUgYXJlIHR3bw0KLSAgICBzdWNoIGRhdGEgc3RydWN0dXJlcywgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTDQotICAgIFVBUlQwIGFuZCBNU1MgVUFSVDEgcmVzcGVjdGl2ZWx5LiBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlcg0KLSAgICB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDEgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluDQotICAgIHRoZSBVQVJUIGRyaXZlci4uDQotDQotICBAcGFyYW0gYmF1ZF9yYXRlDQotICAgIFRoZSBiYXVkX3JhdGUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgYmF1ZCByYXRlLiBJdCBjYW4gYmUgc3BlY2lmaWVkIGZvcg0KLSAgICBjb21tb24gYmF1ZCByYXRlc5IgdXNpbmcgdGhlIGZvbGxvd2luZyBkZWZpbmVzOg0KLSAgICCVICAgTVNTX1VBUlRfMTEwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzMwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xMjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzI0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNDgwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF85NjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzE5MjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzM4NDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzU3NjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzExNTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8yMzA0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNDYwODAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzkyMTYwMF9CQVVEDQotICAgIEFsdGVybmF0aXZlbHksIGFueSBub25zdGFuZGFyZCBiYXVkIHJhdGUgY2FuIGJlIHNwZWNpZmllZCBieSBzaW1wbHkgcGFzc2luZw0KLSAgICB0aGUgYWN0dWFsIHJlcXVpcmVkIGJhdWQgcmF0ZSBhcyB0aGUgdmFsdWUgZm9yIHRoaXMgcGFyYW1ldGVyLg0KLQ0KLSAgQHBhcmFtIGxpbmVfY29uZmlnDQotICAgIFRoZSBsaW5lX2NvbmZpZyBwYXJhbWV0ZXIgaXMgdGhlIGxpbmUgY29uZmlndXJhdGlvbiBzcGVjaWZ5aW5nIHRoZSBiaXQgbGVuZ3RoLA0KLSAgICBudW1iZXIgb2Ygc3RvcCBiaXRzIGFuZCBwYXJpdHkgc2V0dGluZ3MuIFRoaXMgaXMgYSBiaXR3aXNlIE9SIG9mIG9uZSB2YWx1ZQ0KLSAgICBmcm9tIGVhY2ggb2YgdGhlIGZvbGxvd2luZyBncm91cHMgb2YgYWxsb3dlZCB2YWx1ZXM6DQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSB0cmFuc21pdC9yZWNlaXZlIGRhdGEgYml0IGxlbmd0aDoNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfNV9CSVRTDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzZfQklUUywNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfN19CSVRTDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUw0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgcGFyaXR5IHNldHRpbmc6DQotICAgICAgICBNU1NfVUFSVF9OT19QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX0VWRU5fUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9PRERfUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9TVElDS19QQVJJVFlfMA0KLSAgICAgICAgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzENCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdG9wIGJpdHM6DQotICAgICAgICBNU1NfVUFSVF9PTkVfU1RPUF9CSVQNCi0gICAgICAgIE1TU19VQVJUX09ORUhBTEZfU1RPUF9CSVQNCi0gICAgICAgIE1TU19VQVJUX1RXT19TVE9QX0JJVFMNCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICBpbnQgbWFpbih2b2lkKQ0KLSAgew0KLSAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsNCi0gICAgICAgICAgICAgICAgICAgDQotICAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9pbml0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90KiB0aGlzX3VhcnQsDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gVGhlIE1TU19VQVJUX2xpbl9pbml0KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZSBNU1MgVUFSVCBmb3IgDQotIExJTiBtb2RlIG9mIG9wZXJhdGlvbi4gVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBhcmUgdGhlIGJhdWRfcmF0ZSB3aGljaCBpcyANCi0gdXNlZCB0byBnZW5lcmF0ZSB0aGUgYmF1ZCB2YWx1ZSBhbmQgdGhlIGxpbmVfY29uZmlnIHdoaWNoIGlzIHVzZWQgdG8gc3BlY2lmeSANCi0gdGhlIGxpbmUgY29uZmlndXJhdGlvbiAoYml0IGxlbmd0aCwgc3RvcCBiaXRzIGFuZCBwYXJpdHkpLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBiYXVkX3JhdGUNCi0gICAgVGhlIGJhdWRfcmF0ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUuIEl0IGNhbiBiZSBzcGVjaWZpZWQgZm9yDQotICAgIGNvbW1vbiBiYXVkIHJhdGVzkiB1c2luZyB0aGUgZm9sbG93aW5nIGRlZmluZXM6DQotICAgIJUgICBNU1NfVUFSVF8xMTBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzEyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80ODAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzk2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTkyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzg0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNTc2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTE1MjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzIzMDQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80NjA4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTIxNjAwX0JBVUQNCi0gICAgQWx0ZXJuYXRpdmVseSwgYW55IG5vbnN0YW5kYXJkIGJhdWQgcmF0ZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHNpbXBseSBwYXNzaW5nDQotICAgIHRoZSBhY3R1YWwgcmVxdWlyZWQgYmF1ZCByYXRlIGFzIHRoZSB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuDQotDQotICBAcGFyYW0gbGluZV9jb25maWcNCi0gICAgVGhlIGxpbmVfY29uZmlnIHBhcmFtZXRlciBpcyB0aGUgbGluZSBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgdGhlIGJpdCBsZW5ndGgsDQotICAgIG51bWJlciBvZiBzdG9wIGJpdHMgYW5kIHBhcml0eSBzZXR0aW5ncy4gVGhpcyBpcyBhIGJpdHdpc2UgT1Igb2Ygb25lIHZhbHVlDQotICAgIGZyb20gZWFjaCBvZiB0aGUgZm9sbG93aW5nIGdyb3VwcyBvZiBhbGxvd2VkIHZhbHVlczoNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHRyYW5zbWl0L3JlY2VpdmUgZGF0YSBiaXQgbGVuZ3RoOg0KLSAgICAgICAgTVNTX1VBUlRfREFUQV81X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfNl9CSVRTLA0KLSAgICAgICAgTVNTX1VBUlRfREFUQV83X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBwYXJpdHkgc2V0dGluZzoNCi0gICAgICAgIE1TU19VQVJUX05PX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfRVZFTl9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX09ERF9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8wDQotICAgICAgICBNU1NfVUFSVF9TVElDS19QQVJJVFlfMQ0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0b3AgYml0czoNCi0gICAgICAgIE1TU19VQVJUX09ORV9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfT05FSEFMRl9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfVFdPX1NUT1BfQklUUw0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgICBNU1NfVUFSVF9saW5faW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICByZXR1cm4oMCk7DQotICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfbGluX2luaXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QqIHRoaXNfdWFydCwgDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9pcmRhX2luaXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIE1TUyBVQVJUIGluc3RhbmNlIA0KLSAgcmVmZXJlbmNlZCBieSB0aGUgcGFyYW1ldGVyIHRoaXNfdWFydCAgZm9yIElyREEgbW9kZSBvZiBvcGVyYXRpb24uIFRoaXMgDQotICBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgY2FsbGluZyBhbnkgb3RoZXIgSXJEQSBmdW5jdGlvbmFsaXR5IHNwZWNpZmljIA0KLSAgZnVuY3Rpb25zLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBiYXVkX3JhdGUNCi0gICAgVGhlIGJhdWRfcmF0ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBiYXVkIHJhdGUuIEl0IGNhbiBiZSBzcGVjaWZpZWQgZm9yDQotICAgIGNvbW1vbiBiYXVkIHJhdGVzkiB1c2luZyB0aGUgZm9sbG93aW5nIGRlZmluZXM6DQotICAgIJUgICBNU1NfVUFSVF8xMTBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzEyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80ODAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzk2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTkyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMzg0MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfNTc2MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTE1MjAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzIzMDQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF80NjA4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTIxNjAwX0JBVUQNCi0gICAgQWx0ZXJuYXRpdmVseSwgYW55IG5vbnN0YW5kYXJkIGJhdWQgcmF0ZSBjYW4gYmUgc3BlY2lmaWVkIGJ5IHNpbXBseSBwYXNzaW5nDQotICAgIHRoZSBhY3R1YWwgcmVxdWlyZWQgYmF1ZCByYXRlIGFzIHRoZSB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIuDQotDQotICBAcGFyYW0gbGluZV9jb25maWcNCi0gICAgVGhlIGxpbmVfY29uZmlnIHBhcmFtZXRlciBpcyB0aGUgbGluZSBjb25maWd1cmF0aW9uIHNwZWNpZnlpbmcgdGhlIGJpdCBsZW5ndGgsDQotICAgIG51bWJlciBvZiBzdG9wIGJpdHMgYW5kIHBhcml0eSBzZXR0aW5ncy4gVGhpcyBpcyBhIGJpdHdpc2UgT1Igb2Ygb25lIHZhbHVlDQotICAgIGZyb20gZWFjaCBvZiB0aGUgZm9sbG93aW5nIGdyb3VwcyBvZiBhbGxvd2VkIHZhbHVlczoNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHRyYW5zbWl0L3JlY2VpdmUgZGF0YSBiaXQgbGVuZ3RoOg0KLSAgICAgICAgTVNTX1VBUlRfREFUQV81X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfNl9CSVRTLA0KLSAgICAgICAgTVNTX1VBUlRfREFUQV83X0JJVFMNCi0gICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBwYXJpdHkgc2V0dGluZzoNCi0gICAgICAgIE1TU19VQVJUX05PX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfRVZFTl9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX09ERF9QQVJJVFkNCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8wDQotICAgICAgICBNU1NfVUFSVF9TVElDS19QQVJJVFlfMQ0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHN0b3AgYml0czoNCi0gICAgICAgIE1TU19VQVJUX09ORV9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfT05FSEFMRl9TVE9QX0JJVA0KLSAgICAgICAgTVNTX1VBUlRfVFdPX1NUT1BfQklUUw0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2lyZGFfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQsDQotICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9BQ1RJVkVfTE9XLA0KLSAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfQUNUSVZFX0xPVywNCi0gICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzNfQllfMTYpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX2lyZGFfaW5pdA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCogdGhpc191YXJ0LCANCi0gICAgdWludDMyX3QgYmF1ZF9yYXRlLA0KLSAgICB1aW50OF90IGxpbmVfY29uZmlnLA0KLSAgICBtc3NfdWFydF9yemlfcG9sYXJpdHlfdCByeHBvbCwNCi0gICAgbXNzX3VhcnRfcnppX3BvbGFyaXR5X3QgdHhwb2wsDQotICAgIG1zc191YXJ0X3J6aV9wdWxzZXdpZHRoX3QgcHcNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIE1TUyBVQVJUIA0KLSAgZm9yIElTTyA3ODE2IChzbWFydGNhcmQpIG1vZGUgb2Ygb3BlcmF0aW9uLiBUaGUgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSANCi0gIHRoZSBiYXVkX3JhdGUgd2hpY2ggaXMgdXNlZCB0byBnZW5lcmF0ZSB0aGUgYmF1ZCB2YWx1ZSBhbmQgdGhlIGxpbmVfY29uZmlnIA0KLSAgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBsaW5lIGNvbmZpZ3VyYXRpb24gKGJpdCBsZW5ndGgsIHN0b3AgYml0cyBhbmQgcGFyaXR5KS4gDQotICBUaGlzIGZ1bmN0aW9uIGRpc2FibGVzIGFsbCBvdGhlciBtb2RlcyBvZiB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgcG9pbnRlZCBieSANCi0gIHRoZSBwYXJhbWV0ZXIgdGhpc191YXJ0Lg0KLSAgDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGJhdWRfcmF0ZQ0KLSAgICBUaGUgYmF1ZF9yYXRlIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIGJhdWQgcmF0ZS4gSXQgY2FuIGJlIHNwZWNpZmllZCBmb3INCi0gICAgY29tbW9uIGJhdWQgcmF0ZXOSIHVzaW5nIHRoZSBmb2xsb3dpbmcgZGVmaW5lczoNCi0gICAglSAgIE1TU19VQVJUXzExMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8yNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ4MDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfOTYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xOTIwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8zODQwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF81NzYwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF8xMTUyMDBfQkFVRA0KLSAgICCVICAgTVNTX1VBUlRfMjMwNDAwX0JBVUQNCi0gICAglSAgIE1TU19VQVJUXzQ2MDgwMF9CQVVEDQotICAgIJUgICBNU1NfVUFSVF85MjE2MDBfQkFVRA0KLSAgICBBbHRlcm5hdGl2ZWx5LCBhbnkgbm9uc3RhbmRhcmQgYmF1ZCByYXRlIGNhbiBiZSBzcGVjaWZpZWQgYnkgc2ltcGx5IHBhc3NpbmcNCi0gICAgdGhlIGFjdHVhbCByZXF1aXJlZCBiYXVkIHJhdGUgYXMgdGhlIHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlci4NCi0NCi0gIEBwYXJhbSBsaW5lX2NvbmZpZw0KLSAgICBUaGUgbGluZV9jb25maWcgcGFyYW1ldGVyIGlzIHRoZSBsaW5lIGNvbmZpZ3VyYXRpb24gc3BlY2lmeWluZyB0aGUgYml0IGxlbmd0aCwNCi0gICAgbnVtYmVyIG9mIHN0b3AgYml0cyBhbmQgcGFyaXR5IHNldHRpbmdzLiBUaGlzIGlzIGEgYml0d2lzZSBPUiBvZiBvbmUgdmFsdWUNCi0gICAgZnJvbSBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgZ3JvdXBzIG9mIGFsbG93ZWQgdmFsdWVzOg0KLSAgICCVICAgT25lIG9mIHRoZSBmb2xsb3dpbmcgdG8gc3BlY2lmeSB0aGUgdHJhbnNtaXQvcmVjZWl2ZSBkYXRhIGJpdCBsZW5ndGg6DQotICAgICAgICBNU1NfVUFSVF9EQVRBXzVfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV82X0JJVFMsDQotICAgICAgICBNU1NfVUFSVF9EQVRBXzdfQklUUw0KLSAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMNCi0gICAglSAgIE9uZSBvZiB0aGUgZm9sbG93aW5nIHRvIHNwZWNpZnkgdGhlIHBhcml0eSBzZXR0aW5nOg0KLSAgICAgICAgTVNTX1VBUlRfTk9fUEFSSVRZDQotICAgICAgICBNU1NfVUFSVF9FVkVOX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfT0REX1BBUklUWQ0KLSAgICAgICAgTVNTX1VBUlRfU1RJQ0tfUEFSSVRZXzANCi0gICAgICAgIE1TU19VQVJUX1NUSUNLX1BBUklUWV8xDQotICAgIJUgICBPbmUgb2YgdGhlIGZvbGxvd2luZyB0byBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygc3RvcCBiaXRzOg0KLSAgICAgICAgTVNTX1VBUlRfT05FX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9PTkVIQUxGX1NUT1BfQklUDQotICAgICAgICBNU1NfVUFSVF9UV09fU1RPUF9CSVRTDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICAgICAgaW50IG1haW4odm9pZCkNCi0gICAgICB7DQotICAgICAgICAgTVNTX1VBUlRfc21hcnRjYXJkX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KLSAgICAgICAgIHJldHVybigwKTsNCi0gICAgICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfc21hcnRjYXJkX2luaXQNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QqIHRoaXNfdWFydCwgDQotICAgIHVpbnQzMl90IGJhdWRfcmF0ZSwNCi0gICAgdWludDhfdCBsaW5lX2NvbmZpZw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBmdW5jdGlvbiBNU1NfVUFSVF9wb2xsZWRfdHgoKSBpcyB1c2VkIHRvIHRyYW5zbWl0IGRhdGEuIEl0IHRyYW5zZmVycyB0aGUNCi0gIGNvbnRlbnRzIG9mIHRoZSB0cmFuc21pdHRlciBkYXRhIGJ1ZmZlciwgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcGFyYW1ldGVyLCBpbnRvDQotICB0aGUgVUFSVJJzIGhhcmR3YXJlIHRyYW5zbWl0dGVyIEZJRk8uIEl0IHJldHVybnMgd2hlbiB0aGUgZnVsbCBjb250ZW50IG9mIHRoZQ0KLSAgdHJhbnNtaXQgZGF0YSBidWZmZXIgaGFzIGJlZW4gdHJhbnNmZXJyZWQgdG8gdGhlIFVBUlSScyB0cmFuc21pdCBGSUZPLiBJdCBpcw0KLSAgc2FmZSB0byByZWxlYXNlIG9yIHJldXNlIHRoZSBtZW1vcnkgdXNlZCBhcyB0aGUgdHJhbnNtaXR0ZXIgZGF0YSBidWZmZXIgb25jZQ0KLSAgdGhpcyBmdW5jdGlvbiByZXR1cm5zLg0KLQ0KLSAgTm90ZTogICAgIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIFVBUlSScyBsaW5lIHN0YXR1cyByZWdpc3RlciAoTFNSKSB0byBwb2xsDQotICBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgdHJhbnNtaXR0ZXIgaG9sZGluZyByZWdpc3RlciBlbXB0eSAoVEhSRSkgYml0DQotICBiZWZvcmUgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSB0aGUgZGF0YSBidWZmZXIgdG8gdGhlIHRyYW5zbWl0dGVyIEZJRk8uIEl0DQotICB0cmFuc2ZlcnMgZGF0YSB0byB0aGUgdHJhbnNtaXR0ZXIgRklGTyBpbiBibG9ja3Mgb2YgMTYgYnl0ZXMgb3IgbGVzcyBhbmQNCi0gIGFsbG93cyB0aGUgRklGTyB0byBlbXB0eSBiZWZvcmUgdHJhbnNmZXJyaW5nIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEuDQotDQotICBOb3RlOiAgICAgVGhlIGFjdHVhbCB0cmFuc21pc3Npb24gb3ZlciB0aGUgc2VyaWFsIGNvbm5lY3Rpb24gd2lsbCBzdGlsbCBiZQ0KLSAgaW4gcHJvZ3Jlc3Mgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFVzZSB0aGUgTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygpDQotICBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gdGhlIHRyYW5zbWl0dGVyIGlzIGVtcHR5Lg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBwYnVmZg0KLSAgICBUaGUgcGJ1ZmYgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvDQotICAgIGJlIHRyYW5zbWl0dGVkLg0KLQ0KLSAgQHBhcmFtIHR4X3NpemUNCi0gICAgVGhlIHR4X3NpemUgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBkYXRhIHRvDQotICAgIGJlIHRyYW5zbWl0dGVkLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgICB1aW50OF90IG1lc3NhZ2VbMTJdID0gIkhlbGxvIFdvcmxkIjsNCi0NCi0gICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgIA0KLSAgICAgTVNTX1VBUlRfcG9sbGVkX3R4KCZnX21zc191YXJ0MCwgbWVzc2FnZSwgc2l6ZW9mKG1lc3NhZ2UpKTsNCi0gICAgIA0KLSAgICAgcmV0dXJuKDApOw0KLSAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfcG9sbGVkX3R4DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBjb25zdCB1aW50OF90ICogcGJ1ZmYsDQotICAgIHVpbnQzMl90IHR4X3NpemUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgZnVuY3Rpb24gTVNTX1VBUlRfcG9sbGVkX3R4X3N0cmluZygpIGlzIHVzZWQgdG8gdHJhbnNtaXQgYSBOVUxMICgnXDAnKQ0KLSAgdGVybWluYXRlZCBzdHJpbmcuIEl0IHRyYW5zZmVycyB0aGUgdGV4dCBzdHJpbmcsIGZyb20gdGhlIGJ1ZmZlciBzdGFydGluZyBhdA0KLSAgdGhlIGFkZHJlc3MgcG9pbnRlZCB0byBieSBwX3N6X3N0cmluZyBpbnRvIHRoZSBVQVJUknMgaGFyZHdhcmUgdHJhbnNtaXR0ZXINCi0gIEZJRk8uIEl0IHJldHVybnMgd2hlbiB0aGUgY29tcGxldGUgc3RyaW5nIGhhcyBiZWVuIHRyYW5zZmVycmVkIHRvIHRoZSBVQVJUJ3MNCi0gIHRyYW5zbWl0IEZJRk8uIEl0IGlzIHNhZmUgdG8gcmVsZWFzZSBvciByZXVzZSB0aGUgbWVtb3J5IHVzZWQgYXMgdGhlIHN0cmluZw0KLSAgYnVmZmVyIG9uY2UgdGhpcyBmdW5jdGlvbiByZXR1cm5zLg0KLQ0KLSAgTm90ZTogICAgIFRoaXMgZnVuY3Rpb24gcmVhZHMgdGhlIFVBUlSScyBsaW5lIHN0YXR1cyByZWdpc3RlciAoTFNSKSB0byBwb2xsDQotICBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgdHJhbnNtaXR0ZXIgaG9sZGluZyByZWdpc3RlciBlbXB0eSAoVEhSRSkgYml0DQotICBiZWZvcmUgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSB0aGUgZGF0YSBidWZmZXIgdG8gdGhlIHRyYW5zbWl0dGVyIEZJRk8uIEl0DQotICB0cmFuc2ZlcnMgZGF0YSB0byB0aGUgdHJhbnNtaXR0ZXIgRklGTyBpbiBibG9ja3Mgb2YgMTYgYnl0ZXMgb3IgbGVzcyBhbmQNCi0gIGFsbG93cyB0aGUgRklGTyB0byBlbXB0eSBiZWZvcmUgdHJhbnNmZXJyaW5nIHRoZSBuZXh0IGJsb2NrIG9mIGRhdGEuDQotDQotICBOb3RlOiAgICAgVGhlIGFjdHVhbCB0cmFuc21pc3Npb24gb3ZlciB0aGUgc2VyaWFsIGNvbm5lY3Rpb24gd2lsbCBzdGlsbCBiZQ0KLSAgaW4gcHJvZ3Jlc3Mgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFVzZSB0aGUgTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cygpDQotICBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBrbm93IHdoZW4gdGhlIHRyYW5zbWl0dGVyIGlzIGVtcHR5Lg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBwX3N6X3N0cmluZw0KLSAgICBUaGUgcF9zel9zdHJpbmcgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBOVUxMDQotICAgICgnXDAnKSB0ZXJtaW5hdGVkIHN0cmluZyB0byBiZSB0cmFuc21pdHRlZC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICBpbnQgbWFpbih2b2lkKQ0KLSAgew0KLSAgICAgdWludDhfdCBtZXNzYWdlWzEyXSA9ICJIZWxsbyBXb3JsZCI7DQotDQotICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICANCi0gICAgIE1TU19VQVJUX3BvbGxlZF90eF9zdHJpbmcoJmdfbXNzX3VhcnQwLCBtZXNzYWdlKTsNCi0gICAgIA0KLSAgICAgcmV0dXJuKDApOw0KLSAgfQ0KLSAgQGVuZGNvZGUNCi0NCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfcG9sbGVkX3R4X3N0cmluZw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgY29uc3QgdWludDhfdCAqIHBfc3pfc3RyaW5nDQotKTsNCi0NCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIGZ1bmN0aW9uIE1TU19VQVJUX2lycV90eCgpIGlzIHVzZWQgdG8gaW5pdGlhdGUgYW4gaW50ZXJydXB0LWRyaXZlbg0KLSAgdHJhbnNtaXQuIEl0IHJldHVybnMgaW1tZWRpYXRlbHkgYWZ0ZXIgbWFraW5nIGEgbm90ZSBvZiB0aGUgdHJhbnNtaXQgYnVmZmVyDQotICBsb2NhdGlvbiBhbmQgZW5hYmxpbmcgdHJhbnNtaXQgaW50ZXJydXB0cyBib3RoIGF0IHRoZSBVQVJUIGFuZCBDb3J0ZXgtTTMgTlZJQw0KLSAgbGV2ZWwuIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBwb2ludGVyIHZpYSB0aGUgcGJ1ZmYgcGFyYW1ldGVyIHRvIGEgbWVtb3J5DQotICBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byB0cmFuc21pdC4gVGhlIG1lbW9yeSBidWZmZXIgc3BlY2lmaWVkIHRocm91Z2gNCi0gIHRoaXMgcG9pbnRlciBtdXN0IHJlbWFpbiBhbGxvY2F0ZWQgYW5kIGNvbnRhaW4gdGhlIGRhdGEgdG8gdHJhbnNtaXQgdW50aWwNCi0gIHRoZSB0cmFuc21pdCBjb21wbGV0aW9uIGhhcyBiZWVuIGRldGVjdGVkIHRocm91Z2ggY2FsbHMgdG8gZnVuY3Rpb24NCi0gIE1TU19VQVJUX3R4X2NvbXBsZXRlKCkuIFRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIG92ZXIgdGhlIHNlcmlhbCBjb25uZWN0aW9uDQotICBpcyBzdGlsbCBpbiBwcm9ncmVzcyB1bnRpbCBjYWxscyB0byB0aGUgTVNTX1VBUlRfdHhfY29tcGxldGUoKSBmdW5jdGlvbg0KLSAgaW5kaWNhdGUgdHJhbnNtaXQgY29tcGxldGlvbi4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfaXJxX3R4KCkgZnVuY3Rpb24gZW5hYmxlcyBib3RoIHRoZSB0cmFuc21pdCBob2xkaW5nDQotICByZWdpc3RlciBlbXB0eSAoVEhSRSkgaW50ZXJydXB0IGluIHRoZSBVQVJUIGFuZCB0aGUgTVNTIFVBUlQgaW5zdGFuY2UNCi0gIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIE5WSUMgYXMgcGFydCBvZiBpdHMgaW1wbGVtZW50YXRpb24uDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX2lycV90eCgpIGZ1bmN0aW9uIGFzc2lnbnMgYW4gaW50ZXJuYWwgZGVmYXVsdCB0cmFuc21pdA0KLSAgaW50ZXJydXB0IGhhbmRsZXIgZnVuY3Rpb24gdG8gdGhlIFVBUlSScyBUSFJFIGludGVycnVwdC4gVGhpcyBpbnRlcnJ1cHQNCi0gIGhhbmRsZXIgb3ZlcnJpZGVzIGFueSBjdXN0b20gaW50ZXJydXB0IGhhbmRsZXIgdGhhdCB5b3UgbWF5IGhhdmUgcHJldmlvdXNseQ0KLSAgcmVnaXN0ZXJlZCB1c2luZyB0aGUgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSBmdW5jdGlvbi4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfaXJxX3R4KCkgZnVuY3Rpb26ScyBkZWZhdWx0IHRyYW5zbWl0IGludGVycnVwdA0KLSAgaGFuZGxlciBkaXNhYmxlcyB0aGUgVUFSVJJzIFRIUkUgaW50ZXJydXB0IHdoZW4gYWxsIG9mIHRoZSBkYXRhIGhhcw0KLSAgYmVlbiB0cmFuc2ZlcnJlZCB0byB0aGUgVUFSVCdzIHRyYW5zbWl0IEZJRk8uDQotDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIHBidWZmDQotICAgIFRoZSBwYnVmZiBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGENCi0gICAgdG8gYmUgdHJhbnNtaXR0ZWQuDQotDQotICBAcGFyYW0gdHhfc2l6ZQ0KLSAgICBUaGUgdHhfc2l6ZSBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGRhdGENCi0gICAgdG8gYmUgdHJhbnNtaXR0ZWQuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgaW50IG1haW4odm9pZCkNCi0gIHsNCi0gICAgIHVpbnQ4X3QgdHhfYnVmZlsxMF0gPSAiYWJjZGVmZ2hpIjsNCi0gICAgIA0KLSAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsNCi0gICAgICAgICAgICAgICAgICAgDQotICAgICBNU1NfVUFSVF9pcnFfdHgoJmdfbXNzX3VhcnQwLCB0eF9idWZmLCBzaXplb2YodHhfYnVmZikpOw0KLSAgICAgDQotICAgICB3aGlsZSgwID09IE1TU19VQVJUX3R4X2NvbXBsZXRlKCZnX21zc191YXJ0MCkpDQotICAgICB7DQotICAgICAgICAgOw0KLSAgICAgfQ0KLSAgICAgcmV0dXJuKDApOw0KLSAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfaXJxX3R4DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBjb25zdCB1aW50OF90ICogcGJ1ZmYsDQotICAgIHVpbnQzMl90IHR4X3NpemUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfdHhfY29tcGxldGUoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGZpbmQgb3V0IGlmIHRoZSBpbnRlcnJ1cHQtZHJpdmVuDQotICB0cmFuc21pdCBwcmV2aW91c2x5IGluaXRpYXRlZCB0aHJvdWdoIGEgY2FsbCB0byBNU1NfVUFSVF9pcnFfdHgoKSBpcyBjb21wbGV0ZS4NCi0gIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgdG8gZmluZCBvdXQgd2hlbiBpdCBpcyBzYWZlIHRvIHJldXNlIG9yIHJlbGVhc2UgdGhlDQotICBtZW1vcnkgYnVmZmVyIGhvbGRpbmcgdHJhbnNtaXQgZGF0YS4NCi0NCi0gIE5vdGU6ICAgICBUaGUgdHJhbnNmZXIgb2YgYWxsIG9mIHRoZSBkYXRhIGZyb20gdGhlIG1lbW9yeSBidWZmZXIgdG8gdGhlIFVBUlSScw0KLSAgdHJhbnNtaXQgRklGTyBhbmQgdGhlIGFjdHVhbCB0cmFuc21pc3Npb24gb3ZlciB0aGUgc2VyaWFsIGNvbm5lY3Rpb24gYXJlIGJvdGgNCi0gIGNvbXBsZXRlIHdoZW4gYSBjYWxsIHRvIHRoZSBNU1NfVUFSVF90eF9jb21wbGV0ZSgpIGZ1bmN0aW9uIGluZGljYXRlcyB0cmFuc21pdA0KLSAgY29tcGxldGlvbi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGEgbm9uLXplcm8gdmFsdWUgaWYgdHJhbnNtaXQgaGFzIGNvbXBsZXRlZCwgb3RoZXJ3aXNlDQotICAgIGl0IHJldHVybnMgemVyby4NCi0NCi0gIEV4YW1wbGU6DQotICAgIFNlZSB0aGUgTVNTX1VBUlRfaXJxX3R4KCkgZnVuY3Rpb24gZm9yIGFuIGV4YW1wbGUgdGhhdCB1c2VzIHRoZQ0KLSAgICBNU1NfVUFSVF90eF9jb21wbGV0ZSgpIGZ1bmN0aW9uLg0KLSAqLw0KLWludDhfdA0KLU1TU19VQVJUX3R4X2NvbXBsZXRlDQotKA0KLSAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZ2V0X3J4KCkgZnVuY3Rpb24gcmVhZHMgdGhlIGNvbnRlbnQgb2YgdGhlIFVBUlQgcmVjZWl2ZXKScyBGSUZPDQotICBhbmQgc3RvcmVzIGl0IGluIHRoZSByZWNlaXZlIGJ1ZmZlciB0aGF0IGlzIHBhc3NlZCB2aWEgdGhlIHJ4X2J1ZmYgZnVuY3Rpb24NCi0gIHBhcmFtZXRlci4gSXQgY29waWVzIGVpdGhlciB0aGUgZnVsbCBjb250ZW50cyBvZiB0aGUgRklGTyBpbnRvIHRoZSByZWNlaXZlDQotICBidWZmZXIsIG9yIGp1c3QgZW5vdWdoIGRhdGEgZnJvbSB0aGUgRklGTyB0byBmaWxsIHRoZSByZWNlaXZlIGJ1ZmZlciwNCi0gIGRlcGVuZGVudCB1cG9uIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlIGJ1ZmZlciBwYXNzZWQgYnkgdGhlIGJ1ZmZfc2l6ZQ0KLSAgcGFyYW1ldGVyLiBUaGUgTVNTX1VBUlRfZ2V0X3J4KCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZA0KLSAgaW50byB0aGUgcmVjZWl2ZSBidWZmZXIgLlRoaXMgZnVuY3Rpb24gaXMgbm9uLWJsb2NraW5nIGFuZCB3aWxsIHJldHVybiAwDQotICBpbW1lZGlhdGVseSBpZiBubyBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbiByZWFkcyBhbmQgYWNjdW11bGF0ZXMgdGhlIHJlY2VpdmVyDQotICBzdGF0dXMgb2YgdGhlIE1TUyBVQVJUIGluc3RhbmNlIGJlZm9yZSByZWFkaW5nIGVhY2ggYnl0ZSBmcm9tIHRoZSByZWNlaXZlcidzDQotICBkYXRhIHJlZ2lzdGVyL0ZJRk8uIFRoaXMgYWxsb3dzIHRoZSBkcml2ZXIgdG8gbWFpbnRhaW4gYSBzdGlja3kgcmVjb3JkIG9mIGFueQ0KLSAgcmVjZWl2ZXIgZXJyb3JzIHRoYXQgb2NjdXIgYXMgdGhlIFVBUlQgcmVjZWl2ZXMgZWFjaCBkYXRhIGJ5dGU7IHJlY2VpdmVyDQotICBlcnJvcnMgd291bGQgb3RoZXJ3aXNlIGJlIGxvc3QgYWZ0ZXIgZWFjaCByZWFkIGZyb20gdGhlIHJlY2VpdmVyJ3MgZGF0YSByZWdpc3Rlci4NCi0gIEEgY2FsbCB0byB0aGUgTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpIGZ1bmN0aW9uIHJldHVybnMgYW55IHJlY2VpdmVyIGVycm9ycw0KLSAgYWNjdW11bGF0ZWQgZHVyaW5nIHRoZSBleGVjdXRpb24gb2YgdGhlIE1TU19VQVJUX2dldF9yeCgpIGZ1bmN0aW9uLg0KLQ0KLSAgTm90ZTogICAgIElmIHlvdSBuZWVkIHRvIHJlYWQgdGhlIGVycm9yIHN0YXR1cyBmb3IgZWFjaCBieXRlIHJlY2VpdmVkLCBzZXQNCi0gIHRoZSBidWZmX3NpemUgdG8gMSBhbmQgcmVhZCB0aGUgcmVjZWl2ZSBsaW5lIGVycm9yIHN0YXR1cyBmb3IgZWFjaCBieXRlDQotICB1c2luZyB0aGUgTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpIGZ1bmN0aW9uLg0KLSAgVGhlIE1TU19VQVJUX2dldF9yeCgpIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIHBvbGxlZCBtb2RlLCB3aGVyZSBpdCBpcyBjYWxsZWQNCi0gIGF0IHJlZ3VsYXIgaW50ZXJ2YWxzIHRvIGZpbmQgb3V0IGlmIGFueSBkYXRhIGhhcyBiZWVuIHJlY2VpdmVkLCBvciBpbiBpbnRlcnJ1cHQNCi0gIGRyaXZlbi1tb2RlLCB3aGVyZSBpdCBpcyBjYWxsZWQgYXMgcGFydCBvZiBhIHJlY2VpdmUgaGFuZGxlciB0aGF0IGlzIGNhbGxlZA0KLSAgYnkgdGhlIGRyaXZlciBhcyBhIHJlc3VsdCBvZiBkYXRhIGJlaW5nIHJlY2VpdmVkLg0KLQ0KLSAgTm90ZTogICAgIEluIGludGVycnVwdCBkcml2ZW4gbW9kZSB5b3Ugc2hvdWxkIGNhbGwgdGhlIE1TU19VQVJUX2dldF9yeCgpDQotICBmdW5jdGlvbiBhcyBwYXJ0IG9mIHRoZSByZWNlaXZlIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCB5b3UgcmVnaXN0ZXIgd2l0aA0KLSAgdGhlIE1TUyBVQVJUIGRyaXZlciB0aHJvdWdoIGEgY2FsbCB0byBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigpLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSByeF9idWZmDQotICAgIFRoZSByeF9idWZmIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSBidWZmZXIgd2hlcmUgdGhlIHJlY2VpdmVkDQotICAgIGRhdGEgaXMgY29waWVkLg0KLQ0KLSAgQHBhcmFtIGJ1ZmZfc2l6ZQ0KLSAgICBUaGUgYnVmZl9zaXplIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVyIGluIGJ5dGVzLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdlcmUgY29waWVkIGludG8gdGhlDQotICAgIHJ4X2J1ZmYgYnVmZmVyLiBJdCByZXR1cm5zIDAgaWYgbm8gZGF0YSBoYXMgYmVlbiByZWNlaXZlZC4NCi0NCi0gIFBvbGxlZCBtb2RlIGV4YW1wbGU6DQotICBAY29kZQ0KLSAgIGludCBtYWluKCB2b2lkICkNCi0gICB7DQotICAgICAgdWludDhfdCByeF9idWZmW1JYX0JVRkZfU0laRV07DQotICAgICAgdWludDMyX3QgcnhfaWR4ICA9IDA7DQotDQotICAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICAgDQotICAgICAgd2hpbGUoMSkNCi0gICAgICB7DQotICAgICAgICAgIHJ4X3NpemUgPSBNU1NfVUFSVF9nZXRfcngoJmdfbXNzX3VhcnQwLCByeF9idWZmLCBzaXplb2YocnhfYnVmZikpOw0KLSAgICAgICAgICBpZihyeF9zaXplID4gMCkNCi0gICAgICAgICAgew0KLSAgICAgICAgICAgICAgcHJvY2Vzc19yeF9kYXRhKHJ4X2J1ZmYsIHJ4X3NpemUpOw0KLSAgICAgICAgICB9DQotICAgICAgICAgIHRhc2tfYSgpOw0KLSAgICAgICAgICB0YXNrX2IoKTsNCi0gICAgICB9DQotICAgICAgcmV0dXJuIDA7DQotICAgfQ0KLSAgQGVuZGNvZGUNCi0NCi0gIEludGVycnVwdCBkcml2ZW4gZXhhbXBsZToNCi0gIEBjb2RlDQotICAgaW50IG1haW4oIHZvaWQgKQ0KLSAgIHsNCi0gICAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MSwNCi0gICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7DQotICAgICAgICAgICAgICAgICAgICANCi0gICAgICBNU1NfVUFSVF9zZXRfcnhfaGFuZGxlcigmZ19tc3NfdWFydDEsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWFydDFfcnhfaGFuZGxlciwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9GSUZPX1NJTkdMRV9CWVRFKTsNCi0gICAgICANCi0gICAgICB3aGlsZSgxKQ0KLSAgICAgIHsNCi0gICAgICAgICAgdGFza19hKCk7DQotICAgICAgICAgIHRhc2tfYigpOw0KLSAgICAgIH0NCi0gICAgICByZXR1cm4gMDsNCi0gICB9DQotDQotICAgdm9pZCB1YXJ0MV9yeF9oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpDQotICAgew0KLSAgICAgIHVpbnQ4X3QgcnhfYnVmZltSWF9CVUZGX1NJWkVdOw0KLSAgICAgIHVpbnQzMl90IHJ4X2lkeCAgPSAwOw0KLSAgICAgIHJ4X3NpemUgPSBNU1NfVUFSVF9nZXRfcngodGhpc191YXJ0LCByeF9idWZmLCBzaXplb2YocnhfYnVmZikpOw0KLSAgICAgIHByb2Nlc3NfcnhfZGF0YShyeF9idWZmLCByeF9zaXplKTsNCi0gICB9DQotICBAZW5kY29kZQ0KLSAqLw0KLXNpemVfdA0KLU1TU19VQVJUX2dldF9yeA0KLSgNCi0gICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgIHVpbnQ4X3QgKiByeF9idWZmLA0KLSAgIHNpemVfdCBidWZmX3NpemUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHJlZ2lzdGVyIGEgcmVjZWl2ZSBoYW5kbGVyDQotICBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gYSBVQVJUIHJlY2VpdmUgZGF0YSBhdmFpbGFibGUgKFJEQSkNCi0gIGludGVycnVwdCBvY2N1cnMuIFlvdSBtdXN0IGNyZWF0ZSBhbmQgcmVnaXN0ZXIgdGhlIHJlY2VpdmUgaGFuZGxlciBmdW5jdGlvbg0KLSAgdG8gc3VpdCB5b3VyIGFwcGxpY2F0aW9uIGFuZCBpdCBtdXN0IGluY2x1ZGUgYSBjYWxsIHRvIHRoZSBNU1NfVUFSVF9nZXRfcngoKQ0KLSAgZnVuY3Rpb24gdG8gYWN0dWFsbHkgcmVhZCB0aGUgcmVjZWl2ZWQgZGF0YS4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoKSBmdW5jdGlvbiBlbmFibGVzIGJvdGggdGhlIFJEQQ0KLSAgaW50ZXJydXB0IGluIHRoZSBVQVJUIGFuZCB0aGUgTVNTIFVBUlQgaW5zdGFuY2UgaW50ZXJydXB0IGluIHRoZSBDb3J0ZXgtTTMNCi0gIE5WSUMgYXMgcGFydA0KLSAgb2YgaXRzIGltcGxlbWVudGF0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFlvdSBjYW4gZGlzYWJsZSB0aGUgUkRBIGludGVycnVwdCBvbmNlIHRoZSBkYXRhIGlzIHJlY2VpdmVkIGJ5DQotICBjYWxsaW5nIHRoZSBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uLiBUaGlzIGlzIHlvdXIgY2hvaWNlIGFuZCBpcw0KLSAgZGVwZW5kZW50IHVwb24geW91ciBhcHBsaWNhdGlvbi4NCi0NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGEgcmVjZWl2ZSBpbnRlcnJ1cHQgaGFuZGxlciBmdW5jdGlvbg0KLSAgICBwcm92aWRlZCBieSB5b3VyIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYXMgYSByZXN1bHQgb2YgYSBVQVJUIFJEQQ0KLSAgICBpbnRlcnJ1cHQuIFRoaXMgaGFuZGxlciBmdW5jdGlvbiBtdXN0IGJlIG9mIHR5cGUgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdC4NCi0NCi0gIEBwYXJhbSB0cmlnZ2VyX2xldmVsDQotICAgIFRoZSB0cmlnZ2VyX2xldmVsIHBhcmFtZXRlciBpcyB0aGUgcmVjZWl2ZSBGSUZPIHRyaWdnZXIgbGV2ZWwuIFRoaXMNCi0gICAgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIHJlY2VpdmVkIGJlZm9yZSB0aGUgVUFSVA0KLSAgICB0cmlnZ2VycyBhbiBSREEgaW50ZXJydXB0Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAjaW5jbHVkZSAibXNzX3VhcnQuaCINCi0NCi0gICNkZWZpbmUgUlhfQlVGRl9TSVpFICAgIDY0DQotDQotICB1aW50OF90IGdfcnhfYnVmZltSWF9CVUZGX1NJWkVdOw0KLQ0KLSAgdm9pZCB1YXJ0MF9yeF9oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpDQotICB7DQotICAgICAgTVNTX1VBUlRfZ2V0X3J4KHRoaXNfdWFydCwgJmdfcnhfYnVmZltnX3J4X2lkeF0sIHNpemVvZihnX3J4X2J1ZmYpKTsNCi0gIH0NCi0NCi0gIGludCBtYWluKHZvaWQpDQotICB7DQotICAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgICAgICAgICAgICAgICAgDQotICAgICAgTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXIoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVhcnQwX3J4X2hhbmRsZXIsDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfRklGT19TSU5HTEVfQllURSk7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICAgd2hpbGUoMSkNCi0gICAgICB7DQotICAgICAgICAgOw0KLSAgICAgIH0NCi0gICAgICByZXR1cm4oMCk7DQotICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3J4X2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiAgICAgICB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgICAgICAgICAgaGFuZGxlciwNCi0gICAgbXNzX3VhcnRfcnhfdHJpZ19sZXZlbF90ICAgIHRyaWdnZXJfbGV2ZWwNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X2xvb3BiYWNrKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBsb2NhbGx5IGxvb3BiYWNrIHRoZSBUeCBhbmQNCi0gIFJ4IGxpbmVzIG9mIGEgVUFSVC4gVGhpcyBpcyBub3QgdG8gYmUgY29uZnVzZWQgd2l0aCB0aGUgbG9vcGJhY2sgb2YgVUFSVDANCi0gIHRvIFVBUlQxLCB3aGljaCBjYW4gYmUgYWNoaWV2ZWQgdGhyb3VnaCB0aGUgbWljcm9jb250cm9sbGVyIHN1YnN5c3RlbZJzDQotICBzeXN0ZW0gcmVnaXN0ZXJzLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBsb29wYmFjaw0KLSAgICBUaGUgbG9vcGJhY2sgcGFyYW1ldGVyIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgVUFSVJJzIHRyYW5zbWl0DQotICAgIGFuZCByZWNlaXZlIGxpbmVzIHNob3VsZCBiZSBsb29wZWQgYmFjay4gQWxsb3dlZCB2YWx1ZXMgYXJlIGFzIGZvbGxvd3M6DQotICAgICAgLSBNU1NfVUFSVF9MT0NBTF9MT09QQkFDS19PTg0KLSAgICAgIC0gTVNTX1VBUlRfTE9DQUxfTE9PUEJBQ0tfT0ZGIA0KLSAgICAgIC0gTVNTX1VBUlRfUkVNT1RFX0xPT1BCQUNLX09ODQotICAgICAgLSBNU1NfVUFSVF9SRU1PVEVfTE9PUEJBQ0tfT0ZGIA0KLSAgICAgIC0gTVNTX1VBUlRfQVVUT19FQ0hPX09ODQotICAgICAgLSBNU1NfVUFSVF9BVVRPX0VDSE9fT0ZGDQotICAgICAgDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICAgIE1TU19VQVJUX3NldF9sb29wYmFjaygmZ19tc3NfdWFydDAsIE1TU19VQVJUX0xPQ0FMX0xPT1BCQUNLX09GRik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbG9vcGJhY2sNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiAgIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfbG9vcGJhY2tfdCAgICAgbG9vcGJhY2sNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZW5hYmxlX2lycSgpIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIE1TUyBVQVJUIGludGVycnVwdHMgc3BlY2lmaWVkDQotICBieSB0aGUgaXJxX21hc2sgcGFyYW1ldGVyLiBUaGUgaXJxX21hc2sgcGFyYW1ldGVyIGlkZW50aWZpZXMgdGhlIE1TUyBVQVJUDQotICBpbnRlcnJ1cHRzIGJ5IGJpdCBwb3NpdGlvbiwgYXMgZGVmaW5lZCBpbiB0aGUgaW50ZXJydXB0IGVuYWJsZSByZWdpc3RlciAoSUVSKQ0KLSAgb2YgTVNTIFVBUlQuIFRoZSBNU1MgVUFSVCBpbnRlcnJ1cHRzIGFuZCB0aGVpciBpZGVudGlmeWluZyBpcnFfbWFzayBiaXQNCi0gIHBvc2l0aW9ucyBhcmUgYXMgZm9sbG93czoNCi0gIFdoZW4gYW4gaXJxX21hc2sgYml0IHBvc2l0aW9uIGlzIHNldCB0byAxLCB0aGlzIGZ1bmN0aW9uIGVuYWJsZXMgdGhlDQotICBjb3JyZXNwb25kaW5nIE1TUyBVQVJUIGludGVycnVwdCBpbiB0aGUgSUVSIHJlZ2lzdGVyLiBXaGVuIGFuIGlycV9tYXNrIGJpdA0KLSAgcG9zaXRpb24gaXMgc2V0IHRvIDAsIHRoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdJJzIHN0YXRlIHJlbWFpbnMgdW5jaGFuZ2VkIGluDQotICB0aGUgSUVSIHJlZ2lzdGVyLg0KLSAgTm90ZTogVGhlIE1TU19VQVJUX2VuYWJsZV9pcnEoKSBmdW5jdGlvbiBhbHNvIGVuYWJsZXMgdGhlIE1TUyBVQVJUIGluc3RhbmNlDQotICAgICAgICBpbnRlcnJ1cHQgaW4gdGhlIENvcnRleC1NMyBOVklDLg0KLSAgICAgICAgDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90IHN0cnVjdHVyZQ0KLSAgICBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0gdGhlIHJlcXVlc3RlZA0KLSAgICBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLA0KLSAgICBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyDQotICAgIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQNCi0gICAgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGlycV9tYXNrDQotICAgIFRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgaXMgdXNlZCB0byBzZWxlY3Qgd2hpY2ggb2YgdGhlIE1TUyBVQVJUknMgaW50ZXJydXB0cw0KLSAgICB5b3Ugd2FudCB0byBlbmFibGUuIFRoZSBhbGxvd2VkIHZhbHVlIGZvciB0aGUgaXJxX21hc2sgcGFyYW1ldGVyIGlzIG9uZSBvZg0KLSAgICB0aGUgZm9sbG93aW5nIGNvbnN0YW50cyBvciBhIGJpdHdpc2UgT1Igb2YgbW9yZSB0aGFuIG9uZToNCi0gICAgICAtIE1TU19VQVJUX1JCRl9JUlEJCShiaXQgbWFzayA9IDB4MDAxKQ0KLSAgICAgIC0gTVNTX1VBUlRfVEJFX0lSUQkJKGJpdCBtYXNrID0gMHgwMDIpDQotICAgICAgLSBNU1NfVUFSVF9MU19JUlEJCShiaXQgbWFzayA9IDB4MDA0KQ0KLSAgICAgIC0gTVNTX1VBUlRfTVNfSVJRCQkoYml0IG1hc2sgPSAweDAwOCkNCi0gICAgICAtIE1TU19VQVJUX1JUT19JUlEJCShiaXQgbWFzayA9IDB4MDEwKQ0KLSAgICAgIC0gTVNTX1VBUlRfTkFDS19JUlEJKGJpdCBtYXNrID0gMHgwMjApDQotICAgICAgLSBNU1NfVUFSVF9QSURQRV9JUlEJKGJpdCBtYXNrID0gMHgwNDApDQotICAgICAgLSBNU1NfVUFSVF9MSU5CX0lSUQkJKGJpdCBtYXNrID0gMHgwODApDQotICAgICAgLSBNU1NfVUFSVF9MSU5TX0lSUQkJKGJpdCBtYXNrID0gMHgxMDApDQotICAgICAgDQotICBAcmV0dXJuDQotICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2VuYWJsZV9pcnEoJmdfbXNzX3VhcnQwLChNU1NfVUFSVF9SQkZfSVJRIHwgTVNTX1VBUlRfVEJFX0lSUSkpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZW5hYmxlX2lycQ0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX3QgaXJxX21hc2sNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbiBkaXNhYmxlcyB0aGUgTVNTIFVBUlQgaW50ZXJydXB0cyBzcGVjaWZpZWQNCi0gIGJ5IHRoZSBpcnFfbWFzayBwYXJhbWV0ZXIuIFRoZSBpcnFfbWFzayBwYXJhbWV0ZXIgaWRlbnRpZmllcyB0aGUgTVNTIFVBUlQNCi0gIGludGVycnVwdHMgYnkgYml0IHBvc2l0aW9uLCBhcyBkZWZpbmVkIGluIHRoZSBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVyIChJRVIpDQotICBvZiBNU1MgVUFSVC4gVGhlIE1TUyBVQVJUIGludGVycnVwdHMgYW5kIHRoZWlyIGlkZW50aWZ5aW5nIGJpdCBwb3NpdGlvbnMgYXJlDQotICBhcyBmb2xsb3dzOg0KLSAgV2hlbiBhbiBpcnFfbWFzayBiaXQgcG9zaXRpb24gaXMgc2V0IHRvIDEsIHRoaXMgZnVuY3Rpb24gZGlzYWJsZXMgdGhlDQotICBjb3JyZXNwb25kaW5nIE1TUyBVQVJUIGludGVycnVwdCBpbiB0aGUgSUVSIHJlZ2lzdGVyLiBXaGVuIGFuIGlycV9tYXNrIGJpdA0KLSAgcG9zaXRpb24gaXMgc2V0IHRvIDAsIHRoZSBjb3JyZXNwb25kaW5nIGludGVycnVwdJJzIHN0YXRlIHJlbWFpbnMgdW5jaGFuZ2VkIGluDQotICB0aGUgSUVSIHJlZ2lzdGVyLg0KLSAgTm90ZTogSWYgeW91IGRpc2FibGUgYWxsIGZvdXIgb2YgdGhlIFVBUlSScyBpbnRlcnJ1cHRzLCB0aGUNCi0gICAgICAgIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24gYWxzbyBkaXNhYmxlcyB0aGUgTVNTIFVBUlQgaW5zdGFuY2UNCi0gICAgICAgIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIE5WSUMuDQotICAgICAgICANCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaXJxX21hc2sNCi0gICAgVGhlIGlycV9tYXNrIHBhcmFtZXRlciBpcyB1c2VkIHRvIHNlbGVjdCB3aGljaCBvZiB0aGUgTVNTIFVBUlSScyBpbnRlcnJ1cHRzDQotICAgIHlvdSB3YW50IHRvIGRpc2FibGUuIFRoZSBhbGxvd2VkIHZhbHVlIGZvciB0aGUgaXJxX21hc2sgcGFyYW1ldGVyIGlzIG9uZSBvZg0KLSAgICB0aGUgZm9sbG93aW5nIGNvbnN0YW50cyBvciBhIGJpdHdpc2UgT1Igb2YgbW9yZSB0aGFuIG9uZToNCi0gICAgICAtIE1TU19VQVJUX1JCRl9JUlEgICAgKGJpdCBtYXNrID0gMHgwMDEpDQotICAgICAgLSBNU1NfVUFSVF9UQkVfSVJRICAgIChiaXQgbWFzayA9IDB4MDAyKQ0KLSAgICAgIC0gTVNTX1VBUlRfTFNfSVJRICAgICAoYml0IG1hc2sgPSAweDAwNCkNCi0gICAgICAtIE1TU19VQVJUX01TX0lSUSAgICAgKGJpdCBtYXNrID0gMHgwMDgpDQotICAgICAgLSBNU1NfVUFSVF9SVE9fSVJRICAgIChiaXQgbWFzayA9IDB4MDEwKQ0KLSAgICAgIC0gTVNTX1VBUlRfTkFDS19JUlEgICAoYml0IG1hc2sgPSAweDAyMCkNCi0gICAgICAtIE1TU19VQVJUX1BJRFBFX0lSUSAgKGJpdCBtYXNrID0gMHgwNDApDQotICAgICAgLSBNU1NfVUFSVF9MSU5CX0lSUSAgIChiaXQgbWFzayA9IDB4MDgwKQ0KLSAgICAgIC0gTVNTX1VBUlRfTElOU19JUlEgICAoYml0IG1hc2sgPSAweDEwMCkNCi0gICAgICANCi0gIEByZXR1cm4NCi0gICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfZGlzYWJsZV9pcnEoJmdfbXNzX3VhcnQwLCAoTVNTX1VBUlRfUkJGX0lSUSB8IE1TU19VQVJUX1RCRV9JUlEpKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfaXJxDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfdCBpcnFfbWFzaw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfcGlkcGVpX2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIGFzc2lnbiBhIGN1c3RvbSBpbnRlcnJ1cHQgDQotICBoYW5kbGVyIGZvciB0aGUgUElEUEVJIChQSUQgcGFyaXR5IGVycm9yIGludGVycnVwdCkgd2hlbiB0aGUgTVNTIFVBUlQgaXMgDQotICBvcGVyYXRpbmcgaW4gTElOIG1vZGUuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGhhbmRsZXINCi0gICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBjdXN0b20gaGFuZGxlciBmdW5jdGlvbi4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF8gc2V0X3BpZHBlaV9oYW5kbGVyKCZnX21zc191YXJ0MCwgbXlfcGlkcGVpX2hhbmRsZXIpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3BpZHBlaV9oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X2xpbmJyZWFrX2hhbmRsZXIgKCkgZnVuY3Rpb24gaXMgdXNlZCBhc3NpZ24gYSBjdXN0b20gDQotICBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgdGhlIExJTiBCcmVhayBkZXRlY3Rpb24gaW50ZXJydXB0ICB3aGVuIHRoZSBNU1MgVUFSVCANCi0gIGlzIG9wZXJhdGluZyBpbiBMSU4gbW9kZS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGN1c3RvbSBoYW5kbGVyIGZ1bmN0aW9uLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX3NldF9saW5icmVha19oYW5kbGVyKCZnX21zc191YXJ0MCwgbXlfYnJlYWtfaGFuZGxlcik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbGluYnJlYWtfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9saW5zeW5jX2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIGFzc2lnbiBhIGN1c3RvbSBpbnRlcnJ1cHQgDQotICBoYW5kbGVyIGZvciB0aGUgTElOIFN5bmMgY2hhcmFjdGVyIGRldGVjdGlvbiBpbnRlcnJ1cHQgIHdoZW4gdGhlIE1TUyBVQVJUIA0KLSAgaXMgb3BlcmF0aW5nIGluIExJTiBtb2RlLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBoYW5kbGVyDQotICAgIFRoZSBoYW5kbGVyIHBhcmFtZXRlciBpcyB0aGUgcG9pbnRlciB0byB0aGUgY3VzdG9tIGhhbmRsZXIgZnVuY3Rpb24uIA0KLSAgICBUaGlzIHBhcmFtZXRlciBpcyBvZiB0eXBlIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfc2V0X2xpbnN5bmNfaGFuZGxlcigmZ19tc3NfdWFydDAsIG15X2xpbnN5bmNfaGFuZGxlcik7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbGluc3luY19oYW5kbGVyDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90IGhhbmRsZXINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X25hY2tfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgYXNzaWduIGEgY3VzdG9tIGludGVycnVwdCANCi0gIGhhbmRsZXIgZm9yIHRoZSBOQUNLIGNoYXJhY3RlciBkZXRlY3Rpb24gaW50ZXJydXB0ICB3aGVuIHRoZSBNU1MgVUFSVCANCi0gIGlzIG9wZXJhdGluZyBpbiBTbWFydGNhcmQgbW9kZS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICBUaGUgaGFuZGxlciBwYXJhbWV0ZXIgaXMgdGhlIHBvaW50ZXIgdG8gdGhlIGN1c3RvbSBoYW5kbGVyIGZ1bmN0aW9uLiANCi0gICAgVGhpcyBwYXJhbWV0ZXIgaXMgb2YgdHlwZSBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX3NldF9uYWNrX2hhbmRsZXIoJmdfbXNzX3VhcnQwLCBteV9uYWNrX2hhbmRsZXIpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X25hY2tfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9yeF90aW1lb3V0X2hhbmRsZXIoKSBmdW5jdGlvbiBpcyB1c2VkIGFzc2lnbiBhIGN1c3RvbSANCi0gIGludGVycnVwdCBoYW5kbGVyIGZvciB0aGUgcmVjZWl2ZXIgdGltZW91dCBpbnRlcnJ1cHQgIHdoZW4gdGhlIE1TUyBVQVJUIGlzIA0KLSAgb3BlcmF0aW5nIGluIG1vZGUuIEl0IGZpbmRzIGFwcGxpY2F0aW9uIGluIElyREEgbW9kZSBvZiBvcGVyYXRpb24uDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGhhbmRsZXINCi0gICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBjdXN0b20gaGFuZGxlciBmdW5jdGlvbi4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9zZXRfcnhfdGltZW91dF9oYW5kbGVyKCZnX21zc191YXJ0MCwgbXlfcnh0aW1lb3V0X2hhbmRsZXIpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3J4X3RpbWVvdXRfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9yeHN0YXR1c19oYW5kbGVyKCkgZnVuY3Rpb24gaXMgdXNlZCB0byByZWdpc3RlciBhIHJlY2VpdmVyDQotICBzdGF0dXMgaGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gYSBVQVJUIHJlY2VpdmVyDQotICBsaW5lIHN0YXR1cyAoUkxTKSBpbnRlcnJ1cHQgb2NjdXJzLiBZb3UgbXVzdCBjcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSBoYW5kbGVyDQotICBmdW5jdGlvbiB0byBzdWl0IHlvdXIgYXBwbGljYXRpb24uDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX3NldF9yeHN0YXR1c19oYW5kbGVyKCkgZnVuY3Rpb24gZW5hYmxlcyBib3RoIHRoZSBSTFMNCi0gIGludGVycnVwdCBpbiB0aGUgVUFSVCBhbmQgdGhlIE1TUyBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zDQotICBOVklDIGFzIHBhcnQgb2YgaXRzIGltcGxlbWVudGF0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFlvdSBjYW4gZGlzYWJsZSB0aGUgUkxTIGludGVycnVwdCB3aGVuIHJlcXVpcmVkIGJ5IGNhbGxpbmcgdGhlDQotICBNU1NfVUFSVF9kaXNhYmxlX2lycSgpIGZ1bmN0aW9uLiBUaGlzIGlzIHlvdXIgY2hvaWNlIGFuZCBpcyBkZXBlbmRlbnQgdXBvbg0KLSAgeW91ciBhcHBsaWNhdGlvbi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gaGFuZGxlcg0KLSAgICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIHJlY2VpdmVyIGxpbmUgc3RhdHVzIGludGVycnVwdA0KLSAgICAgaGFuZGxlciBmdW5jdGlvbiBwcm92aWRlZCBieSB5b3VyIGFwcGxpY2F0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgYXMgYQ0KLSAgICAgcmVzdWx0IG9mIGEgVUFSVCBSTFMgaW50ZXJydXB0LiBUaGlzIGhhbmRsZXIgZnVuY3Rpb24gbXVzdCBiZSBvZiB0eXBlDQotICAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgI2luY2x1ZGUgIm1zc191YXJ0LmgiDQotDQotICB2b2lkIHVhcnRfcnhzdHNfaGFuZGxlcihtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0KQ0KLSAgew0KLSAgICB1aW50OF90IHN0YXR1czsNCi0gICAgc3RhdHVzID0gTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cyh0aGlzX3VhcnQpOw0KLSAgICBpZihzdGF0dXMgJiBNU1NfVUFSVF9PVkVSVU5fRVJST1IpDQotICAgIHsNCi0gICAgICAgIGRpc2NhcmRfcnhfZGF0YSgpOw0KLSAgICB9DQotICB9DQotDQotICBpbnQgbWFpbih2b2lkKQ0KLSAgew0KLSAgICBNU1NfVUFSVF9pbml0KCAmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9PTkVfU1RPUF9CSVQgKTsNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCi0gICAgTVNTX1VBUlRfc2V0X3J4c3RhdHVzX2hhbmRsZXIoJmdfbXNzX3VhcnQwLCB1YXJ0X3J4c3RzX2hhbmRsZXIpOw0KLQ0KLSAgICB3aGlsZSgxKQ0KLSAgICB7DQotICAgICAgICA7DQotICAgIH0NCi0gICAgcmV0dXJuKDApOw0KLSAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3J4c3RhdHVzX2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfdHhfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSB0cmFuc21pdCBoYW5kbGVyDQotICBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBieSB0aGUgZHJpdmVyIHdoZW4gYSBVQVJUIHRyYW5zbWl0IGhvbGRpbmcgcmVnaXN0ZXINCi0gIGVtcHR5IChUSFJFKSBpbnRlcnJ1cHQgb2NjdXJzLiBZb3UgbXVzdCBjcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0cmFuc21pdA0KLSAgaGFuZGxlciBmdW5jdGlvbiB0byBzdWl0IHlvdXIgYXBwbGljYXRpb24uIFlvdSBjYW4gdXNlIHRoZQ0KLSAgTVNTX1VBUlRfZmlsbF90eF9maWZvKCkgZnVuY3Rpb24gaW4geW91ciB0cmFuc21pdCBoYW5kbGVyIGZ1bmN0aW9uIHRvDQotICB3cml0ZSBkYXRhIHRvIHRoZSB0cmFuc21pdHRlci4NCi0NCi0gIE5vdGU6ICAgICBUaGUgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSBmdW5jdGlvbiBlbmFibGVzIGJvdGggdGhlIFRIUkUNCi0gIGludGVycnVwdCBpbiB0aGUgVUFSVCBhbmQgdGhlIE1TUyBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zDQotICBOVklDIGFzIHBhcnQgb2YgaXRzIGltcGxlbWVudGF0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFlvdSBjYW4gZGlzYWJsZSB0aGUgVEhSRSBpbnRlcnJ1cHQgd2hlbiByZXF1aXJlZCBieSBjYWxsaW5nIHRoZQ0KLSAgTVNTX1VBUlRfZGlzYWJsZV9pcnEoKSBmdW5jdGlvbi4gVGhpcyBpcyB5b3VyIGNob2ljZSBhbmQgaXMgZGVwZW5kZW50IHVwb24NCi0gIHlvdXIgYXBwbGljYXRpb24uDQotDQotICBOb3RlOiAgICAgVGhlIE1TU19VQVJUX2lycV90eCgpIGZ1bmN0aW9uIGRvZXMgbm90IHVzZSB0aGUgdHJhbnNtaXQgaGFuZGxlcg0KLSAgZnVuY3Rpb24gdGhhdCB5b3UgcmVnaXN0ZXIgd2l0aCB0aGUgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSBmdW5jdGlvbi4NCi0gIEl0IHVzZXMgaXRzIG93biBpbnRlcm5hbCBUSFJFIGludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uIHRoYXQgb3ZlcnJpZGVzDQotICBhbnkgY3VzdG9tIGludGVycnVwdCBoYW5kbGVyIHRoYXQgeW91IHJlZ2lzdGVyIHVzaW5nIHRoZQ0KLSAgTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXIoKSBmdW5jdGlvbi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICAgQHBhcmFtIGhhbmRsZXINCi0gICAgIFRoZSBoYW5kbGVyIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYSB0cmFuc21pdCBpbnRlcnJ1cHQgaGFuZGxlcg0KLSAgICAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgeW91ciBhcHBsaWNhdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0DQotICAgICBvZiBhIFVBUlQgVEhSRSBpbnRlcnJ1cHQuIFRoaXMgaGFuZGxlciBmdW5jdGlvbiBtdXN0IGJlIG9mIHR5cGUNCi0gICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QuDQotDQotICAgQHJldHVybg0KLSAgICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gICBFeGFtcGxlOg0KLSAgIEBjb2RlDQotICAgICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgICB1aW50OF90ICogZ190eF9idWZmZXI7DQotICAgIHNpemVfdCBnX3R4X3NpemUgPSAwOw0KLQ0KLSAgICB2b2lkIHVhcnRfdHhfaGFuZGxlcihtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0KQ0KLSAgICB7DQotICAgICAgICBzaXplX3Qgc2l6ZV9pbl9maWZvOw0KLSAgICAgICAgc2l6ZV9pbl9maWZvID0gTVNTX1VBUlRfZmlsbF90eF9maWZvKHRoaXNfdWFydCwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKWdfdHhfYnVmZmVyLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdHhfc2l6ZSk7DQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQotICAgICAgICBpZihzaXplX2luX2ZpZm8gID09ICBnX3R4X3NpemUpDQotICAgICAgICB7DQotICAgICAgICAgICAgZ190eF9zaXplID0gMDsNCi0gICAgICAgICAgICBNU1NfVUFSVF9kaXNhYmxlX2lycSh0aGlzX3VhcnQsIE1TU19VQVJUX1RCRV9JUlEpOw0KLSAgICAgICAgfQ0KLSAgICAgICAgZWxzZQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIGdfdHhfYnVmZmVyID0gJmdfdHhfYnVmZmVyW3NpemVfaW5fZmlmb107DQotICAgICAgICAgICAgZ190eF9zaXplID0gZ190eF9zaXplIC0gc2l6ZV9pbl9maWZvOw0KLSAgICAgICAgfQ0KLSAgICB9DQotDQotICAgIGludCBtYWluKHZvaWQpDQotICAgIHsNCi0gICAgICAgIHVpbnQ4X3QgbWVzc2FnZVsxMl0gPSAiSGVsbG8gd29ybGQiOw0KLQ0KLSAgICAgICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsNCi0NCi0gICAgICAgIGdfdHhfYnVmZmVyID0gbWVzc2FnZTsNCi0gICAgICAgIGdfdHhfc2l6ZSA9IHNpemVvZihtZXNzYWdlKTsNCi0NCi0gICAgICAgIE1TU19VQVJUX3NldF90eF9oYW5kbGVyKCZnX21zc191YXJ0MCwgdWFydF90eF9oYW5kbGVyKTsNCi0NCi0gICAgICAgIHdoaWxlKDEpDQotICAgICAgICB7DQotICAgICAgICAgICAgOw0KLSAgICAgICAgfQ0KLSAgICAgICAgcmV0dXJuKDApOw0KLSAgICB9DQotICAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X3R4X2hhbmRsZXINCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcigpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVnaXN0ZXIgYSBtb2RlbQ0KLSAgc3RhdHVzIGhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgYnkgdGhlIGRyaXZlciB3aGVuIGEgVUFSVCBtb2RlbSBzdGF0dXMNCi0gIChNUykgaW50ZXJydXB0IG9jY3Vycy4gWW91IG11c3QgY3JlYXRlIGFuZCByZWdpc3RlciB0aGUgaGFuZGxlciBmdW5jdGlvbiB0bw0KLSAgc3VpdCB5b3VyIGFwcGxpY2F0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcigpIGZ1bmN0aW9uIGVuYWJsZXMgYm90aCB0aGUgTVMNCi0gIGludGVycnVwdCBpbiB0aGUgVUFSVCBhbmQgdGhlIE1TUyBVQVJUIGluc3RhbmNlIGludGVycnVwdCBpbiB0aGUgQ29ydGV4LU0zIE5WSUMNCi0gIGFzIHBhcnQgb2YgaXRzIGltcGxlbWVudGF0aW9uLg0KLQ0KLSAgTm90ZTogICAgIFlvdSBjYW4gZGlzYWJsZSB0aGUgTVMgaW50ZXJydXB0IHdoZW4gcmVxdWlyZWQgYnkgY2FsbGluZyB0aGUNCi0gIE1TU19VQVJUX2Rpc2FibGVfaXJxKCkgZnVuY3Rpb24uIFRoaXMgaXMgeW91ciBjaG9pY2UgYW5kIGlzIGRlcGVuZGVudA0KLSAgdXBvbiB5b3VyIGFwcGxpY2F0aW9uLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gICBAcGFyYW0gaGFuZGxlcg0KLSAgICAgVGhlIGhhbmRsZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIG1vZGVtIHN0YXR1cyBpbnRlcnJ1cHQgaGFuZGxlcg0KLSAgICAgZnVuY3Rpb24gcHJvdmlkZWQgYnkgeW91ciBhcHBsaWNhdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIGFzIGEgcmVzdWx0DQotICAgICBvZiBhIFVBUlQgTVMgaW50ZXJydXB0LiBUaGlzIGhhbmRsZXIgZnVuY3Rpb24gbXVzdCBiZSBvZiB0eXBlDQotICAgICBtc3NfdWFydF9pcnFfaGFuZGxlcl90Lg0KLQ0KLSAgIEByZXR1cm4NCi0gICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICAgRXhhbXBsZToNCi0gICBAY29kZQ0KLSAgICNpbmNsdWRlICJtc3NfdWFydC5oIg0KLQ0KLSAgIHZvaWQgdWFydF9tb2RlbV9oYW5kbGVyKG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQpDQotICAgew0KLSAgICAgdWludDhfdCBzdGF0dXM7DQotICAgICBzdGF0dXMgPSBNU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzKHRoaXNfdWFydCk7DQotICAgICBpZihzdGF0dXMgJiBNU1NfVUFSVF9DVFMpDQotICAgICB7DQotICAgICAgICB1YXJ0X2N0c19oYW5kbGVyKCk7DQotICAgICB9DQotICAgfQ0KLQ0KLSAgIGludCBtYWluKHZvaWQpDQotICAgew0KLSAgICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOw0KLSAgICAgIE1TU19VQVJUX3NldF9tb2RlbXN0YXR1c19oYW5kbGVyKCZnX21zc191YXJ0MCwgdWFydF9tb2RlbV9oYW5kbGVyKTsNCi0NCi0gICAgICB3aGlsZSgxKQ0KLSAgICAgIHsNCi0gICAgICAgIDsNCi0gICAgICB9DQotICAgICAgcmV0dXJuKDApOw0KLSAgIH0NCi0gICBAZW5kY29kZQ0KLSAqLw0KLQ0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfbW9kZW1zdGF0dXNfaGFuZGxlcg0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2ZpbGxfdHhfZmlmbygpIGZ1bmN0aW9uIGZpbGxzIHRoZSBVQVJUJ3MgaGFyZHdhcmUgdHJhbnNtaXR0ZXINCi0gIEZJRk8gd2l0aCB0aGUgZGF0YSBmb3VuZCBpbiB0aGUgdHJhbnNtaXR0ZXIgYnVmZmVyIHRoYXQgaXMgcGFzc2VkIHZpYSB0aGUNCi0gIHR4X2J1ZmZlciBmdW5jdGlvbiBwYXJhbWV0ZXIuIElmIHRoZSB0cmFuc21pdHRlciBGSUZPIGlzIG5vdCBlbXB0eSB3aGVuDQotICB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpbW1lZGlhdGVseSB3aXRob3V0IHRyYW5zZmVycmluZw0KLSAgYW55IGRhdGEgdG8gdGhlIEZJRk87IG90aGVyd2lzZSwgdGhlIGZ1bmN0aW9uIHRyYW5zZmVycyBkYXRhIGZyb20gdGhlDQotICB0cmFuc21pdHRlciBidWZmZXIgdG8gdGhlIEZJRk8gdW50aWwgaXQgaXMgZnVsbCBvciB1bnRpbCB0aGUgY29tcGxldGUNCi0gIGNvbnRlbnRzIG9mIHRoZSB0cmFuc21pdHRlciBidWZmZXIgaGF2ZSBiZWVuIGNvcGllZCBpbnRvIHRoZSBGSUZPLiBUaGUNCi0gIGZ1bmN0aW9uIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQgaW50byB0aGUgVUFSVCdzIHRyYW5zbWl0dGVyIEZJRk8uDQotDQotICBOb3RlOiAgICAgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgVUFSVJJzIGxpbmUgc3RhdHVzIHJlZ2lzdGVyIChMU1IpIHRvIGNoZWNrDQotICBmb3IgdGhlIGFjdGl2ZSBzdGF0ZSBvZiB0aGUgdHJhbnNtaXR0ZXIgaG9sZGluZyByZWdpc3RlciBlbXB0eSAoVEhSRSkgYml0DQotICBiZWZvcmUgdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSB0aGUgZGF0YSBidWZmZXIgdG8gdGhlIHRyYW5zbWl0dGVyIEZJRk8uIElmDQotICBUSFJFIGlzIDAsIHRoZSBmdW5jdGlvbiByZXR1cm5zIGltbWVkaWF0ZWx5LCB3aXRob3V0IHRyYW5zZmVycmluZyBhbnkgZGF0YQ0KLSAgdG8gdGhlIEZJRk8uIElmIFRIUkUgaXMgMSwgdGhlIGZ1bmN0aW9uIHRyYW5zZmVycyB1cCB0byAxNiBieXRlcyBvZiBkYXRhDQotICB0byB0aGUgRklGTyBhbmQgdGhlbiByZXR1cm5zLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBhY3R1YWwgdHJhbnNtaXNzaW9uIG92ZXIgdGhlIHNlcmlhbCBjb25uZWN0aW9uIHdpbGwgc3RpbGwgYmUNCi0gIGluIHByb2dyZXNzIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLiBVc2UgdGhlIE1TU19VQVJUX2dldF90eF9zdGF0dXMoKQ0KLSAgZnVuY3Rpb24gaWYgeW91IG5lZWQgdG8ga25vdyB3aGVuIHRoZSB0cmFuc21pdHRlciBpcyBlbXB0eS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gdHhfYnVmZmVyDQotICAgIFRoZSB0eF9idWZmZXIgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhDQotICAgIHRvIGJlIHRyYW5zbWl0dGVkLg0KLQ0KLSAgQHBhcmFtIHR4X3NpemUNCi0gICAgVGhlIHR4X3NpemUgcGFyYW1ldGVyIGlzIHRoZSBzaXplIGluIGJ5dGVzLCBvZiB0aGUgZGF0YSB0byBiZSB0cmFuc21pdHRlZC4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkIGludG8gdGhlIFVBUlQncw0KLSAgICB0cmFuc21pdHRlciBGSUZPLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgICB2b2lkIHNlbmRfdXNpbmdfaW50ZXJydXB0KHVpbnQ4X3QgKiBwYnVmZiwgc2l6ZV90IHR4X3NpemUpDQotICAgICB7DQotICAgICAgICBzaXplX3Qgc2l6ZV9pbl9maWZvOw0KLSAgICAgICAgc2l6ZV9pbl9maWZvID0gTVNTX1VBUlRfZmlsbF90eF9maWZvKCZnX21zc191YXJ0MCwgcGJ1ZmYsIHR4X3NpemUpOw0KLSAgICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi1zaXplX3QNCi1NU1NfVUFSVF9maWxsX3R4X2ZpZm8NCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIGNvbnN0IHVpbnQ4X3QgKiB0eF9idWZmZXIsDQotICAgIHNpemVfdCB0eF9zaXplDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2dldF9yeF9zdGF0dXMoKSBmdW5jdGlvbiByZXR1cm5zIHRoZSByZWNlaXZlciBlcnJvciBzdGF0dXMgb2YgdGhlDQotICBNU1MgVUFSVCBpbnN0YW5jZS4gSXQgcmVhZHMgYm90aCB0aGUgY3VycmVudCBlcnJvciBzdGF0dXMgb2YgdGhlIHJlY2VpdmVyIGZyb20NCi0gIHRoZSBVQVJUknMgbGluZSBzdGF0dXMgcmVnaXN0ZXIgKExTUikgYW5kIHRoZSBhY2N1bXVsYXRlZCBlcnJvciBzdGF0dXMgZnJvbQ0KLSAgcHJlY2VkaW5nIGNhbGxzIHRvIHRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbiwgYW5kIGl0IGNvbWJpbmVzIHRoZW0gdXNpbmcNCi0gIGEgYml0d2lzZSBPUi4gSXQgcmV0dXJucyB0aGUgY3VtdWxhdGl2ZSBvdmVycnVuLCBwYXJpdHksIGZyYW1pbmcsIGJyZWFrIGFuZA0KLSAgRklGTyBlcnJvciBzdGF0dXMgb2YgdGhlIHJlY2VpdmVyLCBzaW5jZSB0aGUgcHJldmlvdXMgY2FsbCB0bw0KLSAgTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygpLCBhcyBhbiA4LWJpdCBlbmNvZGVkIHZhbHVlLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBNU1NfVUFSVF9nZXRfcngoKSBmdW5jdGlvbiByZWFkcyBhbmQgYWNjdW11bGF0ZXMgdGhlIHJlY2VpdmVyDQotICBzdGF0dXMgb2YgdGhlIE1TUyBVQVJUIGluc3RhbmNlIGJlZm9yZSByZWFkaW5nIGVhY2ggYnl0ZSBmcm9tIHRoZSByZWNlaXZlcpJzDQotICBkYXRhIHJlZ2lzdGVyL0ZJRk8uIFRoZSBkcml2ZXIgbWFpbnRhaW5zIGEgc3RpY2t5IHJlY29yZCBvZiB0aGUgY3VtdWxhdGl2ZQ0KLSAgcmVjZWl2ZXIgZXJyb3Igc3RhdHVzLCB3aGljaCBwZXJzaXN0cyBhZnRlciB0aGUgTVNTX1VBUlRfZ2V0X3J4KCkgZnVuY3Rpb24NCi0gIHJldHVybnMuIFRoZSBNU1NfVUFSVF9nZXRfcnhfc3RhdHVzKCkgZnVuY3Rpb24gY2xlYXJzIHRoZSBkcml2ZXKScyBzdGlja3kNCi0gIHJlY2VpdmVyIGVycm9yIHJlY29yZCBiZWZvcmUgcmV0dXJuaW5nLg0KLQ0KLSAgTm90ZTogICAgIFRoZSBkcml2ZXKScyB0cmFuc21pdCBmdW5jdGlvbnMgYWxzbyByZWFkIHRoZSBsaW5lIHN0YXR1cw0KLSAgcmVnaXN0ZXIgKExTUikgYXMgcGFydCBvZiB0aGVpciBpbXBsZW1lbnRhdGlvbi4gV2hlbiB0aGUgZHJpdmVyIHJlYWRzIHRoZQ0KLSAgTFNSLCB0aGUgVUFSVCBjbGVhcnMgYW55IGFjdGl2ZSByZWNlaXZlciBlcnJvciBiaXRzIGluIHRoZSBMU1IuIFRoaXMgY291bGQNCi0gIHJlc3VsdCBpbiB0aGUgZHJpdmVyIGxvc2luZyByZWNlaXZlciBlcnJvcnMuIFRvIGF2b2lkIGFueSBsb3NzIG9mIHJlY2VpdmVyDQotICBlcnJvcnMsIHRoZSB0cmFuc21pdCBmdW5jdGlvbnMgYWxzbyB1cGRhdGUgdGhlIGRyaXZlcpJzIHN0aWNreSByZWNvcmQgb2YgdGhlDQotICBjdW11bGF0aXZlIHJlY2VpdmVyIGVycm9yIHN0YXR1cyB3aGVuZXZlciB0aGV5IHJlYWQgdGhlIExTUi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgVUFSVJJzIHJlY2VpdmVyIGVycm9yIHN0YXR1cyBhcyBhbiA4LWJpdCB1bnNpZ25lZA0KLSAgICBpbnRlZ2VyLiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgMCBpZiBubyByZWNlaXZlciBlcnJvcnMgb2NjdXJyZWQuIFRoZSBkcml2ZXINCi0gICAgcHJvdmlkZXMgYSBzZXQgb2YgYml0IG1hc2sgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGJlIGNvbXBhcmVkIHdpdGggYW5kL29yDQotICAgIHVzZWQgdG8gbWFzayB0aGUgcmV0dXJuZWQgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSByZWNlaXZlciBlcnJvciBzdGF0dXMuDQotICAgIFdoZW4gdGhlIHJldHVybiB2YWx1ZSBpcyBjb21wYXJlZCB0byB0aGUgZm9sbG93aW5nIGJpdCBtYXNrcywgYSBub24temVybw0KLSAgICByZXN1bHQgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgZXJyb3Igb2NjdXJyZWQ6DQotICAgICAgICCVICAgTVNTX1VBUlRfT1ZFUlJVTl9FUlJPUiAgICAgIChiaXQgbWFzayA9IDB4MDIpDQotICAgICAgICCVICAgTVNTX1VBUlRfUEFSSVRZX0VSUk9SICAgICAgIChiaXQgbWFzayA9IDB4MDQpDQotICAgICAgICCVICAgTVNTX1VBUlRfRlJBTUlOR19FUlJPUiAgICAgIChiaXQgbWFzayA9IDB4MDgpDQotICAgICAgICCVICAgTVNTX1VBUlRfQlJFQUtfRVJST1IgICAgICAgIChiaXQgbWFzayA9IDB4MTApDQotICAgICAgICCVICAgTVNTX1VBUlRfRklGT19FUlJPUiAgICAgKGJpdCBtYXNrID0gMHg4MCkNCi0gICAgV2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbXBhcmVkIHRvIHRoZSBmb2xsb3dpbmcgYml0IG1hc2ssIGEgbm9uLXplcm8NCi0gICAgcmVzdWx0IGluZGljYXRlcyB0aGF0IG5vIGVycm9yIG9jY3VycmVkOg0KLSAgICAgICAglSAgIE1TU19VQVJUX05PX0VSUk9SICAgICAgIChiaXQgbWFzayA9IDB4MDApDQotICAgIFVwb24gdW5zdWNjZXNzZnVsIGV4ZWN1dGlvbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zOg0KLSAgICAgICAglSAgIE1TU19VQVJUX0lOVkFMSURfUEFSQU0gICAgICAoYml0IG1hc2sgPSAweEZGKQ0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIHVpbnQ4X3QgcnhfZGF0YVtNQVhfUlhfREFUQV9TSVpFXTsNCi0gICAgdWludDhfdCBlcnJfc3RhdHVzOw0KLSAgICBlcnJfc3RhdHVzID0gTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cygmZ19tc3NfdWFydDApOw0KLQ0KLSAgICBpZihNU1NfVUFSVF9OT19FUlJPUiA9PSBlcnJfc3RhdHVzKQ0KLSAgICB7DQotICAgICAgIHJ4X3NpemUgPSBNU1NfVUFSVF9nZXRfcngoJmdfbXNzX3VhcnQwLCByeF9kYXRhLCBNQVhfUlhfREFUQV9TSVpFKTsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi11aW50OF90DQotTVNTX1VBUlRfZ2V0X3J4X3N0YXR1cw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgbW9kZW0gc3RhdHVzIG9mIHRoZQ0KLSAgTVNTIFVBUlQgaW5zdGFuY2UuIEl0IHJlYWRzIHRoZSBtb2RlbSBzdGF0dXMgcmVnaXN0ZXIgKE1TUikgYW5kIHJldHVybnMNCi0gIHRoZSA4IGJpdCB2YWx1ZS4gVGhlIGJpdCBlbmNvZGluZyBvZiB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgZXhhY3RseSB0aGUNCi0gIHNhbWUgYXMgdGhlIGRlZmluaXRpb24gb2YgdGhlIGJpdHMgaW4gdGhlIE1TUi4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBjdXJyZW50IHN0YXRlIG9mIHRoZSBVQVJUJ3MgTVNSIGFzIGFuIDggYml0DQotICAgIHVuc2lnbmVkIGludGVnZXIuIFRoZSBkcml2ZXIgcHJvdmlkZXMgdGhlIGZvbGxvd2luZyBzZXQgb2YgYml0IG1hc2sNCi0gICAgY29uc3RhbnRzIHRoYXQgc2hvdWxkIGJlIGNvbXBhcmVkIHdpdGggYW5kL29yIHVzZWQgdG8gbWFzayB0aGUNCi0gICAgcmV0dXJuZWQgdmFsdWUgdG8gZGV0ZXJtaW5lIHRoZSBtb2RlbSBzdGF0dXM6DQotICAgICAgICCVICAgTVNTX1VBUlRfRENUUyAgIChiaXQgbWFzayA9IDB4MDEpDQotICAgICAgICCVICAgTVNTX1VBUlRfRERTUiAgIChiaXQgbWFzayA9IDB4MDIpDQotICAgICAgICCVICAgTVNTX1VBUlRfVEVSSSAgIChiaXQgbWFzayA9IDB4MDQpDQotICAgICAgICCVICAgTVNTX1VBUlRfRERDRCAgIChiaXQgbWFzayA9IDB4MDgpDQotICAgICAgICCVICAgTVNTX1VBUlRfQ1RTICAgIChiaXQgbWFzayA9IDB4MTApDQotICAgICAgICCVICAgTVNTX1VBUlRfRFNSICAgIChiaXQgbWFzayA9IDB4MjApDQotICAgICAgICCVICAgTVNTX1VBUlRfUkkgICAgIChiaXQgbWFzayA9IDB4NDApDQotICAgICAgICCVICAgTVNTX1VBUlRfRENEICAgIChiaXQgbWFzayA9IDB4ODApDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgdm9pZCB1YXJ0X21vZGVtX3N0YXR1c19pc3IobXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCkNCi0gICAgew0KLSAgICAgICAgdWludDhfdCBzdGF0dXM7DQotICAgICAgICBzdGF0dXMgPSBNU1NfVUFSVF9nZXRfbW9kZW1fc3RhdHVzKHRoaXNfdWFydCk7DQotICAgICAgICBpZiggc3RhdHVzICYgTVNTX1VBUlRfRENUUyApDQotICAgICAgICB7DQotICAgICAgICAgICAgdWFydF9kY3RzX2hhbmRsZXIoKTsNCi0gICAgICAgIH0NCi0gICAgICAgIGlmKCBzdGF0dXMgJiBNU1NfVUFSVF9DVFMgKQ0KLSAgICAgICAgew0KLSAgICAgICAgICAgIHVhcnRfY3RzX2hhbmRsZXIoKTsNCi0gICAgICAgIH0NCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi11aW50OF90DQotTVNTX1VBUlRfZ2V0X21vZGVtX3N0YXR1cw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9nZXRfdHhfc3RhdHVzKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgdHJhbnNtaXR0ZXIgc3RhdHVzIG9mIHRoZQ0KLSAgTVNTIFVBUlQgaW5zdGFuY2UuIEl0IHJlYWRzIGJvdGggdGhlIFVBUlSScyBsaW5lIHN0YXR1cyByZWdpc3RlciAoTFNSKSBhbmQNCi0gIHJldHVybnMgdGhlIHN0YXR1cyBvZiB0aGUgdHJhbnNtaXQgaG9sZGluZyByZWdpc3RlciBlbXB0eSAoVEhSRSkgYW5kDQotICB0cmFuc21pdHRlciBlbXB0eSAoVEVNVCkgYml0cy4qDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIFVBUlSScyB0cmFuc21pdHRlciBzdGF0dXMgYXMgYW4gOC1iaXQgdW5zaWduZWQNCi0gICAgaW50ZWdlci4gVGhlIHJldHVybmVkIHZhbHVlIGlzIDAgaWYgdGhlIHRyYW5zbWl0dGVyIHN0YXR1cyBiaXRzIGFyZSBub3QNCi0gICAgc2V0IG9yIHRoZSBmdW5jdGlvbiBleGVjdXRpb24gZmFpbGVkLiBUaGUgZHJpdmVyIHByb3ZpZGVzIGEgc2V0IG9mIGJpdA0KLSAgICBtYXNrIGNvbnN0YW50cyB0aGF0IHNob3VsZCBiZSBjb21wYXJlZCB3aXRoIGFuZC9vciB1c2VkIHRvIG1hc2sgdGhlDQotICAgIHJldHVybmVkIHZhbHVlIHRvIGRldGVybWluZSB0aGUgdHJhbnNtaXR0ZXIgc3RhdHVzLg0KLSAgICBXaGVuIHRoZSByZXR1cm4gdmFsdWUgaXMgY29tcGFyZWQgdG8gdGhlIGZvbGxvd2luZyBiaXQgbWFzaywgYSBub24temVybw0KLSAgICByZXN1bHQgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNtaXR0ZXIgc3RhdHVzIGJpdCBpcyBzZXQ6DQotICAgICAgICCVICAgTVNTX1VBUlRfVEhSRSAgICAgICAoYml0IG1hc2sgPSAweDIwKQ0KLSAgICAgICAglSAgIE1TU19VQVJUX1RFTVQgICAgICAgKGJpdCBtYXNrID0gMHg0MCkNCi0gICAgV2hlbiB0aGUgcmV0dXJuIHZhbHVlIGlzIGNvbXBhcmVkIHRvIHRoZSBmb2xsb3dpbmcgYml0IG1hc2ssIGEgbm9uLXplcm8NCi0gICAgcmVzdWx0IGluZGljYXRlcyB0aGF0IHRoZSB0cmFuc21pdHRlciBpcyBidXN5IG9yIHRoZSBmdW5jdGlvbiBleGVjdXRpb24NCi0gICAgZmFpbGVkLg0KLSAgICAgICAglSAgIE1TU19VQVJUX1RYX0JVU1kgICAgICAgIChiaXQgbWFzayA9IDB4MDApDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgdWludDhfdCB0eF9idWZmWzEwXSA9ICJhYmNkZWZnaGkiOw0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX3BvbGxlZF90eCgmZ19tc3NfdWFydDAsIHR4X2J1ZmYsIHNpemVvZih0eF9idWZmKSk7DQotDQotICAgIHdoaWxlKCEoTVNTX1VBUlRfVEVNVCAmIE1TU19VQVJUX2dldF90eF9zdGF0dXMoJmdfbXNzX3VhcnQwKSkpDQotICAgIHsNCi0gICAgICAgIDsNCi0gICAgfQ0KLSAgQGVuZGNvZGUNCi0gKi8NCi11aW50OF90DQotTVNTX1VBUlRfZ2V0X3R4X3N0YXR1cw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfYnJlYWsoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIHNlbmQgdGhlIGJyZWFrIA0KLSAgKDkgemVyb3MgYWZ0ZXIgc3RvcCBiaXQpIHNpZ25hbCBvbiB0aGUgVFggbGluZS4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCANCi0gIG9ubHkgd2hlbiB0aGUgTVNTIFVBUlQgaXMgaW5pdGlhbGl6ZWQgaW4gTElOIG1vZGUgYnkgdXNpbmcgTVNTX1VBUlRfbGluX2luaXQoKS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIA0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0gIA0KLSAgICBNU1NfVUFSVF9zZXRfYnJlYWsoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9icmVhaw0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9jbGVhcl9icmVhaygpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVtb3ZlIHRoZSBicmVhayBzaWduYWwgb24gdGhlIA0KLSAgVFggbGluZS4gVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBvbmx5IHdoZW4gdGhlIE1TUyBVQVJUIGlzIGluaXRpYWxpemVkIGluIA0KLSAgTElOIG1vZGUgYnkgdXNpbmcgTVNTX1VBUlRfbGluX2luaXQoKS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuIA0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfY2xlYXJfYnJlYWsoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2NsZWFyX2JyZWFrDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2VuYWJsZV9oYWxmX2R1cGxleCgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlIHRoZSBoYWxmLWR1cGxleCANCi0gIChzaW5nbGUgd2lyZSkgbW9kZSBmb3IgdGhlIE1TUyBVQVJULiBUaG91Z2ggaXQgZmluZHMgYXBwbGljYXRpb24gaW4gU21hcnRjYXJkIA0KLSAgbW9kZSwgaGFsZi1kdXBsZXggbW9kZSBjYW4gYmUgdXNlZCBpbiBvdGhlciBtb2RlcyBhcyB3ZWxsLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2VuYWJsZV9oYWxmX2R1cGxleCgmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX2VuYWJsZV9oYWxmX2R1cGxleA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9kaXNhYmxlX2hhbGZfZHVwbGV4KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIHRoZSBoYWxmLWR1cGxleCANCi0gIChzaW5nbGUgd2lyZSkgbW9kZSBmb3IgdGhlIE1TUyBVQVJULiBUaG91Z2ggaXQgZmluZHMgYXBwbGljYXRpb24gaW4gU21hcnRjYXJkIA0KLSAgbW9kZSwgaGFsZi1kdXBsZXggbW9kZSBjYW4gYmUgdXNlZCBpbiBvdGhlciBtb2RlcyBhcyB3ZWxsLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2Rpc2FibGVfaGFsZl9kdXBsZXgoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9kaXNhYmxlX2hhbGZfZHVwbGV4DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9yeF9lbmRpYW4oKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgTFNCIGZpcnN0IG9yIA0KLSAgTVNCIGZpcnN0IHNldHRpbmcgZm9yIE1TUyBVQVJUIHJlY2VpdmVyDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLSAgDQotICBAcGFyYW0gZW5kaWFuDQotICAgIFRoZSBlbmRpYW4gcGFyYW1ldGVyIHRlbGxzIHRoZSBMU0IgZmlyc3Qgb3IgTVNCIGZpcnN0IGNvbmZpZ3VyYXRpb24uIA0KLSAgICBUaGlzIHBhcmFtZXRlciBpcyBvZiB0eXBlIG1zc191YXJ0X2VuZGlhbl90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfc2V0X3J4X2VuZGlhbigmZ19tc3NfdWFydDAsIE1TU19VQVJUX0xJVFRMRUVORCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9zZXRfcnhfZW5kaWFuDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9lbmRpYW5fdCBlbmRpYW4gICAgDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF90eF9lbmRpYW4oKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNvbmZpZ3VyZSB0aGUgTFNCIGZpcnN0IG9yIA0KLSAgTVNCIGZpcnN0IHNldHRpbmcgZm9yIE1TUyBVQVJUIHRyYW5zbWl0dGVyLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBlbmRpYW4NCi0gICAgVGhlIGVuZGlhbiBwYXJhbWV0ZXIgdGVsbHMgdGhlIExTQiBmaXJzdCBvciBNU0IgZmlyc3QgY29uZmlndXJhdGlvbi4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfZW5kaWFuX3QuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9zZXRfdHhfZW5kaWFuKCZnX21zc191YXJ0MCwgTVNTX1VBUlRfTElUVExFRU5EKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF90eF9lbmRpYW4NCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIG1zc191YXJ0X2VuZGlhbl90IGVuZGlhbiAgICANCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfc2V0X2ZpbHRlcl9sZW5ndGggKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGdsaXRjaCANCi0gIGZpbHRlciBsZW5ndGggb2YgdGhlIE1TUyBVQVJULiBUaGlzIHNob3VsZCBiZSBjb25maWd1cmVkIGluIGFjY29yZGFuY2Ugd2l0aCANCi0gIHRoZSBjaG9zZW4gYmF1ZCByYXRlLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEBwYXJhbSBsZW5ndGgNCi0gICAgVGhlIGxlbmd0aCBwYXJhbWV0ZXIgaXMgb2YgbXNzX3VhcnRfZmlsdGVyX2xlbmd0aF90IHR5cGUgdGhhdCBkZXRlcm1pbmVzIA0KLSAgICB0aGUgbGVuZ3RoIG9mIHRoZSBnbGl0Y2ggZmlsdGVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfc2V0X2ZpbHRlcl9sZW5ndGgoJmdfbXNzX3VhcnQwLCBNU1NfVUFSVF9MRU4yKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX3NldF9maWx0ZXJfbGVuZ3RoDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICBtc3NfdWFydF9maWx0ZXJfbGVuZ3RoX3QgbGVuZ3RoDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2VuYWJsZV9hZm0oKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBhZGRyZXNzIGZsYWcgZGV0ZWN0aW9uIA0KLSAgbW9kZSBvZiB0aGUgTVNTIFVBUlQNCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9lbmFibGVfYWZtKCZnX21zc191YXJ0MCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQNCi1NU1NfVUFSVF9lbmFibGVfYWZtDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9kaXNhYmxlX2FmbSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZGlzYWJsZSBhZGRyZXNzIGZsYWcgZGV0ZWN0aW9uIA0KLSAgbW9kZSBvZiB0aGUgTVNTIFVBUlQuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZGlzYWJsZV9hZm0oJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfYWZtDQotKA0KLSAgICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydA0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9lbmFibGVfYWZjbGVhciAoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBhZGRyZXNzIGZsYWcgY2xlYXIgDQotICBvZiB0aGUgTVNTIFVBUlQuIFRoaXMgc2hvdWxkIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhZGRyZXNzIGZsYWcgDQotICBkZXRlY3Rpb24gbW9kZSAoQUZNKS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9lbmFibGVfYWZjbGVhcigmZ19tc3NfdWFydDApOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfZW5hYmxlX2FmY2xlYXINCi0oDQotICAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2Rpc2FibGVfYWZjbGVhciAoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGRpc2FibGUgYWRkcmVzcyBmbGFnIA0KLSAgY2xlYXIgb2YgdGhlIE1TUyBVQVJULiBUaGlzIHNob3VsZCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYWRkcmVzcyBmbGFnIA0KLSAgZGV0ZWN0aW9uIG1vZGUgKEFGTSkuDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLSAgDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLQ0KLSAgICBNU1NfVUFSVF9kaXNhYmxlX2FmY2xlYXIoJmdfbXNzX3VhcnQwKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZA0KLU1TU19VQVJUX2Rpc2FibGVfYWZjbGVhcg0KLSgNCi0gICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZW5hYmxlX3J4X3RpbWVvdXQoKSBmdW5jdGlvbiBpcyB1c2VkIHRvIGVuYWJsZSBhbmQgY29uZmlndXJlIA0KLSAgdGhlIHJlY2VpdmVyIHRpbWVvdXQgZnVuY3Rpb25hbGl0eSBvZiBNU1MgVUFSVC4gVGhpcyBmdW5jdGlvbiBhY2NlcHRzIHRoZSANCi0gIHRpbWVvdXQgcGFyYW1ldGVyIGFuZCBhcHBsaWVzIHRoZSB0aW1lb3V0IGJhc2VkIHVwIG9uIHRoZSBiYXVkIHJhdGUgYXMgcGVyIA0KLSAgdGhlIGZvcm11bGEgNCB4IHRpbWVvdXQgeCBiaXQgdGltZS4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gdGltZW91dA0KLSAgICBUaGUgdGltZW91dCBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSByZWNlaXZlciB0aW1lb3V0IG11bHRpcGxlLiANCi0gICAgSXQgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIHRoZSBiYXVkIHJhdGUgaW4gdXNlLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZW5hYmxlX3J4X3RpbWVvdXQoJmdfbXNzX3VhcnQwICwgMjQpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkIA0KLU1TU19VQVJUX2VuYWJsZV9yeF90aW1lb3V0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0LA0KLSAgICB1aW50OF90IHRpbWVvdXQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZGlzYWJsZV9yeF90aW1lb3V0KCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIHRoZSByZWNlaXZlciANCi0gIHRpbWVvdXQgZnVuY3Rpb25hbGl0eSBvZiBNU1MgVUFSVC4gDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0NCi0gICAgTVNTX1VBUlRfZGlzYWJsZV9yeF90aW1lb3V0KCZnX21zc191YXJ0MCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfZGlzYWJsZV9yeF90aW1lb3V0DQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX2VuYWJsZV90eF90aW1lX2d1YXJkKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBlbmFibGUgYW5kIGNvbmZpZ3VyZSANCi0gIHRoZSB0cmFuc21pdHRlciB0aW1lIGd1YXJkIGZ1bmN0aW9uYWxpdHkgb2YgTVNTIFVBUlQuIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyANCi0gIHRoZSB0aW1lZ3VhcmQgcGFyYW1ldGVyIGFuZCBhcHBsaWVzIHRoZSB0aW1lZ3VhcmQgYmFzZWQgdXAgb24gdGhlIGJhdWQgcmF0ZQ0KLSAgYXMgcGVyIHRoZSBmb3JtdWxhIHRpbWVndWFyZCB4IGJpdCB0aW1lLg0KLQ0KLSAgQHBhcmFtIHRoaXNfdWFydA0KLSAgICBUaGUgdGhpc191YXJ0IHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gYW4gbXNzX3VhcnRfaW5zdGFuY2VfdA0KLSAgICBzdHJ1Y3R1cmUgaWRlbnRpZnlpbmcgdGhlIE1TUyBVQVJUIGhhcmR3YXJlIGJsb2NrIHRoYXQgd2lsbCBwZXJmb3JtDQotICAgIHRoZSByZXF1ZXN0ZWQgZnVuY3Rpb24uIFRoZXJlIGFyZSB0d28gc3VjaCBkYXRhIHN0cnVjdHVyZXMsDQotICAgIGdfbXNzX3VhcnQwIGFuZCBnX21zc191YXJ0MSwgYXNzb2NpYXRlZCB3aXRoIE1TUyBVQVJUMCBhbmQgTVNTIFVBUlQxLg0KLSAgICBUaGlzIHBhcmFtZXRlciBtdXN0IHBvaW50IHRvIGVpdGhlciB0aGUgZ19tc3NfdWFydDAgb3IgZ19tc3NfdWFydDENCi0gICAgZ2xvYmFsIGRhdGEgc3RydWN0dXJlIGRlZmluZWQgd2l0aGluIHRoZSBVQVJUIGRyaXZlci4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX2VuYWJsZV90eF90aW1lX2d1YXJkKCZnX21zc191YXJ0MCAsIDI0KTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9lbmFibGVfdHhfdGltZV9ndWFyZA0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgdWludDhfdCB0aW1lZ3VhcmQNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICBUaGUgTVNTX1VBUlRfZGlzYWJsZV90eF90aW1lX2d1YXJkKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBkaXNhYmxlIHRoZSANCi0gIHRyYW5zbWl0dGVyIHRpbWUgZ3VhcmQgZnVuY3Rpb25hbGl0eSBvZiBNU1MgVUFSVC4gDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyANCi0gICAgICAgICAgICAgICAgICANCi0gICAgTVNTX1VBUlRfZGlzYWJsZV90eF90aW1lX2d1YXJkKCZnX21zc191YXJ0MCk7DQotICBAZW5kY29kZQ0KLSAqLw0KLXZvaWQgDQotTVNTX1VBUlRfZGlzYWJsZV90eF90aW1lX2d1YXJkDQotKA0KLSAgICBtc3NfdWFydF9pbnN0YW5jZV90ICogdGhpc191YXJ0DQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF9hZGRyZXNzKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBzZXQgdGhlIDgtYml0IGFkZHJlc3MgZm9yIA0KLSAgdGhlIE1TUyBVQVJUIHJlZmVyZW5jZWQgYnkgdGhpc191YXJ0IHBhcmFtZXRlci4gDQotDQotICBAcGFyYW0gdGhpc191YXJ0DQotICAgIFRoZSB0aGlzX3VhcnQgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBhbiBtc3NfdWFydF9pbnN0YW5jZV90DQotICAgIHN0cnVjdHVyZSBpZGVudGlmeWluZyB0aGUgTVNTIFVBUlQgaGFyZHdhcmUgYmxvY2sgdGhhdCB3aWxsIHBlcmZvcm0NCi0gICAgdGhlIHJlcXVlc3RlZCBmdW5jdGlvbi4gVGhlcmUgYXJlIHR3byBzdWNoIGRhdGEgc3RydWN0dXJlcywNCi0gICAgZ19tc3NfdWFydDAgYW5kIGdfbXNzX3VhcnQxLCBhc3NvY2lhdGVkIHdpdGggTVNTIFVBUlQwIGFuZCBNU1MgVUFSVDEuDQotICAgIFRoaXMgcGFyYW1ldGVyIG11c3QgcG9pbnQgdG8gZWl0aGVyIHRoZSBnX21zc191YXJ0MCBvciBnX21zc191YXJ0MQ0KLSAgICBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgZGVmaW5lZCB3aXRoaW4gdGhlIFVBUlQgZHJpdmVyLg0KLQ0KLSAgQHBhcmFtIGFkZHJlc3MNCi0gICAgVGhlIGFkZHJlc3MgcGFyYW1ldGVyIGlzIHRoZSA4LWJpdCBhZGRyZXNzIHdoaWNoIGlzIHRvIGJlIGNvbmZpZ3VyZWQgDQotICAgIHRvIHRoZSBNU1MgVUFSVCByZWZlcmVuY2VkIGJ5IHRoaXNfdWFydCBwYXJhbWV0ZXIuDQotDQotICBAcmV0dXJuDQotICAgIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmV0dXJuIGEgdmFsdWUuDQotDQotICBFeGFtcGxlOg0KLSAgQGNvZGUNCi0gICAgTVNTX1VBUlRfaW5pdCgmZ19tc3NfdWFydDAsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfNTc2MDBfQkFVRCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF9EQVRBXzhfQklUUyB8IE1TU19VQVJUX05PX1BBUklUWSB8IE1TU19VQVJUX09ORV9TVE9QX0JJVCk7IA0KLSAgICAgICAgICAgICAgICAgIA0KLSAgICBNU1NfVUFSVF9zZXRfYWRkcmVzcygmZ19tc3NfdWFydDAsIDB4QUEpOw0KLSAgQGVuZGNvZGUNCi0gKi8NCi12b2lkDQotTVNTX1VBUlRfc2V0X2FkZHJlc3MNCi0oDQotICAgIG1zc191YXJ0X2luc3RhbmNlX3QgKiB0aGlzX3VhcnQsDQotICAgIHVpbnQ4X3QgYWRkcmVzcw0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gIFRoZSBNU1NfVUFSVF9zZXRfcmVhZHlfbW9kZSgpIGZ1bmN0aW9uIGlzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBNT0RFMCBvciBNT0RFMSANCi0gIHRvIHRoZSBUWFJEWSBhbmQgUlhSRFkgc2lnbmFscyBvZiB0aGUgTVNTIFVBUlQgcmVmZXJlbmNlZCBieSB0aGlzX3VhcnQgDQotICBwYXJhbWV0ZXIuIFRoZSBtb2RlIHBhcmFtZXRlciBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIG1vZGUgdG8gYmUgY29uZmlndXJlZC4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgaXMgdGhlIG1zc191YXJ0X3JlYWR5X21vZGVfdCB0eXBlIHdoaWNoIGlzIHVzZWQgdG8gDQotICAgIGNvbmZpZ3VyZSB0aGUgVFhSRFkgYW5kIFJYUkRZIHNpZ25hbCBtb2Rlcy4NCi0NCi0gIEByZXR1cm4NCi0gICAgVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYSB2YWx1ZS4NCi0NCi0gIEV4YW1wbGU6DQotICBAY29kZQ0KLSAgICBNU1NfVUFSVF9pbml0KCZnX21zc191YXJ0MCwNCi0gICAgICAgICAgICAgICAgICBNU1NfVUFSVF81NzYwMF9CQVVELA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUX0RBVEFfOF9CSVRTIHwgTVNTX1VBUlRfTk9fUEFSSVRZIHwgTVNTX1VBUlRfT05FX1NUT1BfQklUKTsgDQotDQotICAgIE1TU19VQVJUX3NldF9yZWFkeV9tb2RlKCZnX21zc191YXJ0MCwgTVNTX1VBUlRfUkVBRFlfTU9ERTApOyAgICANCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9zZXRfcmVhZHlfbW9kZQ0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfcmVhZHlfbW9kZV90IG1vZGUgICAgDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAgVGhlIE1TU19VQVJUX3NldF91c2FydF9tb2RlKCkgZnVuY3Rpb24gaXMgdXNlZCB0byBjb25maWd1cmUgdGhlIE1TUyBVQVJUIA0KLSAgcmVmZXJlbmNlZCBieSB0aGUgcGFyYW1ldGVyIHRoaXNfdWFydCBpbiBVU0FSVCBtb2RlLiBWYXJpb3VzIFVTQVJUIG1vZGVzIA0KLSAgYXJlIHN1cHBvcnRlZCB3aGljaCBjYW4gYmUgY29uZmlndXJlZCBieSB0aGUgcGFyYW1ldGVyIG1vZGUgb2YgdHlwZSANCi0gIG1zc191YXJ0X3VzYXJ0X21vZGVfdC4NCi0NCi0gIEBwYXJhbSB0aGlzX3VhcnQNCi0gICAgVGhlIHRoaXNfdWFydCBwYXJhbWV0ZXIgaXMgYSBwb2ludGVyIHRvIGFuIG1zc191YXJ0X2luc3RhbmNlX3QNCi0gICAgc3RydWN0dXJlIGlkZW50aWZ5aW5nIHRoZSBNU1MgVUFSVCBoYXJkd2FyZSBibG9jayB0aGF0IHdpbGwgcGVyZm9ybQ0KLSAgICB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uLiBUaGVyZSBhcmUgdHdvIHN1Y2ggZGF0YSBzdHJ1Y3R1cmVzLA0KLSAgICBnX21zc191YXJ0MCBhbmQgZ19tc3NfdWFydDEsIGFzc29jaWF0ZWQgd2l0aCBNU1MgVUFSVDAgYW5kIE1TUyBVQVJUMS4NCi0gICAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBwb2ludCB0byBlaXRoZXIgdGhlIGdfbXNzX3VhcnQwIG9yIGdfbXNzX3VhcnQxDQotICAgIGdsb2JhbCBkYXRhIHN0cnVjdHVyZSBkZWZpbmVkIHdpdGhpbiB0aGUgVUFSVCBkcml2ZXIuDQotDQotICBAcGFyYW0gbW9kZQ0KLSAgICBUaGUgbW9kZSBwYXJhbWV0ZXIgaXMgdGhlIFVTQVJUIG1vZGUgdG8gYmUgY29uZmlndXJlZC4gDQotICAgIFRoaXMgcGFyYW1ldGVyIGlzIG9mIHR5cGUgbXNzX3VhcnRfdXNhcnRfbW9kZV90Lg0KLQ0KLSAgQHJldHVybg0KLSAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBhIHZhbHVlLg0KLQ0KLSAgRXhhbXBsZToNCi0gIEBjb2RlDQotICAgIE1TU19VQVJUX2luaXQoJmdfbXNzX3VhcnQwLA0KLSAgICAgICAgICAgICAgICAgIE1TU19VQVJUXzU3NjAwX0JBVUQsDQotICAgICAgICAgICAgICAgICAgTVNTX1VBUlRfREFUQV84X0JJVFMgfCBNU1NfVUFSVF9OT19QQVJJVFkgfCBNU1NfVUFSVF9PTkVfU1RPUF9CSVQpOyAgDQotDQotICAgIE1TU19VQVJUX3NldF91c2FydF9tb2RlKCZnX21zc191YXJ0MCwgTVNTX1VBUlRfU1lOQ19NQVNURVJfUE9TX0VER0VfQ0xLKTsNCi0gIEBlbmRjb2RlDQotICovDQotdm9pZCANCi1NU1NfVUFSVF9zZXRfdXNhcnRfbW9kZQ0KLSgNCi0gICAgbXNzX3VhcnRfaW5zdGFuY2VfdCAqIHRoaXNfdWFydCwNCi0gICAgbXNzX3VhcnRfdXNhcnRfbW9kZV90IG1vZGUNCi0pOw0KLQ0KLSNpZmRlZiBfX2NwbHVzcGx1cw0KLX0NCi0jZW5kaWYNCi0NCi0jZW5kaWYgLyogX19NU1NfVUFSVF9IXyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydF9yZWdzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnMvbXNzX3VhcnQvbXNzX3VhcnRfcmVncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzY3NTI1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVycy9tc3NfdWFydC9tc3NfdWFydF9yZWdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMS0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFJlZ2lzdGVyIGJpdCBvZmZzZXRzIGFuZCBtYXNrcyBkZWZpbnRpb25zIGZvciBTbWFydEZ1c2lvbjIgTVNTIE1NVUFSVC4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1NjEwICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDQtMDUgMTQ6MTk6MzAgKzAxMDAgKEZyaSwgMDUgQXByIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIE1TU19VQVJUX1JFR1NfSF8NCi0jZGVmaW5lIE1TU19VQVJUX1JFR1NfSF8NCi0NCi0jaWZkZWYgX19jcGx1c3BsdXMNCi1leHRlcm4gIkMiIHsNCi0jZW5kaWYNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSBSZWdpc3RlciBCaXQgZGVmaW5pdGlvbnMNCi0gKi8NCi0NCi0vKiBMaW5lIENvbnRyb2wgcmVnaXN0ZXIgYml0IGRlZmluaXRpb25zICovDQotI2RlZmluZSBTQiAgICAgICAgICAgICAgICAgIDZ1ICAgICAgLyogU2V0IGJyZWFrICovDQotI2RlZmluZSBETEFCICAgICAgICAgICAgICAgIDd1ICAgICAgLyogRGl2aXNvciBsYXRjaCBhY2Nlc3MgYml0ICovDQotDQotLyogRklGTyBDb250cm9sIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAqLw0KLSNkZWZpbmUgUlhSRFlfVFhSRFlOX0VOICAgICAwdSAgICAgIC8qIEVuYWJsZSBUWFJEWSBhbmQgUlhSRFkgc2lnbmFscyAqLw0KLSNkZWZpbmUgQ0xFQVJfUlhfRklGTyAgICAgICAxdSAgICAgIC8qIENsZWFyIHJlY2VpdmVyIEZJRk8gKi8NCi0jZGVmaW5lIENMRUFSX1RYX0ZJRk8gICAgICAgMnUgICAgICAvKiBDbGVhciB0cmFuc2ltdHRlciBGSUZPICovDQotI2RlZmluZSBSRFlNT0RFICAgICAgICAgICAgIDN1ICAgICAgLyogTW9kZSAwIG9yIE1vZGUgMSBmb3IgVFhSRFkgYW5kIFJYUkRZICovDQotDQotLyogTW9kZW0gQ29udHJvbCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIExPT1AgICAgICAgICAgICAgICAgNHUgICAgICAvKiBMb2NhbCBsb29wYmFjayAqLw0KLSNkZWZpbmUgUkxPT1AgICAgICAgICAgICAgICA1dSAgICAgIC8qIFJlbW90ZSBsb29wYmFjayAqLw0KLSNkZWZpbmUgRUNITyAgICAgICAgICAgICAgICA2dSAgICAgIC8qIEF1dG9tYXRpYyBlY2hvICovDQotI2RlZmluZSBSTE9PUF9NQVNLICAgICAgICAgIDB4NnUgICAgLyogUmVtb3RlIGxvb3BiYWNrICYgQXV0b21hdGljIGVjaG8qLw0KLQ0KLS8qIExpbmUgU3RhdHVzIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucyAgICovDQotI2RlZmluZSBEUiAgICAgICAgICAgICAgICAgIDB1ICAgICAgLyogRGF0YSByZWFkeSAqLw0KLSNkZWZpbmUgVEhSRSAgICAgICAgICAgICAgICA1dSAgICAgIC8qIFRyYW5zbWl0dGVyIGhvbGRpbmcgcmVnaXN0ZXIgZW1wdHkgKi8NCi0jZGVmaW5lIFRFTVQgICAgICAgICAgICAgICAgNnUgICAgICAvKiBUcmFuc2l0dGVyIGVtcHR5ICovDQotDQotLyogSW50ZXJydXB0IEVuYWJsZSByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIEVSQkZJICAgICAgICAgICAgICAgMHUgICAgICAvKiBFbmFibGUgcmVjZWl2ZXIgYnVmZmVyIGZ1bGwgaW50ZXJydXB0ICovDQotI2RlZmluZSBFVEJFSSAgICAgICAgICAgICAgIDF1ICAgICAgLyogRW5hYmxlIHRyYW5zbWl0dGVyIGJ1ZmZlciBlbXB0eSBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVMU0kgICAgICAgICAgICAgICAgMnUgICAgICAvKiBFbmFibGUgbGluZSBzdGF0dXMgaW50ZXJydXB0ICovDQotI2RlZmluZSBFRFNTSSAgICAgICAgICAgICAgIDN1ICAgICAgLyogRW5hYmxlIG1vZGVtIHN0YXR1cyBpbnRlcnJ1cHQgKi8NCi0NCi0vKiBNdWx0aW1vZGUgcmVnaXN0ZXIgMCBiaXQgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIEVMSU4gICAgICAgICAgICAgICAgM3UgICAgICAvKiBFbmFibGUgTElOIGhlYWRlciBkZXRlY3Rpb24gKi8NCi0jZGVmaW5lIEVUVEcgICAgICAgICAgICAgICAgNXUgICAgICAvKiBFbmFibGUgdHJhbnNtaXR0ZXIgdGltZSBndWFyZCAqLw0KLSNkZWZpbmUgRVJUTyAgICAgICAgICAgICAgICA2dSAgICAgIC8qIEVuYWJsZSByZWNlaXZlciB0aW1lLW91dCAqLw0KLSNkZWZpbmUgRUZCUiAgICAgICAgICAgICAgICA3dSAgICAgIC8qIEVuYWJsZSBmcmFjdGlvbmFsIGJhdWQgcmF0ZSBtb2RlICovDQotDQotLyogTXVsdGltb2RlIHJlZ2lzdGVyIDEgYml0IGRlZmluaXRpb25zICovDQotI2RlZmluZSBFX01TQl9SWCAgICAgICAgICAgIDB1ICAgICAgLyogTVNCIC8gTFNCIGZpcnN0IGZvciByZWNlaXZlciAqLw0KLSNkZWZpbmUgRV9NU0JfVFggICAgICAgICAgICAxdSAgICAgIC8qIE1TQiAvIExTQiBmaXJzdCBmb3IgdHJhbnNtaXR0ZXIgKi8NCi0jZGVmaW5lIEVJUkQgICAgICAgICAgICAgICAgMnUgICAgICAvKiBFbmFibGUgSXJEQSBtb2RlbSAqLw0KLSNkZWZpbmUgRUlSWCAgICAgICAgICAgICAgICAzdSAgICAgIC8qIElucHV0IHBvbGFyaXR5IGZvciBJckRBIG1vZGVtICovDQotI2RlZmluZSBFSVRYICAgICAgICAgICAgICAgIDR1ICAgICAgLyogT3V0cHV0IHBvbGFyaXR5IGZvciBJckRBIG1vZGVtICovDQotI2RlZmluZSBFSVRQICAgICAgICAgICAgICAgIDV1ICAgICAgLyogT3V0cHV0IHB1bHNlIHdpZHRoIGZvciBJckRBIG1vZGVtICovICAgICAgDQotDQotLyogTXVsdGltb2RlIHJlZ2lzdGVyIDIgYml0IGRlZmluaXRpb25zICovDQotI2RlZmluZSBFRVJSICAgICAgICAgICAgICAgIDB1ICAgICAgLyogRW5hYmxlIEVSUiAvIE5BQ0sgZHVyaW5nIHN0b3AgdGltZSAqLw0KLSNkZWZpbmUgRUFGTSAgICAgICAgICAgICAgICAxdSAgICAgIC8qIEVuYWJsZSA5LWJpdCBhZGRyZXNzIGZsYWcgbW9kZSAqLw0KLSNkZWZpbmUgRUFGQyAgICAgICAgICAgICAgICAydSAgICAgIC8qIEVuYWJsZSBhZGRyZXNzIGZsYWcgY2xlYXIgKi8NCi0jZGVmaW5lIEVTV00gICAgICAgICAgICAgICAgM3UgICAgICAvKiBFbmFibGUgc2luZ2xlIHdpcmUgaGFsZi1kdXBsZXggbW9kZSAqLw0KLQ0KLS8qIE11bHRpbW9kZSBJbnRlcnJ1cHQgRW5hYmxlIHJlZ2lzdGVyIGFuZA0KLSAgIE11bHRpbW9kZSBJbnRlcnJ1cHQgSWRlbnRpZmljYXRpb24gcmVnaXN0ZXIgZGVmaW5pdGlvbnMgKi8NCi0jZGVmaW5lIEVSVE9JICAgICAgICAgICAgICAgMHUgICAgICAvKiBFbmFibGUgcmVjZWl2ZXIgdGltZW91dCBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVOQUNLSSAgICAgICAgICAgICAgMXUgICAgICAvKiBFbmFibGUgTkFDSyAvIEVSUiBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVQSURfUEVJICAgICAgICAgICAgMnUgICAgICAvKiBFbmFibGUgUElEIHBhcml0eSBlcnJvciBpbnRlcnJ1cHQgKi8NCi0jZGVmaW5lIEVMSU5CSSAgICAgICAgICAgICAgM3UgICAgICAvKiBFbmFibGUgTElOIGJyZWFrIGludGVycnVwdCAqLw0KLSNkZWZpbmUgRUxJTlNJICAgICAgICAgICAgICA0dSAgICAgIC8qIEVuYWJsZSBMSU4gc3luYyBkZXRlY3Rpb24gaW50ZXJydXB0ICovDQotDQotDQotI2lmZGVmIF9fY3BsdXNwbHVzICAgICAgICAgICAgICAgICAgICAgICANCi19DQotI2VuZGlmDQotDQotI2VuZGlmIC8qIE1TU19VQVJUX1JFR1NfSF8gKi8NCi0NCi0NCi0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWcuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE4NGU5OS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZy5jCisrKyAvZGV2L251bGwKQEAgLTEsMzg1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDEyIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuICBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqDQotICogIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbi4gVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkDQotICogIGJ5IHRoZSBMaWJlcm8gdG9vbHMuIEl0IGNvbnRhaW5zIHRoZSBTbWFydGZ1c2lvbjIgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdGhhdA0KLSAqICB3YXMgc2VsZWN0ZWQgZHVyaW5nIHRoZSBoYXJkd2FyZSBjb25maWd1cmF0aW9uIGZsb3cuIA0KLSAqDQotICovDQotDQotI2luY2x1ZGUgIi4uLy4uL0NNU0lTL20yc3h4eC5oIg0KLSNpbmNsdWRlICIuLi8uLi9DTVNJUy9zeXNfaW5pdF9jZmdfdHlwZXMuaCINCi0jaW5jbHVkZSAic3lzX2NvbmZpZy5oIg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICEhISBXQVJOSU5HICEhIQ0KLSAqPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogVGhlIHByb2plY3QgaW5jbHVkaW5nIHRoaXMgZmlsZSBtdXN0IGJlIGxpbmtlZCBzbyB0aGF0IHRoZSBjb250ZW50IG9mIHRoaXMNCi0gKiBmaWxlIGlzIGxvY2F0ZWQgaW4gaW50ZXJuYWwgZU5WTSBhdCBydW4gdGltZS4gVGhlIGNvbnRlbnQgb2YgdGhpcyBmaWxlIGlzDQotICogdXNlZCB0byBjb25maWd1cmUgdGhlIHN5c3RlbSBwcmlvciB0byBSQU0gY29udGVudCBpbml0aWFsaXphdGlvbi4gVGhpcyBtZWFucw0KLSAqIHRoYXQgdGhlIGNvbnRlbnQgb2YgdGhlIGRhdGEgc3RydWN0dXJlcyBiZWxvdyB3aWxsIGJlIHVzZWQgYmVmb3JlIHRoZSBjb3B5DQotICogZnJvbSBMTUEgdG8gVk1BIHRha2VzIHBsYWNlLiBUaGUgTE1BIGFuZCBWTUEgbG9jYXRpb25zIG9mIHRoZSBjb250ZW50IG9mIHRoaXMNCi0gKiBmaWxlIG11c3QgYmUgaWRlbnRpY2FsIGZvciB0aGUgc3lzdGVtIHRvIGJlIHNlYW1sZXNzbHkgY29uZmlndXJlZCBhcyBwYXJ0IG9mDQotICogdGhlIENNU0lTIGJvb3QgcHJvY2Vzcy4NCi0gKi8NCi0gDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBDbG9jayBjb25maWd1cmF0aW9uDQotICovDQotLyogTm8gY29uZmlndXJhdGlvbiBkYXRhIHN0cnVjdHVyZSByZXF1aXJlZC4gKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE1lbW9yeSByZW1hcHBpbmcgY29uZmlndXJhdGlvbg0KLSAqLw0KLS8qIFRCRC4gKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE1ERFIgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNpZiBNU1NfU1lTX01ERFJfQ09ORklHX0JZX0NPUlRFWA0KLQ0KLSNpbmNsdWRlICJzeXNfY29uZmlnX21kZHJfZGVmaW5lLmgiDQotDQotTUREUl9UeXBlRGVmICogY29uc3QgZ19tMnNfbWRkcl9hZGRyID0gKE1ERFJfVHlwZURlZiAqKTB4NDAwMjA4MDA7DQotDQotY29uc3QgZGRyX3N1YnN5c19jZmdfdCBnX20yc19tZGRyX3N1YnN5c19jb25maWcgPQ0KLXsNCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRERSIENvbnRyb2xsZXIgcmVnaXN0ZXJzLg0KLSAgICAgKiBBbGwgcmVnaXN0ZXJzIGFyZSAxNi1iaXQgd2lkZSB1bmxlc3MgbWVudGlvbmVkIGJlc2lkZSB0aGUgZGVmaW5pdGlvbi4NCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIE1ERFJfRERSQ19EWU5fU09GVF9SRVNFVF9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19SRVNFUlZFRDAsDQotICAgICAgICBNRERSX0REUkNfRFlOX1JFRlJFU0hfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EWU5fUkVGUkVTSF8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RZTl9QT1dFUkRPV05fQ1IsDQotICAgICAgICBNRERSX0REUkNfRFlOX0RFQlVHX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX01PREVfQ1IsDQotICAgICAgICBNRERSX0REUkNfQUREUl9NQVBfQkFOS19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19FQ0NfREFUQV9NQVNLX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FERFJfTUFQX0NPTF8xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FERFJfTUFQX0NPTF8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FERFJfTUFQX1JPV18xX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FERFJfTUFQX1JPV18yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0lOSVRfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19DS0VfUlNUTl9DWUNMRVNfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19DS0VfUlNUTl9DWUNMRVNfMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19JTklUX01SX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0lOSVRfRU1SX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0lOSVRfRU1SMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19JTklUX0VNUjNfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9CQU5LX1RJTUlOR19QQVJBTV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX1JEX1dSX0xBVEVOQ1lfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9SRF9XUl9QUkVfQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9NUl9USU1JTkdfUEFSQU1fQ1IsDQotICAgICAgICBNRERSX0REUkNfRFJBTV9SQVNfVElNSU5HX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RSQU1fUkRfV1JfVFJOQVJORF9USU1FX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RSQU1fVF9QRF9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19EUkFNX0JBTktfQUNUX1RJTUlOR19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19PRFRfUEFSQU1fMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19PRFRfUEFSQU1fMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19BRERSX01BUF9DT0xfM19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19NT0RFX1JFR19SRF9XUl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19NT0RFX1JFR19EQVRBX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1BXUl9TQVZFXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfUFdSX1NBVkVfMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19aUV9MT05HX1RJTUVfQ1IsDQotICAgICAgICBNRERSX0REUkNfWlFfU0hPUlRfVElNRV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19aUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19aUV9TSE9SVF9JTlRfUkVGUkVTSF9NQVJHSU5fMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19QRVJGX1BBUkFNXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfSFBSX1FVRVVFX1BBUkFNXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfSFBSX1FVRVVFX1BBUkFNXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfTFBSX1FVRVVFX1BBUkFNXzFfQ1IsDQotICAgICAgICBNRERSX0REUkNfTFBSX1FVRVVFX1BBUkFNXzJfQ1IsDQotICAgICAgICBNRERSX0REUkNfV1JfUVVFVUVfUEFSQU1fQ1IsDQotICAgICAgICBNRERSX0REUkNfUEVSRl9QQVJBTV8yX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX1BFUkZfUEFSQU1fM19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfUkREQVRBX0VOX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RGSV9NSU5fQ1RSTFVQRF9USU1JTkdfQ1IsDQotICAgICAgICBNRERSX0REUkNfREZJX01BWF9DVFJMVVBEX1RJTUlOR19DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfV1JfTFZMX0NPTlRST0xfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfV1JfTFZMX0NPTlRST0xfMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfUkRfTFZMX0NPTlRST0xfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfUkRfTFZMX0NPTlRST0xfMl9DUiwNCi0gICAgICAgIE1ERFJfRERSQ19ERklfQ1RSTFVQRF9USU1FX0lOVEVSVkFMX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0RZTl9TT0ZUX1JFU0VUX0FMSUFTX0NSLA0KLSAgICAgICAgTUREUl9ERFJDX0FYSV9GQUJSSUNfUFJJX0lEX0NSLA0KLSAgICB9LA0KLQ0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgUEhZIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQotICAgICAqLw0KLSAgICB7DQotICAgICAgICBNRERSX1BIWV9MT09QQkFDS19URVNUX0NSLA0KLSAgICAgICAgTUREUl9QSFlfQk9BUkRfTE9PUEJBQ0tfQ1IsDQotICAgICAgICBNRERSX1BIWV9DVFJMX1NMQVZFX1JBVElPX0NSLA0KLSAgICAgICAgTUREUl9QSFlfQ1RSTF9TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0NUUkxfU0xBVkVfREVMQVlfQ1IsDQotICAgICAgICBNRERSX1BIWV9EQVRBX1NMSUNFX0lOX1VTRV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0xWTF9OVU1fT0ZfRFEwX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRFFfT0ZGU0VUXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9EUV9PRkZTRVRfMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RRX09GRlNFVF8zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRElTX0NBTElCX1JTVF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RMTF9MT0NLX0RJRkZfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzFfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9GSUZPX1dFX0lOX0ZPUkNFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfR0FURUxWTF9JTklUX01PREVfQ1IsDQotICAgICAgICBNRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT18yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfR0FURUxWTF9JTklUX1JBVElPXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fNF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0xPQ0FMX09EVF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0lOVkVSVF9DTEtPVVRfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfREVMQVlfMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9ERUxBWV8yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRfRFFTX1NMQVZFX0RFTEFZXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfRk9SQ0VfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRfRFFTX1NMQVZFX1JBVElPXzNfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fNF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EUVNfU0xBVkVfREVMQVlfM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBNRERSX1BIWV9XUl9EUVNfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8yX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8zX0NSLA0KLSAgICAgICAgTUREUl9QSFlfV1JfREFUQV9TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fNF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSTFZMX0lOSVRfTU9ERV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fMV9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fMl9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fM19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fNF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX1dSX1JEX1JMX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRDX0ZJRk9fUlNUX0VSUl9DTlRfQ0xSX0NSLA0KLSAgICAgICAgTUREUl9QSFlfUkRDX1dFX1RPX1JFX0RFTEFZX0NSLA0KLSAgICAgICAgTUREUl9QSFlfVVNFX0ZJWEVEX1JFX0NSLA0KLSAgICAgICAgTUREUl9QSFlfVVNFX1JBTkswX0RFTEFZU19DUiwNCi0gICAgICAgIE1ERFJfUEhZX1VTRV9MVkxfVFJOR19MRVZFTF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RZTl9DT05GSUdfQ1IsDQotICAgICAgICBNRERSX1BIWV9SRF9XUl9HQVRFX0xWTF9DUiwNCi0gICAgICAgIE1ERFJfUEhZX0RZTl9SRVNFVF9DUg0KLSAgICB9LA0KLSAgICANCi0gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gICAgICogRklDLTY0IHJlZ2lzdGVycw0KLSAgICAgKiBUaGVzZSByZWdpc3RlcnMgYXJlIDE2LWJpdCB3aWRlIGFuZCAzMi1iaXQgYWxpZ25lZC4NCi0gICAgICovDQotICAgIHsNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19OQl9BRERSX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX05CUldCX1NJWkVfQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfV0JfVElNRU9VVF9DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19IUERfU1dfUldfRU5fQ1IsDQotICAgICAgICBNRERSX0REUl9GSUNfSFBEX1NXX1JXX0lOVkFMX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX1NXX1dSX0VSQ0xSX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX0VSUl9JTlRfRU5BQkxFX0NSLA0KLSAgICAgICAgTUREUl9ERFJfRklDX05VTV9BSEJfTUFTVEVSU19DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRWQUxfMV9DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRWQUxfMl9DUiwNCi0gICAgICAgIE1ERFJfRERSX0ZJQ19MT0NLX1RJTUVPVVRfRU5fQ1INCi0gICAgfQ0KLX07DQotDQotI2VuZGlmDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBGRERSIGNvbmZpZ3VyYXRpb24NCi0gKi8NCi0jaWYgTVNTX1NZU19GRERSX0NPTkZJR19CWV9DT1JURVgNCi0NCi0jaW5jbHVkZSAic3lzX2NvbmZpZ19mZGRyX2RlZmluZS5oIg0KLQ0KLUZERFJfVHlwZURlZiAqIGNvbnN0IGdfbTJzX2ZkZHJfYWRkciA9IChGRERSX1R5cGVEZWYgKikweDQwMDIxMDAwOw0KLQ0KLWNvbnN0IGZkZHJfc3lzcmVnX3QgZ19tMnNfZmRkcl9zeXNyZWdfc3Vic3lzX2NvbmZpZyA9DQotew0KLSAgICAweDAwMDF1LCAgICAvKiBQTExfQ09ORklHX0xPV18xICovDQotICAgIDB4MDAwMnUsICAgIC8qIFBMTF9DT05GSUdfTE9XXzIgKi8NCi0gICAgMHgwMDAzdSwgICAgLyogUExMX0NPTkZJR19ISUdIICovDQotICAgIDB4MDAwNHUsICAgIC8qIEZBQ0NfQ0xLX0VOICovDQotICAgIDB4MDAwNXUsICAgIC8qIEZBQ0NfTVVYX0NPTkZJRyAqLw0KLSAgICAweDAwMDZ1LCAgICAvKiBGQUNDX0RJVklTT1JfUkFUSU8gKi8NCi0gICAgMHgwMDA3dSwgICAgLyogUExMX0RFTEFZX0xJTkVfU0VMICovDQotICAgIDB4MDAwOHUsICAgIC8qIFNPRlRfUkVTRVQgKi8NCi0gICAgMHgwMDA5dSwgICAgLyogSU9fQ0FMSUIgKi8NCi0gICAgMHgwMDBBdSwgICAgLyogSU5URVJSVVBUX0VOQUJMRSAqLw0KLSAgICAweDAwMEJ1LCAgICAvKiBBWElfQUhCX01PREVfU0VMICovDQotICAgIDB4MDAwQ3UgICAgIC8qIFBIWV9TRUxGX1JFRl9FTiAqLw0KLX07DQotDQotY29uc3QgZGRyX3N1YnN5c19jZmdfdCBnX20yc19mZGRyX3N1YnN5c19jb25maWcgPSANCi17DQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEREUiBDb250cm9sbGVyIHJlZ2lzdGVycy4NCi0gICAgICogQWxsIHJlZ2lzdGVycyBhcmUgMTYtYml0IHdpZGUgdW5sZXNzIG1lbnRpb25lZCBiZXNpZGUgdGhlIGRlZmluaXRpb24uDQotICAgICAqLw0KLSAgICB7DQotICAgICAgICBGRERSX0REUkNfRFlOX1NPRlRfUkVTRVRfQ1IsDQotICAgICAgICBGRERSX0REUkNfUkVTRVJWRUQwLA0KLSAgICAgICAgRkREUl9ERFJDX0RZTl9SRUZSRVNIXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfRFlOX1JFRlJFU0hfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EWU5fUE9XRVJET1dOX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RZTl9ERUJVR19DUiwNCi0gICAgICAgIEZERFJfRERSQ19NT0RFX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0FERFJfTUFQX0JBTktfQ1IsDQotICAgICAgICBGRERSX0REUkNfRUNDX0RBVEFfTUFTS19DUiwNCi0gICAgICAgIEZERFJfRERSQ19BRERSX01BUF9DT0xfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19BRERSX01BUF9DT0xfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19BRERSX01BUF9ST1dfMV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19BRERSX01BUF9ST1dfMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19JTklUXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfQ0tFX1JTVE5fQ1lDTEVTXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfQ0tFX1JTVE5fQ1lDTEVTXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfSU5JVF9NUl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19JTklUX0VNUl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19JTklUX0VNUjJfQ1IsDQotICAgICAgICBGRERSX0REUkNfSU5JVF9FTVIzX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fQkFOS19USU1JTkdfUEFSQU1fQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9SRF9XUl9MQVRFTkNZX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fUkRfV1JfUFJFX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fTVJfVElNSU5HX1BBUkFNX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RSQU1fUkFTX1RJTUlOR19DUiwNCi0gICAgICAgIEZERFJfRERSQ19EUkFNX1JEX1dSX1RSTkFSTkRfVElNRV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EUkFNX1RfUERfQ1IsDQotICAgICAgICBGRERSX0REUkNfRFJBTV9CQU5LX0FDVF9USU1JTkdfQ1IsDQotICAgICAgICBGRERSX0REUkNfT0RUX1BBUkFNXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfT0RUX1BBUkFNXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfQUREUl9NQVBfQ09MXzNfQ1IsDQotICAgICAgICBGRERSX0REUkNfTU9ERV9SRUdfUkRfV1JfQ1IsDQotICAgICAgICBGRERSX0REUkNfTU9ERV9SRUdfREFUQV9DUiwNCi0gICAgICAgIEZERFJfRERSQ19QV1JfU0FWRV8xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1BXUl9TQVZFXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfWlFfTE9OR19USU1FX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1pRX1NIT1JUX1RJTUVfQ1IsDQotICAgICAgICBGRERSX0REUkNfWlFfU0hPUlRfSU5UX1JFRlJFU0hfTUFSR0lOXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfWlFfU0hPUlRfSU5UX1JFRlJFU0hfTUFSR0lOXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfUEVSRl9QQVJBTV8xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0hQUl9RVUVVRV9QQVJBTV8xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0hQUl9RVUVVRV9QQVJBTV8yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0xQUl9RVUVVRV9QQVJBTV8xX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0xQUl9RVUVVRV9QQVJBTV8yX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1dSX1FVRVVFX1BBUkFNX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX1BFUkZfUEFSQU1fMl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19QRVJGX1BBUkFNXzNfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX1JEREFUQV9FTl9DUiwNCi0gICAgICAgIEZERFJfRERSQ19ERklfTUlOX0NUUkxVUERfVElNSU5HX0NSLA0KLSAgICAgICAgRkREUl9ERFJDX0RGSV9NQVhfQ1RSTFVQRF9USU1JTkdfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX1dSX0xWTF9DT05UUk9MXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX1dSX0xWTF9DT05UUk9MXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX1JEX0xWTF9DT05UUk9MXzFfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX1JEX0xWTF9DT05UUk9MXzJfQ1IsDQotICAgICAgICBGRERSX0REUkNfREZJX0NUUkxVUERfVElNRV9JTlRFUlZBTF9DUiwNCi0gICAgICAgIEZERFJfRERSQ19EWU5fU09GVF9SRVNFVF9BTElBU19DUiwNCi0gICAgICAgIEZERFJfRERSQ19BWElfRkFCUklDX1BSSV9JRF9DUg0KLSAgICB9LA0KLQ0KLSAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAgICAgKiBERFIgUEhZIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzDQotICAgICAqLw0KLSAgICB7DQotICAgICAgICBGRERSX1BIWV9MT09QQkFDS19URVNUX0NSLA0KLSAgICAgICAgRkREUl9QSFlfQk9BUkRfTE9PUEJBQ0tfQ1IsDQotICAgICAgICBGRERSX1BIWV9DVFJMX1NMQVZFX1JBVElPX0NSLA0KLSAgICAgICAgRkREUl9QSFlfQ1RSTF9TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0NUUkxfU0xBVkVfREVMQVlfQ1IsDQotICAgICAgICBGRERSX1BIWV9EQVRBX1NMSUNFX0lOX1VTRV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0xWTF9OVU1fT0ZfRFEwX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRFFfT0ZGU0VUXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9EUV9PRkZTRVRfMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RRX09GRlNFVF8zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRElTX0NBTElCX1JTVF9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RMTF9MT0NLX0RJRkZfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzFfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX0lOX0RFTEFZXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9GSUZPX1dFX0lOX0ZPUkNFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT18zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfRklGT19XRV9TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfR0FURUxWTF9JTklUX01PREVfQ1IsDQotICAgICAgICBGRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX0dBVEVMVkxfSU5JVF9SQVRJT18yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfR0FURUxWTF9JTklUX1JBVElPXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9HQVRFTFZMX0lOSVRfUkFUSU9fNF9DUiwNCi0gICAgICAgIEZERFJfUEhZX0xPQ0FMX09EVF9DUiwNCi0gICAgICAgIEZERFJfUEhZX0lOVkVSVF9DTEtPVVRfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfREVMQVlfMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9ERUxBWV8yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRfRFFTX1NMQVZFX0RFTEFZXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfRk9SQ0VfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1JEX0RRU19TTEFWRV9SQVRJT18yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRfRFFTX1NMQVZFX1JBVElPXzNfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9EUVNfU0xBVkVfUkFUSU9fNF9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX0RFTEFZXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EUVNfU0xBVkVfREVMQVlfM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT18xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfRFFTX1NMQVZFX1JBVElPXzJfQ1IsDQotICAgICAgICBGRERSX1BIWV9XUl9EUVNfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RRU19TTEFWRV9SQVRJT180X0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8xX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8yX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9ERUxBWV8zX0NSLA0KLSAgICAgICAgRkREUl9QSFlfV1JfREFUQV9TTEFWRV9GT1JDRV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX0RBVEFfU0xBVkVfUkFUSU9fNF9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSTFZMX0lOSVRfTU9ERV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fMV9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fMl9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fM19DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSTFZMX0lOSVRfUkFUSU9fNF9DUiwNCi0gICAgICAgIEZERFJfUEhZX1dSX1JEX1JMX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRDX0ZJRk9fUlNUX0VSUl9DTlRfQ0xSX0NSLA0KLSAgICAgICAgRkREUl9QSFlfUkRDX1dFX1RPX1JFX0RFTEFZX0NSLA0KLSAgICAgICAgRkREUl9QSFlfVVNFX0ZJWEVEX1JFX0NSLA0KLSAgICAgICAgRkREUl9QSFlfVVNFX1JBTkswX0RFTEFZU19DUiwNCi0gICAgICAgIEZERFJfUEhZX1VTRV9MVkxfVFJOR19MRVZFTF9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RZTl9DT05GSUdfQ1IsDQotICAgICAgICBGRERSX1BIWV9SRF9XUl9HQVRFX0xWTF9DUiwNCi0gICAgICAgIEZERFJfUEhZX0RZTl9SRVNFVF9DUiwNCi0gICAgfSwNCi0gICAgDQotICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICAgICAqIEZJQy02NCByZWdpc3RlcnMNCi0gICAgICogVGhlc2UgcmVnaXN0ZXJzIGFyZSAxNi1iaXQgd2lkZSBhbmQgMzItYml0IGFsaWduZWQuDQotICAgICAqLw0KLSAgICB7DQotICAgICAgICBGRERSX0REUl9GSUNfTkJfQUREUl9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19OQlJXQl9TSVpFX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX1dCX1RJTUVPVVRfQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfSFBEX1NXX1JXX0VOX0NSLA0KLSAgICAgICAgRkREUl9ERFJfRklDX0hQRF9TV19SV19JTlZBTF9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19TV19XUl9FUkNMUl9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19FUlJfSU5UX0VOQUJMRV9DUiwNCi0gICAgICAgIEZERFJfRERSX0ZJQ19OVU1fQUhCX01BU1RFUlNfQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfTE9DS19USU1FT1VUVkFMXzFfQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfTE9DS19USU1FT1VUVkFMXzJfQ1IsDQotICAgICAgICBGRERSX0REUl9GSUNfTE9DS19USU1FT1VUX0VOX0NSDQotICAgIH0NCi19Ow0KLQ0KLSNlbmRpZg0KLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmVhMThiLi4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqICBTbWFydGZ1c2lvbjIgc3lzdGVtIGNvbmZpZ3VyYXRpb24uIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZA0KLSAqICBieSB0aGUgTGliZXJvIHRvb2xzLg0KLSAqDQotICovDQotI2lmbmRlZiBNU1NfU1lTVEVNX0NPTkZJR1VSQVRJT04NCi0jZGVmaW5lIE1TU19TWVNURU1fQ09ORklHVVJBVElPTg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ2xvY2sgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNpbmNsdWRlICJzeXNfY29uZmlnX21zc19jbG9ja3MuaCINCi0gDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBNZW1vcnkgcmVtYXBwaW5nIGNvbmZpZ3VyYXRpb24NCi0gKi8NCi0vKiBUQkQgKi8NCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIEZBQ0NfSU5JVCAoQ29ydGV4LU0zIHJ1bnMgdGhlIEZBQ0MgSU5JVCBwcm9jZWR1cmUpDQotICogT25seSBzZXQgdG8gMSBmb3IgZGVzaWduIHRhcmdldGluZyB0aGUgTTJTMDUwVF9FUyBkZXZpY2UNCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfRkFDQ19JTklUX0JZX0NPUlRFWCAgICAgICAgIDENCi0NCi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSAqIE1ERFIgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19NRERSX0NPTkZJR19CWV9DT1JURVggICAgICAgMA0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogRkREUiBjb25maWd1cmF0aW9uDQotICovDQotI2RlZmluZSBNU1NfU1lTX0ZERFJfQ09ORklHX0JZX0NPUlRFWCAgICAgICAwDQotDQotLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0gKiBTRVJERVMgSW50ZXJmYWNlIGNvbmZpZ3VyYXRpb24NCi0gKi8NCi0jZGVmaW5lIE1TU19TWVNfU0VSREVTXzBfQ09ORklHX0JZX0NPUlRFWCAgIDANCi0jaWYgTVNTX1NZU19TRVJERVNfMF9DT05GSUdfQllfQ09SVEVYDQotI2luY2x1ZGUgInN5c19jb25maWdfU0VSREVTSUZfMC5oIg0KLSNlbmRpZg0KLQ0KLSNkZWZpbmUgTVNTX1NZU19TRVJERVNfMV9DT05GSUdfQllfQ09SVEVYICAgMA0KLSNpZiBNU1NfU1lTX1NFUkRFU18xX0NPTkZJR19CWV9DT1JURVgNCi0jaW5jbHVkZSAic3lzX2NvbmZpZ19TRVJERVNJRl8xLmgiDQotI2VuZGlmDQotDQotI2RlZmluZSBNU1NfU1lTX1NFUkRFU18yX0NPTkZJR19CWV9DT1JURVggICAwDQotI2lmIE1TU19TWVNfU0VSREVTXzJfQ09ORklHX0JZX0NPUlRFWA0KLSNpbmNsdWRlICJzeXNfY29uZmlnX1NFUkRFU0lGXzIuaCINCi0jZW5kaWYNCi0NCi0jZGVmaW5lIE1TU19TWVNfU0VSREVTXzNfQ09ORklHX0JZX0NPUlRFWCAgIDANCi0jaWYgTVNTX1NZU19TRVJERVNfM19DT05GSUdfQllfQ09SVEVYDQotI2luY2x1ZGUgInN5c19jb25maWdfU0VSREVTSUZfMy5oIg0KLSNlbmRpZg0KLQ0KLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotICogQ2FjaGUgY29uZmlndXJhdGlvbg0KLSAqLw0KLSNkZWZpbmUgTVNTX1NZU19DQUNIRV9DT05GSUdfQllfQ09SVEVYICAgICAgMA0KLQ0KLSNlbmRpZiAgLyogTVNTX1NZU1RFTV9DT05GSUdVUkFUSU9OICovDQotDQotDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrcy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWQzOTc5Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnX21zc19jbG9ja3MuaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAxMiBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKg0KLSAqIFNtYXJ0ZnVzaW9uMiBzeXN0ZW0gY29uZmlndXJhdGlvbi4NCi0gKiAgIC0gQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IE1pY3Jvc2VtaSBMaWJlcm8gU29DIFN1biBNYXkgMDUgMTM6MTI6MDMgMjAxMw0KLSAqDQotICogV2FybmluZzogIERvIG5vdCBtb2RpZnkgdGhpcyBmaWxlLCBpdCBtYXkgbGVhZCB0byB1bmV4cGVjdGVkDQotICogICAgICAgICAgIGZ1bmN0aW9uYWwgZmFpbHVyZXMgaW4geW91ciBNaWNyb2NvbnRyb2xsZXIgU3Vic3lzdGVtLg0KLSAqLw0KLSNpZm5kZWYgU1lTX0NPTkZJR19NU1NfQ0xPQ0tTDQotI2RlZmluZSBTWVNfQ09ORklHX01TU19DTE9DS1MNCi0NCi0jZGVmaW5lIE1TU19TWVNfTTNfQ0xLX0ZSRVEgICAgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19NRERSX0NMS19GUkVRICAgICAgICAgICAxMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8wX0NMS19GUkVRICAgICAgICAgIDI1MDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMV9DTEtfRlJFUSAgICAgICAgICAyNTAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVEgICAgICAgICAgMjUwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQ18wX0NMS19GUkVRICAgICAgICAgIDEwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDXzFfQ0xLX0ZSRVEgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUM2NF9DTEtfRlJFUSAgICAgICAgICAxMDAwMDAwMDB1DQotDQotI2VuZGlmIC8qIFNZU19DT05GSUdfTVNTX0NMT0NLUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnX21zc19jbG9ja3NfZGV2ZWxvcG9tZW50X2tpdC5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrc19kZXZlbG9wb21lbnRfa2l0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiYjBiY2IuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9kcml2ZXJzX2NvbmZpZy9zeXNfY29uZmlnL3N5c19jb25maWdfbXNzX2Nsb2Nrc19kZXZlbG9wb21lbnRfa2l0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTIgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBTbWFydGZ1c2lvbjIgc3lzdGVtIGNvbmZpZ3VyYXRpb24uDQotICogICAtIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBNaWNyb3NlbWkgTGliZXJvIFNvQyBTdW4gTWF5IDA1IDEzOjEyOjAzIDIwMTMNCi0gKg0KLSAqIFdhcm5pbmc6ICBEbyBub3QgbW9kaWZ5IHRoaXMgZmlsZSwgaXQgbWF5IGxlYWQgdG8gdW5leHBlY3RlZA0KLSAqICAgICAgICAgICBmdW5jdGlvbmFsIGZhaWx1cmVzIGluIHlvdXIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbS4NCi0gKi8NCi0jaWZuZGVmIFNZU19DT05GSUdfTVNTX0NMT0NLUw0KLSNkZWZpbmUgU1lTX0NPTkZJR19NU1NfQ0xPQ0tTDQotDQotI2RlZmluZSBNU1NfU1lTX00zX0NMS19GUkVRICAgICAgICAgICAgIDUwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19NRERSX0NMS19GUkVRICAgICAgICAgICAyMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8wX0NMS19GUkVRICAgICAgICAgIDUwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMV9DTEtfRlJFUSAgICAgICAgICA1MDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzJfQ0xLX0ZSRVEgICAgICAgICAgMTI1MDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQ18wX0NMS19GUkVRICAgICAgICAgIDUwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUNfMV9DTEtfRlJFUSAgICAgICAgICA1MDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDNjRfQ0xLX0ZSRVEgICAgICAgICAgNTAwMDAwMDB1DQotDQotI2VuZGlmIC8qIFNZU19DT05GSUdfTVNTX0NMT0NLUyAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnX21zc19jbG9ja3Nfc3RhcnRlcl9raXQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vZHJpdmVyc19jb25maWcvc3lzX2NvbmZpZy9zeXNfY29uZmlnX21zc19jbG9ja3Nfc3RhcnRlcl9raXQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmVkMzk3OS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2RyaXZlcnNfY29uZmlnL3N5c19jb25maWcvc3lzX2NvbmZpZ19tc3NfY2xvY2tzX3N0YXJ0ZXJfa2l0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMTIgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICoNCi0gKiBTbWFydGZ1c2lvbjIgc3lzdGVtIGNvbmZpZ3VyYXRpb24uDQotICogICAtIEF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBNaWNyb3NlbWkgTGliZXJvIFNvQyBTdW4gTWF5IDA1IDEzOjEyOjAzIDIwMTMNCi0gKg0KLSAqIFdhcm5pbmc6ICBEbyBub3QgbW9kaWZ5IHRoaXMgZmlsZSwgaXQgbWF5IGxlYWQgdG8gdW5leHBlY3RlZA0KLSAqICAgICAgICAgICBmdW5jdGlvbmFsIGZhaWx1cmVzIGluIHlvdXIgTWljcm9jb250cm9sbGVyIFN1YnN5c3RlbS4NCi0gKi8NCi0jaWZuZGVmIFNZU19DT05GSUdfTVNTX0NMT0NLUw0KLSNkZWZpbmUgU1lTX0NPTkZJR19NU1NfQ0xPQ0tTDQotDQotI2RlZmluZSBNU1NfU1lTX00zX0NMS19GUkVRICAgICAgICAgICAgIDEwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfTUREUl9DTEtfRlJFUSAgICAgICAgICAgMTAwMDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19BUEJfMF9DTEtfRlJFUSAgICAgICAgICAyNTAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfQVBCXzFfQ0xLX0ZSRVEgICAgICAgICAgMjUwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0FQQl8yX0NMS19GUkVRICAgICAgICAgIDI1MDAwMDAwdQ0KLSNkZWZpbmUgTVNTX1NZU19GSUNfMF9DTEtfRlJFUSAgICAgICAgICAxMDAwMDAwMDB1DQotI2RlZmluZSBNU1NfU1lTX0ZJQ18xX0NMS19GUkVRICAgICAgICAgIDEwMDAwMDAwMHUNCi0jZGVmaW5lIE1TU19TWVNfRklDNjRfQ0xLX0ZSRVEgICAgICAgICAgMTAwMDAwMDAwdQ0KLQ0KLSNlbmRpZiAvKiBTWVNfQ09ORklHX01TU19DTE9DS1MgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvY3B1X3R5cGVzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvY3B1X3R5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMjc2NGIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2NwdV90eXBlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqIFNWTiAkUmV2aXNpb246IDUyNTggJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjo0MTowMiArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgX19DUFVfVFlQRVNfSA0KLSNkZWZpbmUgX19DUFVfVFlQRVNfSCAgIDENCi0NCi0jaW5jbHVkZSA8c3RkaW50Lmg+DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKi8NCi10eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBhZGRyX3Q6IGFkZHJlc3MgdHlwZS4NCi0gKiBVc2VkIHRvIHNwZWNpZnkgdGhlIGFkZHJlc3Mgb2YgcGVyaXBoZXJhbHMgcHJlc2VudCBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5DQotICogbWFwLg0KLSAqLw0KLXR5cGVkZWYgdW5zaWduZWQgaW50IGFkZHJfdDsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIHBzcl90OiBwcm9jZXNzb3Igc3RhdGUgcmVnaXN0ZXIuDQotICogVXNlZCBieSBIQUxfZGlzYWJsZV9pbnRlcnJ1cHRzKCkgYW5kIEhBTF9yZXN0b3JlX2ludGVycnVwdHMoKSB0byBzdG9yZSB0aGUNCi0gKiBwcm9jZXNzb3IncyBzdGF0ZSBiZXR3ZWVuIGRpc2FibGluZyBhbmQgcmVzdG9yaW5nIGludGVycnVwdHMuDQotICovDQotdHlwZWRlZiB1bnNpZ25lZCBpbnQgcHNyX3Q7DQotDQotI2VuZGlmICAvKiBfX0NQVV9UWVBFU19IICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2hhbC5zIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2hhbC5zCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjc1M2I2Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9oYWwucworKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIyAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSMgDQotIyBJbnRlcnJ1cHQgZGlzYWJsaW5nL3Jlc3RvcmF0aW9uIGZvciBjcml0aWNhbCBzZWN0aW9uIHByb3RlY3Rpb24uDQotIw0KLSMgU1ZOICRSZXZpc2lvbjogNTI1OCAkDQotIyBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NDE6MDIgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0jDQotICAgIC50ZXh0DQotICAgIC5nbG9iYWwgSEFMX2Rpc2FibGVfaW50ZXJydXB0cw0KLSAgICAuZ2xvYmFsIEhBTF9yZXN0b3JlX2ludGVycnVwdHMNCi0gICAgLmNvZGUgMTYNCi0gICAgLnN5bnRheCB1bmlmaWVkDQotICAgIC50eXBlIEhBTF9kaXNhYmxlX2ludGVycnVwdHMsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhBTF9yZXN0b3JlX2ludGVycnVwdHMsIGZ1bmN0aW9uDQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0jIA0KLSMNCi1IQUxfZGlzYWJsZV9pbnRlcnJ1cHRzOiAgICANCi0gICAgbXJzIHIwLCBQUklNQVNLDQotICAgIGNwc2lkIEkNCi0gICAgYnggbHINCi0NCi0jLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSMNCi0jDQotSEFMX3Jlc3RvcmVfaW50ZXJydXB0czogICAgDQotICAgIG1zciBQUklNQVNLLCByMA0KLSAgICBieCBscg0KLQ0KLS5lbmQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaHdfbWFjcm9zLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9HTlUvaHdfbWFjcm9zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxNDJjYjIuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2h3X21hY3Jvcy5oCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KLSAqIA0KLSAqICBIYXJkd2FyZSByZWdpc3RlcnMgYWNjZXNzIG1hY3Jvcy4NCi0gKiANCi0gKiAgVEhFIE1BQ1JPUyBERUZJTkVEIElOIFRISVMgRklMRSBBUkUgREVQUkVDQVRFRC4gRE8gTk9UIFVTRUQgRk9SIE5FVyANCi0gKiAgREVWRUxPUE1FTlQuDQotICoNCi0gKiBUaGVzZSBtYWNyb3MgYXJlIHVzZWQgdG8gYWNjZXNzIHBlcmlwaGVyYWwncyByZWdpc3RlcnMuIFRoZXkgYWxsb3cgYWNjZXNzIHRvDQotICogOCwgMTYgYW5kIDMyIGJpdCB3aWRlIHJlZ2lzdGVycy4gQWxsIGFjY2Vzc2VzIHRvIHBlcmlwaGVyYWwgcmVnaXN0ZXJzIHNob3VsZA0KLSAqIGJlIGRvbmUgdGhyb3VnaCB0aGVzZSBtYWNyb3MgaW4gb3JkZXIgdG8gZWFzZSBwb3J0aW5nIGFjY3Jvc3MgZGlmZmVyZW50IA0KLSAqIHByb2Nlc3NvcnMvYnVzIGFyY2hpdGVjdHVyZXMuDQotICogDQotICogU29tZSBvZiB0aGVzZSBtYWNyb3MgYWxzbyBhbGxvdyB0byBhY2Nlc3MgYSBzcGVjaWZpYyByZWdpc3RlciBmaWVsZC4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1MjU4ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NDE6MDIgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIF9fSFdfUkVHSVNURVJfTUFDUk9TX0gNCi0jZGVmaW5lIF9fSFdfUkVHSVNURVJfTUFDUk9TX0gJMQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogMzIgYml0cyByZWdpc3RlcnMgYWNjZXNzOg0KLSAqLw0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQzMl9yZWcoQkFTRV9BRERSLCBSRUdfT0ZGU0VUKSAoKigodWludDMyX3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgUkVHX09GRlNFVCMjX1JFR19PRkZTRVQpKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50MzJfcmVnKEJBU0VfQUREUiwgUkVHX09GRlNFVCwgVkFMVUUpICgqKCh1aW50MzJfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBSRUdfT0ZGU0VUIyNfUkVHX09GRlNFVCkpID0gKFZBTFVFKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50MzJfcmVnX2ZpZWxkKEJBU0VfQUREUiwgRklFTEQsIFZBTFVFKSBcDQotICAgICAgICAgICAgKCooKHVpbnQzMl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkgPSAgXA0KLSAgICAgICAgICAgICAgICAoIFwNCi0gICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkgXA0KLSAgICAgICAgICAgICAgICAgICAgKCBcDQotICAgICAgICAgICAgICAgICAgICAoKigodWludDMyX3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgRklFTEQjI19PRkZTRVQpKSkgJiB+RklFTEQjI19NQVNLKSB8IFwNCi0gICAgICAgICAgICAgICAgICAgICh1aW50MzJfdCkoKChWQUxVRSkgPDwgRklFTEQjI19TSElGVCkgJiBGSUVMRCMjX01BU0spIFwNCi0gICAgICAgICAgICAgICAgKSBcDQotICAgICAgICAgICAgKQ0KLQ0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQzMl9yZWdfZmllbGQoIEJBU0VfQUREUiwgRklFTEQgKSBcDQotICAgICAgICAgICAgKCggKCooKHVpbnQzMl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkpICYgRklFTEQjI19NQVNLKSA+PiBGSUVMRCMjX1NISUZUKQ0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogMzIgYml0cyBtZW1vcnkgYWNjZXNzOg0KLSAqLw0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQzMihCQVNFX0FERFIpICgqKCh1aW50MzJfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIpKSkNCi0NCi0jZGVmaW5lIEhXX3NldF91aW50MzIoQkFTRV9BRERSLCBWQUxVRSkgKCooKHVpbnQzMl90IHZvbGF0aWxlICopKEJBU0VfQUREUikpID0gKFZBTFVFKSkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIDE2IGJpdHMgcmVnaXN0ZXJzIGFjY2VzczoNCi0gKi8NCi0jZGVmaW5lIEhXX2dldF91aW50MTZfcmVnKEJBU0VfQUREUiwgUkVHX09GRlNFVCkgKCooKHVpbnQxNl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIFJFR19PRkZTRVQjI19SRUdfT0ZGU0VUKSkpDQotDQotI2RlZmluZSBIV19zZXRfdWludDE2X3JlZyhCQVNFX0FERFIsIFJFR19PRkZTRVQsIFZBTFVFKSAoKigodWludDE2X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgUkVHX09GRlNFVCMjX1JFR19PRkZTRVQpKSA9IChWQUxVRSkpDQotDQotI2RlZmluZSBIV19zZXRfdWludDE2X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxELCBWQUxVRSkgXA0KLSAgICAgICAgICAgICgqKCh1aW50MTZfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpID0gIFwNCi0gICAgICAgICAgICAgICAgKCBcDQotICAgICAgICAgICAgICAgICAgICAodWludDE2X3QpIFwNCi0gICAgICAgICAgICAgICAgICAgICggXA0KLSAgICAgICAgICAgICAgICAgICAgKCooKHVpbnQxNl90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIEZJRUxEIyNfT0ZGU0VUKSkpICYgfkZJRUxEIyNfTUFTSykgfCBcDQotICAgICAgICAgICAgICAgICAgICAodWludDE2X3QpKCgoVkFMVUUpIDw8IEZJRUxEIyNfU0hJRlQpICYgRklFTEQjI19NQVNLKSBcDQotICAgICAgICAgICAgICAgICkgXA0KLSAgICAgICAgICAgICkNCi0NCi0jZGVmaW5lIEhXX2dldF91aW50MTZfcmVnX2ZpZWxkKCBCQVNFX0FERFIsIEZJRUxEICkgXA0KLSAgICAgICAgICAgICgoICgqKCh1aW50MTZfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpKSAmIEZJRUxEIyNfTUFTSykgPj4gRklFTEQjI19TSElGVCkNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIDggYml0cyByZWdpc3RlcnMgYWNjZXNzOg0KLSAqLw0KLSNkZWZpbmUgSFdfZ2V0X3VpbnQ4X3JlZyhCQVNFX0FERFIsIFJFR19PRkZTRVQpICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIFJFR19PRkZTRVQjI19SRUdfT0ZGU0VUKSkpDQotDQotI2RlZmluZSBIV19zZXRfdWludDhfcmVnKEJBU0VfQUREUiwgUkVHX09GRlNFVCwgVkFMVUUpICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUiArIFJFR19PRkZTRVQjI19SRUdfT0ZGU0VUKSkgPSAoVkFMVUUpKQ0KLSANCi0jZGVmaW5lIEhXX3NldF91aW50OF9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRCwgVkFMVUUpIFwNCi0gICAgICAgICAgICAoKigodWludDhfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpID0gIFwNCi0gICAgICAgICAgICAgICAgKCBcDQotICAgICAgICAgICAgICAgICAgICAodWludDhfdCkgXA0KLSAgICAgICAgICAgICAgICAgICAgKCBcDQotICAgICAgICAgICAgICAgICAgICAoKigodWludDhfdCB2b2xhdGlsZSAqKShCQVNFX0FERFIgKyBGSUVMRCMjX09GRlNFVCkpKSAmIH5GSUVMRCMjX01BU0spIHwgXA0KLSAgICAgICAgICAgICAgICAgICAgKHVpbnQ4X3QpKCgoVkFMVUUpIDw8IEZJRUxEIyNfU0hJRlQpICYgRklFTEQjI19NQVNLKSBcDQotICAgICAgICAgICAgICAgICkgXA0KLSAgICAgICAgICAgICkNCi0NCi0jZGVmaW5lIEhXX2dldF91aW50OF9yZWdfZmllbGQoIEJBU0VfQUREUiwgRklFTEQgKSBcDQotICAgICAgICAgICAgKCggKCooKHVpbnQ4X3Qgdm9sYXRpbGUgKikoQkFTRV9BRERSICsgRklFTEQjI19PRkZTRVQpKSkgJiBGSUVMRCMjX01BU0spID4+IEZJRUxEIyNfU0hJRlQpDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiA4IGJpdHMgbWVtb3J5IGFjY2VzczoNCi0gKi8NCi0jZGVmaW5lIEhXX2dldF91aW50OChCQVNFX0FERFIpICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUikpKQ0KLQ0KLSNkZWZpbmUgSFdfc2V0X3VpbnQ4KEJBU0VfQUREUiwgVkFMVUUpICgqKCh1aW50OF90IHZvbGF0aWxlICopKEJBU0VfQUREUikpID0gKFZBTFVFKSkNCi0gDQotI2VuZGlmICAvKiBfX0hXX1JFR0lTVEVSX01BQ1JPU19IICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2h3X3JlZ19hY2Nlc3MucyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL0NvcnRleE0zL0dOVS9od19yZWdfYWNjZXNzLnMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhMGIyNTQuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvR05VL2h3X3JlZ19hY2Nlc3MucworKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU1ZOICRSZXZpc2lvbjogNTI1OCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDEyOjQxOjAyICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkDQotICovDQotDQotICAgIC50ZXh0DQotICAgIC5nbG9iYWwgSFdfc2V0XzMyYml0X3JlZw0KLSAgICAuZ2xvYmFsIEhXX2dldF8zMmJpdF9yZWcNCi0gICAgLmdsb2JhbCBIV19zZXRfMzJiaXRfcmVnX2ZpZWxkDQotICAgIC5nbG9iYWwgSFdfZ2V0XzMyYml0X3JlZ19maWVsZA0KLSAgICAuZ2xvYmFsIEhXX3NldF8xNmJpdF9yZWcNCi0gICAgLmdsb2JhbCBIV19nZXRfMTZiaXRfcmVnDQotICAgIC5nbG9iYWwgSFdfc2V0XzE2Yml0X3JlZ19maWVsZA0KLSAgICAuZ2xvYmFsIEhXX2dldF8xNmJpdF9yZWdfZmllbGQNCi0gICAgLmdsb2JhbCBIV19zZXRfOGJpdF9yZWcNCi0gICAgLmdsb2JhbCBIV19nZXRfOGJpdF9yZWcNCi0gICAgLmdsb2JhbCBIV19zZXRfOGJpdF9yZWdfZmllbGQNCi0gICAgLmdsb2JhbCBIV19nZXRfOGJpdF9yZWdfZmllbGQNCi0gICAgLmNvZGUgMTYNCi0gICAgLnN5bnRheCB1bmlmaWVkDQotICAgIC50eXBlIEhXX3NldF8zMmJpdF9yZWcsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX2dldF8zMmJpdF9yZWcsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX3NldF8zMmJpdF9yZWdfZmllbGQsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX2dldF8zMmJpdF9yZWdfZmllbGQsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX3NldF8xNmJpdF9yZWcsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX2dldF8xNmJpdF9yZWcsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX3NldF8xNmJpdF9yZWdfZmllbGQsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX2dldF8xNmJpdF9yZWdfZmllbGQsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX3NldF84Yml0X3JlZywgZnVuY3Rpb24NCi0gICAgLnR5cGUgSFdfZ2V0XzhiaXRfcmVnLCBmdW5jdGlvbg0KLSAgICAudHlwZSBIV19zZXRfOGJpdF9yZWdfZmllbGQsIGZ1bmN0aW9uDQotICAgIC50eXBlIEhXX2dldF84Yml0X3JlZ19maWVsZCwgZnVuY3Rpb24NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIHVpbnQzMl90IHZhbHVlDQotICovDQotSFdfc2V0XzMyYml0X3JlZzoNCi0gICAgU1RSIFIxLCBbUjBdDQotICAgIEJYIExSDQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBSMDogICBhZGRyX3QgcmVnX2FkZHINCi0gKi8gICAgICANCi1IV19nZXRfMzJiaXRfcmVnOg0KLSAgICBMRFIgUjAsIFtSMF0NCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludDMyX3QgbWFzaw0KLSAqIFIzOiAgIHVpbnQzMl90IHZhbHVlDQotICovDQotSFdfc2V0XzMyYml0X3JlZ19maWVsZDoNCi0gICAgUFVTSCB7UjEsUjIsUjMsTFJ9DQotICAgIExTTC5XIFIzLCBSMywgUjENCi0gICAgQU5ELlcgUjMsIFIzLCBSMg0KLSAgICBMRFIgUjEsIFtSMF0NCi0gICAgTVZOLlcgUjIsIFIyDQotICAgIEFORC5XIFIxLCBSMSwgUjINCi0gICAgT1JSLlcgUjEsIFIxLCBSMw0KLSAgICBTVFIgUjEsIFtSMF0NCi0gICAgUE9QIHtSMSxSMixSMyxQQ30NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludDMyX3QgbWFzaw0KLSAqLw0KLUhXX2dldF8zMmJpdF9yZWdfZmllbGQ6DQotICAgIExEUiBSMCwgW1IwXQ0KLSAgICBBTkQuVyBSMCwgUjAsIFIyDQotICAgIExTUi5XIFIwLCBSMCwgUjENCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIHVpbnRfZmFzdDE2X3QgdmFsdWUNCi0gKi8NCi1IV19zZXRfMTZiaXRfcmVnOg0KLSAgICBTVFJIIFIxLCBbUjBdDQotICAgIEJYIExSDQotICAgICAgICANCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqLw0KLUhXX2dldF8xNmJpdF9yZWc6DQotICAgIExEUkggUjAsIFtSMF0NCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludF9mYXN0MTZfdCBtYXNrDQotICogUjM6ICAgdWludF9mYXN0MTZfdCB2YWx1ZQ0KLSAqLw0KLUhXX3NldF8xNmJpdF9yZWdfZmllbGQ6DQotICAgIFBVU0gge1IxLFIyLFIzLExSfQ0KLSAgICBMU0wuVyBSMywgUjMsIFIxDQotICAgIEFORC5XIFIzLCBSMywgUjINCi0gICAgTERSSCBSMSwgW1IwXQ0KLSAgICBNVk4uVyBSMiwgUjINCi0gICAgQU5ELlcgUjEsIFIxLCBSMg0KLSAgICBPUlIuVyBSMSwgUjEsIFIzDQotICAgIFNUUkggUjEsIFtSMF0NCi0gICAgUE9QIHtSMSxSMixSMyxQQ30NCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIGludF9mYXN0OF90IHNoaWZ0DQotICogUjI6ICAgdWludF9mYXN0MTZfdCBtYXNrDQotICovDQotSFdfZ2V0XzE2Yml0X3JlZ19maWVsZDoNCi0gICAgTERSSCBSMCwgW1IwXQ0KLSAgICBBTkQuVyBSMCwgUjAsIFIyDQotICAgIExTUi5XIFIwLCBSMCwgUjENCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkcg0KLSAqIFIxOiAgIHVpbnRfZmFzdDhfdCB2YWx1ZQ0KLSAqLw0KLUhXX3NldF84Yml0X3JlZzoNCi0gICAgU1RSQiBSMSwgW1IwXQ0KLSAgICBCWCBMUg0KLSAgICAgICAgDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBSMDogICBhZGRyX3QgcmVnX2FkZHINCi0gKi8NCi1IV19nZXRfOGJpdF9yZWc6DQotICAgIExEUkIgUjAsIFtSMF0NCi0gICAgQlggTFINCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIFIwOiAgIGFkZHJfdCByZWdfYWRkciwNCi0gKiBSMTogICBpbnRfZmFzdDhfdCBzaGlmdA0KLSAqIFIyOiAgIHVpbnRfZmFzdDhfdCBtYXNrDQotICogUjM6ICAgdWludF9mYXN0OF90IHZhbHVlDQotICovDQotSFdfc2V0XzhiaXRfcmVnX2ZpZWxkOg0KLSAgICBQVVNIIHtSMSxSMixSMyxMUn0NCi0gICAgTFNMLlcgUjMsIFIzLCBSMQ0KLSAgICBBTkQuVyBSMywgUjMsIFIyDQotICAgIExEUkIgUjEsIFtSMF0NCi0gICAgTVZOLlcgUjIsIFIyDQotICAgIEFORC5XIFIxLCBSMSwgUjINCi0gICAgT1JSLlcgUjEsIFIxLCBSMw0KLSAgICBTVFJCIFIxLCBbUjBdDQotICAgIFBPUCB7UjEsUjIsUjMsUEN9DQotDQotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBSMDogICBhZGRyX3QgcmVnX2FkZHINCi0gKiBSMTogICBpbnRfZmFzdDhfdCBzaGlmdA0KLSAqIFIyOiAgIHVpbnRfZmFzdDhfdCBtYXNrDQotICovDQotSFdfZ2V0XzhiaXRfcmVnX2ZpZWxkOg0KLSAgICBMRFJCIFIwLCBbUjBdDQotICAgIEFORC5XIFIwLCBSMCwgUjINCi0gICAgTFNSLlcgUjAsIFIwLCBSMQ0KLSAgICBCWCBMUg0KLQ0KLS5lbmQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5jIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvY29ydGV4X252aWMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM3YzAwZi4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjA1ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogKGMpIENvcHlyaWdodCAyMDA3LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogTGVnYWN5IEFjdGVsIEhBTCBDb3J0ZXggTlZJQyBjb250cm9sIGZ1bmN0aW9ucy4NCi0gKiBUaGUgdXNlIG9mIHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgcmVwbGFjZWQgYnkgY2FsbHMgdG8gdGhlIGVxdWl2YWxlbnQNCi0gKiBDTVNJUyBmdW5jdGlvbiBpbiB5b3VyIGFwcGxpY2F0aW9uIGNvZGUuDQotICoNCi0gKiBTVk4gJFJldmlzaW9uOiA1MjU5ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NTg6MDUgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaW5jbHVkZSAiY29ydGV4X252aWMuaCINCi0jaW5jbHVkZSAiLi4vLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotdm9pZCBOVklDX2luaXQoIHZvaWQgKQ0KLXsNCi0gICAgLyoNCi0gICAgICogUGxlYXNlIHVzZSB0aGUgTlZJQyBjb250cm9sIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgU21hcnRGdXNpb24yIENNU0lTDQotICAgICAqIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyLiBUaGUgdXNlIG9mIHRoZSBBY3RlbCBIQUwgTlZJQyBjb250cm9sDQotICAgICAqIGZ1bmN0aW9ucyBpcyBvYnNvbGV0ZSBvbiBTbWFydEZ1c2lvbjIgZGV2aWNlcy4NCi0gICAgICoNCi0gICAgICogU2ltcGx5IHJlbW92ZSB0aGUgY2FsbCB0byBOVklDX2luaXQoKSBmcm9tIHlvdXIgYXBwbGljYXRpb24gY29kZS4NCi0gICAgICovDQotICAgIEFTU0VSVCgwKTsNCi19DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiANCi0gKi8NCi12b2lkIE5WSUNfc2V0X2hhbmRsZXINCi0oDQotICAgIHVpbnQzMl90IGludGVycnVwdF9udW1iZXIsDQotICAgIGhhbF9udmljX2lycV9oYW5kbGVyX3QgaGFuZGxlcg0KLSkNCi17DQotICAgIC8qDQotICAgICAqIFBsZWFzZSB1c2UgdGhlIE5WSUMgY29udHJvbCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUw0KLSAgICAgKiBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllci4gVGhlIHVzZSBvZiB0aGUgQWN0ZWwgSEFMIE5WSUMgY29udHJvbA0KLSAgICAgKiBmdW5jdGlvbnMgaXMgb2Jzb2xldGUgb24gU21hcnRGdXNpb24yIGRldmljZXMuDQotICAgICAqDQotICAgICAqIFBsZWFzZSByZW1vdmUgdGhlIGNhbGwgdG8gTlZJQ19zZXRfaGFuZGxlcigpIGZyb20geW91ciBhcHBsaWNhdGlvbiBjb2RlDQotICAgICAqIGFuZCBwcm92aWRlIGEgZnVuY3Rpb24gdXNpbmcgb25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gcHJvdG90eXBlcyB0bw0KLSAgICAgKiBoYW5kbGUgaW50ZXJydXB0cyBmcm9tIHBlcmlwaGVyYWxzIGltcGxlbWV0ZWQgaW4gdGhlIFNtYXJ0RnVzaW9uMiBGUEdBDQotICAgICAqIGZhYnJpYzoNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMF9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTFfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnEyX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxM19JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTRfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnE1X0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxNl9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTdfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnE4X0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxOV9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTEwX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMTFfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnExMl9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqICAgICAgLSB2b2lkIEZhYnJpY0lycTEzX0lSUUhhbmRsZXIodm9pZCkNCi0gICAgICogICAgICAtIHZvaWQgRmFicmljSXJxMTRfSVJRSGFuZGxlcih2b2lkKQ0KLSAgICAgKiAgICAgIC0gdm9pZCBGYWJyaWNJcnExNV9JUlFIYW5kbGVyKHZvaWQpDQotICAgICAqIFRoZSBmdW5jdGlvbiB0byBpbXBsZW1lbnQgZGVwZW5kcyBvbiB3aGljaCBNU1NfSU5UX0YyTVtuXSBzaWduYWwgaXMgdXNlZA0KLSAgICAgKiBpbiB5b3VyIExpYmVybyBkZXNpZ24gdG8gY29ubmVjdCB0aGUgaW50ZXJydXB0IHNpZ25hbCBvZiB0aGUgcGVyaXBoZXJhbA0KLSAgICAgKiBnZW5lcmF0aW5nIHRoZSBpbnRlcnJ1cHQuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotdm9pZCBOVklDX3NldF9wcmlvcml0eQ0KLSgNCi0gICAgdWludDMyX3QgaW50ZXJydXB0X251bWJlciwNCi0gICAgdWludDhfdCBwcmlvcml0eV9sZXZlbA0KLSkNCi17DQotICAgIC8qDQotICAgICAqIFBsZWFzZSB1c2UgdGhlIE5WSUMgY29udHJvbCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUw0KLSAgICAgKiBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllci4gVGhlIHVzZSBvZiB0aGUgQWN0ZWwgSEFMIE5WSUMgY29udHJvbA0KLSAgICAgKiBmdW5jdGlvbnMgaXMgb2Jzb2xldGUgb24gU21hcnRGdXNpb24yIGRldmljZXMuDQotICAgICAqDQotICAgICAqIFBsZWFzZSByZXBsYWNlIGNhbGxzIHRvIE5WSUNfc2V0X3ByaW9yaXR5KCkgd2l0aCBhIGNhbGwgdG8gdGhlIENNU0lTDQotICAgICAqIHZvaWQgTlZJQ19TZXRQcmlvcml0eShJUlFuX1R5cGUgSVJRbiwgdWludDMyX3QgcHJpb3JpdHkpIGZ1bmN0aW9uIHdoZXJlDQotICAgICAqIElSUW4gaXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgdmFsdWVzOg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTJfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTVfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE3X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycThfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNV9JUlFuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotdm9pZCBOVklDX2VuYWJsZV9pbnRlcnJ1cHQoIHVpbnQzMl90IGludGVycnVwdF9udW1iZXIgKQ0KLXsNCi0gICAgLyoNCi0gICAgICogUGxlYXNlIHVzZSB0aGUgTlZJQyBjb250cm9sIGZ1bmN0aW9ucyBwcm92aWRlZCBieSB0aGUgU21hcnRGdXNpb24yIENNU0lTDQotICAgICAqIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyLiBUaGUgdXNlIG9mIHRoZSBBY3RlbCBIQUwgTlZJQyBjb250cm9sDQotICAgICAqIGZ1bmN0aW9ucyBpcyBvYnNvbGV0ZSBvbiBTbWFydEZ1c2lvbjIgZGV2aWNlcy4NCi0gICAgICoNCi0gICAgICogUGxlYXNlIHJlcGxhY2UgY2FsbHMgdG8gTlZJQ19lbmFibGVfaW50ZXJydXB0KCkgd2l0aCBhIGNhbGwgdG8gdGhlIENNU0lTDQotICAgICAqIHZvaWQgTlZJQ19FbmFibGVJUlEoSVJRbl9UeXBlIElSUW4pIGZ1bmN0aW9uIHdoZXJlIElSUW4gaXMgb25lIG9mIHRoZQ0KLSAgICAgKiBmb2xsb3dpbmcgdmFsdWVzOg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTJfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTVfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE3X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycThfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNV9JUlFuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotdm9pZCBOVklDX2Rpc2FibGVfaW50ZXJydXB0KCB1aW50MzJfdCBpbnRlcnJ1cHRfbnVtYmVyICkNCi17DQotICAgIC8qDQotICAgICAqIFBsZWFzZSB1c2UgdGhlIE5WSUMgY29udHJvbCBmdW5jdGlvbnMgcHJvdmlkZWQgYnkgdGhlIFNtYXJ0RnVzaW9uMiBDTVNJUw0KLSAgICAgKiBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllci4gVGhlIHVzZSBvZiB0aGUgQWN0ZWwgSEFMIE5WSUMgY29udHJvbA0KLSAgICAgKiBmdW5jdGlvbnMgaXMgb2Jzb2xldGUgb24gU21hcnRGdXNpb24yIGRldmljZXMuDQotICAgICAqDQotICAgICAqIFBsZWFzZSByZXBsYWNlIGNhbGxzIHRvIE5WSUNfZGlzYWJsZV9pbnRlcnJ1cHQoKSB3aXRoIGEgY2FsbCB0byB0aGUgQ01TSVMNCi0gICAgICogdm9pZCBOVklDX0Rpc2FibGVJUlEoSVJRbl9UeXBlIElSUW4pIGZ1bmN0aW9uIHdoZXJlIElSUW4gaXMgb25lIG9mIHRoZQ0KLSAgICAgKiBmb2xsb3dpbmcgdmFsdWVzOg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTJfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE0X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTVfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE3X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycThfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxOV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExMl9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExM19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnExNV9JUlFuDQotICAgICAqLw0KLSAgICBBU1NFUlQoMCk7DQotfQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogDQotICovDQotdm9pZCBOVklDX2NsZWFyX2ludGVycnVwdCggdWludDMyX3QgaW50ZXJydXB0X251bWJlciApDQotew0KLSAgICAvKg0KLSAgICAgKiBQbGVhc2UgdXNlIHRoZSBOVklDIGNvbnRyb2wgZnVuY3Rpb25zIHByb3ZpZGVkIGJ5IHRoZSBTbWFydEZ1c2lvbjIgQ01TSVMNCi0gICAgICogSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIuIFRoZSB1c2Ugb2YgdGhlIEFjdGVsIEhBTCBOVklDIGNvbnRyb2wNCi0gICAgICogZnVuY3Rpb25zIGlzIG9ic29sZXRlIG9uIFNtYXJ0RnVzaW9uMiBkZXZpY2VzLg0KLSAgICAgKg0KLSAgICAgKiBQbGVhc2UgcmVwbGFjZSBjYWxscyB0byBOVklDX2NsZWFyX2ludGVycnVwdCgpIHdpdGggYSBjYWxsIHRvIHRoZSBDTVNJUw0KLSAgICAgKiB2b2lkIE5WSUNfQ2xlYXJQZW5kaW5nSVJRKElSUW5fVHlwZSBJUlFuKSBmdW5jdGlvbiB3aGVyZSBJUlFuIGlzIG9uZSBvZiB0aGUNCi0gICAgICogZm9sbG93aW5nIHZhbHVlczoNCi0gICAgICogICAgICAtIEZhYnJpY0lycTBfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMV9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnEyX0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTNfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxNF9JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE1X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTZfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxN19JUlFuDQotICAgICAqICAgICAgLSBGYWJyaWNJcnE4X0lSUW4NCi0gICAgICogICAgICAtIEZhYnJpY0lycTlfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTBfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTFfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTJfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTNfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTRfSVJRbg0KLSAgICAgKiAgICAgIC0gRmFicmljSXJxMTVfSVJRbg0KLSAgICAgKi8NCi0gICAgQVNTRVJUKDApOw0KLX0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5oIGIvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvQ29ydGV4TTMvY29ydGV4X252aWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1Yjk0OC4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9Db3J0ZXhNMy9jb3J0ZXhfbnZpYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gKiAoYykgQ29weXJpZ2h0IDIwMDctMjAxMyBNaWNyb3NlbWkgU29DIFByb2R1Y3RzIEdyb3VwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBMZWdhY3kgQWN0ZWwgSEFMIENvcnRleCBOVklDIGNvbnRyb2wgZnVuY3Rpb25zLg0KLSAqIFRoZSB1c2Ugb2YgdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSByZXBsYWNlZCBieSBjYWxscyB0byB0aGUgZXF1aXZhbGVudA0KLSAqIENNU0lTIGZ1bmN0aW9uIGluIHlvdXIgYXBwbGljYXRpb24gY29kZS4NCi0gKg0KLSAqIFNWTiAkUmV2aXNpb246IDUyNTcgJA0KLSAqIFNWTiAkRGF0ZTogMjAxMy0wMy0yMSAxMjoyNDoxMCArMDAwMCAoVGh1LCAyMSBNYXIgMjAxMykgJA0KLSAqLw0KLSNpZm5kZWYgQ09SVEVYX05WSUNfSF8NCi0jZGVmaW5lIENPUlRFWF9OVklDX0hfDQotDQotI2luY2x1ZGUgPHN0ZGludC5oPg0KLQ0KLXR5cGVkZWYgdm9pZCAoKmhhbF9udmljX2lycV9oYW5kbGVyX3QpKHZvaWQpOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX2luaXQoIHZvaWQgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIA0KLSAqLw0KLXZvaWQgTlZJQ19zZXRfaGFuZGxlcg0KLSgNCi0gICAgdWludDMyX3QgaW50ZXJydXB0X251bWJlciwNCi0gICAgaGFsX252aWNfaXJxX2hhbmRsZXJfdCBoYW5kbGVyDQotKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIA0KLSAqLw0KLXZvaWQgTlZJQ19zZXRfcHJpb3JpdHkNCi0oDQotICAgIHVpbnQzMl90IGludGVycnVwdF9udW1iZXIsDQotICAgIHVpbnQ4X3QgcHJpb3JpdHlfbGV2ZWwNCi0pOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX2VuYWJsZV9pbnRlcnJ1cHQoIHVpbnQzMl90IGludGVycnVwdF9udW1iZXIgKTsNCi0NCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSAqIA0KLSAqLw0KLXZvaWQgTlZJQ19kaXNhYmxlX2ludGVycnVwdCggdWludDMyX3QgaW50ZXJydXB0X251bWJlciApOw0KLQ0KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotICogDQotICovDQotdm9pZCBOVklDX2NsZWFyX2ludGVycnVwdCggdWludDMyX3QgaW50ZXJydXB0X251bWJlciApOw0KLQ0KLSNlbmRpZiAvKkNPUlRFWF9OVklDX0hfKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9oYWwuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzIyZDE1Li4wMDAwMDAwCi0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjA2ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogKGMpIENvcHlyaWdodCAyMDA3LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBIYXJkd2FyZSBhYnN0cmFjdGlvbiBsYXllciBmdW5jdGlvbnMuDQotICogDQotICogU1ZOICRSZXZpc2lvbjogNTI1OCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIxIDEyOjQxOjAyICswMDAwIChUaHUsIDIxIE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBIQUxfSF8NCi0jZGVmaW5lIEhBTF9IXw0KLQ0KLSNpbmNsdWRlICJjcHVfdHlwZXMuaCINCi0jaW5jbHVkZSAiaHdfcmVnX2FjY2Vzcy5oIg0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogRW5hYmxlIGFsbCBpbnRlcnJ1cHRzIGF0IHRoZSBwcm9jZXNzb3IgbGV2ZWwuDQotICovDQotdm9pZCBIQUxfZW5hYmxlX2ludGVycnVwdHMoIHZvaWQgKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIERpc2FibGUgYWxsIGludGVycnVwdHMgYXQgdGhlIHByb2Nlc3NvciBjb3JlIGxldmVsLg0KLSAqIFJldHVybiB0aGUgaW50ZXJydXB0cyBlbmFibGUgc3RhdGUgYmVmb3JlIGRpc2FibGluZyBvY2N1cmVkIHNvIHRoYXQgaXQgY2FuIA0KLSAqIGxhdGVyIGJlIHJlc3RvcmVkLiANCi0gKi8NCi1wc3JfdCBIQUxfZGlzYWJsZV9pbnRlcnJ1cHRzKCB2b2lkICk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBSZXN0b3JlIHRoZSBpbnRlcnJ1cHRzIGVuYWJsZSBzdGF0ZSBhdCB0aGUgcHJvY2Vzc29yIGNvcmUgbGV2ZWwuDQotICogVGhpcyBmdW5jdGlvbiBpcyBub3JtYWxseSBwYXNzZWQgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvDQotICogSEFMX2Rpc2FibGVfaW50ZXJydXB0cygpLiANCi0gKi8NCi12b2lkIEhBTF9yZXN0b3JlX2ludGVycnVwdHMoIHBzcl90IHNhdmVkX3BzciApOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICovDQotI2RlZmluZSBGSUVMRF9PRkZTRVQoRklFTERfTkFNRSkgIChGSUVMRF9OQU1FIyNfT0ZGU0VUKQ0KLSNkZWZpbmUgRklFTERfU0hJRlQoRklFTERfTkFNRSkgICAoRklFTERfTkFNRSMjX1NISUZUKQ0KLSNkZWZpbmUgRklFTERfTUFTSyhGSUVMRF9OQU1FKSAgICAoRklFTERfTkFNRSMjX01BU0spDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX3NldF8zMmJpdF9yZWcoKSBhbGxvd3Mgd3JpdGluZyBhIDMyIGJpdHMgd2lkZSByZWdpc3Rlci4NCi0gKg0KLSAqIEJBU0VfQUREUjogICBBIHZhcmlhYmxlIG9mIHR5cGUgYWRkcl90IHNwZWNpZnlpbmcgdGhlIGJhc2UgYWRkcmVzcyBvZiB0aGUNCi0gKiAgICAgICAgICAgICAgcGVyaXBoZXJhbCBjb250YWluaW5nIHRoZSByZWdpc3Rlci4NCi0gKiBSRUdfTkFNRTogICAgQSBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIHJlZ2lzdGVyIHRvIHdyaXRlLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogVkFMVUU6ICAgICAgIEEgdmFyaWFibGUgb2YgdHlwZSB1aW50MzJfdCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byB3cml0ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9zZXRfMzJiaXRfcmVnKEJBU0VfQUREUiwgUkVHX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgIChIV19zZXRfMzJiaXRfcmVnKCAoKEJBU0VfQUREUikgKyAoUkVHX05BTUUjI19SRUdfT0ZGU0VUKSksIChWQUxVRSkgKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfZ2V0XzMyYml0X3JlZygpIGlzIHVzZWQgdG8gcmVhZCB0aGUgdmFsdWUgIG9mIGEgMzIgYml0cyB3aWRlDQotICogcmVnaXN0ZXIuDQotICogDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIFJFR19OQU1FOiAgICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgdG8gcmVhZC4gVGhlc2Ugc3RyaW5ncyBhcmUNCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFJFVFVSTjoJCVRoaXMgZnVuY3Rpb24tbGlrZSBtYWNybyByZXR1cm5zIGEgdWludDMyX3QgdmFsdWUuDQotICovDQotI2RlZmluZSBIQUxfZ2V0XzMyYml0X3JlZyhCQVNFX0FERFIsIFJFR19OQU1FKSBcDQotICAgICAgICAgIChIV19nZXRfMzJiaXRfcmVnKCAoKEJBU0VfQUREUikgKyAoUkVHX05BTUUjI19SRUdfT0ZGU0VUKSkgKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfc2V0XzMyYml0X3JlZ19maWVsZCgpIGlzIHVzZWQgdG8gd3JpdGUgYSBmaWVsZCB3aXRoaW4gYQ0KLSAqIDMyIGJpdHMgd2lkZSByZWdpc3Rlci4gVGhlIGZpZWxkIHdyaXR0ZW4gY2FuIGJlIG9uZSBvciBtb3JlIGJpdHMuDQotICogDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIEZJRUxEX05BTUU6ICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gd3JpdGUuIFRoZXNlIHN0cmluZ3MNCi0gKiAJCQkJYXJlIHNwZWNpZmllZCBpbiBhIGhlYWRlciBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVyaXBoZXJhbC4NCi0gKiBWQUxVRTogICAgICAgQSB2YXJpYWJsZSBvZiB0eXBlIHVpbnQzMl90IGNvbnRhaW5pbmcgdGhlIGZpZWxkIHZhbHVlIHRvIHdyaXRlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX3NldF8zMmJpdF9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRF9OQU1FLCBWQUxVRSkgXA0KLSAgICAgICAgICAgIChIV19zZXRfMzJiaXRfcmVnX2ZpZWxkKFwNCi0gICAgICAgICAgICAgICAgKEJBU0VfQUREUikgKyBGSUVMRF9PRkZTRVQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9TSElGVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX01BU0soRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICAoVkFMVUUpKSkNCi0gIA0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9nZXRfMzJiaXRfcmVnX2ZpZWxkKCkgaXMgdXNlZCB0byByZWFkIGEgcmVnaXN0ZXIgZmllbGQgZnJvbQ0KLSAqIHdpdGhpbiBhIDMyIGJpdCB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuIFRoZSBmaWVsZCBjYW4gYmUgb25lIG9yIG1vcmUgYml0cy4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogRklFTERfTkFNRTogIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciBmaWVsZCB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncw0KLSAqIAkJCQlhcmUgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFJFVFVSTjoJCVRoaXMgZnVuY3Rpb24tbGlrZSBtYWNybyByZXR1cm5zIGEgdWludDMyX3QgdmFsdWUuDQotICovDQotI2RlZmluZSBIQUxfZ2V0XzMyYml0X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxEX05BTUUpIFwNCi0gICAgICAgICAgICAoSFdfZ2V0XzMyYml0X3JlZ19maWVsZChcDQotICAgICAgICAgICAgICAgIChCQVNFX0FERFIpICsgRklFTERfT0ZGU0VUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfU0hJRlQoRklFTERfTkFNRSksXA0KLSAgICAgICAgICAgICAgICBGSUVMRF9NQVNLKEZJRUxEX05BTUUpKSkNCi0gIA0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9zZXRfMTZiaXRfcmVnKCkgYWxsb3dzIHdyaXRpbmcgYSAxNiBiaXRzIHdpZGUgcmVnaXN0ZXIuDQotICoNCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogUkVHX05BTUU6ICAgIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncyBhcmUNCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFZBTFVFOiAgICAgICBBIHZhcmlhYmxlIG9mIHR5cGUgdWludF9mYXN0MTZfdCBjb250YWluaW5nIHRoZSB2YWx1ZSB0byB3cml0ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9zZXRfMTZiaXRfcmVnKEJBU0VfQUREUiwgUkVHX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgICAgKEhXX3NldF8xNmJpdF9yZWcoICgoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpKSwgKFZBTFVFKSApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9nZXRfMTZiaXRfcmVnKCkgaXMgdXNlZCB0byByZWFkIHRoZSB2YWx1ZSAgb2YgYSAxNiBiaXRzIHdpZGUNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogUkVHX05BTUU6ICAgIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciB0byByZWFkLiBUaGVzZSBzdHJpbmdzIGFyZQ0KLSAqICAgICAgICAgICAgICBzcGVjaWZpZWQgaW4gYSBoZWFkZXIgZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBlcmlwaGVyYWwuDQotICogUkVUVVJOOgkJVGhpcyBmdW5jdGlvbi1saWtlIG1hY3JvIHJldHVybnMgYSB1aW50MTZfdCB2YWx1ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9nZXRfMTZiaXRfcmVnKEJBU0VfQUREUiwgUkVHX05BTUUpIFwNCi0gICAgICAgICAgICAoSFdfZ2V0XzE2Yml0X3JlZyggKEJBU0VfQUREUikgKyAoUkVHX05BTUUjI19SRUdfT0ZGU0VUKSApKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9zZXRfMTZiaXRfcmVnX2ZpZWxkKCkgaXMgdXNlZCB0byB3cml0ZSBhIGZpZWxkIHdpdGhpbiBhDQotICogMTYgYml0cyB3aWRlIHJlZ2lzdGVyLiBUaGUgZmllbGQgd3JpdHRlbiBjYW4gYmUgb25lIG9yIG1vcmUgYml0cy4NCi0gKiANCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogRklFTERfTkFNRTogIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciBmaWVsZCB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncw0KLSAqIAkJCQlhcmUgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFZBTFVFOiAgICAgICBBIHZhcmlhYmxlIG9mIHR5cGUgdWludDE2X3QgY29udGFpbmluZyB0aGUgZmllbGQgdmFsdWUgdG8gd3JpdGUuDQotICovDQotI2RlZmluZSBIQUxfc2V0XzE2Yml0X3JlZ19maWVsZChCQVNFX0FERFIsIEZJRUxEX05BTUUsIFZBTFVFKSBcDQotICAgICAgICAgICAgKEhXX3NldF8xNmJpdF9yZWdfZmllbGQoXA0KLSAgICAgICAgICAgICAgICAoQkFTRV9BRERSKSArIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX1NISUZUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfTUFTSyhGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIChWQUxVRSkpKSAgDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX2dldF8xNmJpdF9yZWdfZmllbGQoKSBpcyB1c2VkIHRvIHJlYWQgYSByZWdpc3RlciBmaWVsZCBmcm9tDQotICogd2l0aGluIGEgOCBiaXQgd2lkZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLiBUaGUgZmllbGQgY2FuIGJlIG9uZSBvciBtb3JlIGJpdHMuDQotICogDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIEZJRUxEX05BTUU6ICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gd3JpdGUuIFRoZXNlIHN0cmluZ3MNCi0gKiAJCQkJYXJlIHNwZWNpZmllZCBpbiBhIGhlYWRlciBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVyaXBoZXJhbC4NCi0gKiBSRVRVUk46CQlUaGlzIGZ1bmN0aW9uLWxpa2UgbWFjcm8gcmV0dXJucyBhIHVpbnQxNl90IHZhbHVlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX2dldF8xNmJpdF9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRF9OQU1FKSBcDQotICAgICAgICAgICAgKEhXX2dldF8xNmJpdF9yZWdfZmllbGQoXA0KLSAgICAgICAgICAgICAgICAoQkFTRV9BRERSKSArIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX1NISUZUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfTUFTSyhGSUVMRF9OQU1FKSkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBUaGUgbWFjcm8gSEFMX3NldF84Yml0X3JlZygpIGFsbG93cyB3cml0aW5nIGEgOCBiaXRzIHdpZGUgcmVnaXN0ZXIuDQotICoNCi0gKiBCQVNFX0FERFI6ICAgQSB2YXJpYWJsZSBvZiB0eXBlIGFkZHJfdCBzcGVjaWZ5aW5nIHRoZSBiYXNlIGFkZHJlc3Mgb2YgdGhlDQotICogICAgICAgICAgICAgIHBlcmlwaGVyYWwgY29udGFpbmluZyB0aGUgcmVnaXN0ZXIuDQotICogUkVHX05BTUU6ICAgIEEgc3RyaW5nIGlkZW50aWZ5aW5nIHRoZSByZWdpc3RlciB0byB3cml0ZS4gVGhlc2Ugc3RyaW5ncyBhcmUNCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFZBTFVFOiAgICAgICBBIHZhcmlhYmxlIG9mIHR5cGUgdWludF9mYXN0OF90IGNvbnRhaW5pbmcgdGhlIHZhbHVlIHRvIHdyaXRlLg0KLSAqLw0KLSNkZWZpbmUgSEFMX3NldF84Yml0X3JlZyhCQVNFX0FERFIsIFJFR19OQU1FLCBWQUxVRSkgXA0KLSAgICAgICAgICAoSFdfc2V0XzhiaXRfcmVnKCAoKEJBU0VfQUREUikgKyAoUkVHX05BTUUjI19SRUdfT0ZGU0VUKSksIChWQUxVRSkgKSkNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIFRoZSBtYWNybyBIQUxfZ2V0XzhiaXRfcmVnKCkgaXMgdXNlZCB0byByZWFkIHRoZSB2YWx1ZSBvZiBhIDggYml0cyB3aWRlDQotICogcmVnaXN0ZXIuDQotICogDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIFJFR19OQU1FOiAgICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgdG8gcmVhZC4gVGhlc2Ugc3RyaW5ncyBhcmUNCi0gKiAgICAgICAgICAgICAgc3BlY2lmaWVkIGluIGEgaGVhZGVyIGZpbGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBwZXJpcGhlcmFsLg0KLSAqIFJFVFVSTjoJCVRoaXMgZnVuY3Rpb24tbGlrZSBtYWNybyByZXR1cm5zIGEgdWludDhfdCB2YWx1ZS4NCi0gKi8NCi0jZGVmaW5lIEhBTF9nZXRfOGJpdF9yZWcoQkFTRV9BRERSLCBSRUdfTkFNRSkgXA0KLSAgICAgICAgICAoSFdfZ2V0XzhiaXRfcmVnKCAoQkFTRV9BRERSKSArIChSRUdfTkFNRSMjX1JFR19PRkZTRVQpICkpDQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKi8NCi0jZGVmaW5lIEhBTF9zZXRfOGJpdF9yZWdfZmllbGQoQkFTRV9BRERSLCBGSUVMRF9OQU1FLCBWQUxVRSkgXA0KLSAgICAgICAgICAgIChIV19zZXRfOGJpdF9yZWdfZmllbGQoXA0KLSAgICAgICAgICAgICAgICAoQkFTRV9BRERSKSArIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX1NISUZUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfTUFTSyhGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIChWQUxVRSkpKQ0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogVGhlIG1hY3JvIEhBTF9nZXRfOGJpdF9yZWdfZmllbGQoKSBpcyB1c2VkIHRvIHJlYWQgYSByZWdpc3RlciBmaWVsZCBmcm9tDQotICogd2l0aGluIGEgOCBiaXQgd2lkZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLiBUaGUgZmllbGQgY2FuIGJlIG9uZSBvciBtb3JlIGJpdHMuDQotICogDQotICogQkFTRV9BRERSOiAgIEEgdmFyaWFibGUgb2YgdHlwZSBhZGRyX3Qgc3BlY2lmeWluZyB0aGUgYmFzZSBhZGRyZXNzIG9mIHRoZQ0KLSAqICAgICAgICAgICAgICBwZXJpcGhlcmFsIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyLg0KLSAqIEZJRUxEX05BTUU6ICBBIHN0cmluZyBpZGVudGlmeWluZyB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gd3JpdGUuIFRoZXNlIHN0cmluZ3MNCi0gKiAJCQkJYXJlIHNwZWNpZmllZCBpbiBhIGhlYWRlciBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGVyaXBoZXJhbC4NCi0gKiBSRVRVUk46CQlUaGlzIGZ1bmN0aW9uLWxpa2UgbWFjcm8gcmV0dXJucyBhIHVpbnQ4X3QgdmFsdWUuDQotICovDQotI2RlZmluZSBIQUxfZ2V0XzhiaXRfcmVnX2ZpZWxkKEJBU0VfQUREUiwgRklFTERfTkFNRSkgXA0KLSAgICAgICAgICAgIChIV19nZXRfOGJpdF9yZWdfZmllbGQoXA0KLSAgICAgICAgICAgICAgICAoQkFTRV9BRERSKSArIEZJRUxEX09GRlNFVChGSUVMRF9OQU1FKSxcDQotICAgICAgICAgICAgICAgIEZJRUxEX1NISUZUKEZJRUxEX05BTUUpLFwNCi0gICAgICAgICAgICAgICAgRklFTERfTUFTSyhGSUVMRF9OQU1FKSkpDQotICANCi0jZW5kaWYgLypIQUxfSF8qLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbF9hc3NlcnQuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUlRPU0RlbW9fSGFyZHdhcmVfUGxhdGZvcm0vaGFsL2hhbF9hc3NlcnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjY2OWRjOS4uMDAwMDAwMAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9oYWxfYXNzZXJ0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIChjKSBDb3B5cmlnaHQgMjAwOC0yMDEzIE1pY3Jvc2VtaSBTb0MgUHJvZHVjdHMgR3JvdXAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQotICogDQotICogU1ZOICRSZXZpc2lvbjogNTI3NCAkDQotICogU1ZOICREYXRlOiAyMDEzLTAzLTIyIDEzOjE4OjQ0ICswMDAwIChGcmksIDIyIE1hciAyMDEzKSAkDQotICovDQotI2lmbmRlZiBIQUxfQVNTRVJUX0hFQURFUg0KLSNkZWZpbmUgSEFMX0FTU0VSVF9IRUFERVINCi0NCi0jaW5jbHVkZSAiLi4vQ01TSVMvbXNzX2Fzc2VydC5oIg0KLQ0KLSNpZiBkZWZpbmVkKE5ERUJVRykNCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhBTF9BU1NFUlQoKSBpcyBkZWZpbmVkIG91dCB3aGVuIHRoZSBOREVCVUcgc3ltYm9sIGlzIHVzZWQuDQotICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCi0jZGVmaW5lIEhBTF9BU1NFUlQoQ0hFQ0spDQotDQotI2Vsc2UNCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIERlZmF1bHQgYmVoYXZpb3VyIGZvciBIQUxfQVNTRVJUKCkgbWFjcm86DQotICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0gKiBVc2luZyB0aGUgSEFMX0FTU0VSVCgpIG1hY3JvIGlzIHRoZSBzYW1lIGFzIGRpcmVjdGx5IHVzaW5nIHRoZSBTbWFydEZ1c2lvbjINCi0gKiBDTVNJUyBBU1NFUlQoKSBtYWNyby4gVGhlIGJlaGF2aW91ciBpcyB0b29sY2hhaW4gc3BlY2lmaWMgYW5kIHByb2plY3QNCi0gKiBzZXR0aW5nIHNwZWNpZmljLg0KLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQotI2RlZmluZSBIQUxfQVNTRVJUKENIRUNLKSAgICAgQVNTRVJUKENIRUNLKTsNCi0NCi0jZW5kaWYgIC8qIE5ERUJVRyAqLw0KLQ0KLSNlbmRpZiAgLyogSEFMX0FTU0VSVF9IRUFERVIgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9od19yZWdfYWNjZXNzLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JUT1NEZW1vX0hhcmR3YXJlX1BsYXRmb3JtL2hhbC9od19yZWdfYWNjZXNzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3MTlmZmUuLjAwMDAwMDAKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JURVhfU21hcnRGdXNpb24yX00yUzA1MF9Tb2Z0Q29uc29sZS9SVE9TRGVtb19IYXJkd2FyZV9QbGF0Zm9ybS9oYWwvaHdfcmVnX2FjY2Vzcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjI3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogKGMpIENvcHlyaWdodCAyMDA3LTIwMTMgTWljcm9zZW1pIFNvQyBQcm9kdWN0cyBHcm91cC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCi0gKiANCi0gKiBIYXJkd2FyZSByZWdpc3RlcnMgYWNjZXNzIGZ1bmN0aW9ucy4NCi0gKiBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhlc2UgZnVuY3Rpb24gaXMgcGxhdGZvcm0gYW5kIHRvb2xjaGFpbiBzcGVjaWZpYy4NCi0gKiBUaGUgZnVuY3Rpb25zIGRlY2xhcmVkIGhlcmUgYXJlIGltcGxlbWVudGVkIHVzaW5nIGFzc2VtYmxlciBhcyBwYXJ0IG9mIHRoZSANCi0gKiBwcm9jZXNzb3IvdG9vbGNoYWluIHNwZWNpZmljIEhBTC4NCi0gKiANCi0gKiBTVk4gJFJldmlzaW9uOiA1MjU4ICQNCi0gKiBTVk4gJERhdGU6IDIwMTMtMDMtMjEgMTI6NDE6MDIgKzAwMDAgKFRodSwgMjEgTWFyIDIwMTMpICQNCi0gKi8NCi0jaWZuZGVmIEhXX1JFR19BQ0NFU1MNCi0jZGVmaW5lIEhXX1JFR19BQ0NFU1MNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX3NldF8zMmJpdF9yZWcgaXMgdXNlZCB0byB3cml0ZSB0aGUgY29udGVudCBvZiBhIDMyIGJpdHMgd2lkZSBwZXJpcGhlcmFsDQotICogcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgd3JpdGUuDQotICogQHBhcmFtIHZhbHVlICAgICBWYWx1ZSB0byBiZSB3cml0dGVuIGludG8gdGhlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICovDQotdm9pZA0KLUhXX3NldF8zMmJpdF9yZWcNCi0oDQotCWFkZHJfdCByZWdfYWRkciwNCi0JdWludDMyX3QgdmFsdWUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfZ2V0XzMyYml0X3JlZyBpcyB1c2VkIHRvIHJlYWQgdGhlIGNvbnRlbnQgb2YgYSAzMiBiaXRzIHdpZGUgcGVyaXBoZXJhbA0KLSAqIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIHJlYWQuDQotICogQHJldHVybiAgICAgICAgICAzMiBiaXRzIHZhbHVlIHJlYWQgZnJvbSB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi11aW50MzJfdA0KLUhXX2dldF8zMmJpdF9yZWcNCi0oDQotCWFkZHJfdCByZWdfYWRkcg0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19zZXRfMzJiaXRfcmVnX2ZpZWxkIGlzIHVzZWQgdG8gc2V0IHRoZSBjb250ZW50IG9mIGEgZmllbGQgaW4gYSAzMiBiaXRzIA0KLSAqIHdpZGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICBiZSB3cml0dGVuLg0KLSAqIEBwYXJhbSBzaGlmdCAgICAgQml0IG9mZnNldCBvZiB0aGUgcmVnaXN0ZXIgZmllbGQgdG8gYmUgcmVhZCB3aXRoaW4gdGhlIA0KLSAqICAgICAgICAgICAgICAgICAgcmVnaXN0ZXIuDQotICogQHBhcmFtIG1hc2sgICAgICBCaXQgbWFzayB0byBiZSBhcHBsaWVkIHRvIHRoZSByYXcgcmVnaXN0ZXIgdmFsdWUgdG8gZmlsdGVyDQotICogICAgICAgICAgICAgICAgICBvdXQgdGhlIG90aGVyIHJlZ2lzdGVyIGZpZWxkcyB2YWx1ZXMuDQotICogQHBhcmFtIHZhbHVlICAgICBWYWx1ZSB0byBiZSB3cml0dGVuIGluIHRoZSBzcGVjaWZpZWQgZmllbGQuDQotICovDQotdm9pZA0KLUhXX3NldF8zMmJpdF9yZWdfZmllbGQNCi0oDQotICAgIGFkZHJfdCByZWdfYWRkciwNCi0gICAgaW50X2Zhc3Q4X3Qgc2hpZnQsDQotICAgIHVpbnQzMl90IG1hc2ssDQotICAgIHVpbnQzMl90IHZhbHVlDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX2dldF8zMmJpdF9yZWdfZmllbGQgaXMgdXNlZCB0byByZWFkIHRoZSBjb250ZW50IG9mIGEgZmllbGQgb3V0IG9mIGEgDQotICogMzIgYml0cyB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgcmVhZC4NCi0gKiBAcGFyYW0gc2hpZnQgICAgIEJpdCBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIGJlIHdyaXR0ZW4gd2l0aGluIHRoZSANCi0gKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KLSAqIEBwYXJhbSBtYXNrICAgICAgQml0IG1hc2sgdG8gYmUgYXBwbGllZCB0byB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVlIHRvIGZpbHRlcg0KLSAqICAgICAgICAgICAgICAgICAgb3V0IHRoZSBvdGhlciByZWdpc3RlciBmaWVsZHMgdmFsdWVzLg0KLSAqDQotICogQHJldHVybiAgICAgICAgICAzMiBiaXRzIHZhbHVlIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyIGZpZWxkIHZhbHVlIHNwZWNpZmllZA0KLSAqICAgICAgICAgICAgICAgICAgYXMgcGFyYW1ldGVyLg0KLSAqLw0KLXVpbnQzMl90IA0KLUhXX2dldF8zMmJpdF9yZWdfZmllbGQNCi0oDQotICAgIGFkZHJfdCByZWdfYWRkciwNCi0gICAgaW50X2Zhc3Q4X3Qgc2hpZnQsDQotICAgIHVpbnQzMl90IG1hc2sNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfc2V0XzE2Yml0X3JlZyBpcyB1c2VkIHRvIHdyaXRlIHRoZSBjb250ZW50IG9mIGEgMTYgYml0cyB3aWRlIHBlcmlwaGVyYWwNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICB3cml0ZS4NCi0gKiBAcGFyYW0gdmFsdWUgICAgIFZhbHVlIHRvIGJlIHdyaXR0ZW4gaW50byB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi12b2lkDQotSFdfc2V0XzE2Yml0X3JlZw0KLSgNCi0JYWRkcl90IHJlZ19hZGRyLA0KLQl1aW50X2Zhc3QxNl90IHZhbHVlDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX2dldF8xNmJpdF9yZWcgaXMgdXNlZCB0byByZWFkIHRoZSBjb250ZW50IG9mIGEgMTYgYml0cyB3aWRlIHBlcmlwaGVyYWwNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICByZWFkLg0KLSAqIEByZXR1cm4gICAgICAgICAgMTYgYml0cyB2YWx1ZSByZWFkIGZyb20gdGhlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICovDQotdWludDE2X3QNCi1IV19nZXRfMTZiaXRfcmVnDQotKA0KLQlhZGRyX3QgcmVnX2FkZHINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfc2V0XzE2Yml0X3JlZ19maWVsZCBpcyB1c2VkIHRvIHNldCB0aGUgY29udGVudCBvZiBhIGZpZWxkIGluIGEgMTYgYml0cyANCi0gKiB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgYmUgd3JpdHRlbi4NCi0gKiBAcGFyYW0gc2hpZnQgICAgIEJpdCBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIGJlIHJlYWQgd2l0aGluIHRoZSANCi0gKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KLSAqIEBwYXJhbSBtYXNrICAgICAgQml0IG1hc2sgdG8gYmUgYXBwbGllZCB0byB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVlIHRvIGZpbHRlcg0KLSAqICAgICAgICAgICAgICAgICAgb3V0IHRoZSBvdGhlciByZWdpc3RlciBmaWVsZHMgdmFsdWVzLg0KLSAqIEBwYXJhbSB2YWx1ZSAgICAgVmFsdWUgdG8gYmUgd3JpdHRlbiBpbiB0aGUgc3BlY2lmaWVkIGZpZWxkLg0KLSAqLw0KLXZvaWQgSFdfc2V0XzE2Yml0X3JlZ19maWVsZA0KLSgNCi0gICAgYWRkcl90IHJlZ19hZGRyLA0KLSAgICBpbnRfZmFzdDhfdCBzaGlmdCwNCi0gICAgdWludF9mYXN0MTZfdCBtYXNrLA0KLSAgICB1aW50X2Zhc3QxNl90IHZhbHVlDQotKTsNCi0NCi0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLy8qKg0KLSAqIEhXX2dldF8xNmJpdF9yZWdfZmllbGQgaXMgdXNlZCB0byByZWFkIHRoZSBjb250ZW50IG9mIGEgZmllbGQgZnJvbSBhIA0KLSAqIDE2IGJpdHMgd2lkZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIHJlYWQuDQotICogQHBhcmFtIHNoaWZ0ICAgICBCaXQgb2Zmc2V0IG9mIHRoZSByZWdpc3RlciBmaWVsZCB0byBiZSB3cml0dGVuIHdpdGhpbiB0aGUgDQotICogICAgICAgICAgICAgICAgICByZWdpc3Rlci4NCi0gKiBAcGFyYW0gbWFzayAgICAgIEJpdCBtYXNrIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJhdyByZWdpc3RlciB2YWx1ZSB0byBmaWx0ZXINCi0gKiAgICAgICAgICAgICAgICAgIG91dCB0aGUgb3RoZXIgcmVnaXN0ZXIgZmllbGRzIHZhbHVlcy4NCi0gKg0KLSAqIEByZXR1cm4gICAgICAgICAgMTYgYml0cyB2YWx1ZSBjb250YWluaW5nIHRoZSByZWdpc3RlciBmaWVsZCB2YWx1ZSBzcGVjaWZpZWQNCi0gKiAgICAgICAgICAgICAgICAgIGFzIHBhcmFtZXRlci4NCi0gKi8NCi11aW50MTZfdCBIV19nZXRfMTZiaXRfcmVnX2ZpZWxkDQotKA0KLSAgICBhZGRyX3QgcmVnX2FkZHIsDQotICAgIGludF9mYXN0OF90IHNoaWZ0LA0KLSAgICB1aW50X2Zhc3QxNl90IG1hc2sNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfc2V0XzhiaXRfcmVnIGlzIHVzZWQgdG8gd3JpdGUgdGhlIGNvbnRlbnQgb2YgYSA4IGJpdHMgd2lkZSBwZXJpcGhlcmFsDQotICogcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgd3JpdGUuDQotICogQHBhcmFtIHZhbHVlICAgICBWYWx1ZSB0byBiZSB3cml0dGVuIGludG8gdGhlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICovDQotdm9pZA0KLUhXX3NldF84Yml0X3JlZw0KLSgNCi0JYWRkcl90IHJlZ19hZGRyLA0KLQl1aW50X2Zhc3Q4X3QgdmFsdWUNCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfZ2V0XzhiaXRfcmVnIGlzIHVzZWQgdG8gcmVhZCB0aGUgY29udGVudCBvZiBhIDggYml0cyB3aWRlIHBlcmlwaGVyYWwNCi0gKiByZWdpc3Rlci4NCi0gKiANCi0gKiBAcGFyYW0gcmVnX2FkZHIgIEFkZHJlc3MgaW4gdGhlIHByb2Nlc3NvcidzIG1lbW9yeSBtYXAgb2YgdGhlIHJlZ2lzdGVyIHRvDQotICogICAgICAgICAgICAgICAgICByZWFkLg0KLSAqIEByZXR1cm4gICAgICAgICAgOCBiaXRzIHZhbHVlIHJlYWQgZnJvbSB0aGUgcGVyaXBoZXJhbCByZWdpc3Rlci4NCi0gKi8NCi11aW50OF90DQotSFdfZ2V0XzhiaXRfcmVnDQotKA0KLSAgICBhZGRyX3QgcmVnX2FkZHINCi0pOw0KLQ0KLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovLyoqDQotICogSFdfc2V0XzhiaXRfcmVnX2ZpZWxkIGlzIHVzZWQgdG8gc2V0IHRoZSBjb250ZW50IG9mIGEgZmllbGQgaW4gYSA4IGJpdHMgDQotICogd2lkZSBwZXJpcGhlcmFsIHJlZ2lzdGVyLg0KLSAqIA0KLSAqIEBwYXJhbSByZWdfYWRkciAgQWRkcmVzcyBpbiB0aGUgcHJvY2Vzc29yJ3MgbWVtb3J5IG1hcCBvZiB0aGUgcmVnaXN0ZXIgdG8NCi0gKiAgICAgICAgICAgICAgICAgIGJlIHdyaXR0ZW4uDQotICogQHBhcmFtIHNoaWZ0ICAgICBCaXQgb2Zmc2V0IG9mIHRoZSByZWdpc3RlciBmaWVsZCB0byBiZSByZWFkIHdpdGhpbiB0aGUgDQotICogICAgICAgICAgICAgICAgICByZWdpc3Rlci4NCi0gKiBAcGFyYW0gbWFzayAgICAgIEJpdCBtYXNrIHRvIGJlIGFwcGxpZWQgdG8gdGhlIHJhdyByZWdpc3RlciB2YWx1ZSB0byBmaWx0ZXINCi0gKiAgICAgICAgICAgICAgICAgIG91dCB0aGUgb3RoZXIgcmVnaXN0ZXIgZmllbGRzIHZhbHVlcy4NCi0gKiBAcGFyYW0gdmFsdWUgICAgIFZhbHVlIHRvIGJlIHdyaXR0ZW4gaW4gdGhlIHNwZWNpZmllZCBmaWVsZC4NCi0gKi8NCi12b2lkIEhXX3NldF84Yml0X3JlZ19maWVsZA0KLSgNCi0gICAgYWRkcl90IHJlZ19hZGRyLA0KLSAgICBpbnRfZmFzdDhfdCBzaGlmdCwNCi0gICAgdWludF9mYXN0OF90IG1hc2ssDQotICAgIHVpbnRfZmFzdDhfdCB2YWx1ZQ0KLSk7DQotDQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8vKioNCi0gKiBIV19nZXRfOGJpdF9yZWdfZmllbGQgaXMgdXNlZCB0byByZWFkIHRoZSBjb250ZW50IG9mIGEgZmllbGQgZnJvbSBhIA0KLSAqIDggYml0cyB3aWRlIHBlcmlwaGVyYWwgcmVnaXN0ZXIuDQotICogDQotICogQHBhcmFtIHJlZ19hZGRyICBBZGRyZXNzIGluIHRoZSBwcm9jZXNzb3IncyBtZW1vcnkgbWFwIG9mIHRoZSByZWdpc3RlciB0bw0KLSAqICAgICAgICAgICAgICAgICAgcmVhZC4NCi0gKiBAcGFyYW0gc2hpZnQgICAgIEJpdCBvZmZzZXQgb2YgdGhlIHJlZ2lzdGVyIGZpZWxkIHRvIGJlIHdyaXR0ZW4gd2l0aGluIHRoZSANCi0gKiAgICAgICAgICAgICAgICAgIHJlZ2lzdGVyLg0KLSAqIEBwYXJhbSBtYXNrICAgICAgQml0IG1hc2sgdG8gYmUgYXBwbGllZCB0byB0aGUgcmF3IHJlZ2lzdGVyIHZhbHVlIHRvIGZpbHRlcg0KLSAqICAgICAgICAgICAgICAgICAgb3V0IHRoZSBvdGhlciByZWdpc3RlciBmaWVsZHMgdmFsdWVzLg0KLSAqDQotICogQHJldHVybiAgICAgICAgICAxNiBiaXRzIHZhbHVlIGNvbnRhaW5pbmcgdGhlIHJlZ2lzdGVyIGZpZWxkIHZhbHVlIHNwZWNpZmllZA0KLSAqICAgICAgICAgICAgICAgICAgYXMgcGFyYW1ldGVyLg0KLSAqLw0KLXVpbnQ4X3QgSFdfZ2V0XzhiaXRfcmVnX2ZpZWxkDQotKA0KLSAgICBhZGRyX3QgcmVnX2FkZHIsDQotICAgIGludF9mYXN0OF90IHNoaWZ0LA0KLSAgICB1aW50X2Zhc3Q4X3QgbWFzaw0KLSk7DQotDQotI2VuZGlmIC8qIEhXX1JFR19BQ0NFU1MgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JlYWRNZS50eHQgYi9GcmVlUlRPUy9EZW1vL0NPUlRFWF9TbWFydEZ1c2lvbjJfTTJTMDUwX1NvZnRDb25zb2xlL1JlYWRNZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU2MTAwMQotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVEVYX1NtYXJ0RnVzaW9uMl9NMlMwNTBfU29mdENvbnNvbGUvUmVhZE1lLnR4dApAQCAtMCwwICsxLDcgQEAKK1RoaXMgZGVtbyB3YXMgcmVtb3ZlZCBpbiBGcmVlUlRPUyBWMTAuMC4wIGFzIEZyZWVSVE9TK0ZBVCBTTCB3YXMgbm90IGRpc3RyaWJ1dGVkDQoraW4gdGhhdCByZWxlYXNlLiAgVGhlIGZ1bGwgRnJlZVJUT1MrRkFUIHByb2R1Y3QgKGFzIG9wcG9zZWQgdG8gdGhlICdTTCcgU3VwZXINCitMZWFuIHByb2R1Y3QpIGlzIHN0aWxsIGF2YWlsYWJsZS4gIFByZXZpb3VzIHZlcnNpb25zIG9mIEZyZWVSVE9TIGNhbiBiZQ0KK2Rvd25sb2FkZWQgZnJvbSBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2ZyZWVydG9zL2ZpbGVzL0ZyZWVSVE9TLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vN3NlZy5jIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmMKaW5kZXggODQ2MjNkOC4uYzM4NDFlNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby83c2VnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vLzdzZWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vN3NlZy5oCmluZGV4IGYxM2RjNmQuLjIzNDU1YjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vN3NlZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vN3NlZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFVkVOU0VHX0gNCiAjZGVmaW5lIFNFVkVOU0VHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMTAwZDc4NS4uZWI2Y2MxMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUGFyVGVzdC5jCmluZGV4IGIzZjVjZTYuLmQ2Njk3NWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9SZWdUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1JlZ1Rlc3QuYwppbmRleCAwODg3NDdmLi4zOGQzMzBiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1JlZ1Rlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1JlZ1Rlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL1JlZ1Rlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5oCmluZGV4IDA5ZjIwMjMuLmY1ODhmMzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vUmVnVGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFJFR19URVNUX0gNCiAjZGVmaW5lIFJFR19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL2RlbW9HcGlvLmggYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL2RlbW9HcGlvLmgKaW5kZXggMzZjYTZkYy4uYjNlNTVmOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9kZW1vR3Bpby5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vZGVtb0dwaW8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogTGF5b3V0IG9mIHBpbnMgY29ubmVjdGVkIHRvIEdQSU8gb24gWGlsaW54IEZQR0EgZXZhbHVhdGlvbiBib2FyZCANCiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9tYWluLmMKaW5kZXggZDJmNTNlOS4uZjFjMjdhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ09SVFVTX0FQUzNfR0NDL0RlbW8vc2VyaWFsLmMKaW5kZXggYzU5YjU1Yy4uMGE0ODE1NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DT1JUVVNfQVBTM19HQ0MvRGVtby9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NPUlRVU19BUFMzX0dDQy9EZW1vL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAgQmFzaWMgaW50ZXJydXB0IGRyaXZlbiBzZXJpYWwgcG9ydCBkcml2ZXIgZm9yIHVhcnQxLg0KICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvRkVDLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GRUMuYwppbmRleCAzNWM2YTkzLi4xYzE4ODI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GRUMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GRUMuYwpAQCAtMSw2NiArMSwzIEBACi0vKg0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1Mub3JnIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1Mub3JnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgDQotICAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkDQotICAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gYW5kIG1vZGlmaWVkIGJ5IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgIEZyZWVSVE9TLm9yZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCAgICBidXQgV0lUSE9VVA0KLSAgICBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgDQotICAgIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgDQotICAgIG1vcmUgZGV0YWlscy4NCi0NCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgDQotICAgIHdpdGggRnJlZVJUT1Mub3JnOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IA0KLSAgICBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyAgVVNBLg0KLQ0KLSAgICBBIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUgYSANCi0gICAgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TLm9yZyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZQ0KLSAgICB0aGUgc291cmNlIGNvZGUgZm9yIGFueSBwcm9wcmlldGFyeSBjb21wb25lbnRzLiAgU2VlIHRoZSBsaWNlbnNpbmcgc2VjdGlvbg0KLSAgICBvZiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBmb3IgZnVsbCBkZXRhaWxzLg0KLQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICogR2V0IHRoZSBGcmVlUlRPUyBlQm9vayEgIFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgKg0KLSAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKiBUaGlzIGlzIGEgY29uY2lzZSwgc3RlcCBieSBzdGVwLCAnaGFuZHMgb24nIGd1aWRlIHRoYXQgZGVzY3JpYmVzIGJvdGggICAqDQotICAgICogZ2VuZXJhbCBtdWx0aXRhc2tpbmcgY29uY2VwdHMgYW5kIEZyZWVSVE9TIHNwZWNpZmljcy4gSXQgcHJlc2VudHMgYW5kICAgKg0KLSAgICAqIGV4cGxhaW5zIG51bWVyb3VzIGV4YW1wbGVzIHRoYXQgYXJlIHdyaXR0ZW4gdXNpbmcgdGhlIEZyZWVSVE9TIEFQSS4gICAgICoNCi0gICAgKiBGdWxsIHNvdXJjZSBjb2RlIGZvciBhbGwgdGhlIGV4YW1wbGVzIGlzIHByb3ZpZGVkIGluIGFuIGFjY29tcGFueWluZyAgICAqDQotICAgICogLnppcCBmaWxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICBQbGVhc2UgZW5zdXJlIHRvIHJlYWQgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIHJlbGV2YW50IHBvcnQgc2VjdGlvbnMgb2YgdGhlDQotICAgIG9ubGluZSBkb2N1bWVudGF0aW9uLg0KLSAgICANCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCB0cmFpbmluZywgbGF0ZXN0IGluZm9ybWF0aW9uLCANCi0gICAgbGljZW5zZSBhbmQgY29udGFjdCBkZXRhaWxzLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbC4NCi0NCi0gICAgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCANCi0gICAgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiwgYW5kIG1pZGRsZXdhcmUsIHVuZGVyIA0KLSAgICB0aGUgT3BlblJUT1MgYnJhbmQ6IGh0dHA6Ly93d3cuT3BlblJUT1MuY29tLiAgSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvDQotICAgIHByb3ZpZGUgYSBzYWZldHkgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIHVuZGVyIA0KLSAgICB0aGUgU2FmZVJUT1MgYnJhbmQ6IGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tLg0KLSovDQotDQotDQogLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJzZW1waHIuaCINCkBAIC0xMDcsMTUgKzQ0LDE1IEBACiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCi0vKiANCi0gKiBSZXR1cm4gYW4gdW51c2VkIGJ1ZmZlciB0byB0aGUgcG9vbCBvZiBmcmVlIGJ1ZmZlcnMuIA0KKy8qDQorICogUmV0dXJuIGFuIHVudXNlZCBidWZmZXIgdG8gdGhlIHBvb2wgb2YgZnJlZSBidWZmZXJzLg0KICAqLw0KIHN0YXRpYyB2b2lkIHBydlJldHVybkJ1ZmZlciggdW5zaWduZWQgY2hhciAqcHVjQnVmZmVyICk7DQogDQogLyoNCiAgKiBGaW5kIGFuZCByZXR1cm4gdGhlIG5leHQgYnVmZmVyIHRoYXQgaXMgbm90IGluIHVzZSBieSBhbnl0aGluZyBlbHNlLg0KICAqLw0KLXN0YXRpYyB1bnNpZ25lZCBjaGFyICpwcnZHZXRGcmVlQnVmZmVyKCB2b2lkICk7IA0KK3N0YXRpYyB1bnNpZ25lZCBjaGFyICpwcnZHZXRGcmVlQnVmZmVyKCB2b2lkICk7DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogLyogVGhlIHNlbWFwaG9yZSB1c2VkIHRvIHdha2UgdGhlIHVJUCB0YXNrIHdoZW4gZGF0YSBhcnJpdmVzLiAqLw0KQEAgLTEyNiw3ICs2Myw3IEBACiB0aGUgdUlQIGJ1ZmZlci4gKi8NCiB1bnNpZ25lZCBjaGFyICp1aXBfYnVmOw0KIA0KLS8qIFRoZSBETUEgZGVzY3JpcHRvcnMuICBUaGVzZSBhcmUgY2hhciBhcnJheXMgdG8gYWxsb3cgdXMgdG8gYWxpZ24gdGhlbSANCisvKiBUaGUgRE1BIGRlc2NyaXB0b3JzLiAgVGhlc2UgYXJlIGNoYXIgYXJyYXlzIHRvIGFsbG93IHVzIHRvIGFsaWduIHRoZW0NCiBjb3JyZWN0bHkuICovDQogc3RhdGljIHVuc2lnbmVkIGNoYXIgeEZFQ1R4RGVzY3JpcHRvcnNfdW5hbGlnbmVkWyAoIGZlY05VTV9UWF9ERVNDUklQVE9SUyAqIHNpemVvZiggRkVDQkQgKSApICsgMTYgXTsNCiBzdGF0aWMgdW5zaWduZWQgY2hhciB4RkVDUnhEZXNjcmlwdG9yc191bmFsaWduZWRbICggY29uZmlnTlVNX0ZFQ19SWF9ERVNDUklQVE9SUyAqIHNpemVvZiggRkVDQkQgKSApICsgMTYgXTsNCkBAIC0xMzksMTIgKzc2LDEyIEBACiAvKiBJbmRleCB0byB0aGUgbmV4dCBkZXNjcmlwdG9yIHRvIGJlIGluc3BlY3RlZCBmb3IgcmVjZWl2ZWQgZGF0YS4gKi8NCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB1bE5leHRSeERlc2NyaXB0b3IgPSAwOw0KIA0KLS8qIENvbnRhaW5zIHRoZSBzdGFydCBhZGRyZXNzIG9mIGVhY2ggUnggYnVmZmVyLCBhZnRlciBpdCBoYXMgYmVlbiBjb3JyZWN0bHkgDQorLyogQ29udGFpbnMgdGhlIHN0YXJ0IGFkZHJlc3Mgb2YgZWFjaCBSeCBidWZmZXIsIGFmdGVyIGl0IGhhcyBiZWVuIGNvcnJlY3RseQ0KIGFsaWduZWQuICovDQogc3RhdGljIHVuc2lnbmVkIGNoYXIgKnB1Y0FsaWduZWRCdWZmZXJTdGFydEFkZHJlc3Nlc1sgZmVjTlVNX0JVRkZFUlMgXSA9IHsgMCB9Ow0KIA0KIC8qIEVhY2ggdWNCdWZmZXJJblVzZSBpbmRleCBjb3JyZXNwb25kcyB0byBhIHBvc2l0aW9uIGluIHRoZSBzYW1lIGluZGV4IGluIHRoZQ0KLXB1Y0FsaWduZWRCdWZmZXJTdGFydEFkZHJlc3NlcyBhcnJheS4gIElmIHRoZSBpbmRleCBjb250YWlucyBhIDEgdGhlbiB0aGUgDQorcHVjQWxpZ25lZEJ1ZmZlclN0YXJ0QWRkcmVzc2VzIGFycmF5LiAgSWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgMSB0aGVuIHRoZQ0KIGJ1ZmZlciB3aXRoaW4gcHVjQWxpZ25lZEJ1ZmZlclN0YXJ0QWRkcmVzc2VzIGlzIGluIHVzZSwgaWYgaXQgY29udGFpbnMgYSAwIHRoZW4NCiB0aGUgYnVmZmVyIGlzIGZyZWUuICovDQogc3RhdGljIHVuc2lnbmVkIGNoYXIgdWNCdWZmZXJJblVzZVsgZmVjTlVNX0JVRkZFUlMgXSA9IHsgMCB9Ow0KQEAgLTE2Niw4ICsxMDMsOCBAQAogICogIDEgb24gc3VjY2Vzcy4NCiAgKg0KICAqIFBsZWFzZSByZWZlciB0byB5b3VyIFBIWSBtYW51YWwgZm9yIHJlZ2lzdGVycyBhbmQgdGhlaXIgbWVhbmluZ3MuDQotICogbWlpX3dyaXRlKCkgcG9sbHMgZm9yIHRoZSBGRUMncyBNSUkgaW50ZXJydXB0IGV2ZW50IGFuZCBjbGVhcnMgaXQuIA0KLSAqIElmIGFmdGVyIGEgc3VpdGFibGUgYW1vdW50IG9mIHRpbWUgdGhlIGV2ZW50IGlzbid0IHRyaWdnZXJlZCwgYSANCisgKiBtaWlfd3JpdGUoKSBwb2xscyBmb3IgdGhlIEZFQydzIE1JSSBpbnRlcnJ1cHQgZXZlbnQgYW5kIGNsZWFycyBpdC4NCisgKiBJZiBhZnRlciBhIHN1aXRhYmxlIGFtb3VudCBvZiB0aW1lIHRoZSBldmVudCBpc24ndCB0cmlnZ2VyZWQsIGENCiAgKiB2YWx1ZSBvZiAwIGlzIHJldHVybmVkLg0KICAqLw0KIHN0YXRpYyBpbnQgZmVjX21paV93cml0ZSggaW50IHBoeV9hZGRyLCBpbnQgcmVnX2FkZHIsIGludCBkYXRhICkNCkBAIC0yMjQsOCArMTYxLDggQEAKICAqICAxIG9uIHN1Y2Nlc3MuDQogICoNCiAgKiBQbGVhc2UgcmVmZXIgdG8geW91ciBQSFkgbWFudWFsIGZvciByZWdpc3RlcnMgYW5kIHRoZWlyIG1lYW5pbmdzLg0KLSAqIG1paV9yZWFkKCkgcG9sbHMgZm9yIHRoZSBGRUMncyBNSUkgaW50ZXJydXB0IGV2ZW50IGFuZCBjbGVhcnMgaXQuIA0KLSAqIElmIGFmdGVyIGEgc3VpdGFibGUgYW1vdW50IG9mIHRpbWUgdGhlIGV2ZW50IGlzbid0IHRyaWdnZXJlZCwgYSANCisgKiBtaWlfcmVhZCgpIHBvbGxzIGZvciB0aGUgRkVDJ3MgTUlJIGludGVycnVwdCBldmVudCBhbmQgY2xlYXJzIGl0Lg0KKyAqIElmIGFmdGVyIGEgc3VpdGFibGUgYW1vdW50IG9mIHRpbWUgdGhlIGV2ZW50IGlzbid0IHRyaWdnZXJlZCwgYQ0KICAqIHZhbHVlIG9mIDAgaXMgcmV0dXJuZWQuDQogICovDQogc3RhdGljIGludCBmZWNfbWlpX3JlYWQoIGludCBwaHlfYWRkciwgaW50IHJlZ19hZGRyLCB1bnNpZ25lZCBzaG9ydCogZGF0YSApDQpAQCAtMzU0LDE2ICsyOTEsMTYgQEAKIAl7DQogCQlwY0J1ZlBvaW50ZXIrKzsNCiAJfQ0KLQkNCi0JcHhGRUNUeERlc2NyaXB0b3IgPSAoIEZFQ0JEICogKSBwY0J1ZlBvaW50ZXI7CQ0KIA0KLQkvKiBMaWtld2lzZSB0aGUgcG9pbnRlciB0byB0aGUgUnggZGVzY3JpcHRvci4gKi8JDQorCXB4RkVDVHhEZXNjcmlwdG9yID0gKCBGRUNCRCAqICkgcGNCdWZQb2ludGVyOw0KKw0KKwkvKiBMaWtld2lzZSB0aGUgcG9pbnRlciB0byB0aGUgUnggZGVzY3JpcHRvci4gKi8NCiAJcGNCdWZQb2ludGVyID0gJiggeEZFQ1J4RGVzY3JpcHRvcnNfdW5hbGlnbmVkWyAwIF0gKTsNCiAJd2hpbGUoICggKCB1bnNpZ25lZCBsb25nICkgcGNCdWZQb2ludGVyICYgMHgwZlVMICkgIT0gMCApDQogCXsNCiAJCXBjQnVmUG9pbnRlcisrOw0KIAl9DQotCQ0KKw0KIAl4RkVDUnhEZXNjcmlwdG9ycyA9ICggRkVDQkQgKiApIHBjQnVmUG9pbnRlcjsNCiANCiAJLyogVGhlcmUgaXMgbm8gVHggYnVmZmVyIGFzIHRoZSBSeCBidWZmZXIgaXMgcmV1c2VkLiAqLw0KQEAgLTM3NiwyOCArMzEzLDI4IEBACiAJew0KIAkJcGNCdWZQb2ludGVyKys7DQogCX0NCi0JDQorDQogCS8qIFRoZW4gZmlsbCBpbiB0aGUgUnggZGVzY3JpcHRvcnMuICovDQogCWZvciggdXggPSAwOyB1eCA8IGNvbmZpZ05VTV9GRUNfUlhfREVTQ1JJUFRPUlM7IHV4KysgKQ0KIAl7DQogCSAgICB4RkVDUnhEZXNjcmlwdG9yc1sgdXggXS5zdGF0dXMgPSBSWF9CRF9FOw0KIAkgICAgeEZFQ1J4RGVzY3JpcHRvcnNbIHV4IF0ubGVuZ3RoID0gY29uZmlnRkVDX0JVRkZFUl9TSVpFOw0KIAkgICAgeEZFQ1J4RGVzY3JpcHRvcnNbIHV4IF0uZGF0YSA9IHBjQnVmUG9pbnRlcjsNCi0JCQ0KKw0KIAkJLyogTm90ZSB0aGUgc3RhcnQgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIG5vdyB0aGF0IGl0IGlzIGNvcnJlY3RseQ0KIAkJYWxpZ25lZC4gKi8NCiAJCXB1Y0FsaWduZWRCdWZmZXJTdGFydEFkZHJlc3Nlc1sgdXggXSA9IHBjQnVmUG9pbnRlcjsNCi0JCQ0KKw0KIAkJLyogVGhlIGJ1ZmZlciBpcyBpbiB1c2UgYnkgdGhlIGRlc2NyaXB0b3IuICovDQogCQl1Y0J1ZmZlckluVXNlWyB1eCBdID0gcGRUUlVFOw0KLQkJDQorDQogCSAgICBwY0J1ZlBvaW50ZXIgKz0gY29uZmlnRkVDX0JVRkZFUl9TSVpFOw0KIAl9DQotCQ0KKw0KIAkvKiBOb3RlIHRoZSBzdGFydCBhZGRyZXNzIG9mIHRoZSBsYXN0IGJ1ZmZlciBhcyBvbmUgbW9yZSBidWZmZXIgaXMNCiAJYWxsb2NhdGVkIHRoYW4gdGhlcmUgYXJlIFJ4IGRlc2NyaXB0b3JzLiAqLw0KIAlwdWNBbGlnbmVkQnVmZmVyU3RhcnRBZGRyZXNzZXNbIHV4IF0gPSBwY0J1ZlBvaW50ZXI7DQotCQ0KKw0KIAkvKiBTZXQgdWlwX2J1ZiB0byBwb2ludCB0byB0aGUgbGFzdCBidWZmZXIuICovDQogCXVpcF9idWYgPSBwY0J1ZlBvaW50ZXI7DQogCXVjQnVmZmVySW5Vc2VbIHV4IF0gPSBwZFRSVUU7DQpAQCAtNDE0LDcgKzM1MSw3IEBACiB7DQogdW5zaWduZWQgc2hvcnQgdXNEYXRhOw0KIHN0cnVjdCB1aXBfZXRoX2FkZHIgeEFkZHI7DQotY29uc3QgdW5zaWduZWQgY2hhciB1Y01BQ0FkZHJlc3NbNl0gPSANCitjb25zdCB1bnNpZ25lZCBjaGFyIHVjTUFDQWRkcmVzc1s2XSA9DQogew0KIAljb25maWdNQUNfMCwgY29uZmlnTUFDXzEsY29uZmlnTUFDXzIsY29uZmlnTUFDXzMsY29uZmlnTUFDXzQsY29uZmlnTUFDXzUNCiB9Ow0KQEAgLTQyMywxNyArMzYwLDE3IEBACiANCiAJLyogQ3JlYXRlIHRoZSBzZW1hcGhvcmUgdXNlZCB0byB3YWtlIHRoZSB1SVAgdGFzayB3aGVuIGRhdGEgYXJyaXZlcy4gKi8NCiAJdlNlbWFwaG9yZUNyZWF0ZUJpbmFyeSggeEZFQ1NlbWFwaG9yZSApOw0KLQkNCisNCiAJLyogU2V0IHRoZSBNQUMgYWRkcmVzcyB3aXRoaW4gdGhlIHN0YWNrLiAqLw0KIAlmb3IoIHVzRGF0YSA9IDA7IHVzRGF0YSA8IDY7IHVzRGF0YSsrICkNCiAJew0KIAkJeEFkZHIuYWRkclsgdXNEYXRhIF0gPSB1Y01BQ0FkZHJlc3NbIHVzRGF0YSBdOw0KIAl9DQotCXVpcF9zZXRldGhhZGRyKCB4QWRkciApOwkNCisJdWlwX3NldGV0aGFkZHIoIHhBZGRyICk7DQogDQogCS8qIFNldCB0aGUgUmVzZXQgYml0IGFuZCBjbGVhciB0aGUgRW5hYmxlIGJpdCAqLw0KIAlFQ1JfUkVTRVQgPSAxOw0KLQkNCisNCiAJLyogRW5hYmxlIHRoZSBjbG9jay4gKi8NCiAJU0NHQzQgfD0gU0NHQzRfRkVDX01BU0s7DQogDQpAQCAtNDU2LDE2ICszOTMsMTYgQEAKICAgICBQVEFQRjIgPSAweDU1Ow0KICAgICBQVEJQRjEgPSAweDU1Ow0KICAgICBQVEJQRjIgPSAweDU1Ow0KLSAgICANCisNCiAgICAgLyogU2V0IGFsbCBwaW5zIHRvIGZ1bGwgZHJpdmUgd2l0aCBubyBmaWx0ZXIuICovDQogICAgIFBUQURTID0gMHgwNjsNCiAgICAgUFRBSUZFID0gMHgwNjsNCiAgICAgUFRCRFMgPSAweGY0Ow0KICAgICBQVEJJRkUgPSAweGY0Ow0KICAgICBQVENEUyA9IDA7DQotICAgIFBUQ0lGRSA9IDA7CQkJCQ0KKyAgICBQVENJRkUgPSAwOw0KIA0KLSAgICANCisNCiAJLyogQ2FuIHdlIHRhbGsgdG8gdGhlIFBIWT8gKi8NCiAJZG8NCiAJew0KQEAgLTQ4OCw3ICs0MjUsNyBAQAogDQogCS8qIFdoZW4gd2UgZ2V0IGhlcmUgd2UgaGF2ZSBhIGxpbmsgLSBmaW5kIG91dCB3aGF0IGhhcyBiZWVuIG5lZ290aWF0ZWQuICovDQogCXVzRGF0YSA9IDA7DQotCWZlY19taWlfcmVhZCggY29uZmlnUEhZX0FERFJFU1MsIFBIWV9TVEFUVVMsICZ1c0RhdGEgKTsJDQorCWZlY19taWlfcmVhZCggY29uZmlnUEhZX0FERFJFU1MsIFBIWV9TVEFUVVMsICZ1c0RhdGEgKTsNCiANCiAJLyogU2V0dXAgaGFsZiBvciBmdWxsIGR1cGxleC4gKi8NCiAJaWYoIHVzRGF0YSAmIFBIWV9EVVBMRVhfU1RBVFVTICkNCkBAIC01MDEsNyArNDM4LDcgQEAKIAkJUkNSIHw9IFJDUl9EUlQ7DQogCQlUQ1IgJj0gKHVuc2lnbmVkIGxvbmcpflRDUl9GREVOOw0KIAl9DQotCQ0KKw0KIAkvKiBDbGVhciB0aGUgSW5kaXZpZHVhbCBhbmQgR3JvdXAgQWRkcmVzcyBIYXNoIHJlZ2lzdGVycyAqLw0KIAlJQUxSID0gMDsNCiAJSUFVUiA9IDA7DQpAQCAtNTU1LDcgKzQ5Miw3IEBACiAJCS8qIHVpcF9idWYgaXMgYWJvdXQgdG8gYmUgc2V0IHRvIGEgbmV3IGJ1ZmZlciwgc28gcmV0dXJuIHRoZSBidWZmZXIgaXQNCiAJCWlzIGFscmVhZHkgcG9pbnRpbmcgdG8uICovDQogCQlwcnZSZXR1cm5CdWZmZXIoIHVpcF9idWYgKTsNCi0JDQorDQogCQkvKiBPYnRhaW4gdGhlIHNpemUgb2YgdGhlIHBhY2tldCBhbmQgcHV0IGl0IGludG8gdGhlICJsZW4iIHZhcmlhYmxlLiAqLw0KIAkJdWxMZW4gPSB4RkVDUnhEZXNjcmlwdG9yc1sgdWxOZXh0UnhEZXNjcmlwdG9yIF0ubGVuZ3RoOw0KIAkJdWlwX2J1ZiA9IHhGRUNSeERlc2NyaXB0b3JzWyB1bE5leHRSeERlc2NyaXB0b3IgXS5kYXRhOw0KQEAgLTU2NCw5ICs1MDEsOSBAQAogCQlUQ1AvSVAgc3RhY2ssIHNvIGFsbG9jYXRlIGl0IGEgbmV3IGJ1ZmZlci4gKi8NCiAJCXhGRUNSeERlc2NyaXB0b3JzWyB1bE5leHRSeERlc2NyaXB0b3IgXS5kYXRhID0gcHJ2R2V0RnJlZUJ1ZmZlcigpOw0KIA0KLQkJLyogRG9pbmcgdGhpcyBoZXJlIGNvdWxkIGNhdXNlIGNvcnJ1cHRpb24hICovCQkNCi0JCXhGRUNSeERlc2NyaXB0b3JzWyB1bE5leHRSeERlc2NyaXB0b3IgXS5zdGF0dXMgfD0gUlhfQkRfRTsJCQ0KLQkJDQorCQkvKiBEb2luZyB0aGlzIGhlcmUgY291bGQgY2F1c2UgY29ycnVwdGlvbiEgKi8NCisJCXhGRUNSeERlc2NyaXB0b3JzWyB1bE5leHRSeERlc2NyaXB0b3IgXS5zdGF0dXMgfD0gUlhfQkRfRTsNCisNCiAJCXBvcnRFTlRFUl9DUklUSUNBTCgpOw0KIAkJew0KIAkJCXVsTmV4dFJ4RGVzY3JpcHRvcisrOw0KQEAgLTU3NSwxMCArNTEyLDEwIEBACiAJCQkJdWxOZXh0UnhEZXNjcmlwdG9yID0gMDsNCiAJCQl9DQogCQl9DQotCQlwb3J0RVhJVF9DUklUSUNBTCgpOwkNCisJCXBvcnRFWElUX0NSSVRJQ0FMKCk7DQogDQogCQkvKiBUZWxsIHRoZSBETUEgYSBuZXcgYnVmZmVyIGlzIGF2YWlsYWJsZS4gKi8NCi0JCVJEQVIgPSBNQ0ZfRkVDX1JEQVJfUl9ERVNfQUNUSVZFOwkJDQorCQlSREFSID0gTUNGX0ZFQ19SREFSX1JfREVTX0FDVElWRTsNCiAJfQ0KIA0KICAgICByZXR1cm4gdWxMZW47DQpAQCAtNTk4LDE4ICs1MzUsMTggQEAKIAkJLyogVG8gbWFpbnRhaW4gdGhlIHplcm8gY29weSBpbXBsZW1lbnRhdGlvbiwgcG9pbnQgdGhlIFR4IGRlc2NyaXB0b3INCiAJCXRvIHRoZSBkYXRhIGZyb20gdGhlIFJ4IGJ1ZmZlci4gKi8NCiAJCXB4RkVDVHhEZXNjcmlwdG9yLT5kYXRhID0gdWlwX2J1ZjsNCi0JCQ0KKw0KIAkJLyogU2V0dXAgdGhlIGJ1ZmZlciBkZXNjcmlwdG9yIGZvciB0cmFuc21pc3Npb24gKi8NCiAJCXB4RkVDVHhEZXNjcmlwdG9yLT5sZW5ndGggPSB1aXBfbGVuOw0KLQkJDQorDQogCQkvKiBOQiB0aGlzIGFzc3VtZXMgb25seSBvbmUgVHggZGVzY3JpcHRvciEgKi8NCiAJCXB4RkVDVHhEZXNjcmlwdG9yLT5zdGF0dXMgPSAoIFRYX0JEX1IgfCBUWF9CRF9MIHwgVFhfQkRfVEMgfCBUWF9CRF9XICk7DQogCX0NCiAJcG9ydEVYSVRfQ1JJVElDQUwoKTsNCi0JDQorDQogCS8qIENvbnRpbnVlIHRoZSBUeCBETUEgdGFzayAoaW4gY2FzZSBpdCB3YXMgd2FpdGluZyBmb3IgYSBuZXcgVHhCRCkgKi8NCiAJVERBUiA9IE1DRl9GRUNfVERBUl9YX0RFU19BQ1RJVkU7DQotCQ0KKw0KIAkvKiB1aXBfYnVmIGlzIGJlaW5nIHVzZWQgYnkgdGhlIFR4IGRlc2NyaXB0b3IuICBBbGxvY2F0ZSBhIG5ldyBidWZmZXIgdG8NCiAJdWlwX2J1Zi4gKi8NCiAJdWlwX2J1ZiA9IHBydkdldEZyZWVCdWZmZXIoKTsNCkBAIC02NzUsMTggKzYxMiwxOCBAQAogew0KIHVuc2lnbmVkIGxvbmcgdWxFdmVudDsNCiBwb3J0QkFTRV9UWVBFIHhIaWdoUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOw0KLSAgIA0KKw0KIAkvKiBEZXRlcm1pbmUgdGhlIGNhdXNlIG9mIHRoZSBpbnRlcnJ1cHQuICovDQogCXVsRXZlbnQgPSBFSVIgJiBFSU1SOw0KIAlFSVIgPSB1bEV2ZW50Ow0KIA0KIAlpZiggdWxFdmVudCAmIEVJUl9SWEZfTUFTSyApDQogCXsNCi0JCS8qIEEgcGFja2V0IGhhcyBiZWVuIHJlY2VpdmVkLiAgV2FrZSB0aGUgaGFuZGxlciB0YXNrIGluIGNhc2UgaXQgaXMgDQorCQkvKiBBIHBhY2tldCBoYXMgYmVlbiByZWNlaXZlZC4gIFdha2UgdGhlIGhhbmRsZXIgdGFzayBpbiBjYXNlIGl0IGlzDQogCQlibG9ja2VkLiAqLw0KIAkJeFNlbWFwaG9yZUdpdmVGcm9tSVNSKCB4RkVDU2VtYXBob3JlLCAmeEhpZ2hQcmlvcml0eVRhc2tXb2tlbiApOw0KIAl9DQotCQ0KKw0KIAlpZiggdWxFdmVudCAmIEVJUl9UWEZfTUFTSyApDQogCXsNCiAJCS8qIFRoZSBUeCBoYXMgY29tcGxldGVkLiAgTWFyayB0aGUgYnVmZmVyIGl0IHdhcyB1c2luZyBhcyBmcmVlIGFnYWluLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGIyMDg5M2MuLjdkYTY3MGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQ29kZVdhcnJpb3Igb2Z0ZW4gdGhpbmtzIGl0IGtub3dzIGJldHRlciB0aGFuIHlvdSB3aGljaCBmaWxlcyB5b3Ugd2FudCB0byANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDg5OGExOTMuLjQ2NGJhMWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9odHRwZC91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvaHR0cGQvdUlQX1Rhc2suYwppbmRleCBlNDY1NzNjLi5iNDUxYzk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9odHRwZC91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL2h0dHBkL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUxQ04xMjhfQ29kZVdhcnJpb3IvU291cmNlcy9tYWluLmMKaW5kZXggMzY2N2ZmMi4uYWUwNWUwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MUNOMTI4X0NvZGVXYXJyaW9yL1NvdXJjZXMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTFDTjEyOF9Db2RlV2Fycmlvci9Tb3VyY2VzL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDU4ZTZhYzcuLjc4MjBjMTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBDb2RlV2FycmlvciBvZnRlbiB0aGlua3MgaXQga25vd3MgYmV0dGVyIHRoYW4geW91IHdoaWNoIGZpbGVzIHlvdSB3YW50IHRvIA0KIGJ1aWxkIC0gYW5kIGNoYW5nZXMgdGhlIHBvcnQuYyBhbmQgcG9ydGFzbS5TIGZpbGVzIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0IGZyb20NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvRnJlZVJUT1NfVGlja19TZXR1cC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL0ZyZWVSVE9TX1RpY2tfU2V0dXAuYwppbmRleCAxMjI1MDM2Li5iYjNhNjYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvRnJlZVJUT1NfVGlja19TZXR1cC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9GcmVlUlRPU19UaWNrX1NldHVwLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDM5NDc1ZGQuLmU3NWJjMTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMi41LjINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL21haW4uYwppbmRleCA0ODYwYzlmLi5lMWE3NGQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMjFfQ29kZVdhcnJpb3Ivc291cmNlcy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZWQzNmFlZC4uZmE5YTY2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIyMV9Db2RlV2Fycmlvci9zb3VyY2VzL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjIxX0NvZGVXYXJyaW9yL3NvdXJjZXMvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDAzOThkMmEuLmY5ZjA0ODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4xLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIA0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NfVGlja19TZXR1cC5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL0ZyZWVSVE9TX1RpY2tfU2V0dXAuYwppbmRleCBlMWViYTg5Li5hOTdlMmE3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vRnJlZVJUT1NfVGlja19TZXR1cC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9GcmVlUlRPU19UaWNrX1NldHVwLmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiNWQwNjVjLi5kZDcxNmEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4xLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIA0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL21haW4uYwppbmRleCBlOWQ0NTVjLi5lYTM2MWFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby9tYWluLmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY4LjEuMSAtIENvcHlyaWdodCAoQykgMjAxNCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLSAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLSAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci9GRUMuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvRkVDLmMKaW5kZXggMzRiN2M2Yi4uOGFhMzQxNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci9GRUMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL0ZFQy5jCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4xLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIA0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogS2VybmVsIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyMzNfRWNsaXBzZS9SVE9TRGVtby93ZWJzZXJ2ZXIvdUlQX1Rhc2suYwppbmRleCA3MDZiN2VhLi41ZTE5MzAzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjMzX0VjbGlwc2UvUlRPU0RlbW8vd2Vic2VydmVyL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjIzM19FY2xpcHNlL1JUT1NEZW1vL3dlYnNlcnZlci91SVBfVGFzay5jCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4xLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIA0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogVGFzayB0aGF0IGNvbnRyb2xzIHRoZSB1SVAgVENQL0lQIHN0YWNrLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NDb25maWcuaAppbmRleCAwYzRiN2M0Li5lNWVmMmFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBDb2RlV2FycmlvciBvZnRlbiB0aGlua3MgaXQga25vd3MgYmV0dGVyIHRoYW4geW91IHdoaWNoIGZpbGVzIHlvdSB3YW50IHRvIA0KIGJ1aWxkIC0gYW5kIGNoYW5nZXMgdGhlIHBvcnQuYyBhbmQgcG9ydGFzbS5TIGZpbGVzIGluY2x1ZGVkIGluIHRoZSBwcm9qZWN0IGZyb20NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0ZyZWVSVE9TX1RpY2tfU2V0dXAuYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NfVGlja19TZXR1cC5jCmluZGV4IDBlZWNiYWYuLjA0MTU3YWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NfVGlja19TZXR1cC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvRnJlZVJUT1NfVGlja19TZXR1cC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uYyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uYwppbmRleCAxNTFlN2YxLi5mMWI4YTcxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0hUVFBEZW1vLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9IVFRQRGVtby5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAgICBJbXBsZW1lbnRzIGEgc2ltcGxpc3RpYyBXRUIgc2VydmVyLiAgRXZlcnkgdGltZSBhIGNvbm5lY3Rpb24gaXMgbWFkZSBhbmQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0hUVFBEZW1vLmggYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL0hUVFBEZW1vLmgKaW5kZXggNmUwYTAwMy4uMDdhOTQyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9IVFRQRGVtby5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvSFRUUERlbW8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBCQVNJQ19XRUJfU0VSVkVSX0gNCiAjZGVmaW5lIEJBU0lDX1dFQl9TRVJWRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbGRGaXJlX01DRjUyMjU5X0NvZGVXYXJyaW9yL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDM5NDc1ZGQuLmU3NWJjMTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYyLjUuMg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29sZEZpcmVfTUNGNTIyNTlfQ29kZVdhcnJpb3IvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9tYWluLmMKaW5kZXggNzI2ZWQ3Ni4uODRiYWEyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db2xkRmlyZV9NQ0Y1MjI1OV9Db2RlV2Fycmlvci9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9CbG9ja1EuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvQmxvY2tRLmMKaW5kZXggMjk3OWJmOC4uNTBiODIyMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9CbG9ja1EuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL0Jsb2NrUS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBDcmVhdGVzIHNpeCB0YXNrcyB0aGF0IG9wZXJhdGUgb24gdGhyZWUgcXVldWVzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9Qb2xsUS5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9Qb2xsUS5jCmluZGV4IDAzZjQ5MjkuLjQ0ZGFhYjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvUG9sbFEuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL1BvbGxRLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvY29tdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9jb210ZXN0LmMKaW5kZXggNmQ3NDYyYS4uMjlkMzZhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9jb210ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9jb210ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIENyZWF0ZXMgdHdvIHRhc2tzIHRoYXQgb3BlcmF0ZSBvbiBhbiBpbnRlcnJ1cHQgZHJpdmVuIHNlcmlhbCBwb3J0LiAgQSBsb29wYmFjayANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2RlYXRoLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2RlYXRoLmMKaW5kZXggODQ3MzliZC4uYTg0NjExMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9kZWF0aC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZGVhdGguYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogQ3JlYXRlIGEgc2luZ2xlIHBlcnNpc3RlbnQgdGFzayB3aGljaCBwZXJpb2RpY2FsbHkgZHluYW1pY2FsbHkgY3JlYXRlcyBhbm90aGVyIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZHluYW1pYy5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9keW5hbWljLmMKaW5kZXggOTM2ZDczNC4uZWUzM2QwMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9keW5hbWljLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9keW5hbWljLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIFRoZSBmaXJzdCB0ZXN0IGNyZWF0ZXMgdGhyZWUgdGFza3MgLSB0d28gY291bnRlciB0YXNrcyAob25lIGNvbnRpbnVvdXMgY291bnQgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9ldmVudHMuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZXZlbnRzLmMKaW5kZXggMDY5Mjk2NC4uYTlkZTIzZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9ldmVudHMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2V2ZW50cy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioNCiAgKiBUaGlzIGZpbGUgZXhlcmNpc2VzIHRoZSBldmVudCBtZWNoYW5pc20gd2hlcmVieSBtb3JlIHRoYW4gb25lIHRhc2sgaXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ZsYXNoLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ZsYXNoLmMKaW5kZXggZjc3ZDhiYi4uZThmZmFjZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9mbGFzaC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvZmxhc2guYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2Zsb3AuYwppbmRleCBmMWM3YWIzLi4zMmFhNTU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9pbnRlZ2VyLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ludGVnZXIuYwppbmRleCA5NDliMDY5Li4zYjE2OTc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ludGVnZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL2ludGVnZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9wcmludC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9wcmludC5jCmluZGV4IGRjZmZhMTguLmFmYmViYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvcHJpbnQuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9GdWxsL3ByaW50LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIE1hbmFnZXMgYSBxdWV1ZSBvZiBzdHJpbmdzIHRoYXQgYXJlIHdhaXRpbmcgdG8gYmUgZGlzcGxheWVkLiAgVGhpcyBpcyB1c2VkIHRvIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL0Z1bGwvc2VtdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9zZW10ZXN0LmMKaW5kZXggOTY1ZGYyMi4uNTVkZWZhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9zZW10ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vRnVsbC9zZW10ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIENyZWF0ZXMgdHdvIHNldHMgb2YgdHdvIHRhc2tzLiAgVGhlIHRhc2tzIHdpdGhpbiBhIHNldCBzaGFyZSBhIHZhcmlhYmxlLCBhY2Nlc3MgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9BYm9ydERlbGF5LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Fib3J0RGVsYXkuYwppbmRleCA0OWY5ZTFmLi4xMDBhNTRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Fib3J0RGVsYXkuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Fib3J0RGVsYXkuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgc29tZSB0ZXN0IHNjZW5hcmlvcyB0aGF0IGVuc3VyZSB0YXNrcyByZXNwb25kIGNvcnJlY3RseQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQmxvY2tRLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0Jsb2NrUS5jCmluZGV4IDExNzBmNTEuLjgwZWFhZWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvQmxvY2tRLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9CbG9ja1EuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIHNpeCB0YXNrcyB0aGF0IG9wZXJhdGUgb24gdGhyZWUgcXVldWVzIGFzIGZvbGxvd3M6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9FdmVudEdyb3Vwc0RlbW8uYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvRXZlbnRHcm91cHNEZW1vLmMKaW5kZXggMmEyM2MzNy4uNzc1N2Y4NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9FdmVudEdyb3Vwc0RlbW8uYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0V2ZW50R3JvdXBzRGVtby5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMKaW5kZXggMGYzODNhZi4uMDdiNzI5NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9HZW5RVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvR2VuUVRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0ludFF1ZXVlLmMKaW5kZXggNjkzMzA4YS4uZDUxNGQxYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9JbnRRdWV1ZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50UXVldWUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgZGVmaW5lcyBvbmUgb2YgdGhlIG1vcmUgY29tcGxleCBzZXQgb2YgZGVtby90ZXN0IHRhc2tzLiAgVGhleSBhcmUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL0ludFNlbVRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50U2VtVGVzdC5jCmluZGV4IDE3NGZhY2YuLmM2NWE5NjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50U2VtVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvSW50U2VtVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvTWVzc2FnZUJ1ZmZlckFNUC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTczZTQ4MgotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvTWVzc2FnZUJ1ZmZlckFNUC5jCkBAIC0wLDAgKzEsMzMwIEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qDQorICogQW4gZXhhbXBsZSB0aGF0IG1pbWljcyBhIG1lc3NhZ2UgYnVmZmVyIGJlaW5nIHVzZWQgdG8gcGFzcyBkYXRhIGZyb20gb25lIGNvcmUNCisgKiB0byBhbm90aGVyLiAgVGhlIGNvcmUgdGhhdCBzZW5kcyB0aGUgZGF0YSBpcyByZWZlcnJlZCB0byBhcyBjb3JlIEEuICBUaGUgY29yZQ0KKyAqIHRoYXQgcmVjZWl2ZXMgdGhlIGRhdGEgaXMgcmVmZXJyZWQgdG8gYXMgY29yZSBCLiAgVGhlIHRhc2sgaW1wbGVtZW50ZWQgYnkNCisgKiBwcnZDb3JlQVRhc2soKSBydW5zIG9uIGNvcmUgQS4gIFR3byBpbnN0YW5jZXMgb2YgdGhlIHRhc2sgaW1wbGVtZW50ZWQgYnkNCisgKiBwcnZDb3JlQlRhc2tzKCkgcnVuIG9uIGNvcmUgQi4gIHBydkNvcmVBVGFzaygpIHNlbmRzIG1lc3NhZ2VzIHZpYSBtZXNzYWdlDQorICogYnVmZmVycyB0byBib3RoIGluc3RhbmNlcyBvZiBwcnZDb3JlQlRhc2tzKCksIG9uZSBtZXNzYWdlIGJ1ZmZlciBwZXIgY2hhbm5lbC4NCisgKiBBIHRoaXJkIG1lc3NhZ2UgYnVmZmVyIGlzIHVzZWQgdG8gcGFzcyB0aGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlcg0KKyAqIHdyaXR0ZW4gdG8gYnkgY29yZSBBIHRvIGFuIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgdGhhdCBpcyB0cmlnZ2VyZWQgYnkNCisgKiBjb3JlIEEgYnV0IGV4ZWN1dGVzIG9uIGNvcmUgQi4NCisgKg0KKyAqIFRoZSBleGFtcGxlIHJlbGllcyBvbiB0aGUgRnJlZVJUT1MgcHJvdmlkZWQgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZg0KKyAqIHNiU0VORF9DT01QTEVURUQoKSBiZWluZyBvdmVycmlkZGVuIGJ5IGFuIGltcGxlbWVudGF0aW9uIGluIEZyZWVSVE9TQ29uZmlnLmgNCisgKiB0aGF0IHdyaXRlcyB0aGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIGRhdGEgaW50byB0aGUNCisgKiBjb250cm9sIG1lc3NhZ2UgYnVmZmVyLCB0aGVuIGdlbmVyYXRlcyBhbiBpbnRlcnJ1cHQgaW4gY29yZSBCLiAgVGhlIG5lY2Vzc2FyeQ0KKyAqIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkIGluIHRoaXMgZmlsZSBhbmQgY2FuIGJlIGVuYWJsZWQgYnkgYWRkaW5nIHRoZQ0KKyAqIGZvbGxvd2luZyB0byBGcmVlUlRPU0NvbmZpZy5oOg0KKyAqDQorICogI2RlZmluZSBzYlNFTkRfQ09NUExFVEVEKCBweFN0cmVhbUJ1ZmZlciApIHZHZW5lcmF0ZUNvcmVCSW50ZXJydXB0KCBweFN0cmVhbUJ1ZmZlciApDQorICoNCisgKiBDb3JlIHRvIGNvcmUgY29tbXVuaWNhdGlvbiB2aWEgbWVzc2FnZSBidWZmZXIgcmVxdWlyZXMgdGhlIG1lc3NhZ2UgYnVmZmVycw0KKyAqIHRvIGJlIGF0IGFuIGFkZHJlc3Mga25vd24gdG8gYm90aCBjb3JlcyB3aXRoaW4gc2hhcmVkIG1lbW9yeS4NCisgKg0KKyAqIE5vdGUgdGhhdCwgd2hpbGUgdGhpcyBleGFtcGxlIHVzZXMgdGhyZWUgbWVzc2FnZSBidWZmZXJzLCB0aGUgc2FtZQ0KKyAqIGZ1bmN0aW9uYWxpdHkgY2FuIGJlIGltcGxlbWVudGVkIHVzaW5nIGEgc2luZ2xlIG1lc3NhZ2UgYnVmZmVyIGJ5IHVzaW5nIHRoZQ0KKyAqIHNhbWUgZGVzaWduIHBhdHRlcm4gZGVzY3JpYmVkIG9uIHRoZSBsaW5rIGJlbG93IGZvciBxdWV1ZXMsIGJ1dCB1c2luZyBtZXNzYWdlDQorICogYnVmZmVycyBpbnN0ZWFkLiAgSXQgaXMgYWN0dWFsbHkgc2ltcGxlciB3aXRoIGEgbWVzc2FnZSBidWZmZXIgYXMgdmFyaWFibGUNCisgKiBsZW5ndGggZGF0YSBjYW4gYmUgd3JpdHRlbiBpbnRvIHRoZSBtZXNzYWdlIGJ1ZmZlciBkaXJlY3RseToNCisgKiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9QZW5kLW9uLW11bHRpcGxlLXJ0b3Mtb2JqZWN0cy5odG1sI2FsdGVybmF0aXZlX2Rlc2lnbl9wYXR0ZXJuDQorICovDQorDQorLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgInN0ZGlvLmgiDQorI2luY2x1ZGUgInN0cmluZy5oIg0KKw0KKy8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorI2luY2x1ZGUgIm1lc3NhZ2VfYnVmZmVyLmgiDQorDQorLyogRGVtbyBhcHAgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIk1lc3NhZ2VCdWZmZXJBTVAuaCINCisNCisvKiBFbm91Z2ggZm9yIDMgNCBieXRlIHBvaW50ZXJzLCBpbmNsdWRpbmcgdGhlIGFkZGl0aW9uYWwgNCBieXRlcyBwZXIgbWVzc2FnZQ0KK292ZXJoZWFkIG9mIG1lc3NhZ2UgYnVmZmVycy4gKi8NCisjZGVmaW5lIG1iYUNPTlRST0xfTUVTU0FHRV9CVUZGRVJfU0laRSAoIDI0ICkNCisNCisvKiBFbm91Z2ggZm91ciA0IDggYnl0ZSBzdHJpbmdzLCBwbHVzIHRoZSBhZGRpdGlvbmFsIDQgYnl0ZXMgcGVyIG1lc3NhZ2UNCitvdmVyaGVhZCBvZiBtZXNzYWdlIGJ1ZmZlcnMuICovDQorI2RlZmluZSBtYmFUQVNLX01FU1NBR0VfQlVGRkVSX1NJWkUgKCA2MCApDQorDQorLyogVGhlIG51bWJlciBvZiBpbnN0YW5jZXMgb2YgcHJ2Q29yZUJUYXNrcyB0aGF0IGFyZSBjcmVhdGVkLiAqLw0KKyNkZWZpbmUgbWJhTlVNQkVSX09GX0NPUkVfQl9UQVNLUwkyDQorDQorLyogQSBibG9jayB0aW1lIG9mIDAgc2ltcGx5IG1lYW5zLCBkb24ndCBibG9jay4gKi8NCisjZGVmaW5lIG1iYURPTlRfQkxPQ0sJCQkJMA0KKw0KKy8qIE1hY3JvIHRoYXQgbWltaWNzIGFuIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgZXhlY3V0aW5nIGJ5IHNpbXBseSBjYWxsaW5nDQordGhlIHJvdXRpbmUgaW5saW5lLiAqLw0KKyNkZWZpbmUgbWJhR0VORVJBVEVfQ09SRV9CX0lOVEVSUlVQVCgpIHBydkNvcmVCSW50ZXJydXB0SGFuZGxlcigpDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoNCisgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGFzayB0aGF0LCBvbiBhIHJlYWwgZHVhbCBjb3JlIGRldmljZSwgd291bGQgcnVuIG9uDQorICogY29yZSBBIGFuZCBzZW5kIG1lc3NhZ2UgdG8gdGFza3MgcnVubmluZyBvbiBjb3JlIEIuDQorICovDQorc3RhdGljIHZvaWQgcHJ2Q29yZUFUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCisvKg0KKyAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSB0YXNrIHRoYXQsIG9uIGEgcmVhbCBkdWFsIGNvcmUgZGV2aWNlLCB3b3VsZCBydW4gb24NCisgKiBjb3JlIEIgYW5kIHJlY2VpdmUgbWVzc2FnZSBmcm9tIGNvcmUgQS4gIFRoZSBkZW1vIGNyZWF0ZXMgdHdvIGluc3RhbmNlcyBvZg0KKyAqIHRoaXMgdGFzay4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZDb3JlQlRhc2tzKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCisvKg0KKyAqIFRoZSBmdW5jdGlvbiB0aGF0LCBvbiBhIHJlYWwgZHVhbCBjb3JlIGRldmljZSwgd291bGQgaGFuZGxlIGludGVyLWNvcmUNCisgKiBpbnRlcnJ1cHRzLCBidXQgaW4gdGhpcyBjYXNlIGlzIGp1c3QgY2FsbGVkIGlubGluZS4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZDb3JlQkludGVycnVwdEhhbmRsZXIoIHZvaWQgKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUaGUgbWVzc2FnZSBidWZmZXJzIHVzZWQgdG8gcGFzcyBkYXRhIGZyb20gY29yZSBBIHRvIGNvcmUgQi4gKi8NCitzdGF0aWMgTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhDb3JlQk1lc3NhZ2VCdWZmZXJzWyBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTIF07DQorDQorLyogVGhlIGNvbnRyb2wgbWVzc2FnZSBidWZmZXIuICBUaGlzIGlzIHVzZWQgdG8gcGFzcyB0aGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlDQorbWVzc2FnZSBidWZmZXIgdGhhdCBob2xkcyBhcHBsaWNhdGlvbiBkYXRhIGludG8gdGhlIGNvcmUgdG8gY29yZSBpbnRlcnJ1cHQNCitzZXJ2aWNlIHJvdXRpbmUuICovDQorc3RhdGljIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4Q29udHJvbE1lc3NhZ2VCdWZmZXI7DQorDQorLyogQ291bnRlcnMgdXNlZCB0byBpbmRpY2F0ZSB0byB0aGUgY2hlY2sgdGhhdCB0aGUgdGFza3MgYXJlIHN0aWxsIGV4ZWN1dGluZy4gKi8NCitzdGF0aWMgdWludDMyX3QgdWxDeWNsZUNvdW50ZXJzWyBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTIF07DQorDQorLyogU2V0IHRvIHBkRkFMU0UgaWYgYW55IGVycm9ycyBhcmUgZGV0ZWN0ZWQuICBVc2VkIHRvIGluZm9ybSB0aGUgY2hlY2sgdGFzaw0KK3RoYXQgc29tZXRoaW5nIG1pZ2h0IGJlIHdyb25nLiAqLw0KK0Jhc2VUeXBlX3QgeERlbW9TdGF0dXMgPSBwZFBBU1M7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2U3RhcnRNZXNzYWdlQnVmZmVyQU1QVGFza3MoIHZvaWQgKQ0KK3sNCitCYXNlVHlwZV90IHg7DQorDQorCXhDb250cm9sTWVzc2FnZUJ1ZmZlciA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCBtYmFDT05UUk9MX01FU1NBR0VfQlVGRkVSX1NJWkUgKTsNCisNCisJeFRhc2tDcmVhdGUoIHBydkNvcmVBVGFzaywJCQkJLyogVGhlIGZ1bmN0aW9uIHRoYXQgaW1wbGVtZW50cyB0aGUgdGFzay4gKi8NCisJCQkJICJBTVBDb3JlQSIsCQkJCS8qIEh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIHRoZSB0YXNrLiAqLw0KKwkJCQkgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLAkvKiBTdGFjayBzaXplIChpbiB3b3JkcyEpLiAqLw0KKwkJCQkgTlVMTCwJCQkJCQkvKiBUYXNrIHBhcmFtZXRlciBpcyBub3QgdXNlZC4gKi8NCisJCQkJIHRza0lETEVfUFJJT1JJVFksCQkJLyogVGhlIHByaW9yaXR5IGF0IHdoaWNoIHRoZSB0YXNrIGlzIGNyZWF0ZWQuICovDQorCQkJCSBOVUxMICk7CQkJCQkvKiBObyB1c2UgZm9yIHRoZSB0YXNrIGhhbmRsZS4gKi8NCisNCisJZm9yKCB4ID0gMDsgeCA8IG1iYU5VTUJFUl9PRl9DT1JFX0JfVEFTS1M7IHgrKyApDQorCXsNCisJCXhDb3JlQk1lc3NhZ2VCdWZmZXJzWyB4IF0gPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSggbWJhVEFTS19NRVNTQUdFX0JVRkZFUl9TSVpFICk7DQorCQljb25maWdBU1NFUlQoIHhDb3JlQk1lc3NhZ2VCdWZmZXJzWyB4IF0gKTsNCisNCisJCS8qIFBhc3MgdGhlIGxvb3AgY291bnRlciBpbnRvIHRoZSBjcmVhdGVkIHRhc2sgdXNpbmcgdGhlIHRhc2sncw0KKwkJcGFyYW1ldGVyLiAgVGhlIHRhc2sgdGhlbiB1c2VzIHRoZSB2YWx1ZSBhcyBhbiBpbmRleCBpbnRvIHRoZQ0KKwkJdWxDeWNsZUNvdW50ZXJzIGFuZCB4Q29yZUJNZXNzYWdlQnVmZmVycyBhcnJheXMuICovDQorCQl4VGFza0NyZWF0ZSggcHJ2Q29yZUJUYXNrcywNCisJCQkJCSAiQU1QQ29yZUIxIiwNCisJCQkJCSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsDQorCQkJCQkgKCB2b2lkICogKSB4LA0KKwkJCQkJIHRza0lETEVfUFJJT1JJVFkgKyAxLA0KKwkJCQkJIE5VTEwgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZDb3JlQVRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK0Jhc2VUeXBlX3QgeDsNCit1aW50MzJfdCB1bE5leHRWYWx1ZSA9IDA7DQorY29uc3QgVGlja1R5cGVfdCB4RGVsYXkgPSBwZE1TX1RPX1RJQ0tTKCAyNTAgKTsNCitjaGFyIGNTdHJpbmdbIDE1IF07IC8qIEF0IGxlYXN0IGxhcmdlIGVub3VnaCB0byBob2xkICI0Mjk0OTY3Mjk1XDAiICgweGZmZmZmZmZmKS4gKi8NCisNCisJLyogUmVtb3ZlIHdhcm5pbmcgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIENyZWF0ZSB0aGUgbmV4dCBzdHJpbmcgdG8gc2VuZC4gIFRoZSB2YWx1ZSBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoDQorCQlsb29wIGl0ZXJhdGlvbiwgYW5kIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBjaGFuZ2VzIGFzIHRoZSBudW1iZXIgb2YNCisJCWRpZ2l0cyBpbiB0aGUgdmFsdWUgaW5jcmVhc2VzLiAqLw0KKwkJc3ByaW50ZiggY1N0cmluZywgIiVsdSIsICggdW5zaWduZWQgbG9uZyApIHVsTmV4dFZhbHVlICk7DQorDQorCQkvKiBTZW5kIHRoZSB2YWx1ZSBmcm9tIHRoaXMgKHBzZXVkbykgQ29yZSBBIHRvIHRoZSB0YXNrcyBvbiB0aGUgKHBzZXVkbykNCisJCUNvcmUgQiB2aWEgdGhlIG1lc3NhZ2UgYnVmZmVycy4gIFRoaXMgd2lsbCByZXN1bHQgaW4gc2JTRU5EX0NPTVBMRVRFRCgpDQorCQliZWluZyBleGVjdXRlZCwgd2hpY2ggaW4gdHVybiB3aWxsIHdyaXRlIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UNCisJCWJ1ZmZlciB3cml0dGVuIHRvIGludG8geENvbnRyb2xNZXNzYWdlQnVmZmVyIHRoZW4gZ2VuZXJhdGUgYW4gaW50ZXJydXB0DQorCQlpbiBjb3JlIEIuICovDQorCQlmb3IoIHggPSAwOyB4IDwgbWJhTlVNQkVSX09GX0NPUkVfQl9UQVNLUzsgeCsrICkNCisJCXsNCisJCQl4TWVzc2FnZUJ1ZmZlclNlbmQoIC8qIFRoZSBtZXNzYWdlIGJ1ZmZlciB0byB3cml0ZSB0by4gKi8NCisJCQkJCQkJCXhDb3JlQk1lc3NhZ2VCdWZmZXJzWyB4IF0sDQorCQkJCQkJCQkvKiBUaGUgc291cmNlIG9mIHRoZSBkYXRhIHRvIHNlbmQuICovDQorCQkJCQkJCQkoIHZvaWQgKiApIGNTdHJpbmcsDQorCQkJCQkJCQkvKiBUaGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHRvIHNlbmQuICovDQorCQkJCQkJCQlzdHJsZW4oIGNTdHJpbmcgKSwNCisJCQkJCQkJCS8qIFRoZSBibG9jayB0aW1lLCBzaG91bGQgdGhlIGJ1ZmZlciBiZSBmdWxsLiAqLw0KKwkJCQkJCQkJbWJhRE9OVF9CTE9DSyApOw0KKwkJfQ0KKw0KKwkJLyogRGVsYXkgYmVmb3JlIHJlcGVhdGluZyB3aXRoIGEgZGlmZmVyZW50IGFuZCBwb3RlbnRpYWxseSBkaWZmZXJlbnQNCisJCWxlbmd0aCBzdHJpbmcuICovDQorCQl2VGFza0RlbGF5KCB4RGVsYXkgKTsNCisJCXVsTmV4dFZhbHVlKys7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2Q29yZUJUYXNrcyggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorQmFzZVR5cGVfdCB4Ow0KK3NpemVfdCB4UmVjZWl2ZWRCeXRlczsNCit1aW50MzJfdCB1bE5leHRWYWx1ZSA9IDA7DQorY2hhciBjRXhwZWN0ZWRTdHJpbmdbIDE1IF07IC8qIEF0IGxlYXN0IGxhcmdlIGVub3VnaCB0byBob2xkICI0Mjk0OTY3Mjk1XDAiICgweGZmZmZmZmZmKS4gKi8NCitjaGFyIGNSZWNlaXZlZFN0cmluZ1sgMTUgXTsNCisNCisJLyogVGhlIGluZGV4IGludG8gdGhlIHhDb3JlQk1lc3NhZ2VCdWZmZXJzIGFuZCB1bExvb3BDb3VudGVyIGFycmF5cyBpcw0KKwlwYXNzZWQgaW50byB0aGlzIHRhc2sgdXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorCXggPSAoIEJhc2VUeXBlX3QgKSBwdlBhcmFtZXRlcnM7DQorCWNvbmZpZ0FTU0VSVCggeCA8IG1iYU5VTUJFUl9PRl9DT1JFX0JfVEFTS1MgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIENyZWF0ZSB0aGUgc3RyaW5nIHRoYXQgaXMgZXhwZWN0ZWQgdG8gYmUgcmVjZWl2ZWQgdGhpcyB0aW1lIHJvdW5kLiAqLw0KKwkJc3ByaW50ZiggY0V4cGVjdGVkU3RyaW5nLCAiJWx1IiwgKCB1bnNpZ25lZCBsb25nICkgdWxOZXh0VmFsdWUgKTsNCisNCisJCS8qIFdhaXQgdG8gcmVjZWl2ZSB0aGUgbmV4dCBtZXNzYWdlIGZyb20gY29yZSBBLiAqLw0KKwkJbWVtc2V0KCBjUmVjZWl2ZWRTdHJpbmcsIDB4MDAsIHNpemVvZiggY1JlY2VpdmVkU3RyaW5nICkgKTsNCisJCXhSZWNlaXZlZEJ5dGVzID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCAvKiBUaGUgbWVzc2FnZSBidWZmZXIgdG8gcmVjZWl2ZSBmcm9tLiAqLw0KKwkJCQkJCQkJCQkJCXhDb3JlQk1lc3NhZ2VCdWZmZXJzWyB4IF0sDQorCQkJCQkJCQkJCQkJLyogTG9jYXRpb24gdG8gc3RvcmUgcmVjZWl2ZWQgZGF0YS4gKi8NCisJCQkJCQkJCQkJCQljUmVjZWl2ZWRTdHJpbmcsDQorCQkJCQkJCQkJCQkJLyogTWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVjZWl2ZS4gKi8NCisJCQkJCQkJCQkJCQlzaXplb2YoIGNSZWNlaXZlZFN0cmluZyApLA0KKwkJCQkJCQkJCQkJCS8qIFRpY2tzIHRvIHdhaXQgaWYgYnVmZmVyIGlzIGVtcHR5LiAqLw0KKwkJCQkJCQkJCQkJCXBvcnRNQVhfREVMQVkgKTsNCisNCisJCS8qIENoZWNrIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmVjZWl2ZWQgd2FzIGFzIGV4cGVjdGVkLiAqLw0KKwkJY29uZmlnQVNTRVJUKCB4UmVjZWl2ZWRCeXRlcyA9PSBzdHJsZW4oIGNFeHBlY3RlZFN0cmluZyApICk7DQorDQorCQkvKiBJZiB0aGUgcmVjZWl2ZWQgc3RyaW5nIG1hdGNoZXMgdGhhdCBleHBlY3RlZCB0aGVuIGluY3JlbWVudCB0aGUgbG9vcA0KKwkJY291bnRlciBzbyB0aGUgY2hlY2sgdGFzayBrbm93cyB0aGlzIHRhc2sgaXMgc3RpbGwgcnVubmluZy4gKi8NCisJCWlmKCBzdHJjbXAoIGNSZWNlaXZlZFN0cmluZywgY0V4cGVjdGVkU3RyaW5nICkgPT0gMCApDQorCQl7DQorCQkJKCB1bEN5Y2xlQ291bnRlcnNbIHggXSApKys7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJeERlbW9TdGF0dXMgPSBwZEZBSUw7DQorCQl9DQorDQorCQkvKiBFeHBlY3QgdGhlIG5leHQgc3RyaW5nIGluIHNlcXVlbmNlIHRoZSBuZXh0IHRpbWUgYXJvdW5kLiAqLw0KKwkJdWxOZXh0VmFsdWUrKzsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBDYWxsZWQgYnkgdGhlIHJlaW1wbGVtZW50YXRpb24gb2Ygc2JTRU5EX0NPTVBMRVRFRCgpLCB3aGljaCBjYW4gYmUgZGVmaW5lZA0KK2FzIGZvbGxvd3MgaW4gRnJlZVJUT1NDb25maWcuaDoNCisjZGVmaW5lIHNiU0VORF9DT01QTEVURUQoIHB4U3RyZWFtQnVmZmVyICkgdkdlbmVyYXRlQ29yZUJJbnRlcnJ1cHQoIHB4U3RyZWFtQnVmZmVyICkNCisqLw0KK3ZvaWQgdkdlbmVyYXRlQ29yZUJJbnRlcnJ1cHQoIHZvaWQgKiB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeFVwZGF0ZWRCdWZmZXIgPSAoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCApIHhVcGRhdGVkTWVzc2FnZUJ1ZmZlcjsNCisNCisJLyogSWYgc2JTRU5EX0NPTVBMRVRFRCgpIGhhcyBiZWVuIGltcGxlbWVudGVkIGFzIGFib3ZlLCB0aGVuIHRoaXMgZnVuY3Rpb24NCisJaXMgY2FsbGVkIGZyb20gd2l0aGluIHhNZXNzYWdlQnVmZmVyU2VuZCgpLiAgQXMgdGhpcyBmdW5jdGlvbiBhbHNvIGNhbGxzDQorCXhNZXNzYWdlQnVmZmVyU2VuZCgpIGl0c2VsZiBpdCBpcyBuZWNlc3NhcnkgdG8gZ3VhcmQgYWdhaW5zdCBhIHJlY3Vyc2l2ZQ0KKwljYWxsLiAgSWYgdGhlIG1lc3NhZ2UgYnVmZmVyIGp1c3QgdXBkYXRlZCBpcyB0aGUgbWVzc2FnZSBidWZmZXIgd3JpdHRlbiB0bw0KKwlieSB0aGlzIGZ1bmN0aW9uLCB0aGVuIHRoaXMgaXMgYSByZWN1cnNpdmUgY2FsbCwgYW5kIHRoZSBmdW5jdGlvbiBjYW4ganVzdA0KKwlleGl0IHdpdGhvdXQgdGFraW5nIGZ1cnRoZXIgYWN0aW9uLiAqLw0KKwlpZiggeFVwZGF0ZWRCdWZmZXIgIT0geENvbnRyb2xNZXNzYWdlQnVmZmVyICkNCisJew0KKwkJLyogVXNlIHhDb250cm9sTWVzc2FnZUJ1ZmZlciB0byBwYXNzIHRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyDQorCQl3cml0dGVuIHRvIGJ5IGNvcmUgQSB0byB0aGUgaW50ZXJydXB0IGhhbmRsZXIgYWJvdXQgdG8gYmUgZ2VuZXJhdGVkIGluDQorCQljb3JlIEIuICovDQorCQl4TWVzc2FnZUJ1ZmZlclNlbmQoIHhDb250cm9sTWVzc2FnZUJ1ZmZlciwgJnhVcGRhdGVkQnVmZmVyLCBzaXplb2YoIHhVcGRhdGVkQnVmZmVyICksIG1iYURPTlRfQkxPQ0sgKTsNCisNCisJCS8qIFRoaXMgaXMgd2hlcmUgdGhlIGludGVycnVwdCB3b3VsZCBiZSBnZW5lcmF0ZWQuICBJbiB0aGlzIGNhc2UgaXQgaXMNCisJCW5vdCBhIGdlbnVpbmUgaW50ZXJydXB0IGhhbmRsZXIgdGhhdCBleGVjdXRlcywganVzdCBhIHN0YW5kYXJkIGZ1bmN0aW9uDQorCQljYWxsLiAqLw0KKwkJbWJhR0VORVJBVEVfQ09SRV9CX0lOVEVSUlVQVCgpOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIEhhbmRsZXIgZm9yIHRoZSBpbnRlcnJ1cHRzIHRoYXQgYXJlIHRyaWdnZXJlZCBvbiBjb3JlIEEgYnV0IGV4ZWN1dGUgb24gY29yZQ0KK0IuICovDQorc3RhdGljIHZvaWQgcHJ2Q29yZUJJbnRlcnJ1cHRIYW5kbGVyKCB2b2lkICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhVcGRhdGVkTWVzc2FnZUJ1ZmZlcjsNCitCYXNlVHlwZV90IHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7DQorDQorCS8qIHhDb250cm9sTWVzc2FnZUJ1ZmZlciBjb250YWlucyB0aGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciB0aGF0DQorCWNvbnRhaW5zIGRhdGEuICovDQorCWlmKCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhDb250cm9sTWVzc2FnZUJ1ZmZlciwNCisJCQkJCQkJICAgJnhVcGRhdGVkTWVzc2FnZUJ1ZmZlciwNCisJCQkJCQkJICAgc2l6ZW9mKCB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgKSwNCisJCQkJCQkJICAgbWJhRE9OVF9CTE9DSyApID09IHNpemVvZiggeFVwZGF0ZWRNZXNzYWdlQnVmZmVyICkgKQ0KKwl7DQorCQkvKiBDYWxsIHRoZSBBUEkgZnVuY3Rpb24gdGhhdCBzZW5kcyBhIG5vdGlmaWNhdGlvbiB0byBhbnkgdGFzayB0aGF0IGlzDQorCQlibG9ja2VkIG9uIHRoZSB4VXBkYXRlZE1lc3NhZ2VCdWZmZXIgbWVzc2FnZSBidWZmZXIgd2FpdGluZyBmb3IgZGF0YSB0bw0KKwkJYXJyaXZlLiAqLw0KKwkJeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUiggeFVwZGF0ZWRNZXNzYWdlQnVmZmVyLCAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCX0NCisNCisJLyogTm9ybWFsIEZyZWVSVE9TIHlpZWxkIGZyb20gaW50ZXJydXB0IHNlbWFudGljcywgd2hlcmUNCisJeEhpZ2hlclByaW9yaXR5VGFza1dva2VuIGlzIGluaXRpYWx6ZWQgdG8gcGRGQUxTRSBhbmQgd2lsbCB0aGVuIGdldCBzZXQgdG8NCisJcGRUUlVFIGlmIHRoZSBpbnRlcnJ1cHQgc2FmZSBBUEkgdW5ibG9ja3MgYSB0YXNrIHRoYXQgaGFzIGEgcHJpb3JpdHkgYWJvdmUNCisJdGhhdCBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrLiAqLw0KKwlwb3J0WUlFTERfRlJPTV9JU1IoIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhBcmVNZXNzYWdlQnVmZmVyQU1QVGFza3NTdGlsbFJ1bm5pbmcoIHZvaWQgKQ0KK3sNCitzdGF0aWMgdWludDMyX3QgdWxMYXN0Q3ljbGVDb3VudGVyc1sgbWJhTlVNQkVSX09GX0NPUkVfQl9UQVNLUyBdID0geyAwIH07DQorQmFzZVR5cGVfdCB4Ow0KKw0KKwkvKiBDYWxsZWQgYnkgdGhlIGNoZWNrIHRhc2sgdG8gZGV0ZXJtaW5lIHRoZSBoZWFsdGggc3RhdHVzIG9mIHRoZSB0YXNrcw0KKwlpbXBsZW1lbnRlZCBpbiB0aGlzIGRlbW8uICovDQorCWZvciggeCA9IDA7IHggPCBtYmFOVU1CRVJfT0ZfQ09SRV9CX1RBU0tTOyB4KysgKQ0KKwl7DQorCQlpZiggdWxMYXN0Q3ljbGVDb3VudGVyc1sgeCBdID09IHVsQ3ljbGVDb3VudGVyc1sgeCBdICkNCisJCXsNCisJCQl4RGVtb1N0YXR1cyA9IHBkRkFJTDsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl1bExhc3RDeWNsZUNvdW50ZXJzWyB4IF0gPSB1bEN5Y2xlQ291bnRlcnNbIHggXTsNCisJCX0NCisJfQ0KKw0KKwlyZXR1cm4geERlbW9TdGF0dXM7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvTWVzc2FnZUJ1ZmZlckRlbW8uYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvTWVzc2FnZUJ1ZmZlckRlbW8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTg3ZDg1Ci0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9NZXNzYWdlQnVmZmVyRGVtby5jCkBAIC0wLDAgKzEsODA0IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJzdGRpby5oIg0KKyNpbmNsdWRlICJzdHJpbmcuaCINCisNCisvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiRnJlZVJUT1MuaCINCisjaW5jbHVkZSAidGFzay5oIg0KKyNpbmNsdWRlICJtZXNzYWdlX2J1ZmZlci5oIg0KKw0KKy8qIERlbW8gYXBwIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyRGVtby5oIg0KKw0KKy8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgb2Ygc3RvcmFnZSBpbiB0aGUgbWVzc2FnZSBidWZmZXJzIHVzZWQgaW4gdGhpcyB0ZXN0LiAqLw0KKyNkZWZpbmUgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMJKCAoIHNpemVfdCApIDUwICkNCisNCisvKiBUaGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwgYnl0ZXMgdXNlZCB0byBzdG9yZSB0aGUgbGVuZ3RoIG9mIGVhY2ggbWVzc2FnZS4gKi8NCisjZGVmaW5lIG1iQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEggKCBzaXplb2YoIHNpemVfdCApICkNCisNCisvKiBTdGFydCBhbmQgZW5kIEFTQ0lJIGNoYXJhY3RlcnMgdXNlZCBpbiBtZXNzYWdlcyBzZW50IHRvIHRoZSBidWZmZXJzLiAqLw0KKyNkZWZpbmUgbWJBU0NJSV9TUEFDRQkJCQkJMzINCisjZGVmaW5lIG1iQVNDSUlfVElMREEJCQkJCTEyNg0KKw0KKy8qIERlZmluZXMgdGhlIG51bWJlciBvZiB0YXNrcyB0byBjcmVhdGUgaW4gdGhpcyB0ZXN0IGFuZCBkZW1vLiAqLw0KKyNkZWZpbmUgbWJOVU1CRVJfT0ZfRUNIT19DTElFTlRTCSggMiApDQorI2RlZmluZSBtYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1MJKCAyICkNCisNCisvKiBQcmlvcml0eSBvZiB0aGUgdGVzdCB0YXNrcy4gIFRoZSBzZW5kIGFuZCByZWNlaXZlIGdvIGZyb20gbG93IHRvIGhpZ2gNCitwcmlvcml0eSB0YXNrcywgYW5kIGZyb20gaGlnaCB0byBsb3cgcHJpb3JpdHkgdGFza3MuICovDQorI2RlZmluZSBtYkxPV0VSX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICkNCisjZGVmaW5lIG1iSElHSEVSX1BSSU9SSVRZCQkJKCB0c2tJRExFX1BSSU9SSVRZICsgMSApDQorDQorLyogQmxvY2sgdGltZXMgdXNlZCB3aGVuIHNlbmRpbmcgYW5kIHJlY2VpdmluZyBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlcnMuICovDQorI2RlZmluZSBtYlJYX1RYX0JMT0NLX1RJTUUJCQlwZE1TX1RPX1RJQ0tTKCAxMjVVTCApDQorDQorLyogQSBibG9jayB0aW1lIG9mIDAgbWVhbnMgImRvbid0IGJsb2NrIi4gKi8NCisjZGVmaW5lIG1iRE9OVF9CTE9DSwkJCQkoIDAgKQ0KKw0KKy8qIFRoZSBzaXplIG9mIHRoZSBzdGFjayBhbGxvY2F0ZWQgdG8gdGhlIHRhc2tzIHRoYXQgcnVuIGFzIHBhcnQgb2YgdGhpcyBkZW1vLw0KK3Rlc3QuICBUaGUgc3RhY2sgc2l6ZSBpcyBvdmVyIGdlbmVyb3VzIGluIG1vc3QgY2FzZXMuICovDQorI2RlZmluZSBtYlNUQUNLX1NJWkUJCQkJKCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUgKyAoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSA+PiAxICkgKQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qDQorICogUGVyZm9ybXMgdmFyaW91cyB0ZXN0cyB0aGF0IGRvIG5vdCByZXF1aXJlIG11bHRpcGxlIHRhc2tzIHRvIGludGVyYWN0Lg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydlNpbmdsZVRhc2tUZXN0cyggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICk7DQorDQorLyoNCisgKiBUZXN0cyBzZW5kaW5nIGFuZCByZWNlaXZpbmcgdmFyaW91cyBsZW5ndGhzIG9mIG1lc3NhZ2VzIHZpYSBhIG1lc3NhZ2UgYnVmZmVyLg0KKyAqIFRoZSBlY2hvIGNsaWVudCBzZW5kcyB0aGUgbWVzc2FnZXMgdG8gdGhlIGVjaG8gc2VydmVyLCB3aGljaCB0aGVuIHNlbmRzIHRoZQ0KKyAqIG1lc3NhZ2UgYmFjayB0byB0aGUgZWNobyBjbGllbnQgd2hpY2gsIGNoZWNrcyBpdCByZWNlaXZlcyBleGFjdGx5IHdoYXQgaXQNCisgKiBzZW50Lg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkVjaG9DbGllbnQoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KK3N0YXRpYyB2b2lkIHBydkVjaG9TZXJ2ZXIoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogVGFza3MgdGhhdCBzZW5kIGFuZCByZWNlaXZlIHRvIGEgbWVzc2FnZSBidWZmZXIgYXQgYSBsb3cgcHJpb3JpdHkgYW5kIHdpdGhvdXQNCisgKiBibG9ja2luZywgc28gdGhlIHNlbmQgYW5kIHJlY2VpdmUgZnVuY3Rpb25zIGludGVybGVhdmUgaW4gdGltZSBhcyB0aGUgdGFza3MNCisgKiBhcmUgc3dpdGNoZWQgaW4gYW5kIG91dC4NCisgKi8NCitzdGF0aWMgdm9pZCBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorc3RhdGljIHZvaWQgcHJ2Tm9uQmxvY2tpbmdTZW5kZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCisjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSAgKQ0KKwkvKiBUaGlzIGZpbGUgdGVzdHMgYm90aCBzdGF0aWNhbGx5IGFuZCBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVzc2FnZSBidWZmZXJzLg0KKwlBbGxvY2F0ZSB0aGUgc3RydWN0dXJlcyBhbmQgYnVmZmVycyB0byBiZSB1c2VkIGJ5IHRoZSBzdGF0aWNhbGx5IGFsbG9jYXRlZA0KKwlvYmplY3RzLCB3aGljaCBnZXQgdXNlZCBpbiB0aGUgZWNobyB0ZXN0cy4gKi8NCisJc3RhdGljIHZvaWQgcHJ2UmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisJc3RhdGljIHZvaWQgcHJ2U2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQorCXN0YXRpYyBTdGF0aWNNZXNzYWdlQnVmZmVyX3QgeFN0YXRpY01lc3NhZ2VCdWZmZXJzWyBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgXTsNCisJc3RhdGljIHVpbnQ4X3QgdWNCdWZmZXJTdG9yYWdlWyBtYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1MgXVsgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKyAxIF07DQorCXN0YXRpYyB1aW50MzJfdCB1bFNlbmRlckxvb3BDb3VudGVyc1sgbWJOVU1CRVJfT0ZfU0VOREVSX1RBU0tTIF0gPSB7IDAgfTsNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFRoZSBidWZmZXJzIHVzZWQgYnkgdGhlIGVjaG8gY2xpZW50IGFuZCBzZXJ2ZXIgdGFza3MuICovDQordHlwZWRlZiBzdHJ1Y3QgRUNIT19NRVNTQUdFX0JVRkZFUlMNCit7DQorCS8qIEhhbmRsZXMgdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRlc2NyaWJlIHRoZSBtZXNzYWdlIGJ1ZmZlcnMuICovDQorCU1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4RWNob0NsaWVudEJ1ZmZlcjsNCisJTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhFY2hvU2VydmVyQnVmZmVyOw0KK30gRWNob01lc3NhZ2VCdWZmZXJzX3Q7DQorc3RhdGljIHVpbnQzMl90IHVsRWNob0xvb3BDb3VudGVyc1sgbWJOVU1CRVJfT0ZfRUNIT19DTElFTlRTIF0gPSB7IDAgfTsNCisNCisvKiBUaGUgbm9uLWJsb2NraW5nIHRhc2tzIG1vbml0b3IgdGhlaXIgb3BlcmF0aW9uLCBhbmQgaWYgbm8gZXJyb3JzIGhhdmUgYmVlbg0KK2ZvdW5kLCBpbmNyZW1lbnQgdWxOb25CbG9ja2luZ1J4Q291bnRlci4gIHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKQ0KK3RoZW4gY2hlY2tzIHVsTm9uQmxvY2tpbmdSeENvdW50ZXIgYW5kIG9ubHkgcmV0dXJucyBwZFBBU1MgaWYNCit1bE5vbkJsb2NraW5nUnhDb3VudGVyIGlzIHN0aWxsIGluY3JlbWVudGluZy4gKi8NCitzdGF0aWMgdWludDMyX3QgdWxOb25CbG9ja2luZ1J4Q291bnRlciA9IDA7DQorDQorLyogQSBtZXNzYWdlIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciwgcGFydHMgb2Ygd2hpY2ggYXJlIHdyaXR0ZW4gdG8gdGhlDQorbWVzc2FnZSBidWZmZXIgdG8gdGVzdCB3cml0aW5nIGRpZmZlcmVudCBsZW5ndGhzIGF0IGRpZmZlcmVudCBvZmZzZXRzLiAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICpwYzU1Qnl0ZVN0cmluZyA9ICJPbmUgdHdvIHRocmVlIGZvdXIgZml2ZSBzaXggc2V2ZW4gZWlnaHQgbmluZSB0ZW4gZWxldmUiOw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlN0YXJ0TWVzc2FnZUJ1ZmZlclRhc2tzKCB2b2lkICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyOw0KKw0KKwkvKiBUaGUgZWNobyBzZXJ2ZXJzIHNldHMgdXAgdGhlIG1lc3NhZ2UgYnVmZmVycyBiZWZvcmUgY3JlYXRpbmcgdGhlIGVjaG8NCisJY2xpZW50IHRhc2tzLiAgT25lIHNldCBvZiB0YXNrcyBoYXMgdGhlIHNlcnZlciBhcyB0aGUgaGlnaGVyIHByaW9yaXR5LCBhbmQNCisJdGhlIG90aGVyIGhhcyB0aGUgY2xpZW50IGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkuICovDQorCXhUYXNrQ3JlYXRlKCBwcnZFY2hvU2VydmVyLCAiMUVjaG9TZXJ2ZXIiLCBtYlNUQUNLX1NJWkUsIE5VTEwsIG1iSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZFY2hvU2VydmVyLCAiMkVjaG9TZXJ2ZXIiLCBtYlNUQUNLX1NJWkUsIE5VTEwsIG1iTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisNCisJLyogVGhlIG5vbiBibG9ja2luZyB0YXNrcyBydW4gY29udGludW91c2x5IGFuZCB3aWxsIGludGVybGVhdmUgd2l0aCBlYWNoDQorCW90aGVyLCBzbyBtdXN0IGJlIGNyZWF0ZWQgYXQgdGhlIGxvd2VzdCBwcmlvcml0eS4gIFRoZSBtZXNzYWdlIGJ1ZmZlciB0aGV5DQorCXVzZSBpcyBjcmVhdGVkIGFuZCBwYXNzZWQgaW4gdXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorCXhNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzaywgIk5vbkJsa1J4IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApIHhNZXNzYWdlQnVmZmVyLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZOb25CbG9ja2luZ1NlbmRlclRhc2ssICJOb25CbGtUeCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgKCB2b2lkICogKSB4TWVzc2FnZUJ1ZmZlciwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KKw0KKwkjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSAgKQ0KKwl7DQorCQkvKiBUaGUgc2VuZGVyIHRhc2tzIHNldCB1cCB0aGUgbWVzc2FnZSBidWZmZXJzIGJlZm9yZSBjcmVhdGluZyB0aGUNCisJCXJlY2VpdmVyIHRhc2tzLiAgUHJpb3JpdGllcyBtdXN0IGJlIDAgYW5kIDEgYXMgdGhlIHByaW9yaXR5IGlzIHVzZWQgdG8NCisJCWluZGV4IGludG8gdGhlIHhTdGF0aWNNZXNzYWdlQnVmZmVycyBhbmQgdWNCdWZmZXJTdG9yYWdlIGFycmF5cy4gKi8NCisJCXhUYXNrQ3JlYXRlKCBwcnZTZW5kZXJUYXNrLCAiMVNlbmRlciIsIG1iU1RBQ0tfU0laRSwgTlVMTCwgbWJISUdIRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJCXhUYXNrQ3JlYXRlKCBwcnZTZW5kZXJUYXNrLCAiMlNlbmRlciIsIG1iU1RBQ0tfU0laRSwgTlVMTCwgbWJMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorCSNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlNpbmdsZVRhc2tUZXN0cyggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICkNCit7DQorc2l6ZV90IHhSZXR1cm5lZCwgeEl0ZW0sIHhFeHBlY3RlZFNwYWNlOw0KK2NvbnN0IHNpemVfdCB4TWF4NkJ5dGVNZXNzYWdlcyA9IG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC8gKCA2ICsgbWJCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KK2NvbnN0IHNpemVfdCB4NkJ5dGVMZW5ndGggPSA2LCB4MTdCeXRlTGVuZ3RoID0gMTc7DQordWludDhfdCAqcHVjRnVsbEJ1ZmZlciwgKnB1Y0RhdGEsICpwdWNSZWFkRGF0YTsNCitUaWNrVHlwZV90IHhUaW1lQmVmb3JlQ2FsbCwgeFRpbWVBZnRlckNhbGw7DQorY29uc3QgVGlja1R5cGVfdCB4QmxvY2tUaW1lID0gcGRNU19UT19USUNLUyggMjUgKSwgeEFsbG93YWJsZU1hcmdpbiA9IHBkTVNfVE9fVElDS1MoIDMgKTsNCitVQmFzZVR5cGVfdCB1eE9yaWdpbmFsUHJpb3JpdHk7DQorDQorCS8qIFJlbW92ZSB3YXJuaW5nIGluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHhBbGxvd2FibGVNYXJnaW47DQorDQorCS8qIFRvIG1pbmltaXNlIHN0YWNrIGFuZCBoZWFwIHVzYWdlIGEgZnVsbCBzaXplIGJ1ZmZlciBpcyBhbGxvY2F0ZWQgZnJvbQ0KKwl0aGUgaGVhcCwgdGhlbiBidWZmZXJzIHdoaWNoIGhvbGQgc21hbGxlciBhbW91bnRzIG9mIGRhdGEgYXJlIG92ZXJsYXllZA0KKwl3aXRoIHRoZSBsYXJnZXIgYnVmZmVyIC0ganVzdCBtYWtlIHN1cmUgbm90IHRvIHVzZSBib3RoIGF0IG9uY2UhLiAqLw0KKwlwdWNGdWxsQnVmZmVyID0gcHZQb3J0TWFsbG9jKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHB1Y0Z1bGxCdWZmZXIgKTsNCisNCisJcHVjRGF0YSA9IHB1Y0Z1bGxCdWZmZXI7DQorCXB1Y1JlYWREYXRhID0gcHVjRGF0YSArIHgxN0J5dGVMZW5ndGg7DQorDQorCS8qIE5vdGhpbmcgaGFzIGJlZW4gYWRkZWQgb3IgcmVtb3ZlZCB5ZXQsIHNvIGV4cGVjdCB0aGUgZnJlZSBzcGFjZSB0byBiZQ0KKwlleGFjdGx5IGFzIGNyZWF0ZWQuICovDQorCXhFeHBlY3RlZFNwYWNlID0geE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKTsNCisJY29uZmlnQVNTRVJUKCB4RXhwZWN0ZWRTcGFjZSA9PSBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVySXNFbXB0eSggeE1lc3NhZ2VCdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisNCisNCisJLyogVGhlIGJ1ZmZlciBpcyA1MCBieXRlcyBsb25nLiAgV2hlbiBhbiBpdGVtIGlzIGFkZGVkIHRvIHRoZSBidWZmZXIgYW4NCisJYWRkaXRpb25hbCA0IGJ5dGVzIGFyZSBhZGRlZCB0byBob2xkIHRoZSBpdGVtJ3Mgc2l6ZS4gIFRoYXQgbWVhbnMgYWRkaW5nDQorCTYgYnl0ZXMgdG8gdGhlIGJ1ZmZlciB3aWxsIGFjdHVhbGx5IGFkZCAxMCBieXRlcyB0byB0aGUgYnVmZmVyLiAgVGhlcmVmb3JlLA0KKwl3aXRoIGEgNTAgYnl0ZSBidWZmZXIsIGEgbWF4aW11bSBvZiA1IDYgYnl0ZXMgaXRlbXMgY2FuIGJlIGFkZGVkIGJlZm9yZSB0aGUNCisJYnVmZmVyIGlzIGNvbXBsZXRlbHkgZnVsbC4gKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgeE1heDZCeXRlTWVzc2FnZXM7IHhJdGVtKysgKQ0KKwl7DQorCQljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVySXNGdWxsKCB4TWVzc2FnZUJ1ZmZlciApID09IHBkRkFMU0UgKTsNCisNCisJCS8qIEdlbmVyYXRlIHJlY29nbmlzYWJsZSBkYXRhIHRvIHdyaXRlIHRvIHRoZSBidWZmZXIuICBUaGlzIGlzIGp1c3QNCisJCWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBzaG93cyB3aGljaCBsb29wIGl0ZXJhdGlvbiB0aGUgZGF0YSB3YXMgd3JpdHRlbg0KKwkJaW4uIFRoZSAnRnJvbUlTUicgdmVyc2lvbiBpcyB1c2VkIHRvIGdpdmUgaXQgc29tZSBleGVyY2lzZSBhcyBhIGJsb2NrDQorCQl0aW1lIGlzIG5vdCB1c2VkLiAgVGhhdCByZXF1aXJlcyB0aGUgY2FsbCB0byBiZSBpbiBhIGNyaXRpY2FsIHNlY3Rpb24NCisJCXNvIHRoaXMgY29kZSBjYW4gYWxzbyBydW4gb24gRnJlZVJUT1MgcG9ydHMgdGhhdCBkbyBub3Qgc3VwcG9ydA0KKwkJaW50ZXJydXB0IG5lc3RpbmcgKGFuZCBzbyBkb24ndCBoYXZlIGludGVycnVwdCBzYWZlIGNyaXRpY2FsDQorCQlzZWN0aW9ucykuKi8NCisJCW1lbXNldCggKCB2b2lkICogKSBwdWNEYXRhLCAoICggaW50ICkgJzAnICkgKyAoIGludCApIHhJdGVtLCB4NkJ5dGVMZW5ndGggKTsNCisJCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KKwkJew0KKwkJCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0RhdGEsIHg2Qnl0ZUxlbmd0aCwgTlVMTCApOw0KKwkJfQ0KKwkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHg2Qnl0ZUxlbmd0aCApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKw0KKwkJLyogVGhlIHNwYWNlIGluIHRoZSBidWZmZXIgd2lsbCBoYXZlIHJlZHVjZWQgYnkgdGhlIGFtb3VudCBvZiB1c2VyIGRhdGENCisJCXdyaXR0ZW4gaW50byB0aGUgYnVmZmVyIGFuZCB0aGUgYW1vdW50IG9mIHNwYWNlIHVzZWQgdG8gc3RvcmUgdGhlIGxlbmd0aA0KKwkJb2YgdGhlIGRhdGEgd3JpdHRlbiBpbnRvIHRoZSBidWZmZXIuICovDQorCQl4RXhwZWN0ZWRTcGFjZSAtPSAoIHg2Qnl0ZUxlbmd0aCArIG1iQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEggKTsNCisJCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUoIHhNZXNzYWdlQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4RXhwZWN0ZWRTcGFjZSApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwl9DQorDQorCS8qIE5vdyB0aGUgYnVmZmVyIHNob3VsZCBiZSBmdWxsLCBhbmQgYXR0ZW1wdGluZyB0byBhZGQgYW55dGhpbmcgd2lsbCBzaG91bGQNCisJZmFpbC4gKi8NCisJY29uZmlnQVNTRVJUKCB4TWVzc2FnZUJ1ZmZlcklzRnVsbCggeE1lc3NhZ2VCdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCBzaXplb2YoIHB1Y0RhdGFbIDAgXSApLCBtYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCS8qIEFkZGluZyB3aXRoIGEgdGltZW91dCBzaG91bGQgYWxzbyBmYWlsIGFmdGVyIHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAgVGhlDQorCXByaW9yaXR5IGlzIHRlbXBvcmFyaWx5IGJvb3N0ZWQgaW4gdGhpcyBwYXJ0IG9mIHRoZSB0ZXN0IHRvIGtlZXAgdGhlDQorCWFsbG93YWJsZSBtYXJnaW4gdG8gYSBtaW5pbXVtLiAqLw0KKwl1eE9yaWdpbmFsUHJpb3JpdHkgPSB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApOw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDEgKTsNCisJeFRpbWVCZWZvcmVDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCBzaXplb2YoIHB1Y0RhdGFbIDAgXSApLCB4QmxvY2tUaW1lICk7DQorCXhUaW1lQWZ0ZXJDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgdXhPcmlnaW5hbFByaW9yaXR5ICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGltZUFmdGVyQ2FsbCAtIHhUaW1lQmVmb3JlQ2FsbCApID49IHhCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPCAoIHhCbG9ja1RpbWUgKyB4QWxsb3dhYmxlTWFyZ2luICkgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHhUaW1lQmVmb3JlQ2FsbDsNCisJKCB2b2lkICkgeFRpbWVBZnRlckNhbGw7DQorDQorDQorCS8qIFRoZSBidWZmZXIgaXMgbm93IGZ1bGwgb2YgZGF0YSBpbiB0aGUgZm9ybSAiMDAwMDAwIiwgIjExMTExMSIsIGV0Yy4gIE1ha2UNCisJc3VyZSB0aGUgZGF0YSBpcyByZWFkIG91dCBhcyBleHBlY3RlZC4gKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgeE1heDZCeXRlTWVzc2FnZXM7IHhJdGVtKysgKQ0KKwl7DQorCQkvKiBHZW5lcmF0ZSB0aGUgZGF0YSB0aGF0IGlzIGV4cGVjdGVkIHRvIGJlIHJlYWQgb3V0IGZvciB0aGlzIGxvb3ANCisJCWl0ZXJhdGlvbi4gKi8NCisJCW1lbXNldCggKCB2b2lkICogKSBwdWNEYXRhLCAoICggaW50ICkgJzAnICkgKyAoIGludCApIHhJdGVtLCB4NkJ5dGVMZW5ndGggKTsNCisNCisJCS8qIFRyeSByZWFkaW5nIHRoZSBtZXNzYWdlIGludG8gYSBidWZmZXIgdGhhdCBpcyB0b28gc21hbGwuICBUaGUgbWVzc2FnZQ0KKwkJc2hvdWxkIHJlbWFpbiBpbiB0aGUgYnVmZmVyLiAqLw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDZCeXRlTGVuZ3RoIC0gMSwgbWJET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBSZWFkIHRoZSBuZXh0IDYgYnl0ZXMgb3V0LiAgVGhlICdGcm9tSVNSJyB2ZXJzaW9uIGlzIHVzZWQgdG8gZ2l2ZSBpdA0KKwkJc29tZSBleGVyY2lzZSBhcyBhIGJsb2NrIHRpbWUgaXMgbm90IHVzZWQuICBUSGEgcmVxdWlyZXMgdGhlIGNvZGUgdG8gYmUNCisJCWluIGEgY3JpdGljYWwgc2VjdGlvbiBzbyB0aGlzIHRlc3QgY2FuIGJlIHJ1biB3aXRoIEZyZWVSVE9TIHBvcnRzIHRoYXQNCisJCWRvIG5vdCBzdXBwb3J0IGludGVycnVwdCBuZXN0aW5nIChhbmQgdGhlcmVmb3JlIGRvbid0IGhhdmUgaW50ZXJydXB0DQorCQlzYWZlIGNyaXRpY2FsIHNlY3Rpb25zKS4gKi8NCisJCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KKwkJew0KKwkJCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4NkJ5dGVMZW5ndGgsIE5VTEwgKTsNCisJCX0NCisJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4NkJ5dGVMZW5ndGggKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJCS8qIERvZXMgdGhlIGRhdGEgcmVhZCBvdXQgbWF0Y2ggdGhhdCBleHBlY3RlZD8gKi8NCisJCWNvbmZpZ0FTU0VSVCggbWVtY21wKCAoIHZvaWQgKiApIHB1Y0RhdGEsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHg2Qnl0ZUxlbmd0aCApID09IDAgKTsNCisNCisJCS8qIFRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIHdpbGwgaGF2ZSBpbmNyZWFzZWQgYnkgdGhlIGFtb3VudCBvZiB1c2VyDQorCQlkYXRhIHJlYWQgZnJvbSBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCB0byBzdG9yZSB0aGUNCisJCWxlbmd0aCBvZiB0aGUgZGF0YSByZWFkIGludG8gdGhlIGJ1ZmZlci4gKi8NCisJCXhFeHBlY3RlZFNwYWNlICs9ICggeDZCeXRlTGVuZ3RoICsgbWJCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHhFeHBlY3RlZFNwYWNlICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCX0NCisNCisJLyogVGhlIGJ1ZmZlciBzaG91bGQgYmUgZW1wdHkgYWdhaW4uICovDQorCWNvbmZpZ0FTU0VSVCggeE1lc3NhZ2VCdWZmZXJJc0VtcHR5KCB4TWVzc2FnZUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwl4RXhwZWN0ZWRTcGFjZSA9IHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUoIHhNZXNzYWdlQnVmZmVyICk7DQorCWNvbmZpZ0FTU0VSVCggeEV4cGVjdGVkU3BhY2UgPT0gbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJLyogUmVhZGluZyB3aXRoIGEgdGltZW91dCBzaG91bGQgYWxzbyBmYWlsIGFmdGVyIHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAgVGhlDQorCXByaW9yaXR5IGlzIHRlbXBvcmFyaWx5IGJvb3N0ZWQgaW4gdGhpcyBwYXJ0IG9mIHRoZSB0ZXN0IHRvIGtlZXAgdGhlDQorCWFsbG93YWJsZSBtYXJnaW4gdG8gYSBtaW5pbXVtLiAqLw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDEgKTsNCisJeFRpbWVCZWZvcmVDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDZCeXRlTGVuZ3RoLCB4QmxvY2tUaW1lICk7DQorCXhUaW1lQWZ0ZXJDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgdXhPcmlnaW5hbFByaW9yaXR5ICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGltZUFmdGVyQ2FsbCAtIHhUaW1lQmVmb3JlQ2FsbCApID49IHhCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPCAoIHhCbG9ja1RpbWUgKyB4QWxsb3dhYmxlTWFyZ2luICkgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCSggdm9pZCApIHhUaW1lQmVmb3JlQ2FsbDsNCisJKCB2b2lkICkgeFRpbWVBZnRlckNhbGw7DQorDQorDQorCS8qIEluIHRoZSBuZXh0IGxvb3AgMTcgYnl0ZXMgYXJlIHdyaXR0ZW4gdG8gdGhlbiByZWFkIG91dCBvbiBlYWNoIGl0ZXJhdGlvbi4NCisJVGhlIGV4cGVjdGVkIGxlbmd0aCB2YXJpYWJsZSBpcyBhbHdheXMgdXNlZCBhZnRlciAxNyBieXRlcyBoYXZlIGJlZW4gd3JpdHRlbg0KKwlpbnRvIHRoZSBidWZmZXIgLSB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGlzIGFsc28gd3JpdHRlbiwgbWFraW5nIGEgdG90YWwNCisJb2YgMjEgYnl0ZXMgY29uc3VtZWQgZm9yIGVhY2ggMTcgYnl0ZSBtZXNzYWdlLiAqLw0KKwl4RXhwZWN0ZWRTcGFjZSA9IG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gKCB4MTdCeXRlTGVuZ3RoICsgbWJCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKw0KKwkvKiBSZWFkaW5nIGFuZCB3cml0aW5nIDE3IGJ5dGVzIGF0IGEgdGltZSB3aWxsIHJlc3VsdCBpbiAyMSBieXRlcyBiZWluZw0KKwl3cml0dGVuIGludG8gdGhlIGJ1ZmZlciwgYW5kIGFzIDUwIGlzIG5vdCBkaXZpc2libGUgYnkgMjEsIHdyaXRpbmcgbXVsdGlwbGUNCisJdGltZXMgd2lsbCBjYXVzZSB0aGUgZGF0YSB0byB3cmFwIGluIHRoZSBidWZmZXIuKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgMTAwOyB4SXRlbSsrICkNCisJew0KKwkJLyogR2VuZXJhdGUgcmVjb2duaXNhYmxlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIHF1ZXVlLiAgVGhpcyBpcyBqdXN0DQorCQlhc2NpaSBjaGFyYWN0ZXJzIHRoYXQgc2hvd3Mgd2hpY2ggbG9vcCBpdGVyYXRpb24gdGhlIGRhdGEgd2FzIHdyaXR0ZW4NCisJCWluLiAqLw0KKwkJbWVtc2V0KCAoIHZvaWQgKiApIHB1Y0RhdGEsICggKCBpbnQgKSAnMCcgKSArICggaW50ICkgeEl0ZW0sIHgxN0J5dGVMZW5ndGggKTsNCisJCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgcHVjRGF0YSwgeDE3Qnl0ZUxlbmd0aCwgbWJET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4MTdCeXRlTGVuZ3RoICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBUaGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciB3aWxsIGhhdmUgcmVkdWNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXIgZGF0YQ0KKwkJd3JpdHRlbiBpbnRvIHRoZSBidWZmZXIgYW5kIHRoZSBhbW91bnQgb2Ygc3BhY2UgdXNlZCB0byBzdG9yZSB0aGUgbGVuZ3RoDQorCQlvZiB0aGUgZGF0YSB3cml0dGVuIGludG8gdGhlIGJ1ZmZlci4gKi8NCisJCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUoIHhNZXNzYWdlQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4RXhwZWN0ZWRTcGFjZSApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKw0KKwkJLyogUmVhZCB0aGUgMTcgYnl0ZXMgb3V0IGFnYWluLiAqLw0KKwkJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDE3Qnl0ZUxlbmd0aCwgbWJET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4MTdCeXRlTGVuZ3RoICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBEb2VzIHRoZSBkYXRhIHJlYWQgb3V0IG1hdGNoIHRoYXQgZXhwZWN0ZWQ/ICovDQorCQljb25maWdBU1NFUlQoIG1lbWNtcCggKCB2b2lkICogKSBwdWNEYXRhLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4MTdCeXRlTGVuZ3RoICkgPT0gMCApOw0KKwl9DQorDQorCS8qIFRoZSBidWZmZXIgc2hvdWxkIGJlIGVtcHR5IGFnYWluLiAqLw0KKwljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVySXNFbXB0eSggeE1lc3NhZ2VCdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJeEV4cGVjdGVkU3BhY2UgPSB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlKCB4TWVzc2FnZUJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhFeHBlY3RlZFNwYWNlID09IG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorDQorCS8qIENhbm5vdCB3cml0ZSB3aXRoaW4gc2l6ZW9mKCBzaXplX3QgKSAoYXNzdW1lZCB0byBiZSA0IGJ5dGVzIGluIHRoaXMgdGVzdCkNCisJYnl0ZXMgb2YgdGhlIGZ1bGwgNTAgYnl0ZXMsIGFzIHRoYXQgd291bGQgbm90IGxlYXZlIHNwYWNlIGZvciB0aGUgZm91ciBieXRlcw0KKwl0YWtlbiBieSB0aGUgZGF0YSBsZW5ndGguICovDQorCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBtYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorCXhSZXR1cm5lZCA9IHhNZXNzYWdlQnVmZmVyU2VuZCggeE1lc3NhZ2VCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gMSwgbWJET05UX0JMT0NLICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTVCeXRlU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIDIsIG1iRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJeFJldHVybmVkID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU1Qnl0ZVN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSAzLCBtYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCS8qIENhbiB3cml0ZSBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgYnl0ZXMgdGhvdWdoLiAqLw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTVCeXRlU3RyaW5nLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICksIG1iRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwl4UmV0dXJuZWQgPSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0gc2l6ZW9mKCBzaXplX3QgKSwgbWJET05UX0JMT0NLICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09ICggbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSBzaXplb2YoIHNpemVfdCApICkgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwljb25maWdBU1NFUlQoIG1lbWNtcCggKCBjb25zdCB2b2lkICogKSBwdWNGdWxsQnVmZmVyLCBwYzU1Qnl0ZVN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgLSBzaXplb2YoIHNpemVfdCApICkgPT0gMCApOw0KKw0KKwkvKiBDbGVhbiB1cC4gKi8NCisJdlBvcnRGcmVlKCBwdWNGdWxsQnVmZmVyICk7DQorCXhNZXNzYWdlQnVmZmVyUmVzZXQoIHhNZXNzYWdlQnVmZmVyICk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nU2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyOw0KK2ludDMyX3QgaURhdGFUb1NlbmQgPSAwOw0KK3NpemVfdCB4U3RyaW5nTGVuZ3RoOw0KK2NvbnN0IGludDMyX3QgaU1heFZhbHVlID0gMTUwMDsNCitjaGFyIGNUeFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMiBudW1iZXIgaW4gQVNDSUkuICovDQorDQorCS8qIEluIHRoaXMgY2FzZSB0aGUgbWVzc2FnZSBidWZmZXIgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIGFuZCBpcyBwYXNzZWQNCisJaW50byB0aGUgdGFzayB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeE1lc3NhZ2VCdWZmZXIgPSAoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogQ3JlYXRlIGEgc3RyaW5nIGZyb20gYW4gaW5jcmVtZW50aW5nIG51bWJlci4gIFRoZSBsZW5ndGggb2YgdGhlDQorCXN0cmluZyB3aWxsIGluY3JlYXNlIGFuZCBkZWNyZWFzZSBhcyB0aGUgdmFsdWUgb2YgdGhlIG51bWJlciBpbmNyZWFzZXMNCisJdGhlbiBvdmVyZmxvd3MuICovDQorCW1lbXNldCggY1R4U3RyaW5nLCAweDAwLCBzaXplb2YoIGNUeFN0cmluZyApICk7DQorCXNwcmludGYoIGNUeFN0cmluZywgIiVkIiwgKCBpbnQgKSBpRGF0YVRvU2VuZCApOw0KKwl4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBjVHhTdHJpbmcgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIERvZXNuJ3QgYmxvY2sgc28gY2FsbHMgY2FuIGludGVybGVhdmUgd2l0aCB0aGUgbm9uLWJsb2NraW5nDQorCQlyZWNlaXZlcyBwZXJmb3JtZWQgYnkgcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2soKS4gKi8NCisJCWlmKCB4TWVzc2FnZUJ1ZmZlclNlbmQoIHhNZXNzYWdlQnVmZmVyLCAoIHZvaWQgKiApIGNUeFN0cmluZywgc3RybGVuKCBjVHhTdHJpbmcgKSwgbWJET05UX0JMT0NLICkgPT0geFN0cmluZ0xlbmd0aCApDQorCQl7DQorCQkJaURhdGFUb1NlbmQrKzsNCisNCisJCQlpZiggaURhdGFUb1NlbmQgPiBpTWF4VmFsdWUgKQ0KKwkJCXsNCisJCQkJLyogVGhlIHZhbHVlIHNlbnQgaXMgcmVzZXQgYmFjayB0byAwIHRvIGVuc3VyZSB0aGUgc3RyaW5nIGJlaW5nIHNlbnQNCisJCQkJZG9lcyBub3QgcmVtYWluIGF0IHRoZSBzYW1lIGxlbmd0aCBmb3IgdG9vIGxvbmcuICovDQorCQkJCWlEYXRhVG9TZW5kID0gMDsNCisJCQl9DQorDQorCQkJLyogQ3JlYXRlIHRoZSBuZXh0IHN0cmluZy4gKi8NCisJCQltZW1zZXQoIGNUeFN0cmluZywgMHgwMCwgc2l6ZW9mKCBjVHhTdHJpbmcgKSApOw0KKwkJCXNwcmludGYoIGNUeFN0cmluZywgIiVkIiwgKCBpbnQgKSBpRGF0YVRvU2VuZCApOw0KKwkJCXhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIGNUeFN0cmluZyApOw0KKwkJfQ0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nUmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXI7DQorQmFzZVR5cGVfdCB4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPSBwZEZBTFNFOw0KK2ludDMyX3QgaURhdGFUb1NlbmQgPSAwOw0KK3NpemVfdCB4U3RyaW5nTGVuZ3RoLCB4UmVjZWl2ZUxlbmd0aDsNCitjb25zdCBpbnQzMl90IGlNYXhWYWx1ZSA9IDE1MDA7DQorY2hhciBjRXhwZWN0ZWRTdHJpbmdbIDEyIF07IC8qIExhcmdlIGVub3VnaCB0byBob2xkIGEgMzIgbnVtYmVyIGluIEFTQ0lJLiAqLw0KK2NoYXIgY1J4U3RyaW5nWyAxMiBdOw0KKw0KKwkvKiBJbiB0aGlzIGNhc2UgdGhlIG1lc3NhZ2UgYnVmZmVyIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBhbmQgaXMgcGFzc2VkDQorCWludG8gdGhlIHRhc2sgdXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorCXhNZXNzYWdlQnVmZmVyID0gKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIENyZWF0ZSBhIHN0cmluZyBmcm9tIGFuIGluY3JlbWVudGluZyBudW1iZXIuICBUaGUgbGVuZ3RoIG9mIHRoZQ0KKwlzdHJpbmcgd2lsbCBpbmNyZWFzZSBhbmQgZGVjcmVhc2UgYXMgdGhlIHZhbHVlIG9mIHRoZSBudW1iZXIgaW5jcmVhc2VzDQorCXRoZW4gb3ZlcmZsb3dzLiAgVGhpcyBzaG91bGQgYWx3YXlzIG1hdGNoIHRoZSBzdHJpbmcgc2VudCB0byB0aGUgYnVmZmVyIGJ5DQorCXRoZSBub24gYmxvY2tpbmcgc2VuZGVyIHRhc2suICovDQorCW1lbXNldCggY0V4cGVjdGVkU3RyaW5nLCAweDAwLCBzaXplb2YoIGNFeHBlY3RlZFN0cmluZyApICk7DQorCW1lbXNldCggY1J4U3RyaW5nLCAweDAwLCBzaXplb2YoIGNSeFN0cmluZyApICk7DQorCXNwcmludGYoIGNFeHBlY3RlZFN0cmluZywgIiVkIiwgKCBpbnQgKSBpRGF0YVRvU2VuZCApOw0KKwl4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBjRXhwZWN0ZWRTdHJpbmcgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIERvZXNuJ3QgYmxvY2sgc28gY2FsbHMgY2FuIGludGVybGVhdmUgd2l0aCB0aGUgbm9uLWJsb2NraW5nDQorCQlyZWNlaXZlcyBwZXJmb3JtZWQgYnkgcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2soKS4gKi8NCisJCXhSZWNlaXZlTGVuZ3RoID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBjUnhTdHJpbmcsIHNpemVvZiggY1J4U3RyaW5nICksIG1iRE9OVF9CTE9DSyApOw0KKw0KKwkJLyogU2hvdWxkIG9ubHkgZXZlciByZWNlaXZlIG5vIGRhdGEgaXMgYXZhaWxhYmxlLCBvciB0aGUgZXhwZWN0ZWQNCisJCWxlbmd0aCBvZiBkYXRhIGlzIGF2YWlsYWJsZS4gKi8NCisJCWlmKCAoIHhSZWNlaXZlTGVuZ3RoICE9IDAgKSAmJiAoIHhSZWNlaXZlTGVuZ3RoICE9IHhTdHJpbmdMZW5ndGggKSApDQorCQl7DQorCQkJeE5vbkJsb2NraW5nUmVjZWl2ZUVycm9yID0gcGRUUlVFOw0KKwkJfQ0KKw0KKwkJaWYoIHhSZWNlaXZlTGVuZ3RoID09IHhTdHJpbmdMZW5ndGggKQ0KKwkJew0KKwkJCS8qIEVuc3VyZSB0aGUgcmVjZWl2ZWQgZGF0YSB3YXMgdGhhdCBleHBlY3RlZCwgdGhlbiBnZW5lcmF0ZSB0aGUNCisJCQluZXh0IGV4cGVjdGVkIHN0cmluZy4gKi8NCisJCQlpZiggc3RyY21wKCBjUnhTdHJpbmcsIGNFeHBlY3RlZFN0cmluZyApICE9IDAgKQ0KKwkJCXsNCisJCQkJeE5vbkJsb2NraW5nUmVjZWl2ZUVycm9yID0gcGRUUlVFOw0KKwkJCX0NCisNCisJCQlpRGF0YVRvU2VuZCsrOw0KKw0KKwkJCWlmKCBpRGF0YVRvU2VuZCA+IGlNYXhWYWx1ZSApDQorCQkJew0KKwkJCQkvKiBUaGUgdmFsdWUgc2VudCBpcyByZXNldCBiYWNrIHRvIDAgdG8gZW5zdXJlIHRoZSBzdHJpbmcgYmVpbmcgc2VudA0KKwkJCQlkb2VzIG5vdCByZW1haW4gYXQgdGhlIHNhbWUgbGVuZ3RoIGZvciB0b28gbG9uZy4gKi8NCisJCQkJaURhdGFUb1NlbmQgPSAwOw0KKwkJCX0NCisNCisJCQltZW1zZXQoIGNFeHBlY3RlZFN0cmluZywgMHgwMCwgc2l6ZW9mKCBjRXhwZWN0ZWRTdHJpbmcgKSApOw0KKwkJCW1lbXNldCggY1J4U3RyaW5nLCAweDAwLCBzaXplb2YoIGNSeFN0cmluZyApICk7DQorCQkJc3ByaW50ZiggY0V4cGVjdGVkU3RyaW5nLCAiJWQiLCAoIGludCApIGlEYXRhVG9TZW5kICk7DQorCQkJeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggY0V4cGVjdGVkU3RyaW5nICk7DQorDQorCQkJaWYoIHhOb25CbG9ja2luZ1JlY2VpdmVFcnJvciA9PSBwZEZBTFNFICkNCisJCQl7DQorCQkJCS8qIE5vIGVycm9ycyBkZXRlY3RlZCBzbyBpbmNyZW1lbnQgdGhlIGNvdW50ZXIgdGhhdCBsZXRzIHRoZQ0KKwkJCQljaGVjayB0YXNrIGtub3cgdGhpcyB0ZXN0IGlzIHN0aWxsIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4gKi8NCisJCQkJdWxOb25CbG9ja2luZ1J4Q291bnRlcisrOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSAgKQ0KKw0KKwlzdGF0aWMgdm9pZCBwcnZTZW5kZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKwl7DQorCU1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciwgeFRlbXBNZXNzYWdlQnVmZmVyOw0KKwlpbnQzMl90IGlEYXRhVG9TZW5kID0gMDsNCisJY29uc3QgaW50MzJfdCBpU2VuZHNCZXR3ZWVuSW5jcmVtZW50cyA9IDEwMDsNCisJY2hhciBjVHhTdHJpbmdbIDEyIF07IC8qIExhcmdlIGVub3VnaCB0byBob2xkIGEgMzIgbnVtYmVyIGluIEFTQ0lJLiAqLw0KKwljb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCA9IG1iUlhfVFhfQkxPQ0tfVElNRSwgeFNob3J0RGVsYXkgPSBwZE1TX1RPX1RJQ0tTKCA1MCApOw0KKwlTdGF0aWNNZXNzYWdlQnVmZmVyX3QgeFN0YXRpY01lc3NhZ2VCdWZmZXI7DQorDQorDQorCS8qIFRoZSB0YXNrJ3MgcHJpb3JpdHkgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIHRoZSBsb29wIGNvdW50ZXJzIHVzZWQgdG8NCisJaW5kaWNhdGUgdGhpcyB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQorCVVCYXNlVHlwZV90IHV4SW5kZXggPSB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApOw0KKw0KKwkJLyogTWFrZSBzdXJlIGEgY2hhbmdlIGluIHByaW9yaXR5IGRvZXMgbm90IGluYWR2ZXJ0ZW50bHkgcmVzdWx0IGluIGFuDQorCQlpbnZhbGlkIGFycmF5IGluZGV4LiAqLw0KKwkJY29uZmlnQVNTRVJUKCB1eEluZGV4IDwgbWJOVU1CRVJfT0ZfRUNIT19DTElFTlRTICk7DQorDQorCQkvKiBBdm9pZCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJCXhNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVvZiggdWNCdWZmZXJTdG9yYWdlICkgLyBtYk5VTUJFUl9PRl9TRU5ERVJfVEFTS1MsIC8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gZWFjaCBidWZmZXIgaW4gdGhlIGFycmF5LiAqLw0KKwkJCQkJCQkJCQkJCQkgJiggdWNCdWZmZXJTdG9yYWdlWyB1eEluZGV4IF1bIDAgXSApLCAvKiBUaGUgYWRkcmVzcyBvZiB0aGUgYnVmZmVyIHRvIHVzZSB3aXRoaW4gdGhlIGFycmF5LiAqLw0KKwkJCQkJCQkJCQkJCQkgJiggeFN0YXRpY01lc3NhZ2VCdWZmZXJzWyB1eEluZGV4IF0gKSApOyAvKiBUaGUgc3RhdGljIG1lc3NhZ2UgYnVmZmVyIHN0cnVjdHVyZSB0byB1c2Ugd2l0aGluIHRoZSBhcnJheS4gKi8NCisNCisJCS8qIE5vdyB0aGUgbWVzc2FnZSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZCB0aGUgcmVjZWl2ZXIgdGFzayBjYW4gYmUgY3JlYXRlZC4NCisJCUlmIHRoaXMgc2VuZGVyIHRhc2sgaGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkgdGhlbiB0aGUgcmVjZWl2ZXIgdGFzayBpcw0KKwkJY3JlYXRlZCBhdCB0aGUgbG93ZXIgcHJpb3JpdHkgLSBpZiB0aGlzIHNlbmRlciB0YXNrIGhhcyB0aGUgbG93ZXIgcHJpb3JpdHkNCisJCXRoZW4gdGhlIHJlY2VpdmVyIHRhc2sgaXMgY3JlYXRlZCBhdCB0aGUgaGlnaGVyIHByaW9yaXR5LiAqLw0KKwkJaWYoIHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICkgPT0gbWJMT1dFUl9QUklPUklUWSApDQorCQl7DQorCQkJLyogSGVyZSBwcnZTaW5nbGVUYXNrVGVzdHMoKSBwZXJmb3JtcyB2YXJpb3VzIHRlc3RzIG9uIGEgbWVzc2FnZSBidWZmZXINCisJCQl0aGF0IHdhcyBjcmVhdGVkIHN0YXRpY2FsbHkuICovDQorCQkJcHJ2U2luZ2xlVGFza1Rlc3RzKCB4TWVzc2FnZUJ1ZmZlciApOw0KKwkJCXhUYXNrQ3JlYXRlKCBwcnZSZWNlaXZlclRhc2ssICJNc2dSZWNlaXZlciIsIG1iU1RBQ0tfU0laRSwgICggdm9pZCAqICkgeE1lc3NhZ2VCdWZmZXIsIG1iSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJeFRhc2tDcmVhdGUoIHBydlJlY2VpdmVyVGFzaywgIk1zZ1JlY2VpdmVyIiwgbWJTVEFDS19TSVpFLCAgKCB2b2lkICogKSB4TWVzc2FnZUJ1ZmZlciwgbWJMT1dFUl9QUklPUklUWSwgTlVMTCApOw0KKwkJfQ0KKw0KKwkJZm9yKCA7OyApDQorCQl7DQorCQkJLyogQ3JlYXRlIGEgc3RyaW5nIGZyb20gYW4gaW5jcmVtZW50aW5nIG51bWJlci4gIFRoZSBsZW5ndGggb2YgdGhlDQorCQkJc3RyaW5nIHdpbGwgaW5jcmVhc2UgYW5kIGRlY3JlYXNlIGFzIHRoZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGluY3JlYXNlcw0KKwkJCXRoZW4gb3ZlcmZsb3dzLiAqLw0KKwkJCW1lbXNldCggY1R4U3RyaW5nLCAweDAwLCBzaXplb2YoIGNUeFN0cmluZyApICk7DQorCQkJc3ByaW50ZiggY1R4U3RyaW5nLCAiJWQiLCAoIGludCApIGlEYXRhVG9TZW5kICk7DQorCQkJeE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBjVHhTdHJpbmcsIHN0cmxlbiggY1R4U3RyaW5nICksIHhUaWNrc1RvV2FpdCApOw0KKw0KKwkJCWlEYXRhVG9TZW5kKys7DQorDQorCQkJaWYoICggaURhdGFUb1NlbmQgJSBpU2VuZHNCZXR3ZWVuSW5jcmVtZW50cyApID09IDAgKQ0KKwkJCXsNCisJCQkJLyogSW5jcmVtZW50IGEgbG9vcCBjb3VudGVyIHNvIGEgY2hlY2sgdGFzayBjYW4gdGVsbCB0aGlzIHRhc2sgaXMNCisJCQkJc3RpbGwgcnVubmluZyBhcyBleHBlY3RlZC4gKi8NCisJCQkJdWxTZW5kZXJMb29wQ291bnRlcnNbIHV4SW5kZXggXSsrOw0KKw0KKwkJCQlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBtYkhJR0hFUl9QUklPUklUWSApDQorCQkJCXsNCisJCQkJCS8qIEFsbG93IG90aGVyIHRhc2tzIHRvIHJ1bi4gKi8NCisJCQkJCXZUYXNrRGVsYXkoIHhTaG9ydERlbGF5ICk7DQorCQkJCX0NCisNCisJCQkJLyogVGhpcyBtZXNzYWdlIGJ1ZmZlciBpcyBqdXN0IGNyZWF0ZWQgYW5kIGRlbGV0ZWQgdG8gZW5zdXJlIG5vDQorCQkJCWlzc3VlcyB3aGVuIGF0dGVtcHRpbmcgdG8gZGVsZXRlIGEgbWVzc2FnZSBidWZmZXIgdGhhdCB3YXMNCisJCQkJY3JlYXRlZCB1c2luZyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuICBUbyBzYXZlIHN0YWNrIHNwYWNlDQorCQkJCXRoZSBidWZmZXIgaXMgc2V0IHRvIHBvaW50IHRvIHRoZSBjVHhTdHJpbmcgYXJyYXkgLSB0aGlzIGlzDQorCQkJCW9rIGJlY2F1c2Ugbm90aGluZyBpcyBhY3R1YWxseSB3cml0dGVuIHRvIHRoZSBtZW1vcnkuICovDQorCQkJCXhUZW1wTWVzc2FnZUJ1ZmZlciA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljKCBzaXplb2YoIGNUeFN0cmluZyApLCAoIHVpbnQ4X3QgKiApIGNUeFN0cmluZywgJnhTdGF0aWNNZXNzYWdlQnVmZmVyICk7DQorCQkJCXZNZXNzYWdlQnVmZmVyRGVsZXRlKCB4VGVtcE1lc3NhZ2VCdWZmZXIgKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorDQorCXN0YXRpYyB2b2lkIHBydlJlY2VpdmVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCisJew0KKwlNZXNzYWdlQnVmZmVySGFuZGxlX3QgKiBjb25zdCBweE1lc3NhZ2VCdWZmZXIgPSAoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCAqICkgcHZQYXJhbWV0ZXJzOw0KKwljaGFyIGNFeHBlY3RlZFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMi1iaXQgbnVtYmVyIGluIEFTQ0lJLiAqLw0KKwljaGFyIGNSZWNlaXZlZFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMi1iaXQgbnVtYmVyIGluIEFTQ0lJLiAqLw0KKwlpbnQzMl90IGlFeHBlY3RlZERhdGEgPSAwOw0KKwljb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCA9IHBkTVNfVE9fVElDS1MoIDVVTCApOw0KKwlzaXplX3QgeFJlY2VpdmVkQnl0ZXM7DQorDQorCQlmb3IoIDs7ICkNCisJCXsNCisJCQkvKiBHZW5lcmF0ZSB0aGUgbmV4dCBleHBlY3RlZCBzdHJpbmcgaW4gdGhlIGNFeHBlY3RlZFN0cmluZyBidWZmZXIuICovDQorCQkJbWVtc2V0KCBjRXhwZWN0ZWRTdHJpbmcsIDB4MDAsIHNpemVvZiggY0V4cGVjdGVkU3RyaW5nICkgKTsNCisJCQlzcHJpbnRmKCBjRXhwZWN0ZWRTdHJpbmcsICIlZCIsICggaW50ICkgaUV4cGVjdGVkRGF0YSApOw0KKw0KKwkJCS8qIFJlY2VpdmUgdGhlIG5leHQgc3RyaW5nIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVyLiAqLw0KKwkJCW1lbXNldCggY1JlY2VpdmVkU3RyaW5nLCAweDAwLCBzaXplb2YoIGNSZWNlaXZlZFN0cmluZyApICk7DQorDQorCQkJZG8NCisJCQl7DQorCQkJCXhSZWNlaXZlZEJ5dGVzID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCBweE1lc3NhZ2VCdWZmZXIsICggdm9pZCAqICkgY1JlY2VpdmVkU3RyaW5nLCBzaXplb2YoIGNFeHBlY3RlZFN0cmluZyApLCB4VGlja3NUb1dhaXQgKTsNCisNCisJCQl9IHdoaWxlKCB4UmVjZWl2ZWRCeXRlcyA9PSAwICk7DQorDQorCQkJLyogRW5zdXJlIHRoZSByZWNlaXZlZCBzdHJpbmcgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgc3RyaW5nLiAqLw0KKwkJCWNvbmZpZ0FTU0VSVCggc3RyY21wKCBjRXhwZWN0ZWRTdHJpbmcsIGNSZWNlaXZlZFN0cmluZyApID09IDAgKTsNCisNCisJCQlpRXhwZWN0ZWREYXRhKys7DQorCQl9DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydkVjaG9DbGllbnQoIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK3NpemVfdCB4U2VuZExlbmd0aCA9IDAsIHV4Ow0KK2NoYXIgKnBjU3RyaW5nVG9TZW5kLCAqcGNTdHJpbmdSZWNlaXZlZCwgY05leHRDaGFyID0gbWJBU0NJSV9TUEFDRTsNCitjb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCA9IHBkTVNfVE9fVElDS1MoIDUwICk7DQorDQorLyogVGhlIHRhc2sncyBwcmlvcml0eSBpcyB1c2VkIGFzIGFuIGluZGV4IGludG8gdGhlIGxvb3AgY291bnRlcnMgdXNlZCB0bw0KK2luZGljYXRlIHRoaXMgdGFzayBpcyBzdGlsbCBydW5uaW5nLiAqLw0KK1VCYXNlVHlwZV90IHV4SW5kZXggPSB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApOw0KKw0KKy8qIFBvaW50ZXJzIHRvIHRoZSBjbGllbnQgYW5kIHNlcnZlciBtZXNzYWdlIGJ1ZmZlcnMgYXJlIHBhc3NlZCBpbnRvIHRoaXMgdGFzaw0KK3VzaW5nIHRoZSB0YXNrJ3MgcGFyYW1ldGVyLiAqLw0KK0VjaG9NZXNzYWdlQnVmZmVyc190ICpweE1lc3NhZ2VCdWZmZXJzID0gKCBFY2hvTWVzc2FnZUJ1ZmZlcnNfdCAqICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIENyZWF0ZSB0aGUgYnVmZmVyIGludG8gd2hpY2ggc3RyaW5ncyB0byBzZW5kIHRvIHRoZSBzZXJ2ZXIgd2lsbCBiZQ0KKwljcmVhdGVkLCBhbmQgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHN0cmluZ3MgZWNob2VkIGJhY2sgZnJvbSB0aGUgc2VydmVyIHdpbGwNCisJYmUgY29waWVkLiAqLw0KKwlwY1N0cmluZ1RvU2VuZCA9ICggY2hhciAqICkgcHZQb3J0TWFsbG9jKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwlwY1N0cmluZ1JlY2VpdmVkID0gKCBjaGFyICogKSBwdlBvcnRNYWxsb2MoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorDQorCWNvbmZpZ0FTU0VSVCggcGNTdHJpbmdUb1NlbmQgKTsNCisJY29uZmlnQVNTRVJUKCBwY1N0cmluZ1JlY2VpdmVkICk7DQorDQorCWZvciggOzsgKQ0KKwl7DQorCQkvKiBHZW5lcmF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBuZXh0IHN0cmluZyB0byBzZW5kLiAqLw0KKwkJeFNlbmRMZW5ndGgrKzsNCisNCisJCS8qIFRoZSBtZXNzYWdlIGJ1ZmZlciBpcyBiZWluZyB1c2VkIHRvIGhvbGQgdmFyaWFibGUgbGVuZ3RoIGRhdGEsIHNvDQorCQllYWNoIGRhdGEgaXRlbSByZXF1aXJlcyBzaXplb2YoIHNpemVfdCApIGJ5dGVzIHRvIGhvbGQgdGhlIGRhdGEncw0KKwkJbGVuZ3RoLCBoZW5jZSB0aGUgc2l6ZW9mKCkgaW4gdGhlIGlmKCkgY29uZGl0aW9uIGJlbG93LiAqLw0KKwkJaWYoIHhTZW5kTGVuZ3RoID4gKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgKSApDQorCQl7DQorCQkJLyogQmFjayB0byBhIHN0cmluZyBsZW5ndGggb2YgMS4gKi8NCisJCQl4U2VuZExlbmd0aCA9IHNpemVvZiggY2hhciApOw0KKw0KKwkJCS8qIE1haW50YWluIGEgY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzIGNvZGUgZXhlY3V0ZXMgc28gYQ0KKwkJCWNoZWNrIHRhc2sgY2FuIGRldGVybWluZSBpZiB0aGlzIHRhc2sgaXMgc3RpbGwgZnVuY3Rpb25pbmcgYXMNCisJCQlleHBlY3RlZCBvciBub3QuICBBcyB0aGVyZSBhcmUgdHdvIGNsaWVudCB0YXNrcywgYW5kIHRoZSBwcmlvcml0aWVzDQorCQkJdXNlZCBhcmUgMCBhbmQgMSwgdGhlIHRhc2sncyBwcmlvcml0eSBpcyB1c2VkIGFzIGFuIGluZGV4IGludG8gdGhlDQorCQkJbG9vcCBjb3VudCBhcnJheS4gKi8NCisJCQl1bEVjaG9Mb29wQ291bnRlcnNbIHV4SW5kZXggXSsrOw0KKwkJfQ0KKw0KKwkJbWVtc2V0KCBwY1N0cmluZ1RvU2VuZCwgMHgwMCwgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJCWZvciggdXggPSAwOyB1eCA8IHhTZW5kTGVuZ3RoOyB1eCsrICkNCisJCXsNCisJCQlwY1N0cmluZ1RvU2VuZFsgdXggXSA9IGNOZXh0Q2hhcjsNCisNCisJCQljTmV4dENoYXIrKzsNCisNCisJCQlpZiggY05leHRDaGFyID4gbWJBU0NJSV9USUxEQSApDQorCQkJew0KKwkJCQljTmV4dENoYXIgPSBtYkFTQ0lJX1NQQUNFOw0KKwkJCX0NCisJCX0NCisNCisJCS8qIFNlbmQgdGhlIGdlbmVyYXRlZCBzdHJpbmcgdG8gdGhlIGJ1ZmZlci4gKi8NCisJCWRvDQorCQl7DQorCQkJdXggPSB4TWVzc2FnZUJ1ZmZlclNlbmQoIHB4TWVzc2FnZUJ1ZmZlcnMtPnhFY2hvQ2xpZW50QnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLCB4U2VuZExlbmd0aCwgeFRpY2tzVG9XYWl0ICk7DQorDQorCQkJaWYoIHV4ID09IDAgKQ0KKwkJCXsNCisJCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJCX0NCisNCisJCX0gd2hpbGUoIHV4ID09IDAgKTsNCisNCisJCS8qIFdhaXQgZm9yIHRoZSBzdHJpbmcgdG8gYmUgZWNob2VkIGJhY2suICovDQorCQltZW1zZXQoIHBjU3RyaW5nUmVjZWl2ZWQsIDB4MDAsIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCQl4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHB4TWVzc2FnZUJ1ZmZlcnMtPnhFY2hvU2VydmVyQnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nUmVjZWl2ZWQsIHhTZW5kTGVuZ3RoLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCQljb25maWdBU1NFUlQoIHN0cmNtcCggcGNTdHJpbmdUb1NlbmQsIHBjU3RyaW5nUmVjZWl2ZWQgKSA9PSAwICk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2RWNob1NlcnZlciggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhUZW1wTWVzc2FnZUJ1ZmZlcjsNCitzaXplX3QgeFJlY2VpdmVkTGVuZ3RoOw0KK2NoYXIgKnBjUmVjZWl2ZWRTdHJpbmc7DQorRWNob01lc3NhZ2VCdWZmZXJzX3QgeE1lc3NhZ2VCdWZmZXJzOw0KK1RpY2tUeXBlX3QgeFRpbWVPbkVudGVyaW5nOw0KK2NvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9CbG9jayA9IHBkTVNfVE9fVElDS1MoIDI1MFVMICk7DQorDQorCS8qIFByZXZlbnQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogQ3JlYXRlIHRoZSBtZXNzYWdlIGJ1ZmZlciB1c2VkIHRvIHNlbmQgZGF0YSBmcm9tIHRoZSBjbGllbnQgdG8gdGhlIHNlcnZlciwNCisJYW5kIHRoZSBtZXNzYWdlIGJ1ZmZlciB1c2VkIHRvIGVjaG8gdGhlIGRhdGEgZnJvbSB0aGUgc2VydmVyIGJhY2sgdG8gdGhlDQorCWNsaWVudC4gKi8NCisJeE1lc3NhZ2VCdWZmZXJzLnhFY2hvQ2xpZW50QnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIG1iTUVTU0FHRV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCXhNZXNzYWdlQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhNZXNzYWdlQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciApOw0KKw0KKwkvKiBDcmVhdGUgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHJlY2VpdmVkIHN0cmluZ3Mgd2lsbCBiZSBjb3BpZWQuICovDQorCXBjUmVjZWl2ZWRTdHJpbmcgPSAoIGNoYXIgKiApIHB2UG9ydE1hbGxvYyggbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJY29uZmlnQVNTRVJUKCBwY1JlY2VpdmVkU3RyaW5nICk7DQorDQorCS8qIERvbid0IGV4cGVjdCB0byByZWNlaXZlIGFueXRoaW5nIHlldCEgKi8NCisJeFRpbWVPbkVudGVyaW5nID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJeFJlY2VpdmVkTGVuZ3RoID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMsIHhUaWNrc1RvQmxvY2sgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUYXNrR2V0VGlja0NvdW50KCkgLSB4VGltZU9uRW50ZXJpbmcgKSA+PSB4VGlja3NUb0Jsb2NrICk7DQorCWNvbmZpZ0FTU0VSVCggeFJlY2VpdmVkTGVuZ3RoID09IDAgKTsNCisJKCB2b2lkICkgeFRpbWVPbkVudGVyaW5nOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKw0KKwkvKiBOb3cgdGhlIG1lc3NhZ2UgYnVmZmVycyBoYXZlIGJlZW4gY3JlYXRlZCB0aGUgZWNobyBjbGllbnQgdGFzayBjYW4gYmUNCisJY3JlYXRlZC4gIElmIHRoaXMgc2VydmVyIHRhc2sgaGFzIHRoZSBoaWdoZXIgcHJpb3JpdHkgdGhlbiB0aGUgY2xpZW50IHRhc2sNCisJaXMgY3JlYXRlZCBhdCB0aGUgbG93ZXIgcHJpb3JpdHkgLSBpZiB0aGlzIHNlcnZlciB0YXNrIGhhcyB0aGUgbG93ZXINCisJcHJpb3JpdHkgdGhlbiB0aGUgY2xpZW50IHRhc2sgaXMgY3JlYXRlZCBhdCB0aGUgaGlnaGVyIHByaW9yaXR5LiAqLw0KKwlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBtYkxPV0VSX1BSSU9SSVRZICkNCisJew0KKwkJeFRhc2tDcmVhdGUoIHBydkVjaG9DbGllbnQsICJFY2hvQ2xpZW50IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAgKCB2b2lkICogKSAmeE1lc3NhZ2VCdWZmZXJzLCBtYkhJR0hFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogSGVyZSBwcnZTaW5nbGVUYXNrVGVzdHMoKSBwZXJmb3JtcyB2YXJpb3VzIHRlc3RzIG9uIGEgbWVzc2FnZSBidWZmZXINCisJCXRoYXQgd2FzIGNyZWF0ZWQgZHluYW1pY2FsbHkuICovDQorCQlwcnZTaW5nbGVUYXNrVGVzdHMoIHhNZXNzYWdlQnVmZmVycy54RWNob0NsaWVudEJ1ZmZlciApOw0KKwkJeFRhc2tDcmVhdGUoIHBydkVjaG9DbGllbnQsICJFY2hvQ2xpZW50IiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCAoIHZvaWQgKiApICZ4TWVzc2FnZUJ1ZmZlcnMsIG1iTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJfQ0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJbWVtc2V0KCBwY1JlY2VpdmVkU3RyaW5nLCAweDAwLCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwkJLyogSGFzIGFueSBkYXRhIGJlZW4gc2VudCBieSB0aGUgY2xpZW50PyAqLw0KKwkJeFJlY2VpdmVkTGVuZ3RoID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCB4TWVzc2FnZUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgbWJNRVNTQUdFX0JVRkZFUl9MRU5HVEhfQllURVMsIHhUaWNrc1RvQmxvY2sgKTsNCisNCisJCS8qIFNob3VsZCBhbHdheXMgcmVjZWl2ZSBkYXRhIGFzIGEgZGVsYXkgd2FzIHVzZWQuICovDQorCQljb25maWdBU1NFUlQoIHhSZWNlaXZlZExlbmd0aCA+IDAgKTsNCisNCisJCS8qIEVjaG8gdGhlIHJlY2VpdmVkIGRhdGEgYmFjayB0byB0aGUgY2xpZW50LiAqLw0KKwkJeE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlcnMueEVjaG9TZXJ2ZXJCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgeFJlY2VpdmVkTGVuZ3RoLCBwb3J0TUFYX0RFTEFZICk7DQorDQorCQkvKiBUaGlzIG1lc3NhZ2UgYnVmZmVyIGlzIGp1c3QgY3JlYXRlZCBhbmQgZGVsZXRlZCB0byBlbnN1cmUgbm8gbWVtb3J5DQorCQlsZWFrcy4gKi8NCisJCXhUZW1wTWVzc2FnZUJ1ZmZlciA9IHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCBtYk1FU1NBR0VfQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwkJdk1lc3NhZ2VCdWZmZXJEZWxldGUoIHhUZW1wTWVzc2FnZUJ1ZmZlciApOw0KKwl9DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeEFyZU1lc3NhZ2VCdWZmZXJUYXNrc1N0aWxsUnVubmluZyggdm9pZCApDQorew0KK3N0YXRpYyB1aW50MzJfdCB1bExhc3RFY2hvTG9vcENvdW50ZXJzWyBtYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgXSA9IHsgMCB9Ow0KK3N0YXRpYyB1aW50MzJfdCB1bExhc3ROb25CbG9ja2luZ1J4Q291bnRlciA9IDA7DQorQmFzZVR5cGVfdCB4UmV0dXJuID0gcGRQQVNTLCB4Ow0KKw0KKwlmb3IoIHggPSAwOyB4IDwgbWJOVU1CRVJfT0ZfRUNIT19DTElFTlRTOyB4KysgKQ0KKwl7DQorCQlpZiggdWxMYXN0RWNob0xvb3BDb3VudGVyc1sgeCBdID09IHVsRWNob0xvb3BDb3VudGVyc1sgeCBdICkNCisJCXsNCisJCQl4UmV0dXJuID0gcGRGQUlMOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXVsTGFzdEVjaG9Mb29wQ291bnRlcnNbIHggXSA9IHVsRWNob0xvb3BDb3VudGVyc1sgeCBdOw0KKwkJfQ0KKwl9DQorDQorCWlmKCB1bE5vbkJsb2NraW5nUnhDb3VudGVyID09IHVsTGFzdE5vbkJsb2NraW5nUnhDb3VudGVyICkNCisJew0KKwkJeFJldHVybiA9IHBkRkFJTDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXVsTGFzdE5vbkJsb2NraW5nUnhDb3VudGVyID0gdWxOb25CbG9ja2luZ1J4Q291bnRlcjsNCisJfQ0KKw0KKwkjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSApDQorCXsNCisJCXN0YXRpYyB1aW50MzJfdCB1bExhc3RTZW5kZXJMb29wQ291bnRlcnNbIG1iTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdID0geyAwIH07DQorDQorCQlmb3IoIHggPSAwOyB4IDwgbWJOVU1CRVJfT0ZfU0VOREVSX1RBU0tTOyB4KysgKQ0KKwkJew0KKwkJCWlmKCB1bExhc3RTZW5kZXJMb29wQ291bnRlcnNbIHggXSA9PSB1bFNlbmRlckxvb3BDb3VudGVyc1sgeCBdICkNCisJCQl7DQorCQkJCXhSZXR1cm4gPSBwZEZBSUw7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCXVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgeCBdID0gdWxTZW5kZXJMb29wQ291bnRlcnNbIHggXTsNCisJCQl9DQorCQl9DQorCX0NCisJI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUG9sbFEuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUG9sbFEuYwppbmRleCBiNjk2YjFlLi5kZDkxMzI2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1BvbGxRLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9Qb2xsUS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgdmVyc2lvbiBvZiBQb2xsUS4gYyBpcyBmb3IgdXNlIG9uIHN5c3RlbXMgdGhhdCBoYXZlIGxpbWl0ZWQgc3RhY2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1FQZWVrLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1FQZWVrLmMKaW5kZXggYjA2MmE3OS4uYjk3ZGJiNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RUGVlay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUVBlZWsuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMKaW5kZXggNmE1YTQ3Yy4uMzUxMTg3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZU92ZXJ3cml0ZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVPdmVyd3JpdGUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBCYXNpYyB0YXNrIHRvIGRlbW9uc3RyYXRlIHRoZSB4UXVldWVPdmVyd3JpdGUoKSBmdW5jdGlvbi4gIFNlZSB0aGUgY29tbWVudHMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0LmMKaW5kZXggMGYwM2Q2NS4uYjgyOTIzYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZVNldC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUZXN0cyB0aGUgdXNlIG9mIHF1ZXVlIHNldHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZVNldFBvbGxpbmcuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvUXVldWVTZXRQb2xsaW5nLmMKaW5kZXggNDI0MjZhMi4uN2JiMjg4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9RdWV1ZVNldFBvbGxpbmcuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1F1ZXVlU2V0UG9sbGluZy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRlc3RzIHRoZSB1c2Ugb2YgcXVldWUgc2V0cy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1N0YXRpY0FsbG9jYXRpb24uYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RhdGljQWxsb2NhdGlvbi5jCmluZGV4IDdlZTk0NmUuLjRjMGEwYjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RhdGljQWxsb2NhdGlvbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RhdGljQWxsb2NhdGlvbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RyZWFtQnVmZmVyRGVtby5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9TdHJlYW1CdWZmZXJEZW1vLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGFlOWFiYwotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RyZWFtQnVmZmVyRGVtby5jCkBAIC0wLDAgKzEsMTAwMyBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAic3RkaW8uaCINCisjaW5jbHVkZSAic3RyaW5nLmgiDQorDQorLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQorI2luY2x1ZGUgInRhc2suaCINCisjaW5jbHVkZSAic3RyZWFtX2J1ZmZlci5oIg0KKw0KKy8qIERlbW8gYXBwIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJEZW1vLmgiDQorDQorLyogVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdG9yYWdlIGluIHRoZSBzdHJlYW0gYnVmZmVycyB1c2VkIGluIHRoaXMgdGVzdC4gKi8NCisjZGVmaW5lIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMJKCAoIHNpemVfdCApIDMwICkNCisNCisvKiBTdGFydCBhbmQgZW5kIEFTQ0lJIGNoYXJhY3RlcnMgdXNlZCBpbiBkYXRhIHNlbnQgdG8gdGhlIGJ1ZmZlcnMuICovDQorI2RlZmluZSBzYkFTQ0lJX1NQQUNFCQkJCQkzMg0KKyNkZWZpbmUgc2JBU0NJSV9USUxEQQkJCQkJMTI2DQorDQorLyogRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHRhc2tzIHRvIGNyZWF0ZSBpbiB0aGlzIHRlc3QgYW5kIGRlbW8uICovDQorI2RlZmluZSBzYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMJKCAyICkNCisjZGVmaW5lIHNiTlVNQkVSX09GX1NFTkRFUl9UQVNLUwkoIDIgKQ0KKw0KKy8qIFByaW9yaXR5IG9mIHRoZSB0ZXN0IHRhc2tzLiAgVGhlIHNlbmQgYW5kIHJlY2VpdmUgZ28gZnJvbSBsb3cgdG8gaGlnaA0KK3ByaW9yaXR5IHRhc2tzLCBhbmQgZnJvbSBoaWdoIHRvIGxvdyBwcmlvcml0eSB0YXNrcy4gKi8NCisjZGVmaW5lIHNiTE9XRVJfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKQ0KKyNkZWZpbmUgc2JISUdIRVJfUFJJT1JJVFkJCQkoIHRza0lETEVfUFJJT1JJVFkgKyAxICkNCisNCisvKiBCbG9jayB0aW1lcyB1c2VkIHdoZW4gc2VuZGluZyBhbmQgcmVjZWl2aW5nIGZyb20gdGhlIHN0cmVhbSBidWZmZXJzLiAqLw0KKyNkZWZpbmUgc2JSWF9UWF9CTE9DS19USU1FCQkJcGRNU19UT19USUNLUyggMTI1VUwgKQ0KKw0KKy8qIEEgYmxvY2sgdGltZSBvZiAwIG1lYW5zICJkb24ndCBibG9jayIuICovDQorI2RlZmluZSBzYkRPTlRfQkxPQ0sJCQkJKCAwICkNCisNCisvKiBUaGUgdHJpZ2dlciBsZXZlbCBzZXRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIHByZXNlbnQgaW4gdGhlDQorc3RyZWFtIGJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgYmxvY2tlZCBvbiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBtb3ZlZCBvdXQgb2YNCit0aGUgQmxvY2tlZCBzdGF0ZSBzbyBpdCBjYW4gcmVhZCB0aGUgYnl0ZXMuICovDQorI2RlZmluZSBzYlRSSUdHRVJfTEVWRUxfMQkJCSggMSApDQorDQorLyogVGhlIHNpemUgb2YgdGhlIHN0YWNrIGFsbG9jYXRlZCB0byB0aGUgdGFza3MgdGhhdCBydW4gYXMgcGFydCBvZiB0aGlzIGRlbW8vDQordGVzdC4gIFRoZSBzdGFjayBzaXplIGlzIG92ZXIgZ2VuZXJvdXMgaW4gbW9zdCBjYXNlcy4gKi8NCisjZGVmaW5lIHNiU1RBQ0tfU0laRQkJCQkoIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSArICggY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFID4+IDEgKSApDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyoNCisgKiBQZXJmb3JtcyB2YXJpb3VzIHRlc3RzIHRoYXQgZG8gbm90IHJlcXVpcmUgbXVsdGlwbGUgdGFza3MgdG8gaW50ZXJhY3QuDQorICovDQorc3RhdGljIHZvaWQgcHJ2U2luZ2xlVGFza1Rlc3RzKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorDQorLyoNCisgKiBUZXN0cyBzZW5kaW5nIGFuZCByZWNlaXZpbmcgdmFyaW91cyBsZW5ndGhzIG9mIGRhdGEgdmlhIGEgc3RyZWFtIGJ1ZmZlci4NCisgKiBUaGUgZWNobyBjbGllbnQgc2VuZHMgdGhlIGRhdGEgdG8gdGhlIGVjaG8gc2VydmVyLCB3aGljaCB0aGVuIHNlbmRzIHRoZQ0KKyAqIGRhdGEgYmFjayB0byB0aGUgZWNobyBjbGllbnQsIHdoaWNoIGNoZWNrcyBpdCByZWNlaXZlcyBleGFjdGx5IHdoYXQgaXQNCisgKiBzZW50Lg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkVjaG9DbGllbnQoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KK3N0YXRpYyB2b2lkIHBydkVjaG9TZXJ2ZXIoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogVGFza3MgdGhhdCBzZW5kIGFuZCByZWNlaXZlIHRvIGEgc3RyZWFtIGJ1ZmZlciBhdCBhIGxvdyBwcmlvcml0eSBhbmQgd2l0aG91dA0KKyAqIGJsb2NraW5nLCBzbyB0aGUgc2VuZCBhbmQgcmVjZWl2ZSBmdW5jdGlvbnMgaW50ZXJsZWF2ZSBpbiB0aW1lIGFzIHRoZSB0YXNrcw0KKyAqIGFyZSBzd2l0Y2hlZCBpbiBhbmQgb3V0Lg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydk5vbkJsb2NraW5nUmVjZWl2ZXJUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCitzdGF0aWMgdm9pZCBwcnZOb25CbG9ja2luZ1NlbmRlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKy8qDQorICogQSB0YXNrIHRoYXQgY3JlYXRlcyBhIHN0cmVhbSBidWZmZXIgd2l0aCBhIHNwZWNpZmljIHRyaWdnZXIgbGV2ZWwsIHRoZW4NCisgKiByZWNlaXZlcyBhIHN0cmluZyBmcm9tIGFuIGludGVycnVwdCAodGhlIFJUT1MgdGljayBob29rKSBieXRlIGJ5IGJ5dGUgdG8NCisgKiBjaGVjayBpdCBpcyBvbmx5IHVuYmxvY2tlZCB3aGVuIHRoZSBzcGVjaWZpZWQgdHJpZ2dlciBsZXZlbCBpcyByZWFjaGVkLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkludGVycnVwdFRyaWdnZXJMZXZlbFRlc3QoIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorCS8qIFRoaXMgZmlsZSB0ZXN0cyBib3RoIHN0YXRpY2FsbHkgYW5kIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBzdHJlYW0gYnVmZmVycy4NCisJQWxsb2NhdGUgdGhlIHN0cnVjdHVyZXMgYW5kIGJ1ZmZlcnMgdG8gYmUgdXNlZCBieSB0aGUgc3RhdGljYWxseSBhbGxvY2F0ZWQNCisJb2JqZWN0cywgd2hpY2ggZ2V0IHVzZWQgaW4gdGhlIGVjaG8gdGVzdHMuICovDQorCXN0YXRpYyB2b2lkIHBydlJlY2VpdmVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorCXN0YXRpYyB2b2lkIHBydlNlbmRlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApOw0KKw0KKwlzdGF0aWMgU3RhdGljU3RyZWFtQnVmZmVyX3QgeFN0YXRpY1N0cmVhbUJ1ZmZlcnNbIHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdOw0KKwlzdGF0aWMgdWludDhfdCB1Y0J1ZmZlclN0b3JhZ2VbIHNiTlVNQkVSX09GX1NFTkRFUl9UQVNLUyBdWyBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICsgMSBdOw0KKwlzdGF0aWMgdWludDMyX3QgdWxTZW5kZXJMb29wQ291bnRlcnNbIHNiTlVNQkVSX09GX1NFTkRFUl9UQVNLUyBdID0geyAwIH07DQorI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUaGUgYnVmZmVycyB1c2VkIGJ5IHRoZSBlY2hvIGNsaWVudCBhbmQgc2VydmVyIHRhc2tzLiAqLw0KK3R5cGVkZWYgc3RydWN0IEVDSE9fU1RSRUFNX0JVRkZFUlMNCit7DQorCS8qIEhhbmRsZXMgdG8gdGhlIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRlc2NyaWJlIHRoZSBzdHJlYW0gYnVmZmVycy4gKi8NCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeEVjaG9DbGllbnRCdWZmZXI7DQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90IHhFY2hvU2VydmVyQnVmZmVyOw0KK30gRWNob1N0cmVhbUJ1ZmZlcnNfdDsNCitzdGF0aWMgdm9sYXRpbGUgdWludDMyX3QgdWxFY2hvTG9vcENvdW50ZXJzWyBzYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgXSA9IHsgMCB9Ow0KKw0KKy8qIFRoZSBub24tYmxvY2tpbmcgdGFza3MgbW9uaXRvciB0aGVpciBvcGVyYXRpb24sIGFuZCBpZiBubyBlcnJvcnMgaGF2ZSBiZWVuDQorZm91bmQsIGluY3JlbWVudCB1bE5vbkJsb2NraW5nUnhDb3VudGVyLiAgeEFyZVN0cmVhbUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCkNCit0aGVuIGNoZWNrcyB1bE5vbkJsb2NraW5nUnhDb3VudGVyIGFuZCBvbmx5IHJldHVybnMgcGRQQVNTIGlmDQordWxOb25CbG9ja2luZ1J4Q291bnRlciBpcyBzdGlsbCBpbmNyZW1lbnRpbmcuICovDQorc3RhdGljIHZvbGF0aWxlIHVpbnQzMl90IHVsTm9uQmxvY2tpbmdSeENvdW50ZXIgPSAwOw0KKw0KKy8qIFRoZSB0YXNrIHRoYXQgcmVjZWl2ZXMgY2hhcmFjdGVycyBmcm9tIHRoZSB0aWNrIGludGVycnVwdCBpbiBvcmRlciB0byB0ZXN0DQorZGlmZmVyZW50IHRyaWdnZXIgbGV2ZWxzIG1vbml0b3JzIGl0cyBvd24gYmVoYXZpb3VyLiAgSWYgaXQgaGFzIG5vdCBkZXRlY3RlZCBhbnkNCitlcnJvciB0aGVuIGl0IGluY3JlbWVudHMgdWxJbnRlcnJ1cHRUcmlnZ2VyQ291bnRlciB0byBpbmRpY2F0ZSB0byB0aGUgY2hlY2sgdGFzaw0KK3RoYXQgaXQgaXMgc3RpbGwgb3BlcmF0aW5nIGNvcnJlY3RseS4gKi8NCitzdGF0aWMgdm9sYXRpbGUgdWludDMyX3QgdWxJbnRlcnJ1cHRUcmlnZ2VyQ291bnRlciA9IDBVTDsNCisNCisvKiBUaGUgc3RyZWFtIGJ1ZmZlciB1c2VkIGZyb20gdGhlIHRpY2sgaW50ZXJydXB0LiAgVGhpcyBzZW5kcyBvbmUgYnl0ZSBhdCBhIHRpbWUNCit0byBhIHRlc3QgdGFzayB0byB0ZXN0IHRoZSB0cmlnZ2VyIGxldmVsIG9wZXJhdGlvbi4gIFRoZSB2YXJpYWJsZSBpcyBzZXQgdG8gTlVMTA0KK2luIGJldHdlZW4gdGVzdCBydW5zLiAqLw0KK3N0YXRpYyB2b2xhdGlsZSBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4SW50ZXJydXB0U3RyZWFtQnVmZmVyID0gTlVMTDsNCisNCisvKiBUaGUgZGF0YSBzZW50IGZyb20gdGhlIHRpY2sgaW50ZXJydXB0IHRvIHRoZSB0YXNrIHRoYXQgdGVzdHMgdGhlIHRyaWdnZXINCitsZXZlbCBmdW5jdGlvbmFsaXR5LiAqLw0KK3N0YXRpYyBjb25zdCBjaGFyICpwY0RhdGFTZW50RnJvbUludGVycnVwdCA9ICIxMjM0NTY3OCI7DQorDQorLyogRGF0YSB0aGF0IGlzIGxvbmdlciB0aGFuIHRoZSBidWZmZXIgdGhhdCBpcyBzZW50IHRvIHRoZSBidWZmZXJzIGFzIGEgc3RyZWFtDQorb2YgYnl0ZXMuICBQYXJ0cyBvZiB3aGljaCBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGJ1ZmZlciB0byB0ZXN0IHdyaXRpbmcNCitkaWZmZXJlbnQgbGVuZ3RocyBhdCBkaWZmZXJlbnQgb2Zmc2V0cywgdG8gbWFueSBieXRlcywgcGFydCBzdHJlYW1zLCBzdHJlYW1zDQordGhhdCB3cmFwLCBldGMuLiAgVHdvIG1lc3NhZ2VzIGFyZSBkZWZpbmVkIHRvIGVuc3VyZSBsZWZ0IG92ZXIgZGF0YSBpcyBub3QNCithY2NpZGVudGFsbHkgcmVhZCBvdXQgb2YgdGhlIGJ1ZmZlci4gKi8NCitzdGF0aWMgY29uc3QgY2hhciAqcGM1NUJ5dGVTdHJpbmcgPSAiT25lIHR3byB0aHJlZSBmb3VyIGZpdmUgc2l4IHNldmVuIGVpZ2h0IG5pbmUgdGVuIGVsZXZlbiI7DQorc3RhdGljIGNvbnN0IGNoYXIgKnBjNTRCeXRlU3RyaW5nID0gIjAxMjM0NTY3ODkxYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUSI7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2U3RhcnRTdHJlYW1CdWZmZXJUYXNrcyggdm9pZCApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorDQorCS8qIFRoZSBlY2hvIHNlcnZlcnMgc2V0cyB1cCB0aGUgc3RyZWFtIGJ1ZmZlcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBlY2hvDQorCWNsaWVudCB0YXNrcy4gIE9uZSBzZXQgb2YgdGFza3MgaGFzIHRoZSBzZXJ2ZXIgYXMgdGhlIGhpZ2hlciBwcmlvcml0eSwgYW5kDQorCXRoZSBvdGhlciBoYXMgdGhlIGNsaWVudCBhcyB0aGUgaGlnaGVyIHByaW9yaXR5LiAqLw0KKwl4VGFza0NyZWF0ZSggcHJ2RWNob1NlcnZlciwgIjFTdHJFY2hvU2VydmVyIiwgc2JTVEFDS19TSVpFLCBOVUxMLCBzYkhJR0hFUl9QUklPUklUWSwgTlVMTCApOw0KKwl4VGFza0NyZWF0ZSggcHJ2RWNob1NlcnZlciwgIjJTdHJFY2hvU2VydmVyIiwgc2JTVEFDS19TSVpFLCBOVUxMLCBzYkxPV0VSX1BSSU9SSVRZLCBOVUxMICk7DQorDQorCS8qIFRoZSBub24gYmxvY2tpbmcgdGFza3MgcnVuIGNvbnRpbnVvdXNseSBhbmQgd2lsbCBpbnRlcmxlYXZlIHdpdGggZWFjaA0KKwlvdGhlciwgc28gbXVzdCBiZSBjcmVhdGVkIGF0IHRoZSBsb3dlc3QgcHJpb3JpdHkuICBUaGUgc3RyZWFtIGJ1ZmZlciB0aGV5DQorCXVzZSBpcyBjcmVhdGVkIGFuZCBwYXNzZWQgaW4gdXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorCXhTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBzYlRSSUdHRVJfTEVWRUxfMSApOw0KKwl4VGFza0NyZWF0ZSggcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2ssICJTdHJOb25CbGtSeCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgKCB2b2lkICogKSB4U3RyZWFtQnVmZmVyLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZOb25CbG9ja2luZ1NlbmRlclRhc2ssICJTdHJOb25CbGtUeCIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgKCB2b2lkICogKSB4U3RyZWFtQnVmZmVyLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorDQorCS8qIFRoZSB0YXNrIHRoYXQgcmVjZWl2ZXMgYnl0ZXMgZnJvbSBhbiBpbnRlcnJ1cHQgdG8gdGVzdCB0aGF0IGl0IHVuYmxvY2tzDQorCWF0IGEgc3BlY2lmaWMgdHJpZ2dlciBsZXZlbCBtdXN0IHJ1biBhdCBhIGhpZ2ggcHJpb3JpdHkgdG8gbWluaW1pc2UgdGhlIHJpc2sNCisJb2YgaXQgcmVjZWl2aW5nIG1vcmUgY2hhcmFjdGVycyBiZWZvcmUgaXQgY2FuIGV4ZWN1dGUgYWdhaW4gYWZ0ZXIgYmVpbmcNCisJdW5ibG9ja2VkLiAqLw0KKwl4VGFza0NyZWF0ZSggcHJ2SW50ZXJydXB0VHJpZ2dlckxldmVsVGVzdCwgIlN0clRyaWciLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSwgTlVMTCApOw0KKw0KKwkjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSAgKQ0KKwl7DQorCQkvKiBUaGUgc2VuZGVyIHRhc2tzIHNldCB1cCB0aGUgc3RyZWFtIGJ1ZmZlcnMgYmVmb3JlIGNyZWF0aW5nIHRoZQ0KKwkJcmVjZWl2ZXIgdGFza3MuICBQcmlvcml0aWVzIG11c3QgYmUgMCBhbmQgMSBhcyB0aGUgcHJpb3JpdHkgaXMgdXNlZCB0bw0KKwkJaW5kZXggaW50byB0aGUgeFN0YXRpY1N0cmVhbUJ1ZmZlcnMgYW5kIHVjQnVmZmVyU3RvcmFnZSBhcnJheXMuICovDQorCQl4VGFza0NyZWF0ZSggcHJ2U2VuZGVyVGFzaywgIlN0cjFTZW5kZXIiLCBzYlNUQUNLX1NJWkUsIE5VTEwsIHNiSElHSEVSX1BSSU9SSVRZLCBOVUxMICk7DQorCQl4VGFza0NyZWF0ZSggcHJ2U2VuZGVyVGFzaywgIlN0cjJTZW5kZXIiLCBzYlNUQUNLX1NJWkUsIE5VTEwsIHNiTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJfQ0KKwkjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZTaW5nbGVUYXNrVGVzdHMoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitzaXplX3QgeFJldHVybmVkLCB4SXRlbSwgeEV4cGVjdGVkU3BhY2U7DQorY29uc3Qgc2l6ZV90IHhNYXg2Qnl0ZU1lc3NhZ2VzID0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAvIDY7DQorY29uc3Qgc2l6ZV90IHg2Qnl0ZUxlbmd0aCA9IDYsIHgxN0J5dGVMZW5ndGggPSAxNywgeEZ1bGxCdWZmZXJTaXplID0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAqICggc2l6ZV90ICkgMjsNCit1aW50OF90ICpwdWNGdWxsQnVmZmVyLCAqcHVjRGF0YSwgKnB1Y1JlYWREYXRhOw0KK1RpY2tUeXBlX3QgeFRpbWVCZWZvcmVDYWxsLCB4VGltZUFmdGVyQ2FsbDsNCitjb25zdCBUaWNrVHlwZV90IHhCbG9ja1RpbWUgPSBwZE1TX1RPX1RJQ0tTKCAxNSApLCB4QWxsb3dhYmxlTWFyZ2luID0gcGRNU19UT19USUNLUyggMyApLCB4TWluaW1hbEJsb2NrVGltZSA9IDI7DQorVUJhc2VUeXBlX3QgdXhPcmlnaW5hbFByaW9yaXR5Ow0KKw0KKwkvKiBSZW1vdmUgd2FybmluZyBpbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB4QWxsb3dhYmxlTWFyZ2luOw0KKw0KKwkvKiBUbyBtaW5pbWlzZSBzdGFjayBhbmQgaGVhcCB1c2FnZSBhIGZ1bGwgc2l6ZSBidWZmZXIgaXMgYWxsb2NhdGVkIGZyb20gdGhlDQorCWhlYXAsIHRoZW4gYnVmZmVycyB3aGljaCBob2xkIHNtYWxsZXIgYW1vdW50cyBvZiBkYXRhIGFyZSBvdmVybGF5ZWQgd2l0aCB0aGUNCisJbGFyZ2VyIGJ1ZmZlciAtIGp1c3QgbWFrZSBzdXJlIG5vdCB0byB1c2UgYm90aCBhdCBvbmNlISAqLw0KKwlwdWNGdWxsQnVmZmVyID0gcHZQb3J0TWFsbG9jKCB4RnVsbEJ1ZmZlclNpemUgKTsNCisJY29uZmlnQVNTRVJUKCBwdWNGdWxsQnVmZmVyICk7DQorDQorCXB1Y0RhdGEgPSBwdWNGdWxsQnVmZmVyOw0KKwlwdWNSZWFkRGF0YSA9IHB1Y0RhdGEgKyB4MTdCeXRlTGVuZ3RoOw0KKw0KKwkvKiBOb3RoaW5nIGhhcyBiZWVuIGFkZGVkIG9yIHJlbW92ZWQgeWV0LCBzbyBleHBlY3QgdGhlIGZyZWUgc3BhY2UgdG8gYmUNCisJZXhhY3RseSBhcyBjcmVhdGVkLiAqLw0KKwl4RXhwZWN0ZWRTcGFjZSA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJY29uZmlnQVNTRVJUKCB4RXhwZWN0ZWRTcGFjZSA9PSBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisNCisNCisJLyogVGhlIGJ1ZmZlciBpcyAzMCBieXRlcyBsb25nLiAgNiA1IGJ5dGUgbWVzc2FnZXMgc2hvdWxkIGZpdCBiZWZvcmUgdGhlDQorCWJ1ZmZlciBpcyBjb21wbGV0ZWx5IGZ1bGwuICovDQorCWZvciggeEl0ZW0gPSAwOyB4SXRlbSA8IHhNYXg2Qnl0ZU1lc3NhZ2VzOyB4SXRlbSsrICkNCisJew0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKw0KKwkJLyogR2VuZXJhdGUgcmVjb2duaXNhYmxlIGRhdGEgdG8gd3JpdGUgdG8gdGhlIGJ1ZmZlci4gIFRoaXMgaXMganVzdA0KKwkJYXNjaWkgY2hhcmFjdGVycyB0aGF0IHNob3dzIHdoaWNoIGxvb3AgaXRlcmF0aW9uIHRoZSBkYXRhIHdhcyB3cml0dGVuDQorCQlpbi4gVGhlICdGcm9tSVNSJyB2ZXJzaW9uIGlzIHVzZWQgdG8gZ2l2ZSBpdCBzb21lIGV4ZXJjaXNlIGFzIGEgYmxvY2sNCisJCXRpbWUgaXMgbm90IHVzZWQsIHNvIHRoZSBjYWxsIG11c3QgYmUgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBzbyBpdA0KKwkJcnVucyB3aXRoIHBvcnRzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBpbnRlcnJ1cHQgbmVzdGluZyAoYW5kIHRoZXJlZm9yZQ0KKwkJZG9uJ3QgaGF2ZSBpbnRlcnJ1cHQgc2FmZSBjcml0aWNhbCBzZWN0aW9ucykuICovDQorCQltZW1zZXQoICggdm9pZCAqICkgcHVjRGF0YSwgKCAoIGludCApICcwJyApICsgKCBpbnQgKSB4SXRlbSwgeDZCeXRlTGVuZ3RoICk7DQorCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisJCXsNCisJCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjRGF0YSwgeDZCeXRlTGVuZ3RoLCBOVUxMICk7DQorCQl9DQorCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0geDZCeXRlTGVuZ3RoICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQorDQorCQkvKiBUaGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciB3aWxsIGhhdmUgcmVkdWNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXIgZGF0YQ0KKwkJd3JpdHRlbiBpbnRvIHRoZSBidWZmZXIuICovDQorCQl4RXhwZWN0ZWRTcGFjZSAtPSB4NkJ5dGVMZW5ndGg7DQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4RXhwZWN0ZWRTcGFjZSApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQkvKiArMSBhcyBpdCBpcyB6ZXJvIGluZGV4ZWQuICovDQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAoICggeEl0ZW0gKyAxICkgKiB4NkJ5dGVMZW5ndGggKSApOw0KKwkJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwl9DQorDQorCS8qIE5vdyB0aGUgYnVmZmVyIHNob3VsZCBiZSBmdWxsLCBhbmQgYXR0ZW1wdGluZyB0byBhZGQgYW55dGhpbmcgd2lsbCBzaG91bGQNCisJZmFpbC4gKi8NCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y0RhdGEsIHNpemVvZiggcHVjRGF0YVsgMCBdICksIHNiRE9OVF9CTE9DSyApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisNCisJLyogQWRkaW5nIHdpdGggYSB0aW1lb3V0IHNob3VsZCBhbHNvIGZhaWwgYWZ0ZXIgdGhlIGFwcHJvcHJpYXRlIHRpbWUuICBUaGUNCisJcHJpb3JpdHkgaXMgdGVtcG9yYXJpbHkgYm9vc3RlZCBpbiB0aGlzIHBhcnQgb2YgdGhlIHRlc3QgdG8ga2VlcCB0aGUNCisJYWxsb3dhYmxlIG1hcmdpbiB0byBhIG1pbmltdW0uICovDQorCXV4T3JpZ2luYWxQcmlvcml0eSA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApOw0KKwl4VGltZUJlZm9yZUNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNEYXRhLCBzaXplb2YoIHB1Y0RhdGFbIDAgXSApLCB4QmxvY2tUaW1lICk7DQorCXhUaW1lQWZ0ZXJDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJdlRhc2tQcmlvcml0eVNldCggTlVMTCwgdXhPcmlnaW5hbFByaW9yaXR5ICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGltZUFmdGVyQ2FsbCAtIHhUaW1lQmVmb3JlQ2FsbCApID49IHhCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPCAoIHhCbG9ja1RpbWUgKyB4QWxsb3dhYmxlTWFyZ2luICkgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB4VGltZUFmdGVyQ2FsbDsNCisJKCB2b2lkICkgeFRpbWVCZWZvcmVDYWxsOw0KKw0KKw0KKwkvKiBUaGUgYnVmZmVyIGlzIG5vdyBmdWxsIG9mIGRhdGEgaW4gdGhlIGZvcm0gIjAwMDAwMCIsICIxMTExMTEiLCBldGMuICBNYWtlDQorCXN1cmUgdGhlIGRhdGEgaXMgcmVhZCBvdXQgYXMgZXhwZWN0ZWQuICovDQorCWZvciggeEl0ZW0gPSAwOyB4SXRlbSA8IHhNYXg2Qnl0ZU1lc3NhZ2VzOyB4SXRlbSsrICkNCisJew0KKwkJLyogR2VuZXJhdGUgdGhlIGRhdGEgdGhhdCBpcyBleHBlY3RlZCB0byBiZSByZWFkIG91dCBmb3IgdGhpcyBsb29wDQorCQlpdGVyYXRpb24uICovDQorCQltZW1zZXQoICggdm9pZCAqICkgcHVjRGF0YSwgKCAoIGludCApICcwJyApICsgKCBpbnQgKSB4SXRlbSwgeDZCeXRlTGVuZ3RoICk7DQorDQorCQkvKiBSZWFkIHRoZSBuZXh0IDYgYnl0ZXMgb3V0LiAgVGhlICdGcm9tSVNSJyB2ZXJzaW9uIGlzIHVzZWQgdG8gZ2l2ZSBpdA0KKwkJc29tZSBleGVyY2lzZSBhcyBhIGJsb2NrIHRpbWUgaXMgbm90IHVzZWQsIHNvIGEgaXQgbXVzdCBiZSBjYWxsZWQgZnJvbQ0KKwkJYSBjcml0aWNhbCBzZWN0aW9uIHNvIHRoaXMgd2lsbCB3b3JrIG9uIHBvcnRzIHRoYXQgZG9uJ3Qgc3VwcG9ydA0KKwkJaW50ZXJydXB0IG5lc3RpbmcgKHNvIGRvbid0IGhhdmUgaW50ZXJydXB0IHNhZmUgY3JpdGljYWwgc2VjdGlvbnMpLiAqLw0KKwkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQl7DQorCQkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHB1Y1JlYWREYXRhLCB4NkJ5dGVMZW5ndGgsIE5VTEwgKTsNCisJCX0NCisJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4NkJ5dGVMZW5ndGggKTsNCisNCisJCS8qIERvZXMgdGhlIGRhdGEgcmVhZCBvdXQgbWF0Y2ggdGhhdCBleHBlY3RlZD8gKi8NCisJCWNvbmZpZ0FTU0VSVCggbWVtY21wKCAoIHZvaWQgKiApIHB1Y0RhdGEsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHg2Qnl0ZUxlbmd0aCApID09IDAgKTsNCisNCisJCS8qIFRoZSBzcGFjZSBpbiB0aGUgYnVmZmVyIHdpbGwgaGF2ZSBpbmNyZWFzZWQgYnkgdGhlIGFtb3VudCBvZiB1c2VyDQorCQlkYXRhIHJlbW92ZWQgZnJvbSB0aGUgYnVmZmVyLiAqLw0KKwkJeEV4cGVjdGVkU3BhY2UgKz0geDZCeXRlTGVuZ3RoOw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0geEV4cGVjdGVkU3BhY2UgKTsNCisJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTIC0geEV4cGVjdGVkU3BhY2UgKSApOw0KKwl9DQorDQorCS8qIFRoZSBidWZmZXIgc2hvdWxkIGJlIGVtcHR5IGFnYWluLiAqLw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCXhFeHBlY3RlZFNwYWNlID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwljb25maWdBU1NFUlQoIHhFeHBlY3RlZFNwYWNlID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJLyogUmVhZGluZyB3aXRoIGEgdGltZW91dCBzaG91bGQgYWxzbyBmYWlsIGFmdGVyIHRoZSBhcHByb3ByaWF0ZSB0aW1lLiAgVGhlDQorCXByaW9yaXR5IGlzIHRlbXBvcmFyaWx5IGJvb3N0ZWQgaW4gdGhpcyBwYXJ0IG9mIHRoZSB0ZXN0IHRvIGtlZXAgdGhlDQorCWFsbG93YWJsZSBtYXJnaW4gdG8gYSBtaW5pbXVtLiAqLw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCBjb25maWdNQVhfUFJJT1JJVElFUyAtIDEgKTsNCisJeFRpbWVCZWZvcmVDYWxsID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCisJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHg2Qnl0ZUxlbmd0aCwgeEJsb2NrVGltZSApOw0KKwl4VGltZUFmdGVyQ2FsbCA9IHhUYXNrR2V0VGlja0NvdW50KCk7DQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIHV4T3JpZ2luYWxQcmlvcml0eSApOw0KKwljb25maWdBU1NFUlQoICggeFRpbWVBZnRlckNhbGwgLSB4VGltZUJlZm9yZUNhbGwgKSA+PSB4QmxvY2tUaW1lICk7DQorCWNvbmZpZ0FTU0VSVCggKCB4VGltZUFmdGVyQ2FsbCAtIHhUaW1lQmVmb3JlQ2FsbCApIDwgKCB4QmxvY2tUaW1lICsgeEFsbG93YWJsZU1hcmdpbiApICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IDAgKTsNCisNCisNCisJLyogSW4gdGhlIG5leHQgbG9vcCAxNyBieXRlcyBhcmUgd3JpdHRlbiB0byB0aGVuIHJlYWQgb3V0IG9uIGVhY2gNCisJaXRlcmF0aW9uLiAgQXMgMzAgaXMgbm90IGRpdmlzaWJsZSBieSAxNyB0aGUgZGF0YSB3aWxsIHdyYXAgYXJvdW5kLiAqLw0KKwl4RXhwZWN0ZWRTcGFjZSA9IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgLSB4MTdCeXRlTGVuZ3RoOw0KKw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCAxMDA7IHhJdGVtKysgKQ0KKwl7DQorCQkvKiBHZW5lcmF0ZSByZWNvZ25pc2FibGUgZGF0YSB0byB3cml0ZSB0byB0aGUgcXVldWUuICBUaGlzIGlzIGp1c3QNCisJCWFzY2lpIGNoYXJhY3RlcnMgdGhhdCBzaG93cyB3aGljaCBsb29wIGl0ZXJhdGlvbiB0aGUgZGF0YSB3YXMgd3JpdHRlbg0KKwkJaW4uICovDQorCQltZW1zZXQoICggdm9pZCAqICkgcHVjRGF0YSwgKCAoIGludCApICcwJyApICsgKCBpbnQgKSB4SXRlbSwgeDE3Qnl0ZUxlbmd0aCApOw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjRGF0YSwgeDE3Qnl0ZUxlbmd0aCwgc2JET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4MTdCeXRlTGVuZ3RoICk7DQorDQorCQkvKiBUaGUgc3BhY2UgaW4gdGhlIGJ1ZmZlciB3aWxsIGhhdmUgcmVkdWNlZCBieSB0aGUgYW1vdW50IG9mIHVzZXIgZGF0YQ0KKwkJd3JpdHRlbiBpbnRvIHRoZSBidWZmZXIuICovDQorCQl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4RXhwZWN0ZWRTcGFjZSApOw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSB4MTdCeXRlTGVuZ3RoICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKw0KKwkJLyogUmVhZCB0aGUgMTcgYnl0ZXMgb3V0IGFnYWluLiAqLw0KKwkJeFJldHVybmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgcHVjUmVhZERhdGEsIHgxN0J5dGVMZW5ndGgsIHNiRE9OVF9CTE9DSyApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0geDE3Qnl0ZUxlbmd0aCApOw0KKw0KKwkJLyogRG9lcyB0aGUgZGF0YSByZWFkIG91dCBtYXRjaCB0aGF0IGV4cGVjdGVkPyAqLw0KKwkJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggdm9pZCAqICkgcHVjRGF0YSwgKCB2b2lkICogKSBwdWNSZWFkRGF0YSwgeDE3Qnl0ZUxlbmd0aCApID09IDAgKTsNCisNCisJCS8qIEZ1bGwgYnVmZmVyIHNwYWNlIGF2YWlsYWJsZSBhZ2Fpbi4gKi8NCisJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gMCApOw0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKwkJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKwl9DQorDQorCS8qIEZpbGwgdGhlIGJ1ZmZlciB3aXRoIG9uZSBtZXNzYWdlLCBjaGVjayBpdCBpcyBmdWxsLCB0aGVuIHJlYWQgaXQgYmFjaw0KKwlhZ2FpbiBhbmQgY2hlY2sgdGhlIGNvcnJlY3QgZGF0YSBpcyByZWNlaXZlZC4gKi8NCisJeFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NUJ5dGVTdHJpbmcsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiRE9OVF9CTE9DSyApOw0KKwl4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNGdWxsQnVmZmVyLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBzYkRPTlRfQkxPQ0sgKTsNCisJY29uZmlnQVNTRVJUKCBtZW1jbXAoIHBjNTVCeXRlU3RyaW5nLCBwdWNGdWxsQnVmZmVyLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICkgPT0gMCApOw0KKw0KKwkvKiBGaWxsIHRoZSBidWZmZXIgb25lIGJ5dGVzIGF0IGEgdGltZS4gKi8NCisJZm9yKCB4SXRlbSA9IDA7IHhJdGVtIDwgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUzsgeEl0ZW0rKyApDQorCXsNCisJCS8qIEJsb2NrIHRpbWUgaXMgb25seSBmb3IgdGVzdCBjb3ZlcmFnZSwgdGhlIHRhc2sgc2hvdWxkIG5ldmVyIGFjdHVhbGx5DQorCQlibG9jayBoZXJlLiAqLw0KKwkJeFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgJiggcGM1NEJ5dGVTdHJpbmdbIHhJdGVtIF0gKSwgc2l6ZW9mKCBjaGFyICksIHNiUlhfVFhfQkxPQ0tfVElNRSApOw0KKwl9DQorDQorCS8qIFRoZSBidWZmZXIgc2hvdWxkIG5vdyBiZSBmdWxsLiAqLw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisNCisJLyogUmVhZCB0aGUgbWVzc2FnZSBvdXQgaW4gb25lIGdvLCBldmVuIHRob3VnaCBpdCB3YXMgd3JpdHRlbiBpbiBpbmRpdmlkdWFsDQorCWJ5dGVzLiAgVHJ5IHJlYWRpbmcgbXVjaCBtb3JlIGRhdGEgdGhhbiBpcyBhY3R1YWxseSBhdmFpbGFibGUgdG8gZW5zdXJlIG9ubHkNCisJdGhlIGF2YWlsYWJsZSBieXRlcyBhcmUgcmV0dXJuZWQgKG90aGVyd2lzZSB0aGlzIHJlYWQgd2lsbCB3cml0ZSBvdXRzaWRlIG9mDQorCXRoZSBtZW1vcnkgYWxsb2NhdGVkIGFueXdheSEpLiAqLw0KKwl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgcHVjRnVsbEJ1ZmZlciwgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAqICggc2l6ZV90ICkgMiwgc2JSWF9UWF9CTE9DS19USU1FICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggY29uc3Qgdm9pZCAqICkgcGM1NEJ5dGVTdHJpbmcsICggY29uc3Qgdm9pZCAqICkgcHVjRnVsbEJ1ZmZlciwgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApID09IDAgKTsNCisNCisJLyogTm93IGRvIHRoZSBvcHBvc2l0ZSwgd3JpdGUgaW4gb25lIGdvIGFuZCByZWFkIG91dCBpbiBzaW5nbGUgYnl0ZXMuICovDQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTVCeXRlU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBzYlJYX1RYX0JMT0NLX1RJTUUgKTsNCisJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkRkFMU0UgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIHhTdHJlYW1CdWZmZXIgKSA9PSBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApID09IDAgKTsNCisNCisJLyogUmVhZCBmcm9tIHRoZSBidWZmZXIgb25lIGJ5dGUgYXQgYSB0aW1lLiAqLw0KKwlmb3IoIHhJdGVtID0gMDsgeEl0ZW0gPCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTOyB4SXRlbSsrICkNCisJew0KKwkJLyogQmxvY2sgdGltZSBpcyBvbmx5IGZvciB0ZXN0IGNvdmVyYWdlLCB0aGUgdGFzayBzaG91bGQgbmV2ZXIgYWN0dWFsbHkNCisJCWJsb2NrIGhlcmUuICovDQorCQl4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNGdWxsQnVmZmVyLCBzaXplb2YoIGNoYXIgKSwgc2JSWF9UWF9CTE9DS19USU1FICk7DQorCQljb25maWdBU1NFUlQoIHBjNTVCeXRlU3RyaW5nWyB4SXRlbSBdID09IHB1Y0Z1bGxCdWZmZXJbIDAgXSApOw0KKwl9DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZFRSVUUgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRGQUxTRSApOw0KKw0KKwkvKiBUcnkgd3JpdGluZyBtb3JlIGJ5dGVzIHRoYW4gdGhlcmUgaXMgc3BhY2UuICovDQorCXZUYXNrUHJpb3JpdHlTZXQoIE5VTEwsIGNvbmZpZ01BWF9QUklPUklUSUVTIC0gMSApOw0KKwl4VGltZUJlZm9yZUNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB2b2lkICogKSBwYzU0Qnl0ZVN0cmluZywgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAqICggc2l6ZV90ICkgMiwgeE1pbmltYWxCbG9ja1RpbWUgKTsNCisJeFRpbWVBZnRlckNhbGwgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl2VGFza1ByaW9yaXR5U2V0KCBOVUxMLCB1eE9yaWdpbmFsUHJpb3JpdHkgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPj0geE1pbmltYWxCbG9ja1RpbWUgKTsNCisJY29uZmlnQVNTRVJUKCAoIHhUaW1lQWZ0ZXJDYWxsIC0geFRpbWVCZWZvcmVDYWxsICkgPCAoIHhNaW5pbWFsQmxvY2tUaW1lICsgeEFsbG93YWJsZU1hcmdpbiApICk7DQorCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNGdWxsKCB4U3RyZWFtQnVmZmVyICkgPT0gcGRUUlVFICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIHhTdHJlYW1CdWZmZXIgKSA9PSBwZEZBTFNFICk7DQorDQorCS8qIE5vIHNwYWNlIG5vdyB0aG91Z2guICovDQorCXhSZXR1cm5lZCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTRCeXRlU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICogKCBzaXplX3QgKSAyLCB4TWluaW1hbEJsb2NrVGltZSApOw0KKwljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSAwICk7DQorDQorCS8qIEVuc3VyZSBkYXRhIHdhcyB3cml0dGVuIGFzIGV4cGVjdGVkIGV2ZW4gd2hlbiB0aGVyZSB3YXMgYW4gYXR0ZW1wdCB0bw0KKwl3cml0ZSBtb3JlIHRoYW4gd2FzIGF2YWlsYWJsZS4gIFRoaXMgYWxzbyB0cmllcyB0byByZWFkIG1vcmUgYnl0ZXMgdGhhbiBhcmUNCisJYXZhaWxhYmxlLiAqLw0KKwl4UmV0dXJuZWQgPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBwdWNGdWxsQnVmZmVyLCB4RnVsbEJ1ZmZlclNpemUsIHhNaW5pbWFsQmxvY2tUaW1lICk7DQorCWNvbmZpZ0FTU0VSVCggbWVtY21wKCAoIGNvbnN0IHZvaWQgKiApIHB1Y0Z1bGxCdWZmZXIsICggY29uc3Qgdm9pZCAqICkgcGM1NEJ5dGVTdHJpbmcsIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKSA9PSAwICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcklzRnVsbCggeFN0cmVhbUJ1ZmZlciApID09IHBkRkFMU0UgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVySXNFbXB0eSggeFN0cmVhbUJ1ZmZlciApID09IHBkVFJVRSApOw0KKw0KKwkvKiBDbGVhbiB1cCB3aXRoIGRhdGEgaW4gdGhlIGJ1ZmZlciB0byBlbnN1cmUgdGhlIHRlc3RzIHRoYXQgZm9sbG93IGRvbid0DQorCXNlZSB0aGUgZGF0YSAodGhlIGRhdGEgc2hvdWxkIGJlIGRpc2NhcmRlZCkuICovDQorCSggdm9pZCApIHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApIHBjNTVCeXRlU3RyaW5nLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTIC8gKCBzaXplX3QgKSAyLCBzYkRPTlRfQkxPQ0sgKTsNCisJdlBvcnRGcmVlKCBwdWNGdWxsQnVmZmVyICk7DQorCXhTdHJlYW1CdWZmZXJSZXNldCggeFN0cmVhbUJ1ZmZlciApOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZOb25CbG9ja2luZ1NlbmRlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorc2l6ZV90IHhOZXh0Q2hhciA9IDAsIHhCeXRlc1RvU2VuZCwgeEJ5dGVzQWN0dWFsbHlTZW50Ow0KK2NvbnN0IHNpemVfdCB4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBwYzU0Qnl0ZVN0cmluZyApOw0KKw0KKwkvKiBJbiB0aGlzIGNhc2UgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkIGFuZCBpcyBwYXNzZWQNCisJaW50byB0aGUgdGFzayB1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCisJeFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIEtlZXAgc2VuZGluZyB0aGUgc3RyaW5nIHRvIHRoZSBzdHJlYW0gYnVmZmVyIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUgaW4NCisJZWFjaCBnby4gIERvZXNuJ3QgYmxvY2sgc28gY2FsbHMgY2FuIGludGVybGVhdmUgd2l0aCB0aGUgbm9uLWJsb2NraW5nDQorCXJlY2VpdmVzIHBlcmZvcm1lZCBieSBwcnZOb25CbG9ja2luZ1JlY2VpdmVyVGFzaygpLiAqLw0KKwlmb3IoIDs7ICkNCisJew0KKwkJLyogVGhlIHdob2xlIHN0cmluZyBjYW5ub3QgYmUgc2VudCBhdCBvbmNlLCBzbyB4TmV4dENoYXIgaXMgYW4gaW5kZXggdG8NCisJCXRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIHN0cmluZyB0aGF0IGhhcyBiZWVuIHNlbnQgc28gZmFyLiAgSG93IG1hbnkNCisJCWJ5dGVzIGFyZSB0aGVyZSBsZWZ0IHRvIHNlbmQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmluZz8gKi8NCisJCXhCeXRlc1RvU2VuZCA9IHhTdHJpbmdMZW5ndGggLSB4TmV4dENoYXI7DQorDQorCQkvKiBBdHRlbXB0IHRvIHNlbmQgcmlnaHQgdXAgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLw0KKwkJeEJ5dGVzQWN0dWFsbHlTZW50ID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgJiggcGM1NEJ5dGVTdHJpbmdbIHhOZXh0Q2hhciBdICksIHhCeXRlc1RvU2VuZCwgc2JET05UX0JMT0NLICk7DQorCQljb25maWdBU1NFUlQoIHhCeXRlc0FjdHVhbGx5U2VudCA8PSB4Qnl0ZXNUb1NlbmQgKTsNCisNCisJCS8qIE1vdmUgdGhlIGluZGV4IHVwIHRoZSBzdHJpbmcgdG8gdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIHNlbnQsDQorCQl3cmFwcGluZyBpZiB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaGFzIGJlZW4gcmVhY2hlZC4gKi8NCisJCXhOZXh0Q2hhciArPSB4Qnl0ZXNBY3R1YWxseVNlbnQ7DQorCQljb25maWdBU1NFUlQoIHhOZXh0Q2hhciA8PSB4U3RyaW5nTGVuZ3RoICk7DQorDQorCQlpZiggeE5leHRDaGFyID09IHhTdHJpbmdMZW5ndGggKQ0KKwkJew0KKwkJCXhOZXh0Q2hhciA9IDA7DQorCQl9DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2Tm9uQmxvY2tpbmdSZWNlaXZlclRhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXI7DQorc2l6ZV90IHhOZXh0Q2hhciA9IDAsIHhSZWNlaXZlTGVuZ3RoLCB4Qnl0ZXNUb1Rlc3QsIHhTdGFydEluZGV4Ow0KK2NvbnN0IHNpemVfdCB4U3RyaW5nTGVuZ3RoID0gc3RybGVuKCBwYzU0Qnl0ZVN0cmluZyApOw0KK2NoYXIgY1J4U3RyaW5nWyAxMiBdOyAvKiBIb2xkcyByZWNlaXZlZCBjaGFyYWN0ZXJzLiAqLw0KK0Jhc2VUeXBlX3QgeE5vbkJsb2NraW5nUmVjZWl2ZUVycm9yID0gcGRGQUxTRTsNCisNCisJLyogSW4gdGhpcyBjYXNlIHRoZSBzdHJlYW0gYnVmZmVyIGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZCBhbmQgaXMgcGFzc2VkDQorCWludG8gdGhlIHRhc2sgdXNpbmcgdGhlIHRhc2sncyBwYXJhbWV0ZXIuICovDQorCXhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBFeHBlY3RzIHRvIHJlY2VpdmUgdGhlIHBjNTRCeXRlU3RyaW5nIG92ZXIgYW5kIG92ZXIgYWdhaW4uICBTZW5kcyBhbmQNCisJcmVjZWl2ZXMgYXJlIG5vdCBibG9ja2luZyBzbyB3aWxsIGludGVybGVhdmUuICovDQorCWZvciggOzsgKQ0KKwl7DQorCQkvKiBBdHRlbXB0IHRvIHJlY2VpdmUgYXMgbWFueSBieXRlcyBhcyBwb3NzaWJsZSwgdXAgdG8gdGhlIGxpbWl0IG9mIHRoZQ0KKwkJUnggYnVmZmVyIHNpemUuICovDQorCQl4UmVjZWl2ZUxlbmd0aCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIGNSeFN0cmluZywgc2l6ZW9mKCBjUnhTdHJpbmcgKSwgc2JET05UX0JMT0NLICk7DQorDQorCQlpZiggeFJlY2VpdmVMZW5ndGggPiAwICkNCisJCXsNCisJCQkvKiB4TmV4dENoYXIgaXMgdGhlIGluZGV4IGludG8gcGM1NEJ5dGVTdHJpbmcgdGhhdCBoYXMgYmVlbiByZWNlaXZlZA0KKwkJCWFscmVhZHkuICBJZiB4UmVjZWl2ZUxlbmd0aCBieXRlcyBhcmUgYWRkZWQgdG8gdGhhdCwgd2lsbCBpdCBnbyBvZmYNCisJCQl0aGUgZW5kIG9mIHRoZSBzdHJpbmc/ICBJZiBzbywgdGhlbiBmaXJzdCB0ZXN0IHVwIHRvIHRoZSBlbmQgb2YgdGhlDQorCQkJc3RyaW5nLCB0aGVuIGdvIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHBjNTRCeXRlU3RyaW5nIHRvIHRlc3QgdGhlDQorCQkJcmVtYWlucyBvZiB0aGUgcmVjZWl2ZWQgZGF0YS4gKi8NCisJCQl4Qnl0ZXNUb1Rlc3QgPSB4UmVjZWl2ZUxlbmd0aDsNCisJCQlpZiggKCB4TmV4dENoYXIgKyB4Qnl0ZXNUb1Rlc3QgKSA+IHhTdHJpbmdMZW5ndGggKQ0KKwkJCXsNCisJCQkJLyogQ2FwIHRvIHRlc3QgdGhlIHJlY2VpdmVkIGRhdGEgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLw0KKwkJCQl4Qnl0ZXNUb1Rlc3QgPSB4U3RyaW5nTGVuZ3RoIC0geE5leHRDaGFyOw0KKw0KKwkJCQlpZiggbWVtY21wKCAoIGNvbnN0IHZvaWQgKiApICYoIHBjNTRCeXRlU3RyaW5nWyB4TmV4dENoYXIgXSApLCAoIGNvbnN0IHZvaWQgKiApIGNSeFN0cmluZywgeEJ5dGVzVG9UZXN0ICkgIT0gMCApDQorCQkJCXsNCisJCQkJCXhOb25CbG9ja2luZ1JlY2VpdmVFcnJvciA9IHBkVFJVRTsNCisJCQkJfQ0KKw0KKwkJCQkvKiBUaGVuIG1vdmUgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyB0byB0ZXN0IHRoZQ0KKwkJCQlyZW1haW5pbmcgcmVjZWl2ZWQgYnl0ZXMuICovDQorCQkJCXhOZXh0Q2hhciA9IDA7DQorCQkJCXhTdGFydEluZGV4ID0geEJ5dGVzVG9UZXN0Ow0KKwkJCQl4Qnl0ZXNUb1Rlc3QgPSB4UmVjZWl2ZUxlbmd0aCAtIHhCeXRlc1RvVGVzdDsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJLyogVGhlIHN0cmluZyBkaWRuJ3Qgd3JhcCBpbiB0aGUgYnVmZmVyLCBzbyBzdGFydCBjb21wYXJpbmcgZnJvbQ0KKwkJCQl0aGUgc3RhcnQgb2YgdGhlIHJlY2VpdmVkIGRhdGEuICovDQorCQkJCXhTdGFydEluZGV4ID0gMDsNCisJCQl9DQorDQorCQkJLyogVGVzdCB0aGUgcmVjZWl2ZWQgYnl0ZXMgYXJlIGFzIGV4cGVjdGVkLCB0aGVuIG1vdmUgdGhlIGluZGV4DQorCQkJYWxvbmcgdGhlIHN0cmluZyB0byB0aGUgbmV4dCBleHBlY3RlZCBjaGFyIHRvIHJlY2VpdmUuICovDQorCQkJaWYoIG1lbWNtcCggKCBjb25zdCB2b2lkICogKSAmKCBwYzU0Qnl0ZVN0cmluZ1sgeE5leHRDaGFyIF0gKSwgKCBjb25zdCB2b2lkICogKSAmKCBjUnhTdHJpbmdbIHhTdGFydEluZGV4IF0gKSwgeEJ5dGVzVG9UZXN0ICkgIT0gMCApDQorCQkJew0KKwkJCQl4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPSBwZFRSVUU7DQorCQkJfQ0KKw0KKwkJCWlmKCB4Tm9uQmxvY2tpbmdSZWNlaXZlRXJyb3IgPT0gcGRGQUxTRSApDQorCQkJew0KKwkJCQkvKiBObyBlcnJvcnMgZGV0ZWN0ZWQgc28gaW5jcmVtZW50IHRoZSBjb3VudGVyIHRoYXQgbGV0cyB0aGUNCisJCQkJY2hlY2sgdGFzayBrbm93IHRoaXMgdGVzdCBpcyBzdGlsbCBmdW5jdGlvbmluZyBjb3JyZWN0bHkuICovDQorCQkJCXVsTm9uQmxvY2tpbmdSeENvdW50ZXIrKzsNCisJCQl9DQorDQorCQkJeE5leHRDaGFyICs9IHhCeXRlc1RvVGVzdDsNCisJCQlpZiggeE5leHRDaGFyID49IHhTdHJpbmdMZW5ndGggKQ0KKwkJCXsNCisJCQkJeE5leHRDaGFyID0gMDsNCisJCQl9DQorCQl9DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OID09IDEgICkNCisNCisJc3RhdGljIHZvaWQgcHJ2U2VuZGVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCisJew0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCB4VGVtcFN0cmVhbUJ1ZmZlcjsNCisJc3RhdGljIHVpbnQ4X3QgdWNUZW1wQnVmZmVyWyAxMCBdOyAvKiBKdXN0IHVzZWQgdG8gZXhlcmNpc2Ugc3RyZWFtIGJ1ZmZlciBjcmVhdGluZyBhbmQgZGVsZXRpb24uICovDQorCWNvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gc2JSWF9UWF9CTE9DS19USU1FLCB4U2hvcnREZWxheSA9IHBkTVNfVE9fVElDS1MoIDUwICk7DQorCVN0YXRpY1N0cmVhbUJ1ZmZlcl90IHhTdGF0aWNTdHJlYW1CdWZmZXI7DQorCXNpemVfdCB4TmV4dENoYXIgPSAwLCB4Qnl0ZXNUb1NlbmQsIHhCeXRlc0FjdHVhbGx5U2VudDsNCisJY29uc3Qgc2l6ZV90IHhTdHJpbmdMZW5ndGggPSBzdHJsZW4oIHBjNTVCeXRlU3RyaW5nICk7DQorDQorCS8qIFRoZSB0YXNrJ3MgcHJpb3JpdHkgaXMgdXNlZCBhcyBhbiBpbmRleCBpbnRvIHRoZSBsb29wIGNvdW50ZXJzIHVzZWQgdG8NCisJaW5kaWNhdGUgdGhpcyB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQorCVVCYXNlVHlwZV90IHV4SW5kZXggPSB1eFRhc2tQcmlvcml0eUdldCggTlVMTCApOw0KKw0KKwkJLyogTWFrZSBzdXJlIGEgY2hhbmdlIGluIHByaW9yaXR5IGRvZXMgbm90IGluYWR2ZXJ0ZW50bHkgcmVzdWx0IGluIGFuDQorCQlpbnZhbGlkIGFycmF5IGluZGV4LiAqLw0KKwkJY29uZmlnQVNTRVJUKCB1eEluZGV4IDwgc2JOVU1CRVJfT0ZfRUNIT19DTElFTlRTICk7DQorDQorCQkvKiBBdm9pZCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJCXhTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljKCBzaXplb2YoIHVjQnVmZmVyU3RvcmFnZSApIC8gc2JOVU1CRVJfT0ZfU0VOREVSX1RBU0tTLCAvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGluIGVhY2ggYnVmZmVyIGluIHRoZSBhcnJheS4gKi8NCisJCQkJCQkJCQkJCQkgICBzYlRSSUdHRVJfTEVWRUxfMSwgLyogVGhlIG51bWJlciBvZiBieXRlcyB0byBiZSBpbiB0aGUgYnVmZmVyIGJlZm9yZSBhIHRhc2sgYmxvY2tlZCB0byB3YWl0IGZvciBkYXRhIGlzIHVuYmxvY2tlZC4gKi8NCisJCQkJCQkJCQkJCQkgICAmKCB1Y0J1ZmZlclN0b3JhZ2VbIHV4SW5kZXggXVsgMCBdICksIC8qIFRoZSBhZGRyZXNzIG9mIHRoZSBidWZmZXIgdG8gdXNlIHdpdGhpbiB0aGUgYXJyYXkuICovDQorCQkJCQkJCQkJCQkJICAgJiggeFN0YXRpY1N0cmVhbUJ1ZmZlcnNbIHV4SW5kZXggXSApICk7IC8qIFRoZSBzdGF0aWMgc3RyZWFtIGJ1ZmZlciBzdHJ1Y3R1cmUgdG8gdXNlIHdpdGhpbiB0aGUgYXJyYXkuICovDQorDQorCQkvKiBOb3cgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZCB0aGUgcmVjZWl2ZXIgdGFzayBjYW4gYmUNCisJCWNyZWF0ZWQuICBJZiB0aGlzIHNlbmRlciB0YXNrIGhhcyB0aGUgaGlnaGVyIHByaW9yaXR5IHRoZW4gdGhlIHJlY2VpdmVyDQorCQl0YXNrIGlzIGNyZWF0ZWQgYXQgdGhlIGxvd2VyIHByaW9yaXR5IC0gaWYgdGhpcyBzZW5kZXIgdGFzayBoYXMgdGhlDQorCQlsb3dlciBwcmlvcml0eSB0aGVuIHRoZSByZWNlaXZlciB0YXNrIGlzIGNyZWF0ZWQgYXQgdGhlIGhpZ2hlcg0KKwkJcHJpb3JpdHkuICovDQorCQlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBzYkxPV0VSX1BSSU9SSVRZICkNCisJCXsNCisJCQkvKiBIZXJlIHBydlNpbmdsZVRhc2tUZXN0cygpIHBlcmZvcm1zIHZhcmlvdXMgdGVzdHMgb24gYSBzdHJlYW0gYnVmZmVyDQorCQkJdGhhdCB3YXMgY3JlYXRlZCBzdGF0aWNhbGx5LiAqLw0KKwkJCXBydlNpbmdsZVRhc2tUZXN0cyggeFN0cmVhbUJ1ZmZlciApOw0KKwkJCXhUYXNrQ3JlYXRlKCBwcnZSZWNlaXZlclRhc2ssICJTdHJSZWNlaXZlciIsIHNiU1RBQ0tfU0laRSwgICggdm9pZCAqICkgeFN0cmVhbUJ1ZmZlciwgc2JISUdIRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQl4VGFza0NyZWF0ZSggcHJ2UmVjZWl2ZXJUYXNrLCAiU3RyUmVjZWl2ZXIiLCBzYlNUQUNLX1NJWkUsICAoIHZvaWQgKiApIHhTdHJlYW1CdWZmZXIsIHNiTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJCX0NCisNCisJCWZvciggOzsgKQ0KKwkJew0KKwkJCS8qIFRoZSB3aG9sZSBzdHJpbmcgY2Fubm90IGJlIHNlbnQgYXQgb25jZSwgc28geE5leHRDaGFyIGlzIGFuIGluZGV4DQorCQkJdG8gdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgc3RyaW5nIHRoYXQgaGFzIGJlZW4gc2VudCBzbyBmYXIuICBIb3cNCisJCQltYW55IGJ5dGVzIGFyZSB0aGVyZSBsZWZ0IHRvIHNlbmQgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIHN0cmluZz8gKi8NCisJCQl4Qnl0ZXNUb1NlbmQgPSB4U3RyaW5nTGVuZ3RoIC0geE5leHRDaGFyOw0KKw0KKwkJCS8qIEF0dGVtcHQgdG8gc2VuZCByaWdodCB1cCB0byB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICovDQorCQkJeEJ5dGVzQWN0dWFsbHlTZW50ID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgJiggcGM1NUJ5dGVTdHJpbmdbIHhOZXh0Q2hhciBdICksIHhCeXRlc1RvU2VuZCwgeFRpY2tzVG9XYWl0ICk7DQorCQkJY29uZmlnQVNTRVJUKCB4Qnl0ZXNBY3R1YWxseVNlbnQgPD0geEJ5dGVzVG9TZW5kICk7DQorDQorCQkJLyogTW92ZSB0aGUgaW5kZXggdXAgdGhlIHN0cmluZyB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgc2VudCwNCisJCQl3cmFwcGluZyBpZiB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaGFzIGJlZW4gcmVhY2hlZC4gKi8NCisJCQl4TmV4dENoYXIgKz0geEJ5dGVzQWN0dWFsbHlTZW50Ow0KKwkJCWNvbmZpZ0FTU0VSVCggeE5leHRDaGFyIDw9IHhTdHJpbmdMZW5ndGggKTsNCisNCisJCQlpZiggeE5leHRDaGFyID09IHhTdHJpbmdMZW5ndGggKQ0KKwkJCXsNCisJCQkJeE5leHRDaGFyID0gMDsNCisJCQl9DQorDQorCQkJLyogSW5jcmVtZW50IGEgbG9vcCBjb3VudGVyIHNvIGEgY2hlY2sgdGFzayBjYW4gdGVsbCB0aGlzIHRhc2sgaXMNCisJCQlzdGlsbCBydW5uaW5nIGFzIGV4cGVjdGVkLiAqLw0KKwkJCXVsU2VuZGVyTG9vcENvdW50ZXJzWyB1eEluZGV4IF0rKzsNCisNCisJCQlpZiggdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKSA9PSBzYkhJR0hFUl9QUklPUklUWSApDQorCQkJew0KKwkJCQkvKiBBbGxvdyBvdGhlciB0YXNrcyB0byBydW4uICovDQorCQkJCXZUYXNrRGVsYXkoIHhTaG9ydERlbGF5ICk7DQorCQkJfQ0KKw0KKwkJCS8qIFRoaXMgc3RyZWFtIGJ1ZmZlciBpcyBqdXN0IGNyZWF0ZWQgYW5kIGRlbGV0ZWQgdG8gZW5zdXJlIG5vDQorCQkJaXNzdWVzIHdoZW4gYXR0ZW1wdGluZyB0byBkZWxldGUgYSBzdHJlYW0gYnVmZmVyIHRoYXQgd2FzDQorCQkJY3JlYXRlZCB1c2luZyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuICBUbyBzYXZlIHN0YWNrIHNwYWNlDQorCQkJdGhlIGJ1ZmZlciBpcyBzZXQgdG8gcG9pbnQgdG8gdGhlIHBjNTVCeXRlU3RyaW5nLCB3aGljaCBpcyBhIGNvbnN0DQorCQkJc3RyaW5nLCBidXQgbm8gZGF0YSBpcyB3cml0dGVuIGludG8gdGhlIGJ1ZmZlciBzbyBhbnkgdmFsaWQgYWRkcmVzcw0KKwkJCXdpbGwgZG8uICovDQorCQkJeFRlbXBTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljKCBzaXplb2YoIHVjVGVtcEJ1ZmZlciApLCBzYlRSSUdHRVJfTEVWRUxfMSwgdWNUZW1wQnVmZmVyLCAmeFN0YXRpY1N0cmVhbUJ1ZmZlciApOw0KKwkJCXZTdHJlYW1CdWZmZXJEZWxldGUoIHhUZW1wU3RyZWFtQnVmZmVyICk7DQorCQl9DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICApDQorDQorCXN0YXRpYyB2b2lkIHBydlJlY2VpdmVyVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCisJew0KKwlTdHJlYW1CdWZmZXJIYW5kbGVfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCAqICkgcHZQYXJhbWV0ZXJzOw0KKwljaGFyIGNSeFN0cmluZ1sgMTIgXTsgLyogTGFyZ2UgZW5vdWdoIHRvIGhvbGQgYSAzMi1iaXQgbnVtYmVyIGluIEFTQ0lJLiAqLw0KKwljb25zdCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCA9IHBkTVNfVE9fVElDS1MoIDVVTCApOw0KKwljb25zdCBzaXplX3QgeFN0cmluZ0xlbmd0aCA9IHN0cmxlbiggcGM1NUJ5dGVTdHJpbmcgKTsNCisJc2l6ZV90IHhOZXh0Q2hhciA9IDAsIHhSZWNlaXZlZExlbmd0aCwgeEJ5dGVzVG9SZWNlaXZlOw0KKw0KKwkJZm9yKCA7OyApDQorCQl7DQorCQkJLyogQXR0ZW1wdCB0byByZWNlaXZlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nLA0KKwkJCW9yIHRoZSBudW1iZXIgb2YgYnl0ZSB0aGF0IGNhbiBiZSBwbGFjZWQgaW50byB0aGUgcnggYnVmZmVyLA0KKwkJCXdoaWNoZXZlciBpcyBzbWFsbGVzdC4gKi8NCisJCQl4Qnl0ZXNUb1JlY2VpdmUgPSBjb25maWdNSU4oICggeFN0cmluZ0xlbmd0aCAtIHhOZXh0Q2hhciApLCBzaXplb2YoIGNSeFN0cmluZyApICk7DQorDQorCQkJZG8NCisJCQl7DQorCQkJCXhSZWNlaXZlZExlbmd0aCA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCBweFN0cmVhbUJ1ZmZlciwgKCB2b2lkICogKSBjUnhTdHJpbmcsIHhCeXRlc1RvUmVjZWl2ZSwgeFRpY2tzVG9XYWl0ICk7DQorDQorCQkJfSB3aGlsZSggeFJlY2VpdmVkTGVuZ3RoID09IDAgKTsNCisNCisJCQkvKiBFbnN1cmUgdGhlIHJlY2VpdmVkIHN0cmluZyBtYXRjaGVzIHRoZSBleHBlY3RlZCBzdHJpbmcuICovDQorCQkJY29uZmlnQVNTRVJUKCBtZW1jbXAoICggdm9pZCAqICkgY1J4U3RyaW5nLCAoIHZvaWQgKiApICYoIHBjNTVCeXRlU3RyaW5nWyB4TmV4dENoYXIgXSApLCB4UmVjZWl2ZWRMZW5ndGggKSA9PSAwICk7DQorDQorCQkJLyogTW92ZSB0aGUgaW5kZXggaW50byB0aGUgc3RyaW5nIHVwIHRvIHRoZSBlbmQgb2YgdGhlIGJ5dGVzDQorCQkJcmVjZWl2ZWQgc28gZmFyIC0gd3JhcHBpbmcgaWYgdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGhhcyBiZWVuDQorCQkJcmVhY2hlZC4gKi8NCisJCQl4TmV4dENoYXIgKz0geFJlY2VpdmVkTGVuZ3RoOw0KKwkJCWlmKCB4TmV4dENoYXIgPj0geFN0cmluZ0xlbmd0aCApDQorCQkJew0KKwkJCQl4TmV4dENoYXIgPSAwOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2RWNob0NsaWVudCggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorc2l6ZV90IHhTZW5kTGVuZ3RoID0gMCwgdXg7DQorY2hhciAqcGNTdHJpbmdUb1NlbmQsICpwY1N0cmluZ1JlY2VpdmVkLCBjTmV4dENoYXIgPSBzYkFTQ0lJX1NQQUNFOw0KK2NvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ID0gcGRNU19UT19USUNLUyggNTAgKTsNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4VGVtcFN0cmVhbUJ1ZmZlcjsNCisNCisvKiBUaGUgdGFzaydzIHByaW9yaXR5IGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byB0aGUgbG9vcCBjb3VudGVycyB1c2VkIHRvDQoraW5kaWNhdGUgdGhpcyB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQorVUJhc2VUeXBlX3QgdXhJbmRleCA9IHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICk7DQorDQorLyogUG9pbnRlcnMgdG8gdGhlIGNsaWVudCBhbmQgc2VydmVyIHN0cmVhbSBidWZmZXJzIGFyZSBwYXNzZWQgaW50byB0aGlzIHRhc2sNCit1c2luZyB0aGUgdGFzaydzIHBhcmFtZXRlci4gKi8NCitFY2hvU3RyZWFtQnVmZmVyc190ICpweFN0cmVhbUJ1ZmZlcnMgPSAoIEVjaG9TdHJlYW1CdWZmZXJzX3QgKiApIHB2UGFyYW1ldGVyczsNCisNCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5ncy4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBDcmVhdGUgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHN0cmluZ3MgdG8gc2VuZCB0byB0aGUgc2VydmVyIHdpbGwgYmUNCisJY3JlYXRlZCwgYW5kIHRoZSBidWZmZXIgaW50byB3aGljaCBzdHJpbmdzIGVjaG9lZCBiYWNrIGZyb20gdGhlIHNlcnZlciB3aWxsDQorCWJlIGNvcGllZC4gKi8NCisJcGNTdHJpbmdUb1NlbmQgPSAoIGNoYXIgKiApIHB2UG9ydE1hbGxvYyggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwlwY1N0cmluZ1JlY2VpdmVkID0gKCBjaGFyICogKSBwdlBvcnRNYWxsb2MoIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMgKTsNCisNCisJY29uZmlnQVNTRVJUKCBwY1N0cmluZ1RvU2VuZCApOw0KKwljb25maWdBU1NFUlQoIHBjU3RyaW5nUmVjZWl2ZWQgKTsNCisNCisJZm9yKCA7OyApDQorCXsNCisJCS8qIEdlbmVyYXRlIHRoZSBsZW5ndGggb2YgdGhlIG5leHQgc3RyaW5nIHRvIHNlbmQuICovDQorCQl4U2VuZExlbmd0aCsrOw0KKw0KKwkJLyogVGhlIHN0cmVhbSBidWZmZXIgaXMgYmVpbmcgdXNlZCB0byBob2xkIHZhcmlhYmxlIGxlbmd0aCBkYXRhLCBzbw0KKwkJZWFjaCBkYXRhIGl0ZW0gcmVxdWlyZXMgc2l6ZW9mKCBzaXplX3QgKSBieXRlcyB0byBob2xkIHRoZSBkYXRhJ3MNCisJCWxlbmd0aCwgaGVuY2UgdGhlIHNpemVvZigpIGluIHRoZSBpZigpIGNvbmRpdGlvbiBiZWxvdy4gKi8NCisJCWlmKCB4U2VuZExlbmd0aCA+ICggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyAtIHNpemVvZiggc2l6ZV90ICkgKSApDQorCQl7DQorCQkJLyogQmFjayB0byBhIHN0cmluZyBsZW5ndGggb2YgMS4gKi8NCisJCQl4U2VuZExlbmd0aCA9IHNpemVvZiggY2hhciApOw0KKwkJfQ0KKw0KKwkJbWVtc2V0KCBwY1N0cmluZ1RvU2VuZCwgMHgwMCwgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKw0KKwkJZm9yKCB1eCA9IDA7IHV4IDwgeFNlbmRMZW5ndGg7IHV4KysgKQ0KKwkJew0KKwkJCXBjU3RyaW5nVG9TZW5kWyB1eCBdID0gY05leHRDaGFyOw0KKw0KKwkJCWNOZXh0Q2hhcisrOw0KKw0KKwkJCWlmKCBjTmV4dENoYXIgPiBzYkFTQ0lJX1RJTERBICkNCisJCQl7DQorCQkJCWNOZXh0Q2hhciA9IHNiQVNDSUlfU1BBQ0U7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJLyogU2VuZCB0aGUgZ2VuZXJhdGVkIHN0cmluZyB0byB0aGUgYnVmZmVyLiAqLw0KKwkJZG8NCisJCXsNCisJCQl1eCA9IHhTdHJlYW1CdWZmZXJTZW5kKCBweFN0cmVhbUJ1ZmZlcnMtPnhFY2hvQ2xpZW50QnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLCB4U2VuZExlbmd0aCwgeFRpY2tzVG9XYWl0ICk7DQorDQorCQl9IHdoaWxlKCB1eCA9PSAwICk7DQorDQorCQkvKiBXYWl0IGZvciB0aGUgc3RyaW5nIHRvIGJlIGVjaG9lZCBiYWNrLiAqLw0KKwkJbWVtc2V0KCBwY1N0cmluZ1JlY2VpdmVkLCAweDAwLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorCQl4U3RyZWFtQnVmZmVyUmVjZWl2ZSggcHhTdHJlYW1CdWZmZXJzLT54RWNob1NlcnZlckJ1ZmZlciwgKCB2b2lkICogKSBwY1N0cmluZ1JlY2VpdmVkLCB4U2VuZExlbmd0aCwgcG9ydE1BWF9ERUxBWSApOw0KKw0KKwkJY29uZmlnQVNTRVJUKCBzdHJjbXAoIHBjU3RyaW5nVG9TZW5kLCBwY1N0cmluZ1JlY2VpdmVkICkgPT0gMCApOw0KKw0KKwkJLyogTWFpbnRhaW4gYSBjb3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoaXMgY29kZSBleGVjdXRlcyBzbyBhDQorCQljaGVjayB0YXNrIGNhbiBkZXRlcm1pbmUgaWYgdGhpcyB0YXNrIGlzIHN0aWxsIGZ1bmN0aW9uaW5nIGFzDQorCQlleHBlY3RlZCBvciBub3QuICBBcyB0aGVyZSBhcmUgdHdvIGNsaWVudCB0YXNrcywgYW5kIHRoZSBwcmlvcml0aWVzDQorCQl1c2VkIGFyZSAwIGFuZCAxLCB0aGUgdGFzaydzIHByaW9yaXR5IGlzIHVzZWQgYXMgYW4gaW5kZXggaW50byB0aGUNCisJCWxvb3AgY291bnQgYXJyYXkuICovDQorCQl1bEVjaG9Mb29wQ291bnRlcnNbIHV4SW5kZXggXSsrOw0KKw0KKwkJLyogVGhpcyBzdHJlYW0gYnVmZmVyIGlzIGp1c3QgY3JlYXRlZCBhbmQgZGVsZXRlZCB0byBlbnN1cmUgbm8gbWVtb3J5DQorCQlsZWFrcy4gKi8NCisJCXhUZW1wU3RyZWFtQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZSggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUywgc2JUUklHR0VSX0xFVkVMXzEgKTsNCisJCXBydlNpbmdsZVRhc2tUZXN0cyggeFRlbXBTdHJlYW1CdWZmZXIgKTsNCisJCXZTdHJlYW1CdWZmZXJEZWxldGUoIHhUZW1wU3RyZWFtQnVmZmVyICk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2RWNob1NlcnZlciggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCit7DQorc2l6ZV90IHhSZWNlaXZlZExlbmd0aDsNCitjaGFyICpwY1JlY2VpdmVkU3RyaW5nOw0KK0VjaG9TdHJlYW1CdWZmZXJzX3QgeFN0cmVhbUJ1ZmZlcnM7DQorVGlja1R5cGVfdCB4VGltZU9uRW50ZXJpbmc7DQorY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb0Jsb2NrID0gcGRNU19UT19USUNLUyggMzUwVUwgKTsNCisNCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5ncyBhYm91dCB1bnVzZWQgcGFyYW1ldGVycy4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBDcmVhdGUgdGhlIHN0cmVhbSBidWZmZXIgdXNlZCB0byBzZW5kIGRhdGEgZnJvbSB0aGUgY2xpZW50IHRvIHRoZSBzZXJ2ZXIsDQorCWFuZCB0aGUgc3RyZWFtIGJ1ZmZlciB1c2VkIHRvIGVjaG8gdGhlIGRhdGEgZnJvbSB0aGUgc2VydmVyIGJhY2sgdG8gdGhlDQorCWNsaWVudC4gKi8NCisJeFN0cmVhbUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLCBzYlRSSUdHRVJfTEVWRUxfMSApOw0KKwl4U3RyZWFtQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGUoIHNiU1RSRUFNX0JVRkZFUl9MRU5HVEhfQllURVMsIHNiVFJJR0dFUl9MRVZFTF8xICk7DQorCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIgKTsNCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVycy54RWNob1NlcnZlckJ1ZmZlciApOw0KKw0KKwkvKiBDcmVhdGUgdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHJlY2VpdmVkIHN0cmluZ3Mgd2lsbCBiZSBjb3BpZWQuICovDQorCXBjUmVjZWl2ZWRTdHJpbmcgPSAoIGNoYXIgKiApIHB2UG9ydE1hbGxvYyggc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUyApOw0KKwljb25maWdBU1NFUlQoIHBjUmVjZWl2ZWRTdHJpbmcgKTsNCisNCisJLyogRG9uJ3QgZXhwZWN0IHRvIHJlY2VpdmUgYW55dGhpbmcgeWV0ISAqLw0KKwl4VGltZU9uRW50ZXJpbmcgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KKwl4UmVjZWl2ZWRMZW5ndGggPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUywgeFRpY2tzVG9CbG9jayApOw0KKwljb25maWdBU1NFUlQoICggeFRhc2tHZXRUaWNrQ291bnQoKSAtIHhUaW1lT25FbnRlcmluZyApID49IHhUaWNrc1RvQmxvY2sgKTsNCisJY29uZmlnQVNTRVJUKCB4UmVjZWl2ZWRMZW5ndGggPT0gMCApOw0KKwkoIHZvaWQgKSB4VGltZU9uRW50ZXJpbmc7DQorDQorCS8qIE5vdyB0aGUgc3RyZWFtIGJ1ZmZlcnMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhlIGVjaG8gY2xpZW50IHRhc2sgY2FuIGJlDQorCWNyZWF0ZWQuICBJZiB0aGlzIHNlcnZlciB0YXNrIGhhcyB0aGUgaGlnaGVyIHByaW9yaXR5IHRoZW4gdGhlIGNsaWVudCB0YXNrDQorCWlzIGNyZWF0ZWQgYXQgdGhlIGxvd2VyIHByaW9yaXR5IC0gaWYgdGhpcyBzZXJ2ZXIgdGFzayBoYXMgdGhlIGxvd2VyDQorCXByaW9yaXR5IHRoZW4gdGhlIGNsaWVudCB0YXNrIGlzIGNyZWF0ZWQgYXQgdGhlIGhpZ2hlciBwcmlvcml0eS4gKi8NCisJaWYoIHV4VGFza1ByaW9yaXR5R2V0KCBOVUxMICkgPT0gc2JMT1dFUl9QUklPUklUWSApDQorCXsNCisJCXhUYXNrQ3JlYXRlKCBwcnZFY2hvQ2xpZW50LCAiRWNob0NsaWVudCIsIHNiU1RBQ0tfU0laRSwgICggdm9pZCAqICkgJnhTdHJlYW1CdWZmZXJzLCBzYkhJR0hFUl9QUklPUklUWSwgTlVMTCApOw0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogSGVyZSBwcnZTaW5nbGVUYXNrVGVzdHMoKSBwZXJmb3JtcyB2YXJpb3VzIHRlc3RzIG9uIGEgc3RyZWFtIGJ1ZmZlcg0KKwkJdGhhdCB3YXMgY3JlYXRlZCBkeW5hbWljYWxseS4gKi8NCisJCXBydlNpbmdsZVRhc2tUZXN0cyggeFN0cmVhbUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIgKTsNCisJCXhUYXNrQ3JlYXRlKCBwcnZFY2hvQ2xpZW50LCAiRWNob0NsaWVudCIsIHNiU1RBQ0tfU0laRSwgKCB2b2lkICogKSAmeFN0cmVhbUJ1ZmZlcnMsIHNiTE9XRVJfUFJJT1JJVFksIE5VTEwgKTsNCisJfQ0KKw0KKwlmb3IoIDs7ICkNCisJew0KKwkJbWVtc2V0KCBwY1JlY2VpdmVkU3RyaW5nLCAweDAwLCBzYlNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTICk7DQorDQorCQkvKiBIYXMgYW55IGRhdGEgYmVlbiBzZW50IGJ5IHRoZSBjbGllbnQ/ICovDQorCQl4UmVjZWl2ZWRMZW5ndGggPSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggeFN0cmVhbUJ1ZmZlcnMueEVjaG9DbGllbnRCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgc2JTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUywgeFRpY2tzVG9CbG9jayApOw0KKw0KKwkJLyogU2hvdWxkIGFsd2F5cyByZWNlaXZlIGRhdGEgYXMgYSBkZWxheSB3YXMgdXNlZC4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeFJlY2VpdmVkTGVuZ3RoID4gMCApOw0KKw0KKwkJLyogRWNobyB0aGUgcmVjZWl2ZWQgZGF0YSBiYWNrIHRvIHRoZSBjbGllbnQuICovDQorCQl4U3RyZWFtQnVmZmVyU2VuZCggeFN0cmVhbUJ1ZmZlcnMueEVjaG9TZXJ2ZXJCdWZmZXIsICggdm9pZCAqICkgcGNSZWNlaXZlZFN0cmluZywgeFJlY2VpdmVkTGVuZ3RoLCBwb3J0TUFYX0RFTEFZICk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UGVyaW9kaWNTdHJlYW1CdWZmZXJQcm9jZXNzaW5nKCB2b2lkICkNCit7DQorc3RhdGljIHNpemVfdCB4TmV4dENoYXIgPSAwOw0KK0Jhc2VUeXBlX3QgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsNCisNCisJLyogQ2FsbGVkIGZyb20gdGhlIHRpY2sgaW50ZXJydXB0IGhvb2suICBJZiB0aGUgZ2xvYmFsIHN0cmVhbSBidWZmZXINCisJdmFyaWFibGUgaXMgbm90IE5VTEwgdGhlbiB0aGUgcHJ2SW50ZXJydXB0VHJpZ2dlclRlc3QoKSB0YXNrIGV4cGVjdHMgYSBieXRlDQorCXRvIGJlIHNlbnQgdG8gdGhlIHN0cmVhbSBidWZmZXIgb24gZWFjaCB0aWNrIGludGVycnVwdC4gKi8NCisJaWYoIHhJbnRlcnJ1cHRTdHJlYW1CdWZmZXIgIT0gTlVMTCApDQorCXsNCisJCS8qIE9uZSBjaGFyYWN0ZXIgZnJvbSB0aGUgcGNEYXRhU2VudEZyb21JbnRlcnJ1cHQgc3RyaW5nIGlzIHNlbnQgb24gZWFjaA0KKwkJaW50ZXJydXB0LiAgVGhlIHRhc2sgYmxvY2tlZCBvbiB0aGUgc3RyZWFtIGJ1ZmZlciBzaG91bGQgbm90IGJlDQorCQl1bmJsb2NrZWQgdW50aWwgdGhlIGRlZmluZWQgdHJpZ2dlciBsZXZlbCBpcyBoaXQuICovDQorCQl4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHhJbnRlcnJ1cHRTdHJlYW1CdWZmZXIsICggY29uc3Qgdm9pZCAqICkgJiggcGNEYXRhU2VudEZyb21JbnRlcnJ1cHRbIHhOZXh0Q2hhciBdICksIHNpemVvZiggY2hhciApLCAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorDQorCQlpZiggeE5leHRDaGFyIDwgc3RybGVuKCBwY0RhdGFTZW50RnJvbUludGVycnVwdCApICkNCisJCXsNCisJCQl4TmV4dENoYXIrKzsNCisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCS8qIFN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyBiZWluZyBzZW50IGFnYWluLiAqLw0KKwkJeE5leHRDaGFyID0gMDsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZJbnRlcnJ1cHRUcmlnZ2VyTGV2ZWxUZXN0KCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyOw0KK3NpemVfdCB4VHJpZ2dlckxldmVsID0gMSwgeEJ5dGVzUmVjZWl2ZWQ7DQorY29uc3Qgc2l6ZV90IHhTdHJlYW1CdWZmZXJTaXplQnl0ZXMgPSAoIHNpemVfdCApIDgsIHhNYXhUcmlnZ2VyTGV2ZWwgPSAoIHNpemVfdCApIDYsIHhNaW5UcmlnZ2VyTGV2ZWwgPSAoIHNpemVfdCApIDE7DQorY29uc3QgVGlja1R5cGVfdCB4UmVhZEJsb2NrVGltZSA9IDQsIHhDeWNsZUJsb2NrVGltZSA9IHBkTVNfVE9fVElDS1MoIDEwMCApOw0KK3VpbnQ4X3QgdWNSeERhdGFbIDggXTsNCitCYXNlVHlwZV90IHhFcnJvckRldGVjdGVkID0gcGRGQUxTRTsNCisjaWZuZGVmIGNvbmZpZ1NUUkVBTV9CVUZGRVJfVFJJR0dFUl9MRVZFTF9URVNUX01BUkdJTg0KKyAgICBjb25zdCBzaXplX3QgeEFsbG93YWJsZU1hcmdpbiA9ICggc2l6ZV90ICkgMDsNCisjZWxzZQ0KKyAgICBjb25zdCBzaXplX3QgeEFsbG93YWJsZU1hcmdpbiA9ICggc2l6ZV90ICkgY29uZmlnU1RSRUFNX0JVRkZFUl9UUklHR0VSX0xFVkVMX1RFU1RfTUFSR0lOOw0KKyNlbmRpZg0KKw0KKwkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCWZvciggOzsgKQ0KKwl7DQorCQlmb3IoIHhUcmlnZ2VyTGV2ZWwgPSB4TWluVHJpZ2dlckxldmVsOyB4VHJpZ2dlckxldmVsIDwgeE1heFRyaWdnZXJMZXZlbDsgeFRyaWdnZXJMZXZlbCsrICkNCisJCXsNCisJCQkvKiBDcmVhdGUgdGhlIHN0cmVhbSBidWZmZXIgdGhhdCB3aWxsIGJlIHVzZWQgZnJvbSBpbnNpZGUgdGhlIHRpY2sNCisJCQlpbnRlcnJ1cHQuICovDQorCQkJeFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGUoIHhTdHJlYW1CdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWwgKTsNCisJCQljb25maWdBU1NFUlQoIHhTdHJlYW1CdWZmZXIgKTsNCisNCisJCQkvKiBOb3cgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZCBpdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlDQorCQkJZmlsZSBzY29wZSB2YXJpYWJsZSwgd2hpY2ggd2lsbCBhbGxvdyB0aGUgdGljayBpbnRlcnJ1cHQgdG8gc3RhcnQNCisJCQl1c2luZyBpdC4gKi8NCisJCQl0YXNrRU5URVJfQ1JJVElDQUwoKTsNCisJCQl7DQorCQkJCXhJbnRlcnJ1cHRTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyOw0KKwkJCX0NCisJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKw0KKwkJCXhCeXRlc1JlY2VpdmVkID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsICggdm9pZCAqICkgdWNSeERhdGEsIHNpemVvZiggdWNSeERhdGEgKSwgeFJlYWRCbG9ja1RpbWUgKTsNCisNCisJCQkvKiBTZXQgdGhlIGZpbGUgc2NvcGUgdmFyaWFibGUgYmFjayB0byBOVUxMIHNvIHRoZSBpbnRlcnJ1cHQgZG9lc24ndA0KKwkJCXRyeSB0byB1c2UgaXQgYWdhaW4uICovDQorCQkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQkJew0KKwkJCQl4SW50ZXJydXB0U3RyZWFtQnVmZmVyID0gTlVMTDsNCisJCQl9DQorCQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisNCisJCQkvKiBOb3cgY2hlY2sgdGhlIG51bWJlciBvZiBieXRlcyByZWNlaXZlZCBlcXVhbHMgdGhlIHRyaWdnZXIgbGV2ZWwsDQorCQkJZXhjZXB0IGluIHRoZSBjYXNlIHRoYXQgdGhlIHJlYWQgdGltZWQgb3V0IGJlZm9yZSB0aGUgdHJpZ2dlciBsZXZlbA0KKwkJCXdhcyByZWFjaGVkLiAqLw0KKwkJCWlmKCB4Qnl0ZXNSZWNlaXZlZCA8IHhUcmlnZ2VyTGV2ZWwgKQ0KKwkJCXsNCisJCQkJLyogVGhpcyBzaG91bGQgb25seSBoYXBwZW4gaWYgdGhlIHRyaWdnZXIgbGV2ZWwgd2FzIGdyZWF0ZXIgdGhhbg0KKwkJCQl0aGUgYmxvY2sgdGltZS4gKi8NCisJCQkJaWYoIHhUcmlnZ2VyTGV2ZWwgPCB4UmVhZEJsb2NrVGltZSApDQorCQkJCXsNCisJCQkJCXhFcnJvckRldGVjdGVkID0gcGRUUlVFOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWVsc2UgaWYoICggeEJ5dGVzUmVjZWl2ZWQgLSB4VHJpZ2dlckxldmVsICkgPiB4QWxsb3dhYmxlTWFyZ2luICkNCisJCQl7DQorCQkJCS8qIEEgbWFyZ2luIG1heSBiZSByZXF1aXJlZCBoZXJlIGlmIHRoZXJlIGFyZSBvdGhlciBoaWdoIHByaW9yaXR5DQorCQkJCXRhc2tzIHByZXZlbnQgdGhlIHRhc2sgdGhhdCByZWFkcyBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlciBydW5uaW5nDQorCQkJCWltbWVkaWF0ZWx5LiAqLw0KKwkJCQl4RXJyb3JEZXRlY3RlZCA9IHBkVFJVRTsNCisJCQl9DQorDQorCQkJaWYoIHhCeXRlc1JlY2VpdmVkID4gc2l6ZW9mKCB1Y1J4RGF0YSApICkNCisJCQl7DQorCQkJCXhFcnJvckRldGVjdGVkID0gcGRUUlVFOw0KKwkJCX0NCisJCQllbHNlIGlmKCBtZW1jbXAoICggdm9pZCAqICkgdWNSeERhdGEsICggY29uc3Qgdm9pZCAqICkgcGNEYXRhU2VudEZyb21JbnRlcnJ1cHQsIHhCeXRlc1JlY2VpdmVkICkgIT0gMCApDQorCQkJew0KKwkJCQkvKiBSZWNlaXZlZCBkYXRhIGRpZG4ndCBtYXRjaCB0aGF0IGV4cGVjdGVkLiAqLw0KKwkJCQl4RXJyb3JEZXRlY3RlZCA9IHBkVFJVRTsNCisJCQl9DQorDQorCQkJaWYoIHhFcnJvckRldGVjdGVkID09IHBkRkFMU0UgKQ0KKwkJCXsNCisJCQkJLyogSW5jcmVtZW50IHRoZSBjeWNsZSBjb3VudGVyIHNvIHRoZSAnY2hlY2snIHRhc2sga25vd3MgdGhpcyB0ZXN0DQorCQkJCWlzIHN0aWxsIHJ1bm5pbmcgd2l0aG91dCBlcnJvci4gKi8NCisJCQkJdWxJbnRlcnJ1cHRUcmlnZ2VyQ291bnRlcisrOw0KKwkJCX0NCisNCisJCQkvKiBUaWR5IHVwIHJlYWR5IGZvciB0aGUgbmV4dCBsb29wLiAqLw0KKwkJCXZTdHJlYW1CdWZmZXJEZWxldGUoIHhTdHJlYW1CdWZmZXIgKTsNCisJCQl2VGFza0RlbGF5KCB4Q3ljbGVCbG9ja1RpbWUgKTsNCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZyggdm9pZCApDQorew0KK3N0YXRpYyB1aW50MzJfdCB1bExhc3RFY2hvTG9vcENvdW50ZXJzWyBzYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFMgXSA9IHsgMCB9Ow0KK3N0YXRpYyB1aW50MzJfdCB1bExhc3ROb25CbG9ja2luZ1J4Q291bnRlciA9IDA7DQorc3RhdGljIHVpbnQzMl90IHVsTGFzdEludGVycnVwdFRyaWdnZXJDb3VudGVyID0gMDsNCitCYXNlVHlwZV90IHhSZXR1cm4gPSBwZFBBU1MsIHg7DQorDQorCWZvciggeCA9IDA7IHggPCBzYk5VTUJFUl9PRl9FQ0hPX0NMSUVOVFM7IHgrKyApDQorCXsNCisJCWlmKCB1bExhc3RFY2hvTG9vcENvdW50ZXJzWyB4IF0gPT0gdWxFY2hvTG9vcENvdW50ZXJzWyB4IF0gKQ0KKwkJew0KKwkJCXhSZXR1cm4gPSBwZEZBSUw7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJdWxMYXN0RWNob0xvb3BDb3VudGVyc1sgeCBdID0gdWxFY2hvTG9vcENvdW50ZXJzWyB4IF07DQorCQl9DQorCX0NCisNCisJaWYoIHVsTm9uQmxvY2tpbmdSeENvdW50ZXIgPT0gdWxMYXN0Tm9uQmxvY2tpbmdSeENvdW50ZXIgKQ0KKwl7DQorCQl4UmV0dXJuID0gcGRGQUlMOw0KKwl9DQorCWVsc2UNCisJew0KKwkJdWxMYXN0Tm9uQmxvY2tpbmdSeENvdW50ZXIgPSB1bE5vbkJsb2NraW5nUnhDb3VudGVyOw0KKwl9DQorDQorCWlmKCB1bExhc3RJbnRlcnJ1cHRUcmlnZ2VyQ291bnRlciA9PSB1bEludGVycnVwdFRyaWdnZXJDb3VudGVyICkNCisJew0KKwkJeFJldHVybiA9IHBkRkFJTDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXVsTGFzdEludGVycnVwdFRyaWdnZXJDb3VudGVyID0gdWxJbnRlcnJ1cHRUcmlnZ2VyQ291bnRlcjsNCisJfQ0KKw0KKwkjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSApDQorCXsNCisJCXN0YXRpYyB1aW50MzJfdCB1bExhc3RTZW5kZXJMb29wQ291bnRlcnNbIHNiTlVNQkVSX09GX0VDSE9fQ0xJRU5UUyBdID0geyAwIH07DQorDQorCQlmb3IoIHggPSAwOyB4IDwgc2JOVU1CRVJfT0ZfU0VOREVSX1RBU0tTOyB4KysgKQ0KKwkJew0KKwkJCWlmKCB1bExhc3RTZW5kZXJMb29wQ291bnRlcnNbIHggXSA9PSB1bFNlbmRlckxvb3BDb3VudGVyc1sgeCBdICkNCisJCQl7DQorCQkJCXhSZXR1cm4gPSBwZEZBSUw7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCXVsTGFzdFNlbmRlckxvb3BDb3VudGVyc1sgeCBdID0gdWxTZW5kZXJMb29wQ291bnRlcnNbIHggXTsNCisJCQl9DQorCQl9DQorCX0NCisJI2VuZGlmIC8qIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gKi8NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvU3RyZWFtQnVmZmVySW50ZXJydXB0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1N0cmVhbUJ1ZmZlckludGVycnVwdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NmYxMmUKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1N0cmVhbUJ1ZmZlckludGVycnVwdC5jCkBAIC0wLDAgKzEsMjI5IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qDQorICogQSBzaW1wbGUgZXhhbXBsZSB0aGF0IHNob3dzIGEgc3RyZWFtIGJ1ZmZlciBiZWluZyB1c2VkIHRvIHBhc3MgZGF0YSBmcm9tIGFuDQorICogaW50ZXJydXB0IHRvIGEgdGFzay4NCisgKg0KKyAqIFRoZXJlIGFyZSB0d28gc3RyaW5ncywgcGNTdHJpbmdUb1NlbmQgYW5kIHBjU3RyaW5nVG9SZWNlaXZlLCB3aGVyZQ0KKyAqIHBjU3RyaW5nVG9SZWNlaXZlIGlzIGEgc3Vic3RyaW5nIG9mIHBjU3RyaW5nVG9TZW5kLiAgVGhlIGludGVycnVwdCBzZW5kcw0KKyAqIGEgZmV3IGJ5dGVzIG9mIHBjU3RyaW5nVG9TZW5kIHRvIGEgc3RyZWFtIGJ1ZmZlciBldmVyIGZldyB0aW1lcyB0aGF0IGl0DQorICogZXhlY3V0ZXMuICBBIHRhc2sgcmVhZHMgdGhlIGJ5dGVzIGZyb20gdGhlIHN0cmVhbSBidWZmZXIsIGxvb2tpbmcgZm9yIHRoZQ0KKyAqIHN1YnN0cmluZywgYW5kIGZsYWdnaW5nIGFuIGVycm9yIGlmIHRoZSByZWNlaXZlZCBkYXRhIGlzIGludmFsaWQuDQorICovDQorDQorLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgInN0ZGlvLmgiDQorI2luY2x1ZGUgInN0cmluZy5oIg0KKw0KKy8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorI2luY2x1ZGUgInN0cmVhbV9idWZmZXIuaCINCisNCisvKiBEZW1vIGFwcCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiU3RyZWFtQnVmZmVySW50ZXJydXB0LmgiDQorDQorI2RlZmluZSBzYmlTVFJFQU1fQlVGRkVSX0xFTkdUSF9CWVRFUwkJKCAoIHNpemVfdCApIDEwMCApDQorI2RlZmluZSBzYmlTVFJFQU1fQlVGRkVSX1RSSUdHRVJfTEVWRUxfMTAJKCAoIEJhc2VUeXBlX3QgKSAxMCApDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogSW1wbGVtZW50cyB0aGUgdGFzayB0aGF0IHJlY2VpdmVzIGEgc3RyZWFtIG9mIGJ5dGVzIGZyb20gdGhlIGludGVycnVwdC4gKi8NCitzdGF0aWMgdm9pZCBwcnZSZWNlaXZpbmdUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUaGUgc3RyZWFtIGJ1ZmZlciB0aGF0IGlzIHVzZWQgdG8gc2VuZCBkYXRhIGZyb20gYW4gaW50ZXJydXB0IHRvIHRoZSB0YXNrLiAqLw0KK3N0YXRpYyBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyID0gTlVMTDsNCisNCisvKiBUaGUgc3RyaW5nIHRoYXQgaXMgc2VudCBmcm9tIHRoZSBpbnRlcnJ1cHQgdG8gdGhlIHRhc2sgZm91ciBieXRlcyBhdCBhDQordGltZS4gIE11c3QgYmUgbXVsdGlwbGUgb2YgNCBieXRlcyBsb25nIGFzIHRoZSBJU1Igc2VuZHMgNCBieXRlcyBhdCBhIHRpbWUqLw0KK3N0YXRpYyBjb25zdCBjaGFyICogcGNTdHJpbmdUb1NlbmQgPSAiX19fX19IZWxsbyBGcmVlUlRPU19fX19fIjsNCisNCisvKiBUaGUgc3RyaW5nIHRvIHRhc2sgaXMgbG9va2luZyBmb3IsIHdoaWNoIG11c3QgYmUgYSBzdWJzdHJpbmcgb2YNCitwY1N0cmluZ1RvU2VuZC4gKi8NCitzdGF0aWMgY29uc3QgY2hhciAqIHBjU3RyaW5nVG9SZWNlaXZlID0gIkhlbGxvIEZyZWVSVE9TIjsNCisNCisvKiBTZXQgdG8gcGRGQUlMIGlmIGFueXRoaW5nIHVuZXhwZWN0ZWQgaGFwcGVucy4gKi8NCitzdGF0aWMgQmFzZVR5cGVfdCB4RGVtb1N0YXR1cyA9IHBkUEFTUzsNCisNCisvKiBJbmNyZW1lbnRlZCBlYWNoIHRpbWUgcGNTdHJpbmdUb1JlY2VpdmUgaXMgY29ycmVjdGx5IHJlY2VpdmVkLCBwcm92aWRlZCBubw0KK2Vycm9ycyBoYXZlIG9jY3VycmVkLiAgVXNlZCBzbyB0aGUgY2hlY2sgdGFzayBjYW4gY2hlY2sgdGhpcyB0YXNrIGlzIHN0aWxsDQorcnVubmluZyBhcyBleHBlY3RlZC4gKi8NCitzdGF0aWMgdWludDMyX3QgdWxDeWNsZUNvdW50ID0gMDsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZTdGFydFN0cmVhbUJ1ZmZlckludGVycnVwdERlbW8oIHZvaWQgKQ0KK3sNCisJLyogQ3JlYXRlIHRoZSBzdHJlYW0gYnVmZmVyIHRoYXQgc2VuZHMgZGF0YSBmcm9tIHRoZSBpbnRlcnJ1cHQgdG8gdGhlDQorCXRhc2ssIGFuZCBjcmVhdGUgdGhlIHRhc2suICovDQorCXhTdHJlYW1CdWZmZXIgPSB4U3RyZWFtQnVmZmVyQ3JlYXRlKCAvKiBUaGUgYnVmZmVyIGxlbmd0aCBpbiBieXRlcy4gKi8NCisJCQkJCQkJCQkJIHNiaVNUUkVBTV9CVUZGRVJfTEVOR1RIX0JZVEVTLA0KKwkJCQkJCQkJCQkgLyogVGhlIHN0cmVhbSBidWZmZXIncyB0cmlnZ2VyIGxldmVsLiAqLw0KKwkJCQkJCQkJCQkgc2JpU1RSRUFNX0JVRkZFUl9UUklHR0VSX0xFVkVMXzEwICk7DQorDQorCXhUYXNrQ3JlYXRlKCBwcnZSZWNlaXZpbmdUYXNrLCAvKiBUaGUgZnVuY3Rpb24gdGhhdCBpbXBsZW1lbnRzIHRoZSB0YXNrLiAqLw0KKwkJCQkgIlN0ckludFJ4IiwJICAgLyogSHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgdGhlIHRhc2suICovDQorCQkJCSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsCS8qIFN0YWNrIHNpemUgKGluIHdvcmRzISkuICovDQorCQkJCSBOVUxMLAkJCSAgIC8qIFRhc2sgcGFyYW1ldGVyIGlzIG5vdCB1c2VkLiAqLw0KKwkJCQkgdHNrSURMRV9QUklPUklUWSArIDIsIC8qIFRoZSBwcmlvcml0eSBhdCB3aGljaCB0aGUgdGFzayBpcyBjcmVhdGVkLiAqLw0KKwkJCQkgTlVMTCApOwkJICAgLyogTm8gdXNlIGZvciB0aGUgdGFzayBoYW5kbGUuICovDQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlJlY2VpdmluZ1Rhc2soIHZvaWQgKnB2UGFyYW1ldGVycyApDQorew0KK2NoYXIgY1J4QnVmZmVyWyAyMCBdOw0KK0Jhc2VUeXBlX3QgeE5leHRCeXRlID0gMDsNCisNCisJLyogUmVtb3ZlIHdhcm5pbmcgYWJvdXQgdW51c2VkIHBhcmFtZXRlcnMuICovDQorCSggdm9pZCApIHB2UGFyYW1ldGVyczsNCisNCisJLyogTWFrZSBzdXJlIHRoZSBzdHJpbmcgd2lsbCBmaXQgaW4gdGhlIFJ4IGJ1ZmZlciwgaW5jbHVkaW5nIHRoZSBOVUxMDQorCXRlcm1pbmF0b3IuICovDQorCWNvbmZpZ0FTU0VSVCggc2l6ZW9mKCBjUnhCdWZmZXIgKSA+IHN0cmxlbiggcGNTdHJpbmdUb1JlY2VpdmUgKSApOw0KKw0KKwkvKiBNYWtlIHN1cmUgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZC4gKi8NCisJY29uZmlnQVNTRVJUKCB4U3RyZWFtQnVmZmVyICE9IE5VTEwgKTsNCisNCisJLyogU3RhcnQgd2l0aCB0aGUgUnggYnVmZmVyIGluIGEga25vd24gc3RhdGUuICovDQorCW1lbXNldCggY1J4QnVmZmVyLCAweDAwLCBzaXplb2YoIGNSeEJ1ZmZlciApICk7DQorDQorCWZvciggOzsgKQ0KKwl7DQorCQkvKiBLZWVwIHJlY2VpdmluZyBjaGFyYWN0ZXJzIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZyBpcyByZWNlaXZlZC4NCisJCU5vdGU6ICBBbiBpbmZpbml0ZSBibG9jayB0aW1lIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGV4YW1wbGUuICBJbmZpbml0ZQ0KKwkJYmxvY2sgdGltZXMgYXJlIG5vdCByZWNvbW1lbmRlZCBpbiBwcm9kdWN0aW9uIGNvZGUgYXMgdGhleSBkbyBub3QgYWxsb3cNCisJCWZvciBlcnJvciByZWNvdmVyeS4gKi8NCisJCXhTdHJlYW1CdWZmZXJSZWNlaXZlKCAvKiBUaGUgc3RyZWFtIGJ1ZmZlciBkYXRhIGlzIGJlaW5nIHJlY2VpdmVkIGZyb20uICovDQorCQkJCQkJCSAgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJICAvKiBXaGVyZSB0byBwbGFjZSByZWNlaXZlZCBkYXRhLiAqLw0KKwkJCQkJCQkgICggdm9pZCAqICkgJiggY1J4QnVmZmVyWyB4TmV4dEJ5dGUgXSApLA0KKwkJCQkJCQkgIC8qIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVjZWl2ZS4gKi8NCisJCQkJCQkJICBzaXplb2YoIGNoYXIgKSwNCisJCQkJCQkJICAvKiBUaGUgdGltZSB0byB3YWl0IGZvciB0aGUgbmV4dCBkYXRhIGlmIHRoZSBidWZmZXINCisJCQkJCQkJICBpcyBlbXB0eS4gKi8NCisJCQkJCQkJICBwb3J0TUFYX0RFTEFZICk7DQorDQorCQkvKiBJZiB4TmV4dEJ5dGUgaXMgMCB0aGVuIHRoaXMgdGFzayBpcyBsb29raW5nIGZvciB0aGUgc3RhcnQgb2YgdGhlDQorCQlzdHJpbmcsIHdoaWNoIGlzICdIJy4gKi8NCisJCWlmKCB4TmV4dEJ5dGUgPT0gMCApDQorCQl7DQorCQkJaWYoIGNSeEJ1ZmZlclsgeE5leHRCeXRlIF0gPT0gJ0gnICkNCisJCQl7DQorCQkJCS8qIFRoZSBzdGFydCBvZiB0aGUgc3RyaW5nIGhhcyBiZWVuIGZvdW5kLiAgTm93IHJlY2VpdmUNCisJCQkJY2hhcmFjdGVycyB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgaXMgZm91bmQuICovDQorCQkJCXhOZXh0Qnl0ZSsrOw0KKwkJCX0NCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQkvKiBSZWNlaXZpbmcgY2hhcmFjdGVycyB3aGlsZSBsb29raW5nIGZvciB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsDQorCQkJd2hpY2ggaXMgYW4gJ1MnLiAqLw0KKwkJCWlmKCBjUnhCdWZmZXJbIHhOZXh0Qnl0ZSBdID09ICdTJyApDQorCQkJew0KKwkJCQkvKiBUaGUgc3RyaW5nIGhhcyBub3cgYmVlbiByZWNlaXZlZC4gIENoZWNrIGl0cyB2YWxpZGl0eS4gKi8NCisJCQkJaWYoIHN0cmNtcCggY1J4QnVmZmVyLCBwY1N0cmluZ1RvUmVjZWl2ZSApICE9IDAgKQ0KKwkJCQl7DQorCQkJCQl4RGVtb1N0YXR1cyA9IHBkRkFJTDsNCisJCQkJfQ0KKw0KKwkJCQkvKiBSZXR1cm4gdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nDQorCQkJCWFnYWluLiAqLw0KKwkJCQltZW1zZXQoIGNSeEJ1ZmZlciwgMHgwMCwgc2l6ZW9mKCBjUnhCdWZmZXIgKSApOw0KKwkJCQl4TmV4dEJ5dGUgPSAwOw0KKw0KKwkJCQkvKiBJbmNyZW1lbnQgdGhlIGN5Y2xlIGNvdW50IGFzIGFuIGluZGljYXRpb24gdG8gdGhlIGNoZWNrIHRhc2sNCisJCQkJdGhhdCB0aGlzIGRlbW8gaXMgc3RpbGwgcnVubmluZy4gKi8NCisJCQkJaWYoIHhEZW1vU3RhdHVzID09IHBkUEFTUyApDQorCQkJCXsNCisJCQkJCXVsQ3ljbGVDb3VudCsrOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCS8qIFJlY2VpdmUgdGhlIG5leHQgY2hhcmFjdGVyIHRoZSBuZXh0IHRpbWUgYXJvdW5kLCB3aGlsZQ0KKwkJCQljb250aW51aW5nIHRvIGxvb2sgZm9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8NCisJCQkJeE5leHRCeXRlKys7DQorDQorCQkJCWNvbmZpZ0FTU0VSVCggeE5leHRCeXRlIDwgc2l6ZW9mKCBjUnhCdWZmZXIgKSApOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZCYXNpY1N0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCB2b2lkICkNCit7DQorc3RhdGljIHNpemVfdCB4TmV4dEJ5dGVUb1NlbmQgPSAwOw0KK2NvbnN0IEJhc2VUeXBlX3QgeENhbGxzQmV0d2VlblNlbmRzID0gMTAwLCB4Qnl0ZXNUb1NlbmQgPSA0Ow0KK3N0YXRpYyBCYXNlVHlwZV90IHhDYWxsQ291bnQgPSAwOw0KKw0KKwkvKiBJcyBpdCB0aW1lIHRvIHdyaXRlIHRvIHRoZSBzdHJlYW0gYnVmZmVyIGFnYWluPyAqLw0KKwl4Q2FsbENvdW50Kys7DQorCWlmKCB4Q2FsbENvdW50ID4geENhbGxzQmV0d2VlblNlbmRzICkNCisJew0KKwkJeENhbGxDb3VudCA9IDA7DQorDQorCQkvKiBTZW5kIHRoZSBuZXh0IGZvdXIgYnl0ZXMgdG8gdGhlIHN0cmVhbSBidWZmZXIuICovDQorCQl4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkgICggdm9pZCAqICkgKCBwY1N0cmluZ1RvU2VuZCArIHhOZXh0Qnl0ZVRvU2VuZCApLA0KKwkJCQkJCQkJICB4Qnl0ZXNUb1NlbmQsDQorCQkJCQkJCQkgIE5VTEwgKTsNCisNCisJCS8qIFNlbmQgdGhlIG5leHQgZm91ciBieXRlcyB0aGUgbmV4dCB0aW1lIGFyb3VuZCwgd3JhcHBpbmcgdG8gdGhlIHN0YXJ0DQorCQlvZiB0aGUgc3RyaW5nIGlmIG5lY2Vzc2FyeS4gKi8NCisJCXhOZXh0Qnl0ZVRvU2VuZCArPSB4Qnl0ZXNUb1NlbmQ7DQorDQorCQlpZiggeE5leHRCeXRlVG9TZW5kID49IHN0cmxlbiggcGNTdHJpbmdUb1NlbmQgKSApDQorCQl7DQorCQkJeE5leHRCeXRlVG9TZW5kID0gMDsNCisJCX0NCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhJc0ludGVycnVwdFN0cmVhbUJ1ZmZlckRlbW9TdGlsbFJ1bm5pbmcoIHZvaWQgKQ0KK3sNCit1aW50MzJfdCB1bExhc3RDeWNsZUNvdW50ID0gMDsNCisNCisJLyogQ2hlY2sgdGhlIGRlbW8gaXMgc3RpbGwgcnVubmluZy4gKi8NCisJaWYoIHVsTGFzdEN5Y2xlQ291bnQgPT0gdWxDeWNsZUNvdW50ICkNCisJew0KKwkJeERlbW9TdGF0dXMgPSBwZEZBSUw7DQorCX0NCisJZWxzZQ0KKwl7DQorCQl1bExhc3RDeWNsZUNvdW50ID0gdWxDeWNsZUNvdW50Ow0KKwl9DQorDQorCXJldHVybiB4RGVtb1N0YXR1czsNCit9DQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9UYXNrTm90aWZ5LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1Rhc2tOb3RpZnkuYwppbmRleCBlNGNiM2E4Li5kZWRmZGZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1Rhc2tOb3RpZnkuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1Rhc2tOb3RpZnkuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCkBAIC0xNjgsNiArMTI3LDcgQEAKIAlDaGVjayBibG9ja2luZyB3aGVuIHRoZXJlIGFyZSBubyBub3RpZmljYXRpb25zLiAqLw0KIAl4VGltZU9uRW50ZXJpbmcgPSB4VGFza0dldFRpY2tDb3VudCgpOw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIG5vdGlmeVVJTlQzMl9NQVgsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIHhUaWNrc1RvV2FpdCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogCS8qIFNob3VsZCBoYXZlIGJsb2NrZWQgZm9yIHRoZSBlbnRpcmUgYmxvY2sgdGltZS4gKi8NCiAJaWYoICggeFRhc2tHZXRUaWNrQ291bnQoKSAtIHhUaW1lT25FbnRlcmluZyApIDwgeFRpY2tzVG9XYWl0ICkNCkBAIC0xNzYsNiArMTM2LDggQEAKIAl9DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkRkFJTCApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSAwVUwgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogDQogDQpAQCAtMTg5LDkgKzE1MSwxMSBAQAogCS8qIEV2ZW4gdGhyb3VnaCB0aGUgJ3dpdGhvdXQgb3ZlcndyaXRlJyBhY3Rpb24gd2FzIHVzZWQgdGhlIHVwZGF0ZSBzaG91bGQNCiAJaGF2ZSBiZWVuIHN1Y2Nlc3NmdWwuICovDQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogCS8qIE5vIGJpdHMgc2hvdWxkIGhhdmUgYmVlbiBwZW5kaW5nIHByZXZpb3VzbHkuICovDQogCWNvbmZpZ0FTU0VSVCggdWxQcmV2aW91c1ZhbHVlID09IDAgKTsNCisJKCB2b2lkICkgdWxQcmV2aW91c1ZhbHVlOw0KIA0KIAkvKiBUaGUgdGFzayBzaG91bGQgbm93IGhhdmUgYSBub3RpZmljYXRpb24gcGVuZGluZywgYW5kIHNvIG5vdCB0aW1lIG91dC4gKi8NCiAJeFRpbWVPbkVudGVyaW5nID0geFRhc2tHZXRUaWNrQ291bnQoKTsNCkBAIC0yMDYsNiArMTcwLDggQEAKIAliZSBlcXVhbCB0byB1bEZpcnN0Tm90aWZpZWRDb25zdC4gKi8NCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09IHVsRmlyc3ROb3RpZmllZENvbnN0ICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgdWxOb3RpZmllZFZhbHVlOw0KIA0KIAkvKiBJbmNyZW1lbnRlZCB0byBzaG93IHRoZSB0YXNrIGlzIHN0aWxsIHJ1bm5pbmcuICovDQogCXVsTm90aWZ5Q3ljbGVDb3VudCsrOw0KQEAgLTIyMSw5ICsxODcsMTEgQEAKIAliZSB0aGF0IHVzZWQgd2l0aCB0aGUgZmlyc3Qgbm90aWZpY2F0aW9uLiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeSggeFRhc2tUb05vdGlmeSwgdWxGaXJzdE5vdGlmaWVkQ29uc3QsIGVTZXRWYWx1ZVdpdGhvdXRPdmVyd3JpdGUgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnkoIHhUYXNrVG9Ob3RpZnksIHVsU2Vjb25kTm90aWZpZWRWYWx1ZUNvbnN0LCBlU2V0VmFsdWVXaXRob3V0T3ZlcndyaXRlICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkRkFJTCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogCS8qIFdhaXRpbmcgZm9yIHRoZSBub3RpZmljYXRpb24gc2hvdWxkIG5vdyByZXR1cm4gaW1tZWRpYXRlbHkgc28gYSBibG9jaw0KIAl0aW1lIG9mIHplcm8gaXMgdXNlZC4gKi8NCkBAIC0yMzEsNiArMTk5LDggQEAKIA0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCiAJY29uZmlnQVNTRVJUKCB1bE5vdGlmaWVkVmFsdWUgPT0gdWxGaXJzdE5vdGlmaWVkQ29uc3QgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogDQogDQpAQCAtMjQzLDExICsyMTMsMTUgQEAKIAliYWNrLiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeSggeFRhc2tUb05vdGlmeSwgdWxGaXJzdE5vdGlmaWVkQ29uc3QsIGVTZXRWYWx1ZVdpdGhPdmVyd3JpdGUgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnkoIHhUYXNrVG9Ob3RpZnksIHVsU2Vjb25kTm90aWZpZWRWYWx1ZUNvbnN0LCBlU2V0VmFsdWVXaXRoT3ZlcndyaXRlICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggbm90aWZ5VUlOVDMyX01BWCwgMCwgJnVsTm90aWZpZWRWYWx1ZSwgMCApOw0KIAljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCisJKCB2b2lkICkgeFJldHVybmVkOyAvKiBJbiBjYXNlIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSB1bFNlY29uZE5vdGlmaWVkVmFsdWVDb25zdCApOw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7DQogDQogDQogDQpAQCAtMjU4LDggKzIzMiwxMCBAQAogCXJlbWFpbiBhdCB1bFNlY29uZE5vdGlmaWVkQ29uc3QuICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5KCB4VGFza1RvTm90aWZ5LCB1bEZpcnN0Tm90aWZpZWRDb25zdCwgZU5vQWN0aW9uICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggbm90aWZ5VUlOVDMyX01BWCwgMCwgJnVsTm90aWZpZWRWYWx1ZSwgMCApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSB1bFNlY29uZE5vdGlmaWVkVmFsdWVDb25zdCApOw0KKwkoIHZvaWQgKSB1bE5vdGlmaWVkVmFsdWU7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogDQogDQpAQCAtMjcyLDE1ICsyNDgsMjAgQEAKIAl7DQogCQl4UmV0dXJuZWQgPSB4VGFza05vdGlmeSggeFRhc2tUb05vdGlmeSwgMCwgZUluY3JlbWVudCApOw0KIAkJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQorCQkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogCX0NCiANCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCBub3RpZnlVSU5UMzJfTUFYLCAwLCAmdWxOb3RpZmllZFZhbHVlLCAwICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSAoIHVsU2Vjb25kTm90aWZpZWRWYWx1ZUNvbnN0ICsgdWxNYXhMb29wcyApICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgdWxOb3RpZmllZFZhbHVlOw0KIA0KIAkvKiBTaG91bGQgbm90IGJlIGFueSBub3RpZmljYXRpb25zIHBlbmRpbmcgbm93LiAqLw0KIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIDAsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIDAgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUlMICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgdWxOb3RpZmllZFZhbHVlOw0KIA0KIA0KIA0KQEAgLTMwNiw2ICsyODcsNyBAQAogCQl3aGVuIGFsbCB0aGUgYml0cyBhcmUgc2V0LiAqLw0KIAkJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCAwLCAwLCAmdWxOb3RpZmllZFZhbHVlLCAwICk7DQogCQljb25maWdBU1NFUlQoIHhSZXR1cm5lZCA9PSBwZFBBU1MgKTsNCisJCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJCXVsTG9vcCsrOw0KIA0KQEAgLTMzMCw2ICszMTIsNyBAQAogCWVudHJ5IHNob3VsZCBhY3R1YWxseSBnZXQgY2xlYXJlZC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCB1bEJpdDAsIHVsQml0MSwgJnVsTm90aWZpZWRWYWx1ZSwgeFRpY2tzVG9XYWl0ICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkRkFJTCApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogCS8qIE5vdGlmeSB0aGUgdGFzayB3aXRoIG5vIGFjdGlvbiBzbyBhcyBub3QgdG8gdXBkYXRlIHRoZSBiaXRzIGV2ZW4gdGhvdWdoDQogCW5vdGlmeVVJTlQzMl9NQVggaXMgdXNlZCBhcyB0aGUgbm90aWZpY2F0aW9uIHZhbHVlLiAqLw0KQEAgLTM0MSw2ICszMjQsNyBAQAogCXhSZXR1cm5lZCA9IHhUYXNrTm90aWZ5V2FpdCggMHgwMFVMLCAweDAwVUwsICZ1bE5vdGlmaWVkVmFsdWUsIDAgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRQQVNTICk7DQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlID09ICggbm90aWZ5VUlOVDMyX01BWCAmIH51bEJpdDAgKSApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogDQogDQogDQpAQCAtMzYzLDYgKzM0Nyw3IEBACiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCAweDAwLCAweDAwLCAmdWxOb3RpZmllZFZhbHVlLCAwICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkRkFJTCApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSAoIG5vdGlmeVVJTlQzMl9NQVggJiB+KCB1bEJpdDAgfCB1bEJpdDEgKSApICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiANCiANCkBAIC00MzUsNiArNDIwLDcgQEAKIAl4UmV0dXJuZWQgPSB4VGFza05vdGlmeVdhaXQoIDAsIDAsICZ1bE5vdGlmaWVkVmFsdWUsIHBvcnRNQVhfREVMQVkgKTsNCiAJY29uZmlnQVNTRVJUKCB4UmV0dXJuZWQgPT0gcGRGQUxTRSApOw0KIAljb25maWdBU1NFUlQoIHVsTm90aWZpZWRWYWx1ZSA9PSAwICk7DQorCSggdm9pZCApIHhSZXR1cm5lZDsgLyogSW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCiANCiAJLyogSW5jcmVtZW50ZWQgdG8gc2hvdyB0aGUgdGFzayBpcyBzdGlsbCBydW5uaW5nLiAqLw0KIAl1bE5vdGlmeUN5Y2xlQ291bnQrKzsNCkBAIC00NDgsNiArNDM0LDcgQEAKIAkvKiBDaGVjayBhIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZC4gKi8NCiAJeFJldHVybmVkID0geFRhc2tOb3RpZnlXYWl0KCAwLCAwLCAmdWxOb3RpZmllZFZhbHVlLCBwb3J0TUFYX0RFTEFZICk7DQogCWNvbmZpZ0FTU0VSVCggeFJldHVybmVkID09IHBkUEFTUyApOw0KKwkoIHZvaWQgKSB4UmV0dXJuZWQ7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogCWNvbmZpZ0FTU0VSVCggdWxOb3RpZmllZFZhbHVlICE9IDAgKTsNCiANCiAJLyogUmV0dXJuIHRoZSB0YXNrIHRvIGl0cyBwcm9wZXIgcHJpb3JpdHkgYW5kIGRlbGV0ZSB0aGUgdGltZXIgYXMgaXQgaXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1RpbWVyRGVtby5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9UaW1lckRlbW8uYwppbmRleCA0Y2ZhYmJjLi42NjQ4MTQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL1RpbWVyRGVtby5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvVGltZXJEZW1vLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jCmluZGV4IDU4YTY2OTguLjU3NmYwOTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvYmxvY2t0aW0uYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2Jsb2NrdGltLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHNvbWUgdGVzdCBzY2VuYXJpb3MgdGhhdCBlbnN1cmUgdGFza3MgZG8gbm90IGV4aXQgcXVldWUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvbXRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdC5jCmluZGV4IDczMzIzNmEuLjczZjE0NWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdF9zdHJpbmdzLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvbXRlc3Rfc3RyaW5ncy5jCmluZGV4IGI3YWRjMGMuLjBlOWY0OWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY29tdGVzdF9zdHJpbmdzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb210ZXN0X3N0cmluZ3MuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NvdW50c2VtLmMKaW5kZXggMzJlZjQwYi4uNGVkNGU4MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY291bnRzZW0uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NyZmxhc2guYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3JmbGFzaC5jCmluZGV4IGY4YzM3MjEuLjdiZTFiYzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3JmbGFzaC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3JmbGFzaC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZGVtbyBhcHBsaWNhdGlvbiBmaWxlIGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIHF1ZXVlcyB0byBwYXNzIGRhdGENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NyaG9vay5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9jcmhvb2suYwppbmRleCA5YzkyYzYxLi4zMDBhNGU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2NyaG9vay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvY3Job29rLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBkZW1vIGZpbGUgZGVtb25zdHJhdGVzIGhvdyB0byBzZW5kIGRhdGEgYmV0d2VlbiBhbiBJU1IgYW5kIGENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2RlYXRoLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2RlYXRoLmMKaW5kZXggNGMyOGUzNy4uOTg2ZDU4YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9kZWF0aC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZGVhdGguYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogQ3JlYXRlIGEgc2luZ2xlIHBlcnNpc3RlbnQgdGFzayB3aGljaCBwZXJpb2RpY2FsbHkgZHluYW1pY2FsbHkgY3JlYXRlcyBhbm90aGVyDQpAQCAtMTMwLDI2ICs4OSw2IEBACiB2b2lkIHZDcmVhdGVTdWljaWRhbFRhc2tzKCBVQmFzZVR5cGVfdCB1eFByaW9yaXR5ICkNCiB7DQogCXhUYXNrQ3JlYXRlKCB2Q3JlYXRlVGFza3MsICJDUkVBVE9SIiwgZGVhdGhTVEFDS19TSVpFLCAoIHZvaWQgKiApIE5VTEwsIHV4UHJpb3JpdHksIE5VTEwgKTsNCi0NCi0JLyogUmVjb3JkIHRoZSBudW1iZXIgb2YgdGFza3MgdGhhdCBhcmUgcnVubmluZyBub3cgc28gd2Uga25vdyBpZiBhbnkgb2YgdGhlDQotCXN1aWNpZGFsIHRhc2tzIGhhdmUgZmFpbGVkIHRvIGJlIGtpbGxlZC4gKi8NCi0JdXhUYXNrc1J1bm5pbmdBdFN0YXJ0ID0gKCBVQmFzZVR5cGVfdCApIHV4VGFza0dldE51bWJlck9mVGFza3MoKTsNCi0NCi0JLyogRnJlZVJUT1Mub3JnIHZlcnNpb25zIGJlZm9yZSBWMy4wIHN0YXJ0ZWQgdGhlIGlkbGUtdGFzayBhcyB0aGUgdmVyeQ0KLQlmaXJzdCB0YXNrLiBUaGUgaWRsZSB0YXNrIHdhcyB0aGVuIGFscmVhZHkgaW5jbHVkZWQgaW4gdXhUYXNrc1J1bm5pbmdBdFN0YXJ0Lg0KLQlGcm9tIEZyZWVSVE9TIFYzLjAgb24sIHRoZSBpZGxlIHRhc2sgaXMgc3RhcnRlZCB3aGVuIHRoZSBzY2hlZHVsZXIgaXMNCi0Jc3RhcnRlZC4gVGhlcmVmb3JlIHRoZSBpZGxlIHRhc2sgaXMgbm90IHlldCBhY2NvdW50ZWQgZm9yLiBXZSBjb3JyZWN0DQotCXRoaXMgYnkgaW5jcmVhc2luZyB1eFRhc2tzUnVubmluZ0F0U3RhcnQgYnkgMS4gKi8NCi0JdXhUYXNrc1J1bm5pbmdBdFN0YXJ0Kys7DQotDQotCS8qIEZyb20gRnJlZVJUT1MgdmVyc2lvbiA3LjAuMCBjYW4gb3B0aW9uYWxseSBjcmVhdGUgYSB0aW1lciBzZXJ2aWNlIHRhc2suDQotCUlmIHRoaXMgaXMgZG9uZSwgdGhlbiB1eFRhc2tzUnVubmluZ0F0U3RhcnQgbmVlZHMgaW5jcmVtZW50aW5nIGFnYWluIGFzIHRoYXQNCi0JdG9vIGlzIGNyZWF0ZWQgd2hlbiB0aGUgc2NoZWR1bGVyIGlzIHN0YXJ0ZWQuICovDQotCSNpZiBjb25maWdVU0VfVElNRVJTID09IDENCi0Jew0KLQkJdXhUYXNrc1J1bm5pbmdBdFN0YXJ0Kys7DQotCX0NCi0JI2VuZGlmDQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KQEAgLTIwNSw2ICsxNDQsMTEgQEAKIAkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBhYm91dCB1bnVzZWQgcGFyYW1ldGVyLiAqLw0KIAkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQogDQorCS8qIERlbGF5IGF0IHRoZSBzdGFydCB0byBlbnN1cmUgdGFza3MgY3JlYXRlZCBieSBvdGhlciBkZW1vcyBoYXZlIGJlZW4NCisJY3JlYXRlZCBiZWZvcmUgc3RvcmluZyB0aGUgY3VycmVudCBudW1iZXIgb2YgdGFza3MuICovDQorCXZUYXNrRGVsYXkoIHhEZWxheSApOw0KKwl1eFRhc2tzUnVubmluZ0F0U3RhcnQgPSAoIFVCYXNlVHlwZV90ICkgdXhUYXNrR2V0TnVtYmVyT2ZUYXNrcygpOw0KKw0KIAl1eFByaW9yaXR5ID0gdXhUYXNrUHJpb3JpdHlHZXQoIE5VTEwgKTsNCiANCiAJZm9yKCA7OyApDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9keW5hbWljLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYwppbmRleCBiMmI4MjcxLi44MDk1MjFkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2R5bmFtaWMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGUgZmlyc3QgdGVzdCBjcmVhdGVzIHRocmVlIHRhc2tzIC0gdHdvIGNvdW50ZXIgdGFza3MgKG9uZSBjb250aW51b3VzIGNvdW50DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbGFzaC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbGFzaC5jCmluZGV4IDc5ZTkzMDQuLjgwN2FlYWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxhc2guYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKg0KICAqIFRoaXMgdmVyc2lvbiBvZiBmbGFzaCAuYyBpcyBmb3IgdXNlIG9uIHN5c3RlbXMgdGhhdCBoYXZlIGxpbWl0ZWQgc3RhY2sgc3BhY2UNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMKaW5kZXggNGFjZWIzNS4uN2Y0ZjU1MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbGFzaF90aW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxhc2hfdGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogUmVwZWF0ZWRseSB0b2dnbGVzIG9uZSBvciBtb3JlIExFRHMgdXNpbmcgc29mdHdhcmUgdGltZXJzIC0gb25lIHRpbWVyIHBlcg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvZmxvcC5jIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbG9wLmMKaW5kZXggOTcxZjg1NS4uODE4NTRmZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbG9wLmMKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9mbG9wLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBlaWdodCB0YXNrcywgZWFjaCBvZiB3aGljaCBsb29wcyBjb250aW51b3VzbHkgcGVyZm9ybWluZyBhIGZsb2F0aW5nDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9pbnRlZ2VyLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ludGVnZXIuYwppbmRleCA3MDVkZWNiLi44OThiODQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ludGVnZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL2ludGVnZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIHRhc2tzIHRoYXQgcmVwZWF0ZWRseSBwZXJmb3JtIGEgc2V0IG9mIGludGVnZXINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3JlY211dGV4LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3JlY211dGV4LmMKaW5kZXggZjI2N2JiNy4uZDY0YjY2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9yZWNtdXRleC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJVGhlIHRhc2tzIGRlZmluZWQgb24gdGhpcyBwYWdlIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgcmVjdXJzaXZlIG11dGV4ZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9zZW10ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYwppbmRleCA1ZGEwMDlhLi45MzQwNTliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIHR3byBzZXRzIG9mIHR3byB0YXNrcy4gIFRoZSB0YXNrcyB3aXRoaW4gYSBzZXQgc2hhcmUgYSB2YXJpYWJsZSwgYWNjZXNzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vTWluaW1hbC9zcF9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NwX2Zsb3AuYwppbmRleCA1MjA5ZWQ0Li43YWVlMTA2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NwX2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9NaW5pbWFsL3NwX2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGVpZ2h0IHRhc2tzLCBlYWNoIG9mIHdoaWNoIGxvb3BzIGNvbnRpbnVvdXNseSBwZXJmb3JtaW5nIGEgZmxvYXRpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL01pY3JvQmxhemUtRXRoZXJuZXQtTGl0ZS9ldGhlcm5ldGlmLmMgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL01pY3JvQmxhemUtRXRoZXJuZXQtTGl0ZS9ldGhlcm5ldGlmLmMKaW5kZXggYTM5MjExYi4uNjQ5OTA2OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy9NaWNyb0JsYXplLUV0aGVybmV0LUxpdGUvZXRoZXJuZXRpZi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvTWljcm9CbGF6ZS1FdGhlcm5ldC1MaXRlL2V0aGVybmV0aWYuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9XaW5QQ2FwL2FyY2guYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvV2luUENhcC9hcmNoLmMKaW5kZXggMDJlNmY3OS4uYWM3NDkyNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9XaW5QQ2FwL2FyY2guYworKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvYXJjaC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBXaW5QQ2FwIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJwY2FwLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vZXRoZXJuZXQvbHdpcC0xLjQuMC9wb3J0cy93aW4zMi9XaW5QQ2FwL25ldGlmLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvbmV0aWYuaAppbmRleCA5MjUxOTQ0Li5jNjk3YmExIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvbmV0aWYuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL1dpblBDYXAvbmV0aWYuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBORVRfSUZfSA0KICNkZWZpbmUgTkVUX0lGX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9ldGhlcm5ldC9sd2lwLTEuNC4wL3BvcnRzL3dpbjMyL2V0aGVybmV0aWYuYyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvZXRoZXJuZXRpZi5jCmluZGV4IDI2NzM5ZmIuLjI3YzBjMTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvZXRoZXJuZXRpZi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2V0aGVybmV0L2x3aXAtMS40LjAvcG9ydHMvd2luMzIvZXRoZXJuZXRpZi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBXaW5QQ2FwIGluY2x1ZGVzLiAqLw0KICNkZWZpbmUgSEFWRV9SRU1PVEUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0Fib3J0RGVsYXkuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQWJvcnREZWxheS5oCmluZGV4IDE3YTg4NzguLjYwNWMyMGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQWJvcnREZWxheS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQWJvcnREZWxheS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEFCT1JUX0RFTEFZX0gNCiAjZGVmaW5lIEFCT1JUX0RFTEFZX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0Jsb2NrUS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9CbG9ja1EuaAppbmRleCBjMGFhNWRiLi41NzEzZDZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0Jsb2NrUS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvQmxvY2tRLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQkxPQ0tfUV9IDQogI2RlZmluZSBCTE9DS19RX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0V2ZW50R3JvdXBzRGVtby5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9FdmVudEdyb3Vwc0RlbW8uaAppbmRleCAyZmU4Y2EwLi5lZDgxZGE0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0V2ZW50R3JvdXBzRGVtby5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvRXZlbnRHcm91cHNEZW1vLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvR2VuUVRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvR2VuUVRlc3QuaAppbmRleCAyN2JiMTE2Li5mZGIwY2I2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0dlblFUZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9HZW5RVGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEdFTl9RX1RFU1RfSA0KICNkZWZpbmUgR0VOX1FfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9JbnRRdWV1ZS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9JbnRRdWV1ZS5oCmluZGV4IDBmYjEyYjYuLmUxMDQzYmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvSW50UXVldWUuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFF1ZXVlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUVVFVUVfQUNDRVNTX1RFU1QNCiAjZGVmaW5lIFFVRVVFX0FDQ0VTU19URVNUDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9JbnRTZW1UZXN0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFNlbVRlc3QuaAppbmRleCA5YjJhM2M1Li5hNTVmZTYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFNlbVRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL0ludFNlbVRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfU0VNX1RFU1RfSA0KICNkZWZpbmUgSU5UX1NFTV9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL01lc3NhZ2VCdWZmZXJBTVAuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvTWVzc2FnZUJ1ZmZlckFNUC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZjM1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL01lc3NhZ2VCdWZmZXJBTVAuaApAQCAtMCwwICsxLDM2IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKyNpZm5kZWYgTUVTU0FHRV9CVUZGRVJfQU1QX0gNCisjZGVmaW5lIE1FU1NBR0VfQlVGRkVSX0FNUF9IDQorDQordm9pZCB2U3RhcnRNZXNzYWdlQnVmZmVyQU1QVGFza3MoIHZvaWQgKTsNCitCYXNlVHlwZV90IHhBcmVNZXNzYWdlQnVmZmVyQU1QVGFza3NTdGlsbFJ1bm5pbmcoIHZvaWQgKTsNCit2b2lkIHZHZW5lcmF0ZUNvcmVCSW50ZXJydXB0KCB2b2lkICogeFVwZGF0ZWRNZXNzYWdlQnVmZmVyICk7DQorDQorI2VuZGlmIC8qIE1FU1NBR0VfQlVGRkVSX0FNUF9IICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9NZXNzYWdlQnVmZmVyRGVtby5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9NZXNzYWdlQnVmZmVyRGVtby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYzcyMTUKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL01lc3NhZ2VCdWZmZXJEZW1vLmgKQEAgLTAsMCArMSwzOCBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaWZuZGVmIE1FU1NBR0VfQlVGRkVSX1RFU1RfSA0KKyNkZWZpbmUgTUVTU0FHRV9CVUZGRVJfVEVTVF9IDQorDQordm9pZCB2U3RhcnRNZXNzYWdlQnVmZmVyVGFza3MoIHZvaWQgKTsNCitCYXNlVHlwZV90IHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoIHZvaWQgKTsNCisNCisjZW5kaWYgLyogTUVTU0FHRV9CVUZGRVJfVEVTVF9IICovDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9Qb2xsUS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9Qb2xsUS5oCmluZGV4IDBkZDE2OTkuLmIzOTBkZWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUG9sbFEuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1BvbGxRLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9MTEVEX1FfSA0KICNkZWZpbmUgUE9MTEVEX1FfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUVBlZWsuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUVBlZWsuaAppbmRleCBlYzIzMDkyLi5hZmRkMzIyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1FQZWVrLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RUGVlay5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFFfUEVFS19URVNUX0gNCiAjZGVmaW5lIFFfUEVFS19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlT3ZlcndyaXRlLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlT3ZlcndyaXRlLmgKaW5kZXggNWVjZDExMC4uOTU5N2MxZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZU92ZXJ3cml0ZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVPdmVyd3JpdGUuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBRVUVVRV9PVkVSV1JJVEVfSA0KICNkZWZpbmUgUVVFVUVfT1ZFUldSSVRFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlU2V0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlU2V0LmgKaW5kZXggMjBkMjhiMS4uZWIzMTQwZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZVNldC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBRVUVVRV9XQUlUX01VTFRJUExFX0gNCiAjZGVmaW5lIFFVRVVFX1dBSVRfTVVMVElQTEVfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXRQb2xsaW5nLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1F1ZXVlU2V0UG9sbGluZy5oCmluZGV4IGM1N2FkNTcuLjEzNGNlMmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvUXVldWVTZXRQb2xsaW5nLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9RdWV1ZVNldFBvbGxpbmcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBRVUVVRV9TRVRfUE9MTElOR19IDQogI2RlZmluZSBRVUVVRV9TRVRfUE9MTElOR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9TdGF0aWNBbGxvY2F0aW9uLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0YXRpY0FsbG9jYXRpb24uaAppbmRleCA5MmE2NTI5Li5iMmUzY2I5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0YXRpY0FsbG9jYXRpb24uaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0YXRpY0FsbG9jYXRpb24uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTVEFUSUNfQUxMT0NBVElPTl9IDQogI2RlZmluZSBTVEFUSUNfQUxMT0NBVElPTl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9TdHJlYW1CdWZmZXJEZW1vLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0cmVhbUJ1ZmZlckRlbW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTFmMmJhCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9TdHJlYW1CdWZmZXJEZW1vLmgKQEAgLTAsMCArMSwzOSBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisjaWZuZGVmIFNUUkVBTV9CVUZGRVJfVEVTVF9IDQorI2RlZmluZSBTVFJFQU1fQlVGRkVSX1RFU1RfSA0KKw0KK3ZvaWQgdlN0YXJ0U3RyZWFtQnVmZmVyVGFza3MoIHZvaWQgKTsNCitCYXNlVHlwZV90IHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZyggdm9pZCApOw0KK3ZvaWQgdlBlcmlvZGljU3RyZWFtQnVmZmVyUHJvY2Vzc2luZyggdm9pZCApOw0KKw0KKyNlbmRpZiAvKiBTVFJFQU1fQlVGRkVSX1RFU1RfSCAqLw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvU3RyZWFtQnVmZmVySW50ZXJydXB0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0cmVhbUJ1ZmZlckludGVycnVwdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2Nzg4N2EKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1N0cmVhbUJ1ZmZlckludGVycnVwdC5oCkBAIC0wLDAgKzEsMzYgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorI2lmbmRlZiBTVFJFQU1fQlVGRkVSX0lOVEVSUlVQVF9IDQorI2RlZmluZSBTVFJFQU1fQlVGRkVSX0lOVEVSUlVQVF9IDQorDQordm9pZCB2U3RhcnRTdHJlYW1CdWZmZXJJbnRlcnJ1cHREZW1vKCB2b2lkICk7DQordm9pZCB2QmFzaWNTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggdm9pZCApOw0KK0Jhc2VUeXBlX3QgeElzSW50ZXJydXB0U3RyZWFtQnVmZmVyRGVtb1N0aWxsUnVubmluZyggdm9pZCApOw0KKw0KKyNlbmRpZiAvKiBTVFJFQU1fQlVGRkVSX0lOVEVSUlVQVF9IICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9UYXNrTm90aWZ5LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1Rhc2tOb3RpZnkuaAppbmRleCA4ZmZmNGRlLi5jYTY3ZmQyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1Rhc2tOb3RpZnkuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1Rhc2tOb3RpZnkuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBUQVNLX05PVElGWV9IDQogI2RlZmluZSBUQVNLX05PVElGWV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9UaW1lckRlbW8uaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvVGltZXJEZW1vLmgKaW5kZXggZTE5ZDgxYS4uOWI0YTEyNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9UaW1lckRlbW8uaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL1RpbWVyRGVtby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX0RFTU9fSA0KICNkZWZpbmUgVElNRVJfREVNT19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9ibG9ja3RpbS5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9ibG9ja3RpbS5oCmluZGV4IDE3MTIwMzMuLjA5YWEyMTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvYmxvY2t0aW0uaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2Jsb2NrdGltLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQkxPQ0tfVElNRV9URVNUX0gNCiAjZGVmaW5lIEJMT0NLX1RJTUVfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QuaAppbmRleCA2YTAwN2Q1Li5iMWRlNzFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDT01URVNUX0gNCiAjZGVmaW5lIENPTVRFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdDIuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdDIuaAppbmRleCBjMmM2ZjQxLi43YWZmN2MzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3QyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0Mi5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPTVRFU1RfSA0KICNkZWZpbmUgQ09NVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0X3N0cmluZ3MuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY29tdGVzdF9zdHJpbmdzLmgKaW5kZXggOWNhN2QyZC4uZTI5MjE3NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb210ZXN0X3N0cmluZ3MuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvbXRlc3Rfc3RyaW5ncy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPTVRFU1RfU1RSSU5HU19IDQogI2RlZmluZSBDT01URVNUX1NUUklOR1NfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY291bnRzZW0uaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY291bnRzZW0uaAppbmRleCBkMmM2ZmNiLi40ODdjZDQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NvdW50c2VtLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jb3VudHNlbS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENPVU5UX1NFTUFQSE9SRV9URVNUX0gNCiAjZGVmaW5lIENPVU5UX1NFTUFQSE9SRV9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NyZmxhc2guaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3JmbGFzaC5oCmluZGV4IDM0YTZkYjguLjgwODlmYWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3JmbGFzaC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3JmbGFzaC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIENSRkxBU0hfTEVEX0gNCiAjZGVmaW5lIENSRkxBU0hfTEVEX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NyaG9vay5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9jcmhvb2suaAppbmRleCAyN2JhZDFkLi42YzI4OGUwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2NyaG9vay5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvY3Job29rLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ1JIT09LX0gNCiAjZGVmaW5lIENSSE9PS19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9kZWF0aC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9kZWF0aC5oCmluZGV4IGRmZjlmYmUuLjJlODE3YjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZGVhdGguaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2RlYXRoLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU1VJQ0lERV9UQVNLX0gNCiAjZGVmaW5lIFNVSUNJREVfVEFTS19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9keW5hbWljLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2R5bmFtaWMuaAppbmRleCBjMzAzZTQyLi41NGEzOTBhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2R5bmFtaWMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2R5bmFtaWMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBEWU5BTUlDX01BTklQVUxBVElPTl9IDQogI2RlZmluZSBEWU5BTUlDX01BTklQVUxBVElPTl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9maWxlSU8uaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmlsZUlPLmgKaW5kZXggYWUxZTU0OC4uYzdlMTdlYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9maWxlSU8uaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZpbGVJTy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZJTEVfSU9fSA0KICNkZWZpbmUgRklMRV9JT19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaC5oCmluZGV4IGYwZmE1OWIuLjRhMzEzNmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmxhc2guaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxBU0hfTEVEX0gNCiAjZGVmaW5lIEZMQVNIX0xFRF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaF90aW1lci5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbGFzaF90aW1lci5oCmluZGV4IDA0ZDIyMmMuLmEzZjk4ZjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmxhc2hfdGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ZsYXNoX3RpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxBU0hfVElNRVJfSA0KICNkZWZpbmUgRkxBU0hfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvZmxvcC5oIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbG9wLmgKaW5kZXggMjViNjA3Zi4uZTA2YjkyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbG9wLmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9mbG9wLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxPUF9UQVNLU19IDQogI2RlZmluZSBGTE9QX1RBU0tTX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL2ludGVnZXIuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvaW50ZWdlci5oCmluZGV4IDRmMDVlYWQuLjY2ZDQ0OTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvaW50ZWdlci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvaW50ZWdlci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVEVHRVJfVEFTS1NfSA0KICNkZWZpbmUgSU5URUdFUl9UQVNLU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9tZXZlbnRzLmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL21ldmVudHMuaAppbmRleCA4M2I3MGI1Li45ZDVkOGRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL21ldmVudHMuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL21ldmVudHMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBFVkVOVFNfVEVTVF9IDQogI2RlZmluZSBFVkVOVFNfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9wYXJ0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3BhcnRlc3QuaAppbmRleCAyZjQ2OGZiLi5hZmYzMGQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3BhcnRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3BhcnRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQQVJURVNUX0gNCiAjZGVmaW5lIFBBUlRFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcHJpbnQuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcHJpbnQuaAppbmRleCBmY2VjMmU5Li42NTllMWIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3ByaW50LmgKKysrIGIvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9wcmludC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBSSU5UX0gNCiAjZGVmaW5lIFBSSU5UX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3JlY211dGV4LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3JlY211dGV4LmgKaW5kZXggZTM3OTg3MS4uNWM2YWFkOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9yZWNtdXRleC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvcmVjbXV0ZXguaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBSRUNVUlNJVkVfTVVURVhfVEVTVF9IDQogI2RlZmluZSBSRUNVUlNJVkVfTVVURVhfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9zZW10ZXN0LmggYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlbXRlc3QuaAppbmRleCAxZjFlNzMzLi4wNWJjYWJkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlbXRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlbXRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTRU1BUEhPUkVfVEVTVF9IDQogI2RlZmluZSBTRU1BUEhPUkVfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9zZXJpYWwuaCBiL0ZyZWVSVE9TL0RlbW8vQ29tbW9uL2luY2x1ZGUvc2VyaWFsLmgKaW5kZXggMjc0YmM3YS4uZmFjMTk3YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9Db21tb24vaW5jbHVkZS9zZXJpYWwuaAorKysgYi9GcmVlUlRPUy9EZW1vL0NvbW1vbi9pbmNsdWRlL3NlcmlhbC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFNFUklBTF9DT01NU19IDQogI2RlZmluZSBTRVJJQUxfQ09NTVNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0N5Z25hbC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGM2NTBjZGUuLjFiY2M3MzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0N5Z25hbC9NYWtlZmlsZSBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL01ha2VmaWxlCmluZGV4IDRkMDE2OTkuLjg3ZTE1ZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL01ha2VmaWxlCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL01ha2VmaWxlCkBAIC0xLDU1ICsxLDMwIEBACiAjLyoNCi0jICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0jCQ0KLSMNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotIyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSMgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSMgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0jICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotIyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSMgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0jICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSMNCi0jDQotIyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLSMNCi0jICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0jICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSMgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSMgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotIyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSMgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0jICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLSMgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0jICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0jICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotIyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotIyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotIyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLSMgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotIw0KLSMgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotIw0KLSMgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotIyAgICBjb250YWN0IGRldGFpbHMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0jICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotIw0KLSMgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSMgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi0jKi8NCisjICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisjICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMgKg0KKyMgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorIyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorIyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisjICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisjICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyMgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisjICoNCisjICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorIyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorIyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisjICoNCisjICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisjICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisjICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorIyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyMgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyMgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyMgKg0KKyMgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyMgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisjICoNCisjICogMSB0YWIgPT0gNCBzcGFjZXMhDQorIyAqLw0KIA0KIA0KIENDPXNkY2MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0N5Z25hbC9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDNlODJmMTQuLjI2OWJkZjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaW5jbHVkZSA8YzgwNTFmMTIwLmg+DQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9DeWduYWwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9DeWduYWwvbWFpbi5jCmluZGV4IDM0ODQwYWUuLmM2NjQxMTYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0N5Z25hbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0N5Z25hbC9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0N5Z25hbC9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZDk1ZTczMy4uODBkNDQ1YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9DeWduYWwvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vQ3lnbmFsL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIERFTU8gUFVSUE9TRVMgKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZSQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZSQ29uZmlnLmgKaW5kZXggZDc2MDU2Yy4uNDgwMGRhYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GUkNvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRlJDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZpbGVJTy9maWxlSU8uYyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRmlsZUlPL2ZpbGVJTy5jCmluZGV4IDZiYjlkMDQuLmJlOTdjNmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRmlsZUlPL2ZpbGVJTy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRmlsZUlPL2ZpbGVJTy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8c3RkaW8uaD4NCiAjaW5jbHVkZSA8Y29uaW8uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZmNlNDE5OC4uMTJmYjBhOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9QYXJUZXN0L1BhclRlc3QuYwppbmRleCAxZjI0M2Q5Li5mNDQ2OTJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjAxOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vRmxzaGxpdGUvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9tYWluLmMKaW5kZXggMWQzNWVjYy4uMjQ4MWM0YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9GbHNobGl0ZS9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL3NlcmlhbC9zZXJpYWwuYwppbmRleCBjMTJmY2I1Li5iZjhhZTJjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0Zsc2hsaXRlL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMDA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNjUyMTViMC4uNThhOTM3ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYjA5NzdmYy4uZmRiODM0MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlIGZpbGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL21haW4uYwppbmRleCBhNDMyZDg4Li4zNWY4YTg3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vSDhTL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwppbmRleCA3ODYyOWEwLi5hMzVmNmY5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0g4Uy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IOFMvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUiBmb3IgcG9ydCAxLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDJkMGNkMjkuLjdhNWVkZTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDg5MTI3OWQuLjE1NWM4ZjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZSBmaWxlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9tYWluLmMKaW5kZXggOTBkM2QwNi4uZDNjYmQwZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL21haW4uYwpAQCAtMSw3MiArMSwzMSBAQAogDQogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX2JhbmtlZC9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZGZlNTRhZi4uZGM4ZDU4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9iYW5rZWQvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3JfYmFua2VkL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgZm9yIHBvcnQgMS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZWYwNDJjNi4uNjI2NmRmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL1BhclRlc3QvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA4OTEyNzlkLi4xNTVjOGYxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvUGFyVGVzdC9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlIGZpbGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfQ29kZVdhcnJpb3Jfc21hbGwvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9tYWluLmMKaW5kZXggNzNhOWU3OS4uYWI0OTFjOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9Db2RlV2Fycmlvcl9zbWFsbC9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL3NlcmlhbC9zZXJpYWwuYwppbmRleCA0OTdmYmUwLi4wZWZkYTQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0NvZGVXYXJyaW9yX3NtYWxsL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgZm9yIHBvcnQgMS4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDJlYzUxNGIuLmY1MDQ4NjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiogDQogICogRnJlZVJUT1NDb25maWcuaCBjb25maWd1cmVzIEZyZWVSVE9TIGZvciBHQ0MvSENTMTIgdmVyc2lvbiBvZiBGcmVlUlRPUyBEZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9QYXJUZXN0LmMKaW5kZXggZTIyMzgyZS4uZmY3ZmM3ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiogDQogICogUGFyVGVzdC5jIGNvbnRyb2xzIGJpdHMgKExFRHMpIGZvciBHQ0MvSENTMTIgdmVyc2lvbiBvZiBGcmVlUlRPUyBEZW1vDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9tYWluLmMKaW5kZXggMmM5YzVjOS4uZTZkYWNmNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvbWFpbi5jCkBAIC0xLDcyICsxLDMxIEBACiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9zdGFydHVwLmMgYi9GcmVlUlRPUy9EZW1vL0hDUzEyX0dDQ19iYW5rZWQvc3RhcnR1cC5jCmluZGV4IDdiY2E0YzYuLjUyMjJiOTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSENTMTJfR0NDX2JhbmtlZC9zdGFydHVwLmMKKysrIGIvRnJlZVJUT1MvRGVtby9IQ1MxMl9HQ0NfYmFua2VkL3N0YXJ0dXAuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCBjMzE5ZTIyLi44YTlmMWMxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYWRjYmQ1YS4uNWY4MWNmNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDczYzUwYmUuLmQ0YjQ1M2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBQcm92aWRlcyB0aGUgcG9ydCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBzdGFuZGFyZCBJbnRRIHRlc3QsIHdoaWNoIGlzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9SZWdUZXN0LlMgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vUmVnVGVzdC5TCmluZGV4IGRkZDlkOTkuLmEyZDRlNWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9SZWdUZXN0LlMKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL1JlZ1Rlc3QuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLmZpbGUgIlJlZ1Rlc3QuUyINCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggYzY1N2UzYi4uMTZhMzU3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL2ZyZWVzdGFuZGluZ19mdW5jdGlvbnMuYyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvZnJlZXN0YW5kaW5nX2Z1bmN0aW9ucy5jCmluZGV4IDZmYzdkYzAuLmRkYTNjZDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvZnJlZXN0YW5kaW5nX2Z1bmN0aW9ucy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvZnJlZXN0YW5kaW5nX2Z1bmN0aW9ucy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvbWF0aC5oIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9tYXRoLmgKaW5kZXggNzNhNmEyYS4uY2RmNDgwNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9tYXRoLmgKKysrIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9tYXRoLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTUFUSF9IDQogI2RlZmluZSBNQVRIX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL3N0YXJ0dXAuUyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RhcnR1cC5TCmluZGV4IDE5MGQxYzguLjc5NzNhZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RhcnR1cC5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RhcnR1cC5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTZXQgdG8gMSB0byBlbmFibGUgZnVuY3Rpb25hbGl0eSAqLw0KICNkZWZpbmUgX19TSE9XX0tFUk5FTF9QQVJBTVNfXyAwDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGRpbnQuaCBiL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL1N1cHBvcnRfRmlsZXMvc3RkaW50LmgKaW5kZXggNTEzM2YwNS4uMDUxN2NkZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvU3VwcG9ydF9GaWxlcy9zdGRpbnQuaAorKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9TdXBwb3J0X0ZpbGVzL3N0ZGludC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaWZuZGVmIEZSRUVSVE9TX1NURElOVA0KICNkZWZpbmUgRlJFRVJUT1NfU1RESU5UDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9JQTMyX2ZsYXRfR0NDX0dhbGlsZW9fR2VuXzIvbWFpbi5jCmluZGV4IDk2Yjc3OTguLmE3ZGUwZTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vSUEzMl9mbGF0X0dDQ19HYWxpbGVvX0dlbl8yL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL0lBMzJfZmxhdF9HQ0NfR2FsaWxlb19HZW5fMi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvRnJlZVJUT1NDb25maWcuaAppbmRleCBiYmM4NWJiLi44OWRkNjU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvY3JmbGFzaF9tb2RpZmllZC5jIGIvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL2NyZmxhc2hfbW9kaWZpZWQuYwppbmRleCA4NTExMDExLi40MjA5Y2EyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvY3JmbGFzaF9tb2RpZmllZC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9jcmZsYXNoX21vZGlmaWVkLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBkZW1vIGFwcGxpY2F0aW9uIGZpbGUgZGVtb25zdHJhdGVzIHRoZSB1c2Ugb2YgcXVldWVzIHRvIHBhc3MgZGF0YQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvbWFpbi5jCmluZGV4IGMxYmU3MWQuLmE5YzRkYTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvcGFydGVzdC9wYXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvcGFydGVzdC9wYXJ0ZXN0LmMKaW5kZXggZWJkYTAzYy4uZDY3OWIyZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL3BhcnRlc3QvcGFydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9wYXJ0ZXN0L3BhcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL01COTE0NjBfU29mdHVuZS9TUkMvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGQxODA1ODkuLmYyODFkNWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5MTQ2MF9Tb2Z0dW5lL1NSQy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjkxNDYwX1NvZnR1bmUvU1JDL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCA5ZDc2OWU5Li5iNzIwZmZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvY3JmbGFzaF9zazE2ZngxMDBtcGMuYyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9jcmZsYXNoX3NrMTZmeDEwMG1wYy5jCmluZGV4IDg1MTEwMTEuLjQyMDljYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9jcmZsYXNoX3NrMTZmeDEwMG1wYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9jcmZsYXNoX3NrMTZmeDEwMG1wYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZGVtbyBhcHBsaWNhdGlvbiBmaWxlIGRlbW9uc3RyYXRlcyB0aGUgdXNlIG9mIHF1ZXVlcyB0byBwYXNzIGRhdGENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL21haW4uYwppbmRleCBkN2Y4MzYyLi5kMDdiMzMxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL3BhcnRlc3QvcGFydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL3BhcnRlc3QvcGFydGVzdC5jCmluZGV4IGEyMmI4ODcuLjE2MDc3OWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9wYXJ0ZXN0L3BhcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvcGFydGVzdC9wYXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzQwX1NvZnR1bmUvRnJlZVJUT1NfOTYzNDhoc19TSzE2RlgxMDBQTUMvU3JjL3NlcmlhbC9zZXJpYWwuYwppbmRleCBlMGE5NzM1Li5jN2EyOWIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTYzNDBfU29mdHVuZS9GcmVlUlRPU185NjM0OGhzX1NLMTZGWDEwMFBNQy9TcmMvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM0MF9Tb2Z0dW5lL0ZyZWVSVE9TXzk2MzQ4aHNfU0sxNkZYMTAwUE1DL1NyYy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLiAgIA0KICAqIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0RpY2VUYXNrLmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9EaWNlVGFzay5jCmluZGV4IGRkODAwZjMuLjc4ODQ4ZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0RpY2VUYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suaCBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0RpY2VUYXNrLmgKaW5kZXggZDg5YzE1ZS4uNjQ4ZjVlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRGljZVRhc2suaAorKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9EaWNlVGFzay5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIERJQ0VfVEFTS19IDQogI2RlZmluZSBESUNFX1RBU0tfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDlkMGQ4ZTIuLjJmN2U1MzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDI1NTBhOWQuLmMxODQwZWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvU2VnbWVudFRvZ2dsZVRhc2tzLmMgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9TZWdtZW50VG9nZ2xlVGFza3MuYwppbmRleCA3YjY2NzU0Li41MzNhNTk5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9TZWdtZW50VG9nZ2xlVGFza3MuYworKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9TZWdtZW50VG9nZ2xlVGFza3MuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqDQogICogRGVmaW5lcyB0aGUgdGFza3MgYW5kIGNvLXJvdXRpbmVzIHVzZWQgdG8gdG9nZ2xlIHRoZSBzZWdtZW50cyBvZiB0aGUgdHdvDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9NQjk2MzUwX1NvZnR1bmVfRGljZV9LaXQvbWFpbi5jCmluZGV4IGJkYTQ3NzkuLjgzODA5ZmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTUI5NjM1MF9Tb2Z0dW5lX0RpY2VfS2l0L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL01COTYzNTBfU29mdHVuZV9EaWNlX0tpdC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAppbmRleCA4ZWUyNmM5Li4wODE0ZDJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBUaGUgZm9sbG93aW5nICNlcnJvciBkaXJlY3RpdmUgaXMgdG8gcmVtaW5kIHVzZXJzIHRoYXQgYSBiYXRjaCBmaWxlIG11c3QgYmUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUGFyVGVzdC5jCmluZGV4IDliY2RiOGIuLjAxZDE1NDcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMgdG8gZmxhc2ggTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1JlZ1Rlc3QuYXNtIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9SZWdUZXN0LmFzbQppbmRleCA3MWMxNjQ1Li40ZGFmOWQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1JlZ1Rlc3QuYXNtCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUmVnVGVzdC5hc20KQEAgLTEsNTYgKzEsMzEgQEAKIDsNCiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDsgKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgInJlZ2lzdGVyIHRlc3QiIHRhc2tzLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZg0KIDsgKiBtYWluLmMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1J1blRpbWVTdGF0c0NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9SdW5UaW1lU3RhdHNDb25maWcuYwppbmRleCA3MjgzZjJhLi4wYmVhNDZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL1J1blRpbWVTdGF0c0NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvUnVuVGltZVN0YXRzQ29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2UvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9tYWluLmMKaW5kZXggZmZlNjJiYi4uZjU1YzJiZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIGF2YWlsYWJsZSBvbiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2Uvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfQ0NTL0RlbW9fU291cmNlL3NlcmlhbC5jCmluZGV4IDRjMzkzZGUuLjFmMDE4NDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9DQ1MvRGVtb19Tb3VyY2Uvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0NDUy9EZW1vX1NvdXJjZS9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDYyNmRjZjcuLjIyOTAxYTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1BhclRlc3QuYwppbmRleCA5YmNkYjhiLi4wMWQxNTQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzIHRvIGZsYXNoIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9SZWdUZXN0LnM0MyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUmVnVGVzdC5zNDMKaW5kZXggN2FjNTVlNC4uNTU3NmE1MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9SZWdUZXN0LnM0MworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1JlZ1Rlc3QuczQzCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaW5jbHVkZSAibXNwNDMwLmgiDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgImRhdGFfbW9kZWwuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1J1blRpbWVTdGF0c0NvbmZpZy5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9SdW5UaW1lU3RhdHNDb25maWcuYwppbmRleCBjMzliMjVkLi4zYWRkMDk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL1J1blRpbWVTdGF0c0NvbmZpZy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvUnVuVGltZVN0YXRzQ29uZmlnLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9tYWluLmMKaW5kZXggOTc1MmE2MS4uZTlmYmVlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhpcyBkZW1vIGF2YWlsYWJsZSBvbiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRjU0MzhfSUFSL3NlcmlhbC5jCmluZGV4IDdhZDM2YTcuLjJmNzNkOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGNTQzOF9JQVIvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEY1NDM4X0lBUi9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGVjMGQ2YzAuLjBjMmZjODQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9DQ1NfT25seS9SZWdUZXN0LmFzbSBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvQ0NTX09ubHkvUmVnVGVzdC5hc20KaW5kZXggOTczYzQ3My4uM2E1OTBlZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9DQ1NfT25seS9SZWdUZXN0LmFzbQorKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0NDU19Pbmx5L1JlZ1Rlc3QuYXNtCkBAIC0xLDU2ICsxLDMxIEBACiA7DQogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiA7ICogVGhlIGRlZmluaXRpb24gb2YgdGhlICJyZWdpc3RlciB0ZXN0IiB0YXNrcywgYXMgZGVzY3JpYmVkIGF0IHRoZSB0b3Agb2YNCiA7ICogbWFpbi5jDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGY0N2U5NzIuLmQ4ZDRjMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBhNGJmMzRjLi41MjljNWRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0Z1bGxfRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL3NlcmlhbC5jCmluZGV4IDg4Njg5N2QuLmZlOWIwM2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvRnVsbF9EZW1vL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0lBUl9Pbmx5L1JlZ1Rlc3QuczQzIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9JQVJfT25seS9SZWdUZXN0LnM0MwppbmRleCA3NjRjMzFhLi4xMDk0MjlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL0lBUl9Pbmx5L1JlZ1Rlc3QuczQzCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvSUFSX09ubHkvUmVnVGVzdC5zNDMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KICNpbmNsdWRlICJtc3A0MzAuaCINCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAiZGF0YV9tb2RlbC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvTEVEcy5jIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9MRURzLmMKaW5kZXggNGYyNzlhMS4uYjhiYjgwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9MRURzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NU1A0MzBYX01TUDQzMEZSNTk2OV9MYXVuY2hQYWRfSUFSX0NDUy9MRURzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01TUDQzMFhfTVNQNDMwRlI1OTY5X0xhdW5jaFBhZF9JQVJfQ0NTL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvbWFpbi5jCmluZGV4IDc1MThhYzAuLjU0YzU0MjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTVNQNDMwWF9NU1A0MzBGUjU5NjlfTGF1bmNoUGFkX0lBUl9DQ1MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCA4YjU2ZTAyLi4xNDUzZTRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGNmNzZkNTEuLmVmYTkxYmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RzLlMgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RzLlMKaW5kZXggNzA0MzM5ZS4uZGUyODkyNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9GdWxsX0RlbW8vUmVnaXN0ZXJUZXN0cy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdHMuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDE2NGM3YjQuLjUzNGY0MDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9MRURzLmMgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0xFRHMuYwppbmRleCA2ZTlhYjNlLi5mYzA5ZmViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0xFRHMuYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL0xFRHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYwppbmRleCBlMTE5YjczLi42MzVmNDM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAic3RkbGliLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5jIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5jCmluZGV4IGExNzk4OGIuLmNjNmEwMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmggYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKaW5kZXggZDEyMDljYi4uNzY0ZjdjZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9sd0lQX0RlbW8vbHdJUF9BcHBzL2x3SVBfQXBwcy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL2x3SVBfQXBwcy9sd0lQX0FwcHMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogI2lmbmRlZiBMV0lQX0FQUFNfSA0KICNkZWZpbmUgTFdJUF9BUFBTX0gNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL2x3SVBfRGVtby9tYWluX2x3SVAuYyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jCmluZGV4IGUwMTkwNTEuLjAyZTQ4NTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvbHdJUF9EZW1vL21haW5fbHdJUC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHRocmVlIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL21haW4uYwppbmRleCA2NzNmZmNiLi4wMjdhMDg4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0aHJlZSBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL01pY3JvQmxhemVfS2ludGV4N19FdGhlcm5ldExpdGUvUlRPU0RlbW8vc3JjL3NlcmlhbC5jCmluZGV4IDM5MmNlZTIuLjUyNDI2NGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTWljcm9CbGF6ZV9LaW50ZXg3X0V0aGVybmV0TGl0ZS9SVE9TRGVtby9zcmMvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9NaWNyb0JsYXplX0tpbnRleDdfRXRoZXJuZXRMaXRlL1JUT1NEZW1vL3NyYy9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIGEgVUFSVExpdGUgcGVyaXBoZXJhbC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvQnV0dG9uSVNSLnMyNiBiL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25JU1IuczI2CmluZGV4IDc0YzQzYTIuLjU1NjcyODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25JU1IuczI2CisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25JU1IuczI2CkBAIC0xLDU1ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDsNCiA7IFRoaXMgZmlsZSBkZWZpbmVzIGEgd3JhcHBlciBmb3IgdGhlIGludGVycnVwdCBnZW5lcmF0ZWQgZWFjaCB0aW1lIHRoZSBidXR0b24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvQnV0dG9uVGFzay5jIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0J1dHRvblRhc2suYwppbmRleCA1NTUxOTM5Li5hN2FiMzc2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvQnV0dG9uVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9CdXR0b25UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGJ1dHRvbiBwdXNoIHRhc2sgYW5kIElTUiBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggYmU0MWI4ZS4uM2EwZmJmOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL1JlZ1Rlc3QuczI2IGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL1JlZ1Rlc3QuczI2CmluZGV4IGZkYTE0NTkuLjRiYTdmMmQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9SZWdUZXN0LnMyNgorKysgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvUmVnVGVzdC5zMjYKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL05FQ183OEswUl9JQVIvbWFpbi5jCmluZGV4IDM5MDkzMmMuLmI0ZmUzNmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDXzc4SzBSX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfNzhLMFJfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcywgdGhlbiBzdGFydHMgdGhlIHNjaGVkdWxlci4gIFRoZSBXRUINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZjgzMTBlYS4uNGUwY2JjOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXQuYyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdC5jCmluZGV4IDI2YTg0ZjQuLmZkZWQ2MTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfRngzLmMgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfRngzLmMKaW5kZXggZDNlNDU2MS4uODk2ZGE1NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0X0Z4My5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdF9GeDMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0X0h4Mi5jIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9Mb3dMZXZlbEluaXQvTG93TGV2ZWxJbml0X0h4Mi5jCmluZGV4IDZjODk2NmQuLmVkOTg4MmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvTG93TGV2ZWxJbml0L0xvd0xldmVsSW5pdF9IeDIuYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL0xvd0xldmVsSW5pdC9Mb3dMZXZlbEluaXRfSHgyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUGFyVGVzdC9QYXJUZXN0X0Z4M19BcHBfQm9hcmQuYyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUGFyVGVzdC9QYXJUZXN0X0Z4M19BcHBfQm9hcmQuYwppbmRleCBhMDJkMDA3Li4wYzZmYzc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1BhclRlc3QvUGFyVGVzdF9GeDNfQXBwX0JvYXJkLmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfRngzX0FwcF9Cb2FyZC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfR2VuZXJpY19UYXJnZXRfQm9hcmQuYyBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUGFyVGVzdC9QYXJUZXN0X0dlbmVyaWNfVGFyZ2V0X0JvYXJkLmMKaW5kZXggNDIyMWZlYS4uNTkwMWM2ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9QYXJUZXN0L1BhclRlc3RfR2VuZXJpY19UYXJnZXRfQm9hcmQuYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1BhclRlc3QvUGFyVGVzdF9HZW5lcmljX1RhcmdldF9Cb2FyZC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIHBhcmFsbGVsIHBvcnQgSU8gcm91dGluZXMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9SZWdUZXN0LnM4NSBiL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvUmVnVGVzdC5zODUKaW5kZXggOGY2NDIwNi4uYzYzOTBhZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9SZWdUZXN0LnM4NQorKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL1JlZ1Rlc3Quczg1CkBAIC0xLDU1ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIDsgTm90ZTogU2VsZWN0IHRoZSBjb3JyZWN0IGluY2x1ZGUgZmlsZXMgZm9yIHRoZSBkZXZpY2UgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uDQogDQogCUVYVEVSTgl2UmVnVGVzdEZhaWxlZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTkVDX1Y4NTBFU19JQVIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9tYWluLmMKaW5kZXggMzI0ZTY5OS4uNzFhYzdmMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9ORUNfVjg1MEVTX0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL3NlcmlhbC9zZXJpYWwuYwppbmRleCA5NzI5MDY1Li4xNzMxMWI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL05FQ19WODUwRVNfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIgRk9SIFVBUlQwLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAxZWRjZjg5Li5mMmZhN2Q2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGRkNjZjYzkuLjMwZGM4MmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBwYXJhbGxlbCBwb3J0IElPIHJvdXRpbmVzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9tYWluLmMKaW5kZXggZDRkNDU4Ny4uOTM5ZTFkYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vTmlvc0lJX0N5Y2xvbmVJSUlfREJDM0M0MF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMKaW5kZXggMTE2MTY3MS4uYzAwODBkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9OaW9zSUlfQ3ljbG9uZUlJSV9EQkMzQzQwX0dDQy9SVE9TRGVtby9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL05pb3NJSV9DeWNsb25lSUlJX0RCQzNDNDBfR0NDL1JUT1NEZW1vL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBOT1RFOiAgVGhpcyBpcyBqdXN0IGEgdGVzdCBmaWxlIGFuZCBub3QgaW50ZW5kZWQgdG8gYmUgYSBnZW5lcmljIA0KIENPTSBkcml2ZXIuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGM0MjQ4NTYuLjBkYWZhYTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYjhkOTk3Zi4uNzMzY2JkMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjIuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMS5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMS5jCmluZGV4IDM3NTQ1NzQuLjVkODk3MDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjEuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4xLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogSW5zdGVhZCBvZiB0aGUgbm9ybWFsIHNpbmdsZSBkZW1vIGFwcGxpY2F0aW9uLCB0aGUgUElDMThGIGRlbW8gaXMgc3BsaXQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4yLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4yLmMKaW5kZXggNjBmM2MxYS4uMmM3ZjU3NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBJbnN0ZWFkIG9mIHRoZSBub3JtYWwgc2luZ2xlIGRlbW8gYXBwbGljYXRpb24sIHRoZSBQSUMxOEYgZGVtbyBpcyBzcGxpdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjMuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvbWFpbjMuYwppbmRleCA2NGViM2MyLi44OTI5ZTBmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X01QTEFCL21haW4zLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9tYWluMy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRISVMgREVNTyBBUFBMSUNBVElPTiBSRVFVSVJFUyBBIExPT1BCQUNLIENPTk5FQ1RPUiBUTyBCRSBGSVRURUQgVE8gVEhFIFBJQw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfTVBMQUIvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZmRkMzk3Ny4uNDFmNjljYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9NUExBQi9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjIuNQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNTY2NTRkNS4uOTcwMjU5MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9XSVpDbWFrZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL1dJWkNtYWtlLmgKaW5kZXggZWE5ZWNmNi4uZGQ5Zjk4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL1dJWkNtYWtlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL1dJWkNtYWtlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9mdXNlcy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2Z1c2VzLmMKaW5kZXggMDM3YjBlMy4uNGE5ZTc1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2Z1c2VzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2Z1c2VzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9pbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9pbnRlcnJ1cHQuYwppbmRleCBlZDlhMGFkLi5iZjU3ZDgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvaW50ZXJydXB0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL2ludGVycnVwdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMS9tYWluLmMKaW5kZXggMDJiZjIwMC4uZWUxMjNhZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8xL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzEvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGZjNjVmNDMuLjNmYjY5Y2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9XSVpDbWFrZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL1dJWkNtYWtlLmgKaW5kZXggNzFmMjJlYS4uYTYyNTVmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL1dJWkNtYWtlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL1dJWkNtYWtlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9mdXNlcy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2Z1c2VzLmMKaW5kZXggMDM3YjBlMy4uNGE5ZTc1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2Z1c2VzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2Z1c2VzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9pbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9pbnRlcnJ1cHQuYwppbmRleCAxYjA5ZGU0Li45MmQ3ODE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvaW50ZXJydXB0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL2ludGVycnVwdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMi9tYWluLmMKaW5kZXggYmY5MmNlNC4uOGMzZmVmMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8yL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDk1OTdjN2YuLjA0NzZjNmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvV0laQ21ha2UuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9XSVpDbWFrZS5oCmluZGV4IDcxZjIyZWEuLmE2MjU1ZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9XSVpDbWFrZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9XSVpDbWFrZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvZnVzZXMuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9mdXNlcy5jCmluZGV4IDAzN2IwZTMuLjRhOWU3NTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9mdXNlcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9mdXNlcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvaW50ZXJydXB0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvaW50ZXJydXB0LmMKaW5kZXggMWIwOWRlNC4uOTJkNzgxOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL2ludGVycnVwdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9pbnRlcnJ1cHQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzMvbWFpbi5jCmluZGV4IDE1YTE1NTUuLjc1Nzc2MDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vMy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW8zL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvRnJlZVJUT1NDb25maWcuaAppbmRleCAxYWEyNTRhLi44YTFlNDFkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L1dJWkNtYWtlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvV0laQ21ha2UuaAppbmRleCA3MWYyMmVhLi5hNjI1NWYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvV0laQ21ha2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvV0laQ21ha2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L2Z1c2VzLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvZnVzZXMuYwppbmRleCAwMzdiMGUzLi40YTllNzU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvZnVzZXMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvZnVzZXMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L2ludGVycnVwdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L2ludGVycnVwdC5jCmluZGV4IDFiMDlkZTQuLjkyZDc4MTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9pbnRlcnJ1cHQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvaW50ZXJydXB0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW80L21haW4uYwppbmRleCBiZTkzODBhLi5lYTJmMmEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzQvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNC9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMDliYzM4OC4uZjc1MjdmYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9XSVpDbWFrZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L1dJWkNtYWtlLmgKaW5kZXggNzFmMjJlYS4uYTYyNTVmMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L1dJWkNtYWtlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L1dJWkNtYWtlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9mdXNlcy5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2Z1c2VzLmMKaW5kZXggMDM3YjBlMy4uNGE5ZTc1OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2Z1c2VzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2Z1c2VzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9pbnRlcnJ1cHQuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9pbnRlcnJ1cHQuYwppbmRleCAxYjA5ZGU0Li45MmQ3ODE5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvaW50ZXJydXB0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L2ludGVycnVwdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNS9tYWluLmMKaW5kZXggOWU3OGJiYS4uMTU3YWNkMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW81L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzUvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDZmOTU5OWEuLjg4MzBhMDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvV0laQ21ha2UuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9XSVpDbWFrZS5oCmluZGV4IDcxZjIyZWEuLmE2MjU1ZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9XSVpDbWFrZS5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9XSVpDbWFrZS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvZnVzZXMuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9mdXNlcy5jCmluZGV4IDAzN2IwZTMuLjRhOWU3NTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9mdXNlcy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9mdXNlcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvaW50ZXJydXB0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvaW50ZXJydXB0LmMKaW5kZXggMWIwOWRlNC4uOTJkNzgxOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L2ludGVycnVwdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9pbnRlcnJ1cHQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzYvbWFpbi5jCmluZGV4IDE5ZWRkYWIuLjRmNDMyYWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW82L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvRnJlZVJUT1NDb25maWcuaAppbmRleCBlNzIwYWIwLi4xZTRhZDNlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L1dJWkNtYWtlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvV0laQ21ha2UuaAppbmRleCA3MWYyMmVhLi5hNjI1NWYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvV0laQ21ha2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvV0laQ21ha2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L2Z1c2VzLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvZnVzZXMuYwppbmRleCAwMzdiMGUzLi40YTllNzU5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvZnVzZXMuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvZnVzZXMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L2ludGVycnVwdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L2ludGVycnVwdC5jCmluZGV4IDFiMDlkZTQuLjkyZDc4MTkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9pbnRlcnJ1cHQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvaW50ZXJydXB0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL0RlbW83L21haW4uYwppbmRleCAwMGUwNjMxLi5jNTdjZWVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvRGVtbzcvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9EZW1vNy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCBiMTg3NDcwLi5mYTk0MjlkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxSeC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxSeC5jCmluZGV4IDM0NzRjNjIuLmM5ZGY4OGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvaXNyU2VyaWFsUnguYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL2lzclNlcmlhbFJ4LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvaXNyU2VyaWFsVHguYyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvaXNyU2VyaWFsVHguYwppbmRleCA3MGIwODYwLi4wYzcyZTNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL2lzclNlcmlhbFR4LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9pc3JTZXJpYWxUeC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9QSUMxOF9XaXpDL3NlcmlhbC9zZXJpYWwuYwppbmRleCA5MDlmZTdkLi5mNjVmNTk1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzE4X1dpekMvc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMThfV2l6Qy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjAuMA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvRnJlZVJUT1NDb25maWcuaAppbmRleCBjZDYxNjU4Li45YjI2MjNiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGYwZGM4NWIuLjQ1YzY0NzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL2xjZC5jCmluZGV4IGM0MTEwNGUuLjQ0MDQ2NTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmggYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL2xjZC5oCmluZGV4IDQ0OTVmOWUuLjBhNDY3YTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbGNkLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9sY2QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMQ0RfSU5DX0gNCiAjZGVmaW5lIExDRF9JTkNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9tYWluLmMKaW5kZXggY2M5YjUwOS4uZDZhNDUyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3NlcmlhbC9zZXJpYWwuYwppbmRleCAzNmYzOGRmLi44YmVjOTVlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3RpbWVydGVzdC5jCmluZGV4IDI2MmM3OTMuLjI5NzdmMTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMjRfTVBMQUIvdGltZXJ0ZXN0LmgKaW5kZXggY2Q0NTc5ZC4uMzAzM2YzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMyNF9NUExBQi90aW1lcnRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzI0X01QTEFCL3RpbWVydGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX1RFU1RfSA0KICNkZWZpbmUgVElNRVJfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwppbmRleCAxNjM1NDc4Li5mNzY5MmZiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDE0NWI2YzguLjZiZGMwZGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMjE3ODRiNC4uZDUzN2ZkMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyX2lzci5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyX2lzci5TCmluZGV4IDlhN2E4MmUuLmZmMzRkNDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lcl9pc3IuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXJfaXNyLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RUYXNrcy5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9SZWdpc3RlclRlc3RUYXNrcy5TCmluZGV4IDBjMzBlNTQuLjgwN2EyZjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vUmVnaXN0ZXJUZXN0VGFza3MuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL1JlZ2lzdGVyVGVzdFRhc2tzLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IDU5N2EyYzEuLjI5NzBkNzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby90aW1lcnRlc3QuYwppbmRleCAzNTViZTVhLi5jZmI0NGYyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL3RpbWVydGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmMKQEAgLTEsNjcgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLSAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLSAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvRnVsbF9EZW1vL3RpbWVydGVzdC5oCmluZGV4IDJjYTczYzcuLjMwMzNmMzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9GdWxsX0RlbW8vdGltZXJ0ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL0Z1bGxfRGVtby90aW1lcnRlc3QuaApAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBUSU1FUl9URVNUX0gNCiAjZGVmaW5lIFRJTUVSX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTUVDMTR4eF9NUExBQi9zcmMvbWFpbi5jCmluZGV4IGY4MjhmNzYuLjgxYjVmNTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNRUMxNHh4X01QTEFCL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1FQzE0eHhfTVBMQUIvc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCmluZGV4IDMzMmExYjcuLmQzYjBkMDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBpbXBsZW1lbnRzIGZ1bmN0aW9ucyB0byBhY2Nlc3MgYW5kIG1hbmlwdWxhdGUgdGhlIFBJQzMyIGhhcmR3YXJlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaAppbmRleCBjZWFlYzgxLi41ZmQzYTU0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDT05GSUdfUEVSRk9STUFOQ0VfSA0KICNkZWZpbmUgQ09ORklHX1BFUkZPUk1BTkNFX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDM1MTRmZmUuLjg0YzdlZDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lci5jCmluZGV4IDJjNmY5MTYuLjBhODZmNDYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgIkludFF1ZXVlVGltZXIuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL0ludFF1ZXVlVGltZXJfaXNyLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lcl9pc3IuUwppbmRleCAxMDA5M2VhLi5jYTI2MWE0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lcl9pc3IuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvSW50UXVldWVUaW1lcl9pc3IuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogIA0KICNpbmNsdWRlIDxwMzJ4eHh4Lmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvUGFyVGVzdC9QYXJUZXN0X0V4cGxvcmVyMTYuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfRXhwbG9yZXIxNi5jCmluZGV4IGFkMWMzYTcuLjcxNTJlMTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfRXhwbG9yZXIxNi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfRXhwbG9yZXIxNi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9VU0JJSV9TdGFydGVyX0tpdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL1BhclRlc3QvUGFyVGVzdF9VU0JJSV9TdGFydGVyX0tpdC5jCmluZGV4IDIzNjUwMzguLjdkMmUyZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9QYXJUZXN0L1BhclRlc3RfVVNCSUlfU3RhcnRlcl9LaXQuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvUGFyVGVzdC9QYXJUZXN0X1VTQklJX1N0YXJ0ZXJfS2l0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvUmVnaXN0ZXJUZXN0VGFza3MuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCmluZGV4IDI4YTdkOGUuLmQ0MWY3N2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9SZWdpc3RlclRlc3RUYXNrcy5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaW5jbHVkZSA8eGMuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbGNkLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbGNkLmMKaW5kZXggNmU0MWE3OC4uYjk0Y2IyZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL2xjZC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogcGVyaXBoZXJhbCBsaWJyYXJ5IGluY2x1ZGUgKi8NCiAjaW5jbHVkZSA8cGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9sY2QuaAppbmRleCA0NDk1ZjllLi4wYTQ2N2ExIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbGNkLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL2xjZC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIExDRF9JTkNfSA0KICNkZWZpbmUgTENEX0lOQ19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9tYWluLmMKaW5kZXggMmQ1MWY2Ni4uMTA4YmRmZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9tYWluX2JsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fYmxpbmt5LmMKaW5kZXggNDExYzVkNC4uOTZmNGRhZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL21haW5fZnVsbC5jCmluZGV4IDI1OGYwOTEuLmRjOTI1ZWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3NlcmlhbC9zZXJpYWwuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi9zZXJpYWwvc2VyaWFsLmMKaW5kZXggZDI0ODVjMy4uODlkOWJmZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvc2VyaWFsL3NlcmlhbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBCQVNJQyBJTlRFUlJVUFQgRFJJVkVOIFNFUklBTCBQT1JUIERSSVZFUi4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5jCmluZGV4IDBhYmU2NTMuLjU3MDhiMGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhpZ2ggc3BlZWQgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3QuaAppbmRleCBjZDQ1NzlkLi4zMDMzZjMyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX1RFU1RfSA0KICNkZWZpbmUgVElNRVJfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdF9pc3IuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWF9NUExBQi90aW1lcnRlc3RfaXNyLlMKaW5kZXggMGM0ZjYxNS4uYjVjOTZiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1YX01QTEFCL3RpbWVydGVzdF9pc3IuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVhfTVBMQUIvdGltZXJ0ZXN0X2lzci5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8cDMyeHh4eC5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuYwppbmRleCA2YWJmNWJjLi5jOTU5Mzg5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvQ29uZmlnUGVyZm9ybWFuY2UuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyBmdW5jdGlvbnMgdG8gYWNjZXNzIGFuZCBtYW5pcHVsYXRlIHRoZSBQSUMzMiBoYXJkd2FyZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9Db25maWdQZXJmb3JtYW5jZS5oIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmgKaW5kZXggY2VhZWM4MS4uNWZkM2E1NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0NvbmZpZ1BlcmZvcm1hbmNlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQ09ORklHX1BFUkZPUk1BTkNFX0gNCiAjZGVmaW5lIENPTkZJR19QRVJGT1JNQU5DRV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvRnJlZVJUT1NDb25maWcuaAppbmRleCBiZGRhNTZiLi5kZWE4ZWY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFzay5jIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2suYwppbmRleCBkODQ0ZjhlLi5lMWMxMjhiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSVNSVHJpZ2dlcmVkVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JU1JUcmlnZ2VyZWRUYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogSW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZXMgdGhhdCBjYW5ub3QgbmVzdCBoYXZlIG5vIHNwZWNpYWwgcmVxdWlyZW1lbnRzIGFuZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5TIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMKaW5kZXggN2IzYzg3OS4uNWU1ZTJhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMmM2ZjkxNi4uMGE4NmY0NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAiSW50UXVldWVUaW1lci5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvSW50UXVldWVUaW1lcl9pc3IuUyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCmluZGV4IDI3ZGNkNjIuLjljNjQyZDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9JbnRRdWV1ZVRpbWVyX2lzci5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8eGMuaD4NCiAjaW5jbHVkZSA8c3lzL2FzbS5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA1NDI2ZGYwLi5iMzA3NjY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLVBJQzMyTVoyMDQ4X1NLLm1rIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLVBJQzMyTVoyMDQ4X1NLLm1rCmluZGV4IDFjMTNmNjUuLjg0NDAxZDAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1QSUMzMk1aMjA0OF9TSy5taworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtUElDMzJNWjIwNDhfU0subWsKQEAgLTQ0LDYgKzQ0LDEyIEBACiBDT01QQVJJU09OX0JVSUxEPQogZW5kaWYKIAoraWZkZWYgU1VCX0lNQUdFX0FERFJFU1MKKworZWxzZQorU1VCX0lNQUdFX0FERFJFU1NfQ09NTUFORD0KK2VuZGlmCisKICMgT2JqZWN0IERpcmVjdG9yeQogT0JKRUNURElSPWJ1aWxkLyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0KIApAQCAtOTksMzUgKzEwNSwzNSBAQAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20ubyAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8ub2sgJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uZXJyIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5kIiAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uYXNtLmQiIC10ICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gJChNUF9FWFRSQV9BU19QUkUpICAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydF9hc20uby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8gLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydF9hc20uUyAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgIC1XYSwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0FTX1BPU1QpLC1NRD0iJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vLmFzbS5kIiAtdCAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICQoTVBfRVhUUkFfQVNfUFJFKSAgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm8uZCIgIC1vICR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vIC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0X2FzbS5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09UEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm86IC4uL1JlZ2lzdGVyVGVzdFRhc2tzLlMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8gCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5vayAke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8uZXJyIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vIC4uL1JlZ2lzdGVyVGVzdFRhc2tzLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUdHRVJfUEszPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLworCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL1JlZ2lzdGVyVGVzdFRhc2tzLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9SZWdpc3RlclRlc3RUYXNrcy5vIC4uL1JlZ2lzdGVyVGVzdFRhc2tzLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvUmVnaXN0ZXJUZXN0VGFza3Muby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPVBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLwogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vOiAuLi9JbnRRdWV1ZVRpbWVyX2lzci5TICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8ub2sgJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vLmVyciAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vLmQiICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uYXNtLmQiIC10ICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gJChNUF9FWFRSQV9BU19QUkUpICAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZCIgIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3IubyAuLi9JbnRRdWV1ZVRpbWVyX2lzci5TICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgLVdhLC0tZGVmc3ltPV9fTVBMQUJfQlVJTEQ9MSQoTVBfRVhUUkFfQVNfUE9TVCksLU1EPSIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyX2lzci5vLmQiICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uYXNtLmQiIC10ICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gJChNUF9FWFRSQV9BU19QUkUpICAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uZCIgIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lcl9pc3IubyAuLi9JbnRRdWV1ZVRpbWVyX2lzci5TICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgLVdhLC0tZGVmc3ltPV9fTVBMQUJfQlVJTEQ9MSQoTVBfRVhUUkFfQVNfUE9TVCksLU1EPSIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXJfaXNyLm8uYXNtLmQiLC0tZGVmc3ltPV9fSUNEMlJBTT0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWdkd2FyZi0yLC0tZGVmc3ltPV9fREVCVUc9MSwtLWRlZnN5bT1QS09CU0tERVBsYXRmb3JtVG9vbD0xIC1JLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVogLUkuLi8KIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vOiAuLi90aW1lcnRlc3RfaXNyLlMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3Iuby5vayAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3Iuby5lcnIgCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmQiICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3IubyAuLi90aW1lcnRlc3RfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09X19NUExBQl9ERUJVR0dFUl9QSzM9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmQiICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmQiICAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdF9pc3IubyAuLi90aW1lcnRlc3RfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0X2lzci5vLmFzbS5kIiwtLWRlZnN5bT1fX0lDRDJSQU09MSwtLWRlZnN5bT1fX01QTEFCX0RFQlVHPTEsLS1nZHdhcmYtMiwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09UEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtSS4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIC1JLi4vCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm86IC4uL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8gCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5vayAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8uZXJyIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vIC4uL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPV9fTVBMQUJfREVCVUdHRVJfUEszPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLworCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2tfaXNyLm8uZCIgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5hc20uZCIgLXQgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAkKE1QX0VYVFJBX0FTX1BSRSkgIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5kIiAgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrX2lzci5vIC4uL0lTUlRyaWdnZXJlZFRhc2tfaXNyLlMgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAtV2EsLS1kZWZzeW09X19NUExBQl9CVUlMRD0xJChNUF9FWFRSQV9BU19QT1NUKSwtTUQ9IiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFza19pc3Iuby5hc20uZCIsLS1kZWZzeW09X19JQ0QyUkFNPTEsLS1kZWZzeW09X19NUExBQl9ERUJVRz0xLC0tZ2R3YXJmLTIsLS1kZWZzeW09X19ERUJVRz0xLC0tZGVmc3ltPVBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgLUkuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiAtSS4uLwogCQogZWxzZQogJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnRfYXNtLm86IC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawpAQCAtMTc0LDE2OSArMTgwLDE2OSBAQAogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvR2VuUVRlc3Quby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvR2VuUVRlc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0dlblFUZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL0dlblFUZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsubzogLi4vLi4vQ29tbW9uL01pbmltYWwvUVBlZWsuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RUGVlay5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1FQZWVrLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUVBlZWsuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1FQZWVrLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUVBlZWsuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1FQZWVrLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUVBlZWsuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2Jsb2NrdGltLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvYmxvY2t0aW0ubyAuLi8uLi9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvYmxvY2t0aW0uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9ibG9ja3RpbS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvYmxvY2t0aW0ubyAuLi8uLi9Db21tb24vTWluaW1hbC9ibG9ja3RpbS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZmxhc2hfdGltZXIuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9mbGFzaF90aW1lci5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9mbGFzaF90aW1lci5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2ZsYXNoX3RpbWVyLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9mbGFzaF90aW1lci5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL2ZsYXNoX3RpbWVyLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9zZW10ZXN0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3NlbXRlc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3NlbXRlc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3NlbXRlc3QubyAuLi8uLi9Db21tb24vTWluaW1hbC9zZW10ZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9zZW10ZXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvc2VtdGVzdC5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL3NlbXRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9JbnRRdWV1ZS5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0ludFF1ZXVlLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvSW50UXVldWUubyAuLi8uLi9Db21tb24vTWluaW1hbC9JbnRRdWV1ZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvSW50UXVldWUuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9JbnRRdWV1ZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvSW50UXVldWUubyAuLi8uLi9Db21tb24vTWluaW1hbC9JbnRRdWV1ZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm86IC4uLy4uL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVPdmVyd3JpdGUuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZU92ZXJ3cml0ZS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZU92ZXJ3cml0ZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlT3ZlcndyaXRlLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZU92ZXJ3cml0ZS5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL1F1ZXVlT3ZlcndyaXRlLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQubzogLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9RdWV1ZVNldC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlU2V0Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlU2V0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvUXVldWVTZXQuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL1F1ZXVlU2V0Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvUXVldWVTZXQuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2NvdW50c2VtLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvY291bnRzZW0ubyAuLi8uLi9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvY291bnRzZW0uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9jb3VudHNlbS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvY291bnRzZW0ubyAuLi8uLi9Db21tb24vTWluaW1hbC9jb3VudHNlbS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMubzogLi4vLi4vQ29tbW9uL01pbmltYWwvZHluYW1pYy5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9keW5hbWljLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9keW5hbWljLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9keW5hbWljLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvZHluYW1pYy5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvZHluYW1pYy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL2R5bmFtaWMubyAuLi8uLi9Db21tb24vTWluaW1hbC9keW5hbWljLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXgubzogLi4vLi4vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXgubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9yZWNtdXRleC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXguby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3JlY211dGV4Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3JlY211dGV4Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvcmVjbXV0ZXguby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL3JlY211dGV4Lm8gLi4vLi4vQ29tbW9uL01pbmltYWwvcmVjbXV0ZXguYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8ubzogLi4vLi4vQ29tbW9uL01pbmltYWwvRXZlbnRHcm91cHNEZW1vLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4MyIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvRXZlbnRHcm91cHNEZW1vLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8ubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzExNjM4NDY4ODMvRXZlbnRHcm91cHNEZW1vLm8gLi4vLi4vQ29tbW9uL01pbmltYWwvRXZlbnRHcm91cHNEZW1vLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9FdmVudEdyb3Vwc0RlbW8uby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xMTYzODQ2ODgzL0V2ZW50R3JvdXBzRGVtby5vIC4uLy4uL0NvbW1vbi9NaW5pbWFsL0V2ZW50R3JvdXBzRGVtby5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvcXVldWUubzogLi4vLi4vLi4vU291cmNlL3F1ZXVlLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3F1ZXVlLm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vIC4uLy4uLy4uL1NvdXJjZS9xdWV1ZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9xdWV1ZS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvcXVldWUuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvcXVldWUubyAuLi8uLi8uLi9Tb3VyY2UvcXVldWUuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3Rhc2tzLm86IC4uLy4uLy4uL1NvdXJjZS90YXNrcy5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90YXNrcy5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3Muby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3Muby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3MubyAuLi8uLi8uLi9Tb3VyY2UvdGFza3MuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGFza3Muby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3Rhc2tzLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3Rhc2tzLm8gLi4vLi4vLi4vU291cmNlL3Rhc2tzLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm86IC4uLy4uLy4uL1NvdXJjZS9saXN0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3Quby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvbGlzdC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvbGlzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3QubyAuLi8uLi8uLi9Tb3VyY2UvbGlzdC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9saXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2xpc3QubyAuLi8uLi8uLi9Tb3VyY2UvbGlzdC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm86IC4uLy4uLy4uL1NvdXJjZS90aW1lcnMuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3RpbWVycy5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3RpbWVycy5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi90aW1lcnMubyAuLi8uLi8uLi9Tb3VyY2UvdGltZXJzLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3RpbWVycy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvdGltZXJzLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL3RpbWVycy5vIC4uLy4uLy4uL1NvdXJjZS90aW1lcnMuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQubzogLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OCIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8zMzIzMDk2OTgvcG9ydC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0Lm8gLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzMzMjMwOTY5OC9wb3J0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMzMyMzA5Njk4L3BvcnQubyAuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm86IC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzciIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xODg0MDk2ODc3L2hlYXBfNC5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8gCi0JQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xODg0MDk2ODc3L2hlYXBfNC5vIC4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE4ODQwOTY4NzcvaGVhcF80Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTg4NDA5Njg3Ny9oZWFwXzQubyAuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzQuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vOiAuLi8uLi8uLi9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9ldmVudF9ncm91cHMubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9ldmVudF9ncm91cHMuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC80NDk5MjY2MDIvZXZlbnRfZ3JvdXBzLm8gLi4vLi4vLi4vU291cmNlL2V2ZW50X2dyb3Vwcy5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9ldmVudF9ncm91cHMuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvNDQ5OTI2NjAyL2V2ZW50X2dyb3Vwcy5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzQ0OTkyNjYwMi9ldmVudF9ncm91cHMubyAuLi8uLi8uLi9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vOiAuLi9tYWluLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW4uby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW4uby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW4ubyAuLi9tYWluLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbi5vIC4uL21haW4uYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2L1BhclRlc3QubzogLi4vUGFyVGVzdC9QYXJUZXN0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2IiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2L1BhclRlc3Quby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvODA5NzQzNTE2L1BhclRlc3QubyAuLi9QYXJUZXN0L1BhclRlc3QuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC84MDk3NDM1MTYvUGFyVGVzdC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzgwOTc0MzUxNi9QYXJUZXN0Lm8gLi4vUGFyVGVzdC9QYXJUZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kubzogLi4vbWFpbl9ibGlua3kuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2JsaW5reS5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fYmxpbmt5Lm8gLi4vbWFpbl9ibGlua3kuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fYmxpbmt5Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9ibGlua3kuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fYmxpbmt5Lm8gLi4vbWFpbl9ibGlua3kuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vOiAuLi9Db25maWdQZXJmb3JtYW5jZS5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0NvbmZpZ1BlcmZvcm1hbmNlLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvQ29uZmlnUGVyZm9ybWFuY2UubyAuLi9Db25maWdQZXJmb3JtYW5jZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvQ29uZmlnUGVyZm9ybWFuY2Uuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9Db25maWdQZXJmb3JtYW5jZS5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvQ29uZmlnUGVyZm9ybWFuY2UubyAuLi9Db25maWdQZXJmb3JtYW5jZS5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vOiAuLi9tYWluX2Z1bGwuYyAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rCiAJQCR7TUtESVJ9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyIiAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2Z1bGwuby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURfX01QTEFCX0RFQlVHR0VSX1BLMz0xIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9tYWluX2Z1bGwubyAuLi9tYWluX2Z1bGwuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQorCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL21haW5fZnVsbC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvbWFpbl9mdWxsLm8gLi4vbWFpbl9mdWxsLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vOiAuLi9JbnRRdWV1ZVRpbWVyLmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXIuby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXIuby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL0ludFF1ZXVlVGltZXIubyAuLi9JbnRRdWV1ZVRpbWVyLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JbnRRdWV1ZVRpbWVyLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvSW50UXVldWVUaW1lci5vIC4uL0ludFF1ZXVlVGltZXIuYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3QubzogLi4vdGltZXJ0ZXN0LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0Lm8uZCAKIAlAJHtSTX0gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3QubyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvdGltZXJ0ZXN0Lm8gLi4vdGltZXJ0ZXN0LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3Quby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi90aW1lcnRlc3Quby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL3RpbWVydGVzdC5vIC4uL3RpbWVydGVzdC5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCiAJCiAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2subzogLi4vSVNSVHJpZ2dlcmVkVGFzay5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKIAlAJHtNS0RJUn0gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIiIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2suby5kIAogCUAke1JNfSAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2subyAKLQlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrLm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRF9fTVBMQUJfREVCVUdHRVJfUEszPTEgLWZmcmFtZS1iYXNlLWxvY2xpc3QgIC14IGMgLWMgLW1wcm9jZXNzb3I9JChNUF9QUk9DRVNTT1JfT1BUSU9OKSAgLUkiLi4vLi4vLi4vU291cmNlL2luY2x1ZGUiIC1JIi4uLy4uLy4uL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aIiAtSSIuLi8uLi9Db21tb24vaW5jbHVkZSIgLUkiLi4vIiAtV2FsbCAtTU1EIC1NRiAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrLm8uZCIgLW8gJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9JU1JUcmlnZ2VyZWRUYXNrLm8gLi4vSVNSVHJpZ2dlcmVkVGFzay5jICAgIC1EWFBSSl9QSUMzMk1aMjA0OF9TSz0kKENORF9DT05GKSAgLW5vLWxlZ2FjeS1saWJjICAkKENPTVBBUklTT05fQlVJTEQpICAtV2FsbCAtV2V4dHJhCisJQCR7RklYREVQU30gIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvSVNSVHJpZ2dlcmVkVGFzay5vLmQiICQoU0lMRU5UKSAtcnNpICR7TVBfQ0NfRElSfS4uLyAgLWMgJHtNUF9DQ30gICQoTVBfRVhUUkFfQ0NfUFJFKSAtZyAtRF9fREVCVUcgLURQS09CU0tERVBsYXRmb3JtVG9vbD0xICAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2suby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL0lTUlRyaWdnZXJlZFRhc2subyAuLi9JU1JUcmlnZ2VyZWRUYXNrLmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKIAkKICR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vOiAuLi9mbG9wX216LmMgIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tawogCUAke01LRElSfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3MiIgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vLmQgCiAJQCR7Uk19ICR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vIAotCUAke0ZJWERFUFN9ICIke09CSkVDVERJUn0vX2V4dC8xNDcyL2Zsb3BfbXouby5kIiAkKFNJTEVOVCkgLXJzaSAke01QX0NDX0RJUn0uLi8gIC1jICR7TVBfQ0N9ICAkKE1QX0VYVFJBX0NDX1BSRSkgLWcgLURfX0RFQlVHIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtZmZyYW1lLWJhc2UtbG9jbGlzdCAgLXggYyAtYyAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtSSIuLi8uLi8uLi9Tb3VyY2UvaW5jbHVkZSIgLUkiLi4vLi4vLi4vU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVoiIC1JIi4uLy4uL0NvbW1vbi9pbmNsdWRlIiAtSSIuLi8iIC1XYWxsIC1NTUQgLU1GICIke09CSkVDVERJUn0vX2V4dC8xNDcyL2Zsb3BfbXouby5kIiAtbyAke09CSkVDVERJUn0vX2V4dC8xNDcyL2Zsb3BfbXoubyAuLi9mbG9wX216LmMgICAgLURYUFJKX1BJQzMyTVoyMDQ4X1NLPSQoQ05EX0NPTkYpICAtbm8tbGVnYWN5LWxpYmMgICQoQ09NUEFSSVNPTl9CVUlMRCkgIC1XYWxsIC1XZXh0cmEKKwlAJHtGSVhERVBTfSAiJHtPQkpFQ1RESVJ9L19leHQvMTQ3Mi9mbG9wX216Lm8uZCIgJChTSUxFTlQpIC1yc2kgJHtNUF9DQ19ESVJ9Li4vICAtYyAke01QX0NDfSAgJChNUF9FWFRSQV9DQ19QUkUpIC1nIC1EX19ERUJVRyAtRFBLT0JTS0RFUGxhdGZvcm1Ub29sPTEgIC1mZnJhbWUtYmFzZS1sb2NsaXN0ICAteCBjIC1jIC1tcHJvY2Vzc29yPSQoTVBfUFJPQ0VTU09SX09QVElPTikgIC1JIi4uLy4uLy4uL1NvdXJjZS9pbmNsdWRlIiAtSSIuLi8uLi8uLi9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWiIgLUkiLi4vLi4vQ29tbW9uL2luY2x1ZGUiIC1JIi4uLyIgLVdhbGwgLU1NRCAtTUYgIiR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vLmQiIC1vICR7T0JKRUNURElSfS9fZXh0LzE0NzIvZmxvcF9tei5vIC4uL2Zsb3BfbXouYyAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgLVdhbGwgLVdleHRyYQogCQogZWxzZQogJHtPQkpFQ1RESVJ9L19leHQvMTE2Mzg0Njg4My9HZW5RVGVzdC5vOiAuLi8uLi9Db21tb24vTWluaW1hbC9HZW5RVGVzdC5jICBuYnByb2plY3QvTWFrZWZpbGUtJHtDTkRfQ09ORn0ubWsKQEAgLTUyMCw3ICs1MjYsNyBAQAogaWZlcSAoJChUWVBFX0lNQUdFKSwgREVCVUdfUlVOKQogZGlzdC8ke0NORF9DT05GfS8ke0lNQUdFX1RZUEV9L1JUT1NEZW1vLlguJHtJTUFHRV9UWVBFfS4ke09VVFBVVF9TVUZGSVh9OiAke09CSkVDVEZJTEVTfSAgbmJwcm9qZWN0L01ha2VmaWxlLSR7Q05EX0NPTkZ9Lm1rICAgIAogCUAke01LRElSfSBkaXN0LyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0gCi0JJHtNUF9DQ30gJChNUF9FWFRSQV9MRF9QUkUpICAtbWRlYnVnZ2VyIC1EX19NUExBQl9ERUJVR0dFUl9QSzM9MSAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtbyBkaXN0LyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0vUlRPU0RlbW8uWC4ke0lNQUdFX1RZUEV9LiR7T1VUUFVUX1NVRkZJWH0gJHtPQkpFQ1RGSUxFU19RVU9URURfSUZfU1BBQ0VEfSAgICAgICAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgIC1tcmVzZXJ2ZT1kYXRhQDB4MDoweDI3RiAgIC1XbCwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0xEX1BPU1QpJChNUF9MSU5LRVJfRklMRV9PUFRJT04pLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWRlZnN5bT1fX0RFQlVHPTEsLS1kZWZzeW09X19NUExBQl9ERUJVR0dFUl9QSzM9MSwtLWRlZnN5bT1fbWluX2hlYXBfc2l6ZT0wLC0tbm8tY29kZS1pbi1kaW5pdCwtLW5vLWRpbml0LWluLXNlcmlhbC1tZW0sLU1hcD0iJHtESVNURElSfS8ke1BST0pFQ1ROQU1FfS4ke0lNQUdFX1RZUEV9Lm1hcCIsLS1tZW1vcnlzdW1tYXJ5LGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfS9tZW1vcnlmaWxlLnhtbAorCSR7TVBfQ0N9ICQoTVBfRVhUUkFfTERfUFJFKSAtZyAtbWRlYnVnZ2VyIC1EUEtPQlNLREVQbGF0Zm9ybVRvb2w9MSAtbXByb2Nlc3Nvcj0kKE1QX1BST0NFU1NPUl9PUFRJT04pICAtbyBkaXN0LyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0vUlRPU0RlbW8uWC4ke0lNQUdFX1RZUEV9LiR7T1VUUFVUX1NVRkZJWH0gJHtPQkpFQ1RGSUxFU19RVU9URURfSUZfU1BBQ0VEfSAgICAgICAgICAtRFhQUkpfUElDMzJNWjIwNDhfU0s9JChDTkRfQ09ORikgIC1uby1sZWdhY3ktbGliYyAgJChDT01QQVJJU09OX0JVSUxEKSAgIC1tcmVzZXJ2ZT1kYXRhQDB4MDoweDI3RiAgIC1XbCwtLWRlZnN5bT1fX01QTEFCX0JVSUxEPTEkKE1QX0VYVFJBX0xEX1BPU1QpJChNUF9MSU5LRVJfRklMRV9PUFRJT04pLC0tZGVmc3ltPV9fTVBMQUJfREVCVUc9MSwtLWRlZnN5bT1fX0RFQlVHPTEsLUQ9X19ERUJVR19ELC0tZGVmc3ltPVBLT0JTS0RFUGxhdGZvcm1Ub29sPTEsLS1kZWZzeW09X21pbl9oZWFwX3NpemU9MCwtLW5vLWNvZGUtaW4tZGluaXQsLS1uby1kaW5pdC1pbi1zZXJpYWwtbWVtLC1NYXA9IiR7RElTVERJUn0vJHtQUk9KRUNUTkFNRX0uJHtJTUFHRV9UWVBFfS5tYXAiLC0tbWVtb3J5c3VtbWFyeSxkaXN0LyR7Q05EX0NPTkZ9LyR7SU1BR0VfVFlQRX0vbWVtb3J5ZmlsZS54bWwKIAkKIGVsc2UKIGRpc3QvJHtDTkRfQ09ORn0vJHtJTUFHRV9UWVBFfS9SVE9TRGVtby5YLiR7SU1BR0VfVFlQRX0uJHtPVVRQVVRfU1VGRklYfTogJHtPQkpFQ1RGSUxFU30gIG5icHJvamVjdC9NYWtlZmlsZS0ke0NORF9DT05GfS5tayAgIApkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWdlbmVzaXMucHJvcGVydGllcyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1nZW5lc2lzLnByb3BlcnRpZXMKaW5kZXggODIyOTRmMi4uOTdlOTY1MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWdlbmVzaXMucHJvcGVydGllcworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtZ2VuZXNpcy5wcm9wZXJ0aWVzCkBAIC0xLDE1ICsxLDE1IEBACiAjDQotI1N1biBBcHIgMDkgMTI6MDQ6MjMgUERUIDIwMTcNCi1QSUMzMk1aMjA0OF9TSy5jb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLXRvb2xjaGFpblhDMzItWEMzMkxhbmd1YWdlVG9vbGNoYWluLm1kNT1iNmMwNmJhM2FhNmYxNTg3ODk5MDk0ZDkxYThmNzYxZA0KLVBJQzMyTVoyMDQ4RUZfU0tfU09GVF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi5kaXI9Q1w6XFxkZXZ0b29sc1xcTWljcm9jaGlwXFx4YzMyXFx2MS40MlxcYmluDQorI01vbiBOb3YgMjcgMTk6MTU6NDcgUFNUIDIwMTcNCitQSUMzMk1aMjA0OF9TSy5jb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLXRvb2xjaGFpblhDMzItWEMzMkxhbmd1YWdlVG9vbGNoYWluLm1kNT0wMDJlMDdmYzM1YTczMjU2NmIzYzgwYzFlZDI4OTdlOA0KK1BJQzMyTVoyMDQ4RUZfU0tfU09GVF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi5kaXI9Q1w6XFxkZXZ0b29sc1xcTWljcm9jaGlwXFx4YzMyXFx2MS40NFxcYmluDQogY29uZi5pZHM9UElDMzJNWjIwNDhfU0ssUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULFBJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVA0KLWNvbmZpZ3VyYXRpb25zLXhtbD1mMmI2ZmRlNzViYzNhOTBmMWI3OWZkMDM5Mzk3YThlOQ0KLVBJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi5kaXI9Q1w6XFxkZXZ0b29sc1xcTWljcm9jaGlwXFx4YzMyXFx2MS40MlxcYmluDQotUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FULmNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtdG9vbGNoYWluWEMzMi1YQzMyTGFuZ3VhZ2VUb29sY2hhaW4ubWQ1PWI2YzA2YmEzYWE2ZjE1ODc4OTkwOTRkOTFhOGY3NjFkDQotUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FULmxhbmd1YWdldG9vbGNoYWluLnZlcnNpb249MS40Mg0KLWNvbS1taWNyb2NoaXAtbXBsYWItbmJpZGUtZW1iZWRkZWQtbWFrZXByb2plY3QtTWFrZVByb2plY3QubWQ1PTA1MmYxYjRjZmE3ZTUwY2QzM2JiYmI0MDczNDIzZjllDQotUElDMzJNWjIwNDhfU0subGFuZ3VhZ2V0b29sY2hhaW4udmVyc2lvbj0xLjQyDQotUElDMzJNWjIwNDhfU0subGFuZ3VhZ2V0b29sY2hhaW4uZGlyPUNcOlxcZGV2dG9vbHNcXE1pY3JvY2hpcFxceGMzMlxcdjEuNDJcXGJpbg0KLVBJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVC5jb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLXRvb2xjaGFpblhDMzItWEMzMkxhbmd1YWdlVG9vbGNoYWluLm1kNT1iNmMwNmJhM2FhNmYxNTg3ODk5MDk0ZDkxYThmNzYxZA0KLVBJQzMyTVoyMDQ4RUZfU0tfU09GVF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi52ZXJzaW9uPTEuNDINCitjb25maWd1cmF0aW9ucy14bWw9MTNmY2FlMGQxZmFkNTU2MWM3OTA5OTNmODE0ZGZmOGINCitQSUMzMk1aMjA0OEVGX1NLX0hBUkRfRkxPQVQubGFuZ3VhZ2V0b29sY2hhaW4uZGlyPUNcOlxcZGV2dG9vbHNcXE1pY3JvY2hpcFxceGMzMlxcdjEuNDRcXGJpbg0KK1BJQzMyTVoyMDQ4RUZfU0tfU09GVF9GTE9BVC5jb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLXRvb2xjaGFpblhDMzItWEMzMkxhbmd1YWdlVG9vbGNoYWluLm1kNT0wMDJlMDdmYzM1YTczMjU2NmIzYzgwYzFlZDI4OTdlOA0KK1BJQzMyTVoyMDQ4RUZfU0tfSEFSRF9GTE9BVC5sYW5ndWFnZXRvb2xjaGFpbi52ZXJzaW9uPTEuNDQNCitjb20tbWljcm9jaGlwLW1wbGFiLW5iaWRlLWVtYmVkZGVkLW1ha2Vwcm9qZWN0LU1ha2VQcm9qZWN0Lm1kNT01ZDMwZmY1MTI4YjE0ODY1YzhhMzc5NmE4ZjBiYjhhMA0KK1BJQzMyTVoyMDQ4X1NLLmxhbmd1YWdldG9vbGNoYWluLnZlcnNpb249MS40NA0KK1BJQzMyTVoyMDQ4X1NLLmxhbmd1YWdldG9vbGNoYWluLmRpcj1DXDpcXGRldnRvb2xzXFxNaWNyb2NoaXBcXHhjMzJcXHYxLjQ0XFxiaW4NCitQSUMzMk1aMjA0OEVGX1NLX0hBUkRfRkxPQVQuY29tLW1pY3JvY2hpcC1tcGxhYi1uYmlkZS10b29sY2hhaW5YQzMyLVhDMzJMYW5ndWFnZVRvb2xjaGFpbi5tZDU9MDAyZTA3ZmMzNWE3MzI1NjZiM2M4MGMxZWQyODk3ZTgNCitQSUMzMk1aMjA0OEVGX1NLX1NPRlRfRkxPQVQubGFuZ3VhZ2V0b29sY2hhaW4udmVyc2lvbj0xLjQ0DQogaG9zdC5wbGF0Zm9ybT13aW5kb3dzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWxvY2FsLVBJQzMyTVoyMDQ4X1NLLm1rIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L01ha2VmaWxlLWxvY2FsLVBJQzMyTVoyMDQ4X1NLLm1rCmluZGV4IDNmZWJmZmEuLjNlMjAyMDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9NYWtlZmlsZS1sb2NhbC1QSUMzMk1aMjA0OF9TSy5taworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvTWFrZWZpbGUtbG9jYWwtUElDMzJNWjIwNDhfU0subWsKQEAgLTE1LDIzICsxNSwyMyBAQAogIyAkIG1ha2VNUF9DQz0iL29wdC9taWNyb2NoaXAvbXBsYWJjMzAvdjMuMzBjL2Jpbi9waWMzMC1nY2MiIC4uLiAgCiAjCiBTSEVMTD1jbWQuZXhlCi1QQVRIX1RPX0lERV9CSU49QzovZGV2dG9vbHMvTWljcm9jaGlwL01QTEFCWC92My41MS9tcGxhYl9pZGUvcGxhdGZvcm0vLi4vbXBsYWJfaWRlL21vZHVsZXMvLi4vLi4vYmluLworUEFUSF9UT19JREVfQklOPUM6L2RldnRvb2xzL01pY3JvY2hpcC9NUExBQlgvdjQuMDUvbXBsYWJfaWRlL3BsYXRmb3JtLy4uL21wbGFiX2lkZS9tb2R1bGVzLy4uLy4uL2Jpbi8KICMgQWRkaW5nIE1QTEFCIFggYmluIGRpcmVjdG9yeSB0byBwYXRoLgotUEFUSDo9QzovZGV2dG9vbHMvTWljcm9jaGlwL01QTEFCWC92My41MS9tcGxhYl9pZGUvcGxhdGZvcm0vLi4vbXBsYWJfaWRlL21vZHVsZXMvLi4vLi4vYmluLzokKFBBVEgpCitQQVRIOj1DOi9kZXZ0b29scy9NaWNyb2NoaXAvTVBMQUJYL3Y0LjA1L21wbGFiX2lkZS9wbGF0Zm9ybS8uLi9tcGxhYl9pZGUvbW9kdWxlcy8uLi8uLi9iaW4vOiQoUEFUSCkKICMgUGF0aCB0byBqYXZhIHVzZWQgdG8gcnVuIE1QTEFCIFggd2hlbiB0aGlzIG1ha2VmaWxlIHdhcyBjcmVhdGVkCi1NUF9KQVZBX1BBVEg9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFxNUExBQlhcdjMuNTFcc3lzXGphdmFcanJlMS44LjBfOTEvYmluLyIKK01QX0pBVkFfUEFUSD0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXE1QTEFCWFx2NC4wNVxzeXNcamF2YVxqcmUxLjguMF8xNDQvYmluLyIKIE9TX0NVUlJFTlQ9IiQoc2hlbGwgdW5hbWUgLXMpIgotTVBfQ0M9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpblx4YzMyLWdjYy5leGUiCi1NUF9DUFBDPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW5ceGMzMi1nKysuZXhlIgorTVBfQ0M9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpblx4YzMyLWdjYy5leGUiCitNUF9DUFBDPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW5ceGMzMi1nKysuZXhlIgogIyBNUF9CQyBpcyBub3QgZGVmaW5lZAotTVBfQVM9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpblx4YzMyLWFzLmV4ZSIKLU1QX0xEPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW5ceGMzMi1sZC5leGUiCi1NUF9BUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluXHhjMzItYXIuZXhlIgotREVQX0dFTj0ke01QX0pBVkFfUEFUSH1qYXZhIC1qYXIgIkM6L2RldnRvb2xzL01pY3JvY2hpcC9NUExBQlgvdjMuNTEvbXBsYWJfaWRlL3BsYXRmb3JtLy4uL21wbGFiX2lkZS9tb2R1bGVzLy4uLy4uL2Jpbi9leHRyYWN0b2JqZWN0ZGVwZW5kZW5jaWVzLmphciIKLU1QX0NDX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluIgotTVBfQ1BQQ19ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpbiIKK01QX0FTPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW5ceGMzMi1hcy5leGUiCitNUF9MRD0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluXHhjMzItbGQuZXhlIgorTVBfQVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpblx4YzMyLWFyLmV4ZSIKK0RFUF9HRU49JHtNUF9KQVZBX1BBVEh9amF2YSAtamFyICJDOi9kZXZ0b29scy9NaWNyb2NoaXAvTVBMQUJYL3Y0LjA1L21wbGFiX2lkZS9wbGF0Zm9ybS8uLi9tcGxhYl9pZGUvbW9kdWxlcy8uLi8uLi9iaW4vZXh0cmFjdG9iamVjdGRlcGVuZGVuY2llcy5qYXIiCitNUF9DQ19ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpbiIKK01QX0NQUENfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW4iCiAjIE1QX0JDX0RJUiBpcyBub3QgZGVmaW5lZAotTVBfQVNfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40MlxiaW4iCi1NUF9MRF9ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQyXGJpbiIKLU1QX0FSX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluIgorTVBfQVNfRElSPSJDOlxkZXZ0b29sc1xNaWNyb2NoaXBceGMzMlx2MS40NFxiaW4iCitNUF9MRF9ESVI9IkM6XGRldnRvb2xzXE1pY3JvY2hpcFx4YzMyXHYxLjQ0XGJpbiIKK01QX0FSX0RJUj0iQzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluIgogIyBNUF9CQ19ESVIgaXMgbm90IGRlZmluZWQKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9jb25maWd1cmF0aW9ucy54bWwgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvY29uZmlndXJhdGlvbnMueG1sCmluZGV4IDMxNzE1NDYuLjE5NjlkMGQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9jb25maWd1cmF0aW9ucy54bWwKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L2NvbmZpZ3VyYXRpb25zLnhtbApAQCAtODksNyArODksNyBAQAogICAgICAgICA8dGFyZ2V0UGx1Z2luQm9hcmQ+PC90YXJnZXRQbHVnaW5Cb2FyZD4NCiAgICAgICAgIDxwbGF0Zm9ybVRvb2w+UEtPQlNLREVQbGF0Zm9ybVRvb2w8L3BsYXRmb3JtVG9vbD4NCiAgICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpbj5YQzMyPC9sYW5ndWFnZVRvb2xjaGFpbj4NCi0gICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+MS40MjwvbGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPg0KKyAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4xLjQ0PC9sYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+DQogICAgICAgICA8cGxhdGZvcm0+MzwvcGxhdGZvcm0+DQogICAgICAgPC90b29sc1NldD4NCiAgICAgICA8Y29tcGlsZVR5cGU+DQpAQCAtMzc3LDcgKzM3Nyw3IEBACiAgICAgICAgIDx0YXJnZXRQbHVnaW5Cb2FyZD48L3RhcmdldFBsdWdpbkJvYXJkPg0KICAgICAgICAgPHBsYXRmb3JtVG9vbD5QS09CU0tERVBsYXRmb3JtVG9vbDwvcGxhdGZvcm1Ub29sPg0KICAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluPlhDMzI8L2xhbmd1YWdlVG9vbGNoYWluPg0KLSAgICAgICAgPGxhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4xLjQyPC9sYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+DQorICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPjEuNDQ8L2xhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4NCiAgICAgICAgIDxwbGF0Zm9ybT4zPC9wbGF0Zm9ybT4NCiAgICAgICA8L3Rvb2xzU2V0Pg0KICAgICAgIDxjb21waWxlVHlwZT4NCkBAIC03NjksNyArNzY5LDcgQEAKICAgICAgICAgPHRhcmdldFBsdWdpbkJvYXJkPjwvdGFyZ2V0UGx1Z2luQm9hcmQ+DQogICAgICAgICA8cGxhdGZvcm1Ub29sPlBLT0JTS0RFUGxhdGZvcm1Ub29sPC9wbGF0Zm9ybVRvb2w+DQogICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW4+WEMzMjwvbGFuZ3VhZ2VUb29sY2hhaW4+DQotICAgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPjEuNDI8L2xhbmd1YWdlVG9vbGNoYWluVmVyc2lvbj4NCisgICAgICAgIDxsYW5ndWFnZVRvb2xjaGFpblZlcnNpb24+MS40NDwvbGFuZ3VhZ2VUb29sY2hhaW5WZXJzaW9uPg0KICAgICAgICAgPHBsYXRmb3JtPjM8L3BsYXRmb3JtPg0KICAgICAgIDwvdG9vbHNTZXQ+DQogICAgICAgPGNvbXBpbGVUeXBlPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL2NvbmZpZ3VyYXRpb25zLnhtbCBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9SVE9TRGVtby5YL25icHJvamVjdC9wcml2YXRlL2NvbmZpZ3VyYXRpb25zLnhtbAppbmRleCAyMjg5ZTZhLi5mODMzMjY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9jb25maWd1cmF0aW9ucy54bWwKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L3ByaXZhdGUvY29uZmlndXJhdGlvbnMueG1sCkBAIC00LDggKzQsOCBAQAogICA8ZGVmYXVsdENvbmY+MDwvZGVmYXVsdENvbmY+DQogICA8Y29uZnM+DQogICAgIDxjb25mIG5hbWU9IlBJQzMyTVoyMDQ4X1NLIiB0eXBlPSIyIj4NCi0gICAgICA8cGxhdGZvcm1Ub29sU04+Oj1NUExBQkNvbW0tVVNCLU1pY3JvY2hpcDo9Jmx0O3ZpZD4wNEQ4Oj0mbHQ7cGlkPjgxMDc6PSZsdDtyZXY+MDAwMjo9Jmx0O21hbj5NaWNyb2NoaXAgVGVjaG5vbG9neSBJbmNvcnBvcmF0ZWQ6PSZsdDtwcm9kPlBJQzMyTVogRUMgRmFtaWx5Oj0mbHQ7c24+QlVSMTM1MTEyNDMwOj0mbHQ7ZHJ2Png6PSZsdDt4cHQ+aDo9ZW5kPC9wbGF0Zm9ybVRvb2xTTj4NCi0gICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCisgICAgICA8cGxhdGZvcm1Ub29sU04+Oj1NUExBQkNvbW0tVVNCLU1pY3JvY2hpcDo9Jmx0O3ZpZD4wNEQ4Oj0mbHQ7cGlkPjgxMDc6PSZsdDtyZXY+MDAwMjo9Jmx0O21hbj5NaWNyb2NoaXAgVGVjaG5vbG9neSBJbmNvcnBvcmF0ZWQ6PSZsdDtwcm9kPlBJQzMyTVogRUMgRmFtaWx5Oj0mbHQ7c24+TVRJMTMyOTkwMTU1Oj0mbHQ7ZHJ2Png6PSZsdDt4cHQ+aDo9ZW5kPC9wbGF0Zm9ybVRvb2xTTj4NCisgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCiAgICAgICA8bWRiZGVidWdnZXIgdmVyc2lvbj0iMSI+DQogICAgICAgICA8cGxhY2Vob2xkZXIxPnBsYWNlIGhvbGRlciAxPC9wbGFjZWhvbGRlcjE+DQogICAgICAgICA8cGxhY2Vob2xkZXIyPnBsYWNlIGhvbGRlciAyPC9wbGFjZWhvbGRlcjI+DQpAQCAtMjMsNyArMjMsNyBAQAogICAgIDwvY29uZj4NCiAgICAgPGNvbmYgbmFtZT0iUElDMzJNWjIwNDhFRl9TS19TT0ZUX0ZMT0FUIiB0eXBlPSIyIj4NCiAgICAgICA8cGxhdGZvcm1Ub29sU04+Oj1NUExBQkNvbW0tVVNCLU1pY3JvY2hpcDo9Jmx0O3ZpZD4wNEQ4Oj0mbHQ7cGlkPjgxMDc6PSZsdDtyZXY+MDAwMjo9Jmx0O21hbj5NaWNyb2NoaXAgVGVjaG5vbG9neSBJbmNvcnBvcmF0ZWQ6PSZsdDtwcm9kPlBJQzMyTVogRUYgRmFtaWx5Oj0mbHQ7c24+QlVSMTUzMTI0MDA0Oj0mbHQ7ZHJ2Png6PSZsdDt4cHQ+aDo9ZW5kPC9wbGF0Zm9ybVRvb2xTTj4NCi0gICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCisgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCiAgICAgICA8bWRiZGVidWdnZXIgdmVyc2lvbj0iMSI+DQogICAgICAgICA8cGxhY2Vob2xkZXIxPnBsYWNlIGhvbGRlciAxPC9wbGFjZWhvbGRlcjE+DQogICAgICAgICA8cGxhY2Vob2xkZXIyPnBsYWNlIGhvbGRlciAyPC9wbGFjZWhvbGRlcjI+DQpAQCAtNDEsNyArNDEsNyBAQAogICAgIDwvY29uZj4NCiAgICAgPGNvbmYgbmFtZT0iUElDMzJNWjIwNDhFRl9TS19IQVJEX0ZMT0FUIiB0eXBlPSIyIj4NCiAgICAgICA8cGxhdGZvcm1Ub29sU04+Oj1NUExBQkNvbW0tVVNCLU1pY3JvY2hpcDo9Jmx0O3ZpZD4wNEQ4Oj0mbHQ7cGlkPjgxMDc6PSZsdDtyZXY+MDAwMjo9Jmx0O21hbj5NaWNyb2NoaXAgVGVjaG5vbG9neSBJbmNvcnBvcmF0ZWQ6PSZsdDtwcm9kPlBJQzMyTVogRUMgRmFtaWx5Oj0mbHQ7c24+TVRJMTMyOTkwMTU1Oj0mbHQ7ZHJ2Png6PSZsdDt4cHQ+aDo9ZW5kPC9wbGF0Zm9ybVRvb2xTTj4NCi0gICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDJcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCisgICAgICA8bGFuZ3VhZ2VUb29sY2hhaW5EaXI+QzpcZGV2dG9vbHNcTWljcm9jaGlwXHhjMzJcdjEuNDRcYmluPC9sYW5ndWFnZVRvb2xjaGFpbkRpcj4NCiAgICAgICA8bWRiZGVidWdnZXIgdmVyc2lvbj0iMSI+DQogICAgICAgICA8cGxhY2Vob2xkZXIxPnBsYWNlIGhvbGRlciAxPC9wbGFjZWhvbGRlcjE+DQogICAgICAgICA8cGxhY2Vob2xkZXIyPnBsYWNlIGhvbGRlciAyPC9wbGFjZWhvbGRlcjI+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JUT1NEZW1vLlgvbmJwcm9qZWN0L3ByaXZhdGUvcHJpdmF0ZS54bWwgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9wcml2YXRlLnhtbAppbmRleCA1YjRmMTNlLi5iNjEyYWQ1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9wcml2YXRlLnhtbAorKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUlRPU0RlbW8uWC9uYnByb2plY3QvcHJpdmF0ZS9wcml2YXRlLnhtbApAQCAtMTAsMTAgKzEwLDYgQEAKICAgICAgICAgICAgIDxmaWxlPmZpbGU6L0M6L0UvRGV2L0ZyZWVSVE9TL1dvcmtpbmdDb3B5L0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnQuYzwvZmlsZT4NCiAgICAgICAgICAgICA8ZmlsZT5maWxlOi9DOi9FL0Rldi9GcmVlUlRPUy9Xb3JraW5nQ29weS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0X2FzbS5TPC9maWxlPg0KICAgICAgICAgPC9ncm91cD4NCi0gICAgICAgIDxncm91cD4NCi0gICAgICAgICAgICA8ZmlsZT5maWxlOi9DOi9Vc2Vycy9yaWJhcnJ5L0Rldi9GcmVlUlRPUy9Xb3JraW5nQ29weS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbi5jPC9maWxlPg0KLSAgICAgICAgICAgIDxmaWxlPmZpbGU6L0M6L1VzZXJzL3JpYmFycnkvRGV2L0ZyZWVSVE9TL1dvcmtpbmdDb3B5L0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2Z1bGwuYzwvZmlsZT4NCi0gICAgICAgICAgICA8ZmlsZT5maWxlOi9DOi9Vc2Vycy9yaWJhcnJ5L0Rldi9GcmVlUlRPUy9Xb3JraW5nQ29weS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbl9ibGlua3kuYzwvZmlsZT4NCi0gICAgICAgIDwvZ3JvdXA+DQorICAgICAgICA8Z3JvdXAvPg0KICAgICA8L29wZW4tZmlsZXM+DQogPC9wcm9qZWN0LXByaXZhdGU+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL1JlZ2lzdGVyVGVzdFRhc2tzLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUmVnaXN0ZXJUZXN0VGFza3MuUwppbmRleCBkZjFhOGZjLi5hNjJkMjBjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUmVnaXN0ZXJUZXN0VGFza3MuUworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvUmVnaXN0ZXJUZXN0VGFza3MuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHhjLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9mbG9wX216LmMKaW5kZXggOGM4Zjk4NC4uNmJkMjkxMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouYworKysgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvZmxvcF9tei5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9mbG9wX216LmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvZmxvcF9tei5oCmluZGV4IGYwZDllNDQuLjUyZTdhNzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9mbG9wX216LmgKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL2Zsb3BfbXouaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTE9QX1RBU0tTX0gNCiAjZGVmaW5lIEZMT1BfVEFTS1NfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbi5jCmluZGV4IDIwMTNkYzAuLmI0M2YwY2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4wIC0gQ29weXJpZ2h0IChDKSAyMDE2IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2JsaW5reS5jCmluZGV4IDQ2MDFmNjAuLjA1MWE0N2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi9tYWluX2Z1bGwuYwppbmRleCA1MzhmZTU5Li4zMmEyYWMxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuYwppbmRleCA3YWFmNTg5Li5hNTMyMzRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIaWdoIHNwZWVkIHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0LmggYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0LmgKaW5kZXggY2Q0NTc5ZC4uMzAzM2YzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBUSU1FUl9URVNUX0gNCiAjZGVmaW5lIFRJTUVSX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3RfaXNyLlMgYi9GcmVlUlRPUy9EZW1vL1BJQzMyTVpfTVBMQUIvdGltZXJ0ZXN0X2lzci5TCmluZGV4IDFkN2JmNWYuLmVhZjcxYTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUElDMzJNWl9NUExBQi90aW1lcnRlc3RfaXNyLlMKKysrIGIvRnJlZVJUT1MvRGVtby9QSUMzMk1aX01QTEFCL3RpbWVydGVzdF9pc3IuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHhjLmg+DQogI2luY2x1ZGUgPHN5cy9hc20uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNWY0MDFhMy4uYzAwNmEwMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYwppbmRleCBjMGYwODQ5Li40NDAwMjZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGVzdHMgdGhlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgc2F2ZSBhbmQgcmVzdG9yZSBtZWNoYW5pc20uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKaW5kZXggMTAxNzJlZS4uZmM0NTFlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZMT1BfUkVHX1RFU1RfSA0KICNkZWZpbmUgRkxPUF9SRUdfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKaW5kZXggNDU4YjZhOS4uOTQ5MTBkOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgZWlnaHQgdGFza3MsIGVhY2ggb2Ygd2hpY2ggbG9vcHMgY29udGludW91c2x5IHBlcmZvcm1pbmcgYQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKaW5kZXggMmQ4YTY1My4uNzM5YTVhMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX0RQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKaW5kZXggOWI5ZmNlOC4uNDc1ODM1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfRFBfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwppbmRleCA4MWJiZDdjLi44NGRiNTUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9EUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDVmNDAxYTMuLmMwMDZhMDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKaW5kZXggOWQ0NzZmMC4uZmQ0ZGI2NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRlc3RzIHRoZSBmbG9hdGluZyBwb2ludCBjb250ZXh0IHNhdmUgYW5kIHJlc3RvcmUgbWVjaGFuaXNtLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmggYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCmluZGV4IDEwMTcyZWUuLmZjNDUxZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGTE9QX1JFR19URVNUX0gNCiAjZGVmaW5lIEZMT1BfUkVHX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCmluZGV4IDFjMjBkM2EuLjdiZDFiZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGVpZ2h0IHRhc2tzLCBlYWNoIG9mIHdoaWNoIGxvb3BzIGNvbnRpbnVvdXNseSBwZXJmb3JtaW5nIGENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jCmluZGV4IDk5ZWVlZGEuLmJiOGExOTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9TUF9GUFVfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCmluZGV4IDliOWZjZTguLjQ3NTgzNWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1NQX0ZQVV9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKaW5kZXggODFiYmQ3Yy4uODRkYjU1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfU1BfRlBVX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggNjYwOWY4OS4uOWNiZTNiNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5jCmluZGV4IDlkNDc2ZjAuLmZkNGRiNjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGVzdHMgdGhlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgc2F2ZSBhbmQgcmVzdG9yZSBtZWNoYW5pc20uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC1yZWctdGVzdC5oCmluZGV4IDEwMTcyZWUuLmZjNDUxZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AtcmVnLXRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLXJlZy10ZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRkxPUF9SRUdfVEVTVF9IDQogI2RlZmluZSBGTE9QX1JFR19URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vZmxvcC9mbG9wLmMKaW5kZXggMWMyMGQzYS4uN2JkMWJmYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL2Zsb3AvZmxvcC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9mbG9wL2Zsb3AuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGVpZ2h0IHRhc2tzLCBlYWNoIG9mIHdoaWNoIGxvb3BzIGNvbnRpbnVvdXNseSBwZXJmb3JtaW5nIGENCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL21haW4uYwppbmRleCA3ZTBiNTY1Li41YWU3NWRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3BhcnRlc3QvcGFydGVzdC5jCmluZGV4IGFlZWQ5NDMuLjAwMjgwOWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9wYXJ0ZXN0L3BhcnRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vcGFydGVzdC9wYXJ0ZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9QUEM0NDBfWGlsaW54X1ZpcnRleDVfR0NDL1JUT1NEZW1vL3NlcmlhbC9zZXJpYWwuYwppbmRleCA4MWJiZDdjLi44NGRiNTUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1BQQzQ0MF9YaWxpbnhfVmlydGV4NV9HQ0MvUlRPU0RlbW8vc2VyaWFsL3NlcmlhbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUFBDNDQwX1hpbGlueF9WaXJ0ZXg1X0dDQy9SVE9TRGVtby9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL1BvbGxRLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9Qb2xsUS5jCmluZGV4IDZkNjNkMGQuLmRkZDM5NzIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL1BvbGxRLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvUG9sbFEuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyB2ZXJzaW9uIG9mIFBvbGxRLiBjIGlzIGZvciB1c2Ugb24gc3lzdGVtcyB0aGF0IGhhdmUgbGltaXRlZCBzdGFjaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2Jsb2NrdGltLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9ibG9ja3RpbS5jCmluZGV4IGVkMjA0NzEuLjQ4NmRhYjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2Jsb2NrdGltLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvYmxvY2t0aW0uYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHNvbWUgdGVzdCBzY2VuYXJpb3MgdGhhdCBlbnN1cmUgdGFza3MgZG8gbm90IGV4aXQgcXVldWUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9keW5hbWljLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9keW5hbWljLmMKaW5kZXggODJlYjYwYS4uNjU4ZjUxNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvZHluYW1pYy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2R5bmFtaWMuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhlIGZpcnN0IHRlc3QgY3JlYXRlcyB0aHJlZSB0YXNrcyAtIHR3byBjb3VudGVyIHRhc2tzIChvbmUgY29udGludW91cyBjb3VudA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvUG9sbFEuaCBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvUG9sbFEuaAppbmRleCAwNmRkNThjLi4yZmNiYzZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL1BvbGxRLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9Qb2xsUS5oCkBAIC0xLDcwICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy4zLjAgLSBDb3B5cmlnaHQgKEMpIDIwMTIgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0gICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0gICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0gICAgDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgbGljZW5zZSANCi0gICAgYW5kIGNvbnRhY3QgZGV0YWlscy4gIA0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbC4NCi0NCi0gICAgUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCANCi0gICAgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiwgYW5kIG1pZGRsZXdhcmUsIHVuZGVyIA0KLSAgICB0aGUgT3BlblJUT1MgYnJhbmQ6IGh0dHA6Ly93d3cuT3BlblJUT1MuY29tLiAgSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvDQotICAgIHByb3ZpZGUgYSBzYWZldHkgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIHVuZGVyIA0KLSAgICB0aGUgU2FmZVJUT1MgYnJhbmQ6IGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tLg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT0xMRURfUV9IDQogI2RlZmluZSBQT0xMRURfUV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9ibG9ja3RpbS5oIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9ibG9ja3RpbS5oCmluZGV4IDJjZjIwZjEuLmE2ODU5NTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvYmxvY2t0aW0uaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9Db21tb24tRGVtby1UYXNrcy9pbmNsdWRlL2Jsb2NrdGltLmgKQEAgLTEsNzAgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjMuMCAtIENvcHlyaWdodCAoQykgMjAxMiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSAgICANCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCBsaWNlbnNlIA0KLSAgICBhbmQgY29udGFjdCBkZXRhaWxzLiAgDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLg0KLQ0KLSAgICBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIA0KLSAgICB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uLCBhbmQgbWlkZGxld2FyZSwgdW5kZXIgDQotICAgIHRoZSBPcGVuUlRPUyBicmFuZDogaHR0cDovL3d3dy5PcGVuUlRPUy5jb20uICBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28NCi0gICAgcHJvdmlkZSBhIHNhZmV0eSBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gdW5kZXIgDQotICAgIHRoZSBTYWZlUlRPUyBicmFuZDogaHR0cDovL3d3dy5TYWZlUlRPUy5jb20uDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEJMT0NLX1RJTUVfVEVTVF9IDQogI2RlZmluZSBCTE9DS19USU1FX1RFU1RfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0NvbW1vbi1EZW1vLVRhc2tzL2luY2x1ZGUvZHluYW1pYy5oIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9keW5hbWljLmgKaW5kZXggZGUzOWE2OC4uOGFkODg2ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9keW5hbWljLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvQ29tbW9uLURlbW8tVGFza3MvaW5jbHVkZS9keW5hbWljLmgKQEAgLTEsNzAgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjMuMCAtIENvcHlyaWdodCAoQykgMjAxMiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQgDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSAgICANCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICANCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCBsaWNlbnNlIA0KLSAgICBhbmQgY29udGFjdCBkZXRhaWxzLiAgDQotICAgIA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLg0KLQ0KLSAgICBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIA0KLSAgICB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uLCBhbmQgbWlkZGxld2FyZSwgdW5kZXIgDQotICAgIHRoZSBPcGVuUlRPUyBicmFuZDogaHR0cDovL3d3dy5PcGVuUlRPUy5jb20uICBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28NCi0gICAgcHJvdmlkZSBhIHNhZmV0eSBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gdW5kZXIgDQotICAgIHRoZSBTYWZlUlRPUyBicmFuZDogaHR0cDovL3d3dy5TYWZlUlRPUy5jb20uDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIERZTkFNSUNfTUFOSVBVTEFUSU9OX0gNCiAjZGVmaW5lIERZTkFNSUNfTUFOSVBVTEFUSU9OX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9FeGFtcGxlSVNSLlMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9FeGFtcGxlSVNSLlMKaW5kZXggNTBmZmUzMi4uMzdkOWU3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvRXhhbXBsZUlTUi5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0V4YW1wbGVJU1IuUwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGRlZmluZXMgdGhlIGFzc2VtYmxlciB3cmFwcGVyIGZvciB0aGUgZXhhbXBsZSBpbnRlcnJ1cHQgdGhhdCBpcw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGU4ZTdmNTkuLjk5Zjc4ZmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvUmVnVGVzdC5TIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvUmVnVGVzdC5TCmluZGV4IDgxYzVkMDUuLjdmZDM0NWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL1JlZ1Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9SZWdUZXN0LlMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBkZWZpbmVzIHRoZSBSZWdUZXN0IHRhc2tzIGFzIGRlc2NyaWJlZCBhdCB0aGUgdG9wIG9mIG1haW4uYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL2RlbW9fc3BlY2lmaWNfaW8uaCBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL2RlbW9fc3BlY2lmaWNfaW8uaAppbmRleCA4OWQ4ZmQyLi43Mjg0NmMwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9kZW1vX3NwZWNpZmljX2lvLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvZGVtb19zcGVjaWZpY19pby5oCkBAIC0xLDY3ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOC4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi0gICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi0gICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+PiFBTkQgTU9ESUZJRUQgQlkhPDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTEVEX0lPX0gNCiAjZGVmaW5lIExFRF9JT19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbi5jCmluZGV4IDI1YTY4YjYuLmQyOGZjYTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfRTJTdHVkaW9fR0NDL3NyYy9tYWluX2JsaW5reS5jCmluZGV4IDFlOGQ0NWIuLmI1MjQ3MGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9ibGlua3kuYwpAQCAtMSw2NyArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjguMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE0IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4hQU5EIE1PRElGSUVEIEJZITw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9FMlN0dWRpb19HQ0Mvc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9mdWxsLmMKaW5kZXggZDA2MDY1Zi4uYmQzNDhhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X0UyU3R1ZGlvX0dDQy9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOGJjODFjZS4uNDY0ZmYwMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL1JlZ1Rlc3Quczg3IGIvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL1JlZ1Rlc3Quczg3CmluZGV4IDgwM2U3ZGQuLjhiNDM2Y2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9SZWdUZXN0LnM4NworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvUmVnVGVzdC5zODcKQEAgLTEsNTUgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfUkw3OEcxM19Qcm9tb19Cb2FyZF9JQVIvbWFpbi5jCmluZGV4IDYyYTBkMWQuLjZmMDAzMGUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9STDc4RzEzX1Byb21vX0JvYXJkX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X1JMNzhHMTNfUHJvbW9fQm9hcmRfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvRXhhbXBsZUlTUi5zODcgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL0V4YW1wbGVJU1Iuczg3CmluZGV4IDA4YjRmYTQuLjFhMTFiMzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvRXhhbXBsZUlTUi5zODcKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9FeGFtcGxlSVNSLnM4NwpAQCAtMSw3NCArMSwzMCBAQAotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOw0KLTsgICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLTsgICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi07ICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0IGNhbiBiZQ0KLTsgICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotOyAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi07ICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi07ICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLTsgICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQorOy8qDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiA7Kg0KIDsgKiBUaGlzIGZpbGUgZGVmaW5lcyB0aGUgYXNzZW1ibGVyIHdyYXBwZXIgZm9yIHRoZSBleGFtcGxlIGludGVycnVwdCB0aGF0IGlzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGI4NWE0N2QuLjhlNWVkODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9SZWdUZXN0LnM4NyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvUmVnVGVzdC5zODcKaW5kZXggODJiNjYyMC4uYTA0ZTc5NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9SZWdUZXN0LnM4NworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL1JlZ1Rlc3Quczg3CkBAIC0xLDU1ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogDQogOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvZGVtb19zcGVjaWZpY19pby5oIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9kZW1vX3NwZWNpZmljX2lvLmgKaW5kZXggNzM3NThlNi4uNDJlNDlhNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9kZW1vX3NwZWNpZmljX2lvLmgKKysrIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9kZW1vX3NwZWNpZmljX2lvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTEVEX0lPX0gNCiAjZGVmaW5lIExFRF9JT19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW4uYwppbmRleCAzNjJhMjA4Li42OGMzZTYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fYmxpbmt5LmMKaW5kZXggMDIzNWFhZi4uN2JjMzQ5NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9STDc4X211bHRpcGxlX0lBUi9tYWluX2Z1bGwuYwppbmRleCA3NjIyYzE0Li4yM2ZhZWU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JMNzhfbXVsdGlwbGVfSUFSL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUkw3OF9tdWx0aXBsZV9JQVIvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCBmZTYwZGNhLi5jZTRmNDk3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBhZTlmNWZkLi5mNDc4YjIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW4uYwppbmRleCBlNDQ4MTIyLi4yN2I3NTA4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBsb3cgcG93ZXIgcHJvamVjdCB0aGF0DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfR0NDX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fZnVsbC5jCmluZGV4IDBjZjg5MzcuLjQ4YjNkZWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19HQ0NfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jCmluZGV4IDYzZGFkYjkuLjhmYzM4NWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0dDQ19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogV2hlbiBjb25maWdDUkVBVEVfTE9XX1BPV0VSX0RFTU8gaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaCBtYWluKCkgd2lsbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZDA1ZTMyNi4uNGJmNjZlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL1BhclRlc3QuYwppbmRleCBhZTlmNWZkLi5mNDc4YjIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCA2MWFiZmFlLi5kZjg2NGVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KICNkZWZpbmUgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbi5jCmluZGV4IDU5NzQzYWMuLmE3MjA3MTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIGxvdyBwb3dlciBwcm9qZWN0IHRoYXQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvbWFpbl9mdWxsLmMKaW5kZXggYjA1ZWY1NS4uNDEwMGJmNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX0lBUi9tYWluX2xvd19wb3dlci5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fbG93X3Bvd2VyLmMKaW5kZXggZDYwZThiYi4uZWUwMWJjMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL21haW5fbG93X3Bvd2VyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBXaGVuIGNvbmZpZ0NSRUFURV9MT1dfUE9XRVJfREVNTyBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oIG1haW4oKSB3aWxsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfSUFSL3JlZ190ZXN0LnMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvcmVnX3Rlc3QucwppbmRleCBhNGJhN2JlLi45NDE1MTNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvcmVnX3Rlc3QucworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19JQVIvcmVnX3Rlc3QucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA2ODllMTQwLi41OWM2MzVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggYWU5ZjVmZC4uZjQ3OGIyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jCmluZGV4IGFkNGQ0NDkuLjUyMjliYjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgbG93IHBvd2VyIHByb2plY3QgdGhhdA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fZnVsbC5jCmluZGV4IDc1NjM3MGYuLmExNDZlYjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9sb3dfcG93ZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDAtUlNLX1JlbmVzYXNfZTJzdHVkaW8vUlRPU0RlbW8vbWFpbl9sb3dfcG93ZXIuYwppbmRleCAzNTJhN2JmLi40NTE5MzliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL1JUT1NEZW1vL21haW5fbG93X3Bvd2VyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMC1SU0tfUmVuZXNhc19lMnN0dWRpby9SVE9TRGVtby9tYWluX2xvd19wb3dlci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogV2hlbiBjb25maWdDUkVBVEVfTE9XX1BPV0VSX0RFTU8gaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaCBtYWluKCkgd2lsbA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IDU1OGU5M2UuLmI1ZGM2YzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCA3MGYwMWRkLi40NmI5ZjgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBiYmEyMjUyLi41MzU3OWRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuUyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCmluZGV4IDUxNDEyNjAuLjhlNGQyMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCkBAIC0xLDY3ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotOyAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLTsgICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+ISBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUNCi07ICAgID4+ISBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZQ0KLTsgICAgPj4hIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAgPj4hIGtlcm5lbC4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy47DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuZ2xvYmFsIF92UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KQEAgLTIzMSw1ICsxOTQsNSBAQAogCTsgQSBjb21wYXJlIGZhaWxlZCwganVzdCBsb29wIGhlcmUgc28gdGhlIGxvb3AgY291bnRlciBzdG9wcyBpbmNyZW1lbnRpbmcNCiAJOyAtIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLg0KIAlCUkEgUmVnVGVzdDJFcnJvcg0KLQkNCisNCiAJLkVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKaW5kZXggNDJiYWRlZS4uMjI4YTI4YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlQVUJMSUMgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCVBVQkxJQyBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggYjI5ZmM4Yy4uZjFjOTU5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKaW5kZXggMjYyYWE0My4uNjQ5MGU2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQUklPUklUWV9ERUZJTklUSU9OU19IDQogI2RlZmluZSBQUklPUklUWV9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCmluZGV4IDBkZTY5YjUuLjZkYzIwMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTU4ZTkzZS4uYjVkYzZjMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhiNjdiNTguLjhiOWNkODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDY2ZTNkNTAuLmQ1MjBhNTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwppbmRleCBiMDA2ZWI4Li4wMGFhNDM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlgxMDBfUlgxMTMtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYwppbmRleCA0NTczMDEzLi5jNjE2ZTc4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMTAwX1JYMTEzLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDEwMF9SWDExMy1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vQnV0dG9uQW5kTENELmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0J1dHRvbkFuZExDRC5jCmluZGV4IDI1ZjFiYjAuLjRhMzYwNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vQnV0dG9uQW5kTENELmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9CdXR0b25BbmRMQ0QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCAzYWMxZDNkLi5jOWIyNGRkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggZjFkMmE0Ni4uNDI5NzBiYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBiOWVkMDNlLi42OTgwMTI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCBlY2JiYWNkLi45YTZmZmM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9CdXR0b25BbmRMQ0QuaCBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9CdXR0b25BbmRMQ0QuaAppbmRleCBlN2E1NmFiLi4zNWJlYTFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvQnV0dG9uQW5kTENELmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0J1dHRvbkFuZExDRC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEJVVFRPTl9BTkRfTENEX0gNCiAjZGVmaW5lIEJVVFRPTl9BTkRfTENEX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IDM0MmY1YjAuLjg4YzVjNjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMTAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggODAzZTc3My4uYWNhZWZiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIxMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjEwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTRhYzljZi4uOWU3MjY1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDUxYWU1NWEuLjdjZDQyNzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBkZDJlODlmLi40ZDY3NWRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vUmVnVGVzdF9HQ0MuUyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCmluZGV4IDUxNDEyNjAuLjhlNGQyMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TCkBAIC0xLDY3ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGhhcyBiZWNvbWUgYSBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSBhbmQgc3VwcG9ydCB0aGUgRnJlZVJUT1MgICAgICAgICAqDQotOyAgICAgKiAgICBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgICAgICAgICAgKg0KLTsgICAgICogICAgbWFudWFsLCBvciBib3RoIGZyb206IGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsNCi07ICAgID4+ISBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUNCi07ICAgID4+ISBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZQ0KLTsgICAgPj4hIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAgPj4hIGtlcm5lbC4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi07ICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi07ICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBmcm9tIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi07ICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLTsgICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy47DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZS4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotOyAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotOyAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuZ2xvYmFsIF92UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAkuZ2xvYmFsIF92UmVnVGVzdDJJbXBsZW1lbnRhdGlvbg0KQEAgLTIzMSw1ICsxOTQsNSBAQAogCTsgQSBjb21wYXJlIGZhaWxlZCwganVzdCBsb29wIGhlcmUgc28gdGhlIGxvb3AgY291bnRlciBzdG9wcyBpbmNyZW1lbnRpbmcNCiAJOyAtIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLg0KIAlCUkEgUmVnVGVzdDJFcnJvcg0KLQkNCisNCiAJLkVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKaW5kZXggYzY0NWMzYi4uODZkNjgwOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlQVUJMSUMgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCVBVQkxJQyBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggNmE5OGMwZi4uYzY5NDk1OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKaW5kZXggMjYyYWE0My4uNjQ5MGU2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQUklPUklUWV9ERUZJTklUSU9OU19IDQogI2RlZmluZSBQUklPUklUWV9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCmluZGV4IDMyM2MxZjcuLjA5MjUxNzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggNTRhYzljZi4uOWU3MjY1MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDlkZWMwMDAuLjU3NGRiMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAyYTNkYzVjLi4xMDI4ZWU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCmluZGV4IDhiOTRiYWQuLmVhNzUyNzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggMDg0NWI2ZS4uMTAzZTg0MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYMjAwX1JYMjMxLVJTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKaW5kZXggNzlkNTc4MS4uOGFhZGUzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDIwMF9SWDIzMS1SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlgyMDBfUlgyMzEtUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCBhZDM4NTFjLi4xMGUwODRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IDdhYjM2MzYuLjVkODllMmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IDEyOTMyY2QuLjgxYjcwNTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL1BhclRlc3QuYwppbmRleCA4M2U0ZTNjLi5mZjNkMmIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwppbmRleCBmMTJhYzBlLi4wODU5OWFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWZ1bGwuYwppbmRleCA2YzZkODk1Li4wN2QzY2ViIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby91SVBfVGFzay5jCmluZGV4IDE4MzU1ZTMuLjg5MzdmNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19HTlVSWC9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IDcxODdjNDcuLmE4NGFjZDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0dOVVJYL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImlvZGVmaW5lLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCA5MTY0MjdkLi5jZmQwZDI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCAxMTg3ZjhjLi5iZjdjMWJlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvSW50UXVldWVUaW1lci5jCmluZGV4IDgzMmU0NzcuLmZkZDc1MzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9QYXJUZXN0LmMKaW5kZXggY2YyZWZmOS4uMTNkOTc0ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKaW5kZXggYTJkYWM1NC4uZTljYzVkNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCiAjZGVmaW5lIFBSSU9SSVRZX0RFRklOSVRJT05TX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUmVnVGVzdC5zIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL1JlZ1Rlc3QucwppbmRleCAzZDc4MmUyLi42ZjE0NzhhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvUmVnVGVzdC5zCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9SZWdUZXN0LnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlQVUJMSUMgX3BydlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJUFVCTElDIF9wcnZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1ibGlua3kuYwppbmRleCBhNzNmNzQ5Li5lYjMyYTcxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZGVtbyB0aGF0IGNyZWF0ZXMgdHdvIHRhc2tzIGFuZCBvbmUgcXVldWUuICBPbmUgdGFzaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi9tYWluLWZ1bGwuYwppbmRleCA2ZmU5MTVlLi5lMGNjM2FlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvdUlQX1Rhc2suYwppbmRleCBhYjAzNmVmLi43ODgxYTY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19JQVIvdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX0lBUi93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggZWQ5NWYzMy4uNzczZGRmOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfSUFSL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhhcmR3YXJlIHNwZWNpZmljIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxpb3J4NjJuLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDZlZTJkOWEuLjYxZjE0ZmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCBmMWQyYTQ2Li40Mjk3MGJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGI5ZWQwM2UuLjY5ODAxMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IDljOWY0OTIuLmI1NzcwZDggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwppbmRleCBmYzFlYTc1Li5lMWQyNDY1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZGVtbyB0aGF0IGNyZWF0ZXMgdHdvIHRhc2tzIGFuZCBvbmUgcXVldWUuICBPbmUgdGFzaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCmluZGV4IGEzYzRiZjYuLjRkYzRhYWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwppbmRleCAxODM1NWUzLi44OTM3ZjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IDJjZGRkNzMuLjFjZDM0ZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUkRLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJES19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhhcmR3YXJlIHNwZWNpZmljIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJpb2RlZmluZS5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDU0MzBkMjguLjVjYjYzNjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggN2FiMzYzNi4uNWQ4OWUyYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggMTI5MzJjZC4uODFiNzA1OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IGJkYmU0ZDkuLjE4ZDY1OTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCmluZGV4IDgwN2IxOGMuLjgzZDVkODYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IGYxMmFjMGUuLjA4NTk5YWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogVGhpcyBpcyBhIHZlcnkgc2ltcGxlIGRlbW8gdGhhdCBjcmVhdGVzIHR3byB0YXNrcyBhbmQgb25lIHF1ZXVlLiAgT25lIHRhc2sNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCmluZGV4IDZjNmQ4OTUuLjA3ZDNjZWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL3VJUF9UYXNrLmMKaW5kZXggMTgzNTVlMy4uODkzN2Y1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0dOVVJYL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggNzE4N2M0Ny4uYTg0YWNkMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfR05VUlgvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19HTlVSWC9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBIYXJkd2FyZSBzcGVjaWZpYyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiaW9kZWZpbmUuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGMwYTRlZjEuLmRlYWM1ZjAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IDExODdmOGMuLmJmN2MxYmUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggODMyZTQ3Ny4uZmRkNzUzNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1BhclRlc3QuYwppbmRleCA1N2M0MDY2Li41NzE5OTA4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1ByaW9yaXR5RGVmaW5pdGlvbnMuaAppbmRleCBhMmRhYzU0Li5lOWNjNWQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9Qcmlvcml0eURlZmluaXRpb25zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KICNkZWZpbmUgUFJJT1JJVFlfREVGSU5JVElPTlNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9SZWdUZXN0LnMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvUmVnVGVzdC5zCmluZGV4IDNkNzgyZTIuLjZmMTQ3OGEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9SZWdUZXN0LnMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL1JlZ1Rlc3QucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCVBVQkxJQyBfcHJ2UmVnVGVzdDFJbXBsZW1lbnRhdGlvbg0KIAlQVUJMSUMgX3BydlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWJsaW5reS5jCmluZGV4IDYzM2I0MTkuLmIxYmY3MWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWJsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL21haW4tZnVsbC5jCmluZGV4IDgyNmFlYWUuLjcwMGExOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi91SVBfVGFzay5jCmluZGV4IGFiMDM2ZWYuLjc4ODFhNjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX0lBUi91SVBfVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RyaW5nLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfSUFSL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvd2Vic2VydmVyL0VNQUMuYwppbmRleCBlZDk1ZjMzLi43NzNkZGY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvd2Vic2VydmVyL0VNQUMuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19JQVIvd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPGlvcng2Mm4uaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggOTg1YTVmNS4uZmYwODA1MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCmluZGV4IGYxZDJhNDYuLjQyOTcwYmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBIaWdoIGZyZXF1ZW5jeSB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggYjllZDAzZS4uNjk4MDEyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggYmRiZTRkOS4uMThkNjU5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBTaW1wbGUgSU8gcm91dGluZXMgdG8gY29udHJvbCB0aGUgTEVEcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IGZjMWVhNzUuLmUxZDI0NjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MgYW5kIG9uZSBxdWV1ZS4gIE9uZSB0YXNrDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggZGMxNDJlMy4uZTFjYWZiMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IGluY2x1ZGVzIGEgbG90IG9mIHRhc2tzIGFuZCB0ZXN0cyBhbmQgaXMgdGhlcmVmb3JlIGNvbXBsZXguDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCmluZGV4IDE4MzU1ZTMuLjg5MzdmNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdHJpbmcuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjJOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKaW5kZXggNWRkNWFiMi4uMzg2NTVlZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYyTi1SU0tfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2Mk4tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImlvZGVmaW5lLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGI5MjRhYzQuLjQ1YThmMDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCBmMWQyYTQ2Li40Mjk3MGJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogICogSGlnaCBmcmVxdWVuY3kgdGltZXIgdGVzdCBhcyBkZXNjcmliZWQgaW4gbWFpbi5jLiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCmluZGV4IGI5ZWQwM2UuLjY5ODAxMjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2Mk4gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IGVjYmJhY2QuLjlhNmZmYzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vaW5jbHVkZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9pbmNsdWRlL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL2luY2x1ZGUvSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYwppbmRleCAxZjc2YmQ3Li5mMTVhODhlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZGVtbyB0aGF0IGNyZWF0ZXMgdHdvIHRhc2tzIGFuZCBvbmUgcXVldWUuICBPbmUgdGFzaw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjMwLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCmluZGV4IDI4NjI4MDQuLjk4OTAwNWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2MzAtUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzMC1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA5M2YzMjdhLi5iZWVkM2FlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vSGlnaEZyZXF1ZW5jeVRpbWVyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKaW5kZXggM2UzYjM4ZS4uZTQ3ZmYyZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBiMWZiMGQ0Li5hZTFkMzE4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjJOIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCmluZGV4IDFiNGI5NDEuLmI3MDZkNzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IDQ5ZjVlOTcuLjFlOWFkMDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIFRoaXMgaXMgYSB2ZXJ5IHNpbXBsZSBkZW1vIHRoYXQgY3JlYXRlcyB0d28gdGFza3MsIG9uZSBxdWV1ZSwgYW5kIG9uZSANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYwppbmRleCAyNDFjZjA5Li5hNjkzZWZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgaW5jbHVkZXMgYSBsb3Qgb2YgdGFza3MgYW5kIHRlc3RzIGFuZCBpcyB0aGVyZWZvcmUgY29tcGxleC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKaW5kZXggMTgzNTVlMy4uODkzN2Y1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUkRLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwppbmRleCAzZjMwZGFkLi4xOGRlMjNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJES19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SREtfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2EzODIzZS4uMGFkMzBiMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaApAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9IaWdoRnJlcXVlbmN5VGltZXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwppbmRleCBhYTJiMDkxLi40Mjk3MGJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0hpZ2hGcmVxdWVuY3lUaW1lclRlc3QuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KICAqIEhpZ2ggZnJlcXVlbmN5IHRpbWVyIHRlc3QgYXMgZGVzY3JpYmVkIGluIG1haW4uYy4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCAyMDA3MGQwLi42OTgwMTI1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjcuNC4wIC0gQ29weXJpZ2h0IChDKSAyMDEzIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLQ0KLSAgICBGRUFUVVJFUyBBTkQgUE9SVFMgQVJFIEFEREVEIFRPIEZSRUVSVE9TIEFMTCBUSEUgVElNRS4gIFBMRUFTRSBWSVNJVA0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLCANCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaCANCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LCANCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotICAgIA0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5IA0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kIA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWDYyTiBzcGVjaWZpYyBwYXJ0cyBvZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggZjE0YzgzMy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eSANCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZCANCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vUGFyVGVzdC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggZmYxYjM3OC4uOWE2ZmZjOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0LmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eSANCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZCANCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWJsaW5reS5jCmluZGV4IDIwMDhiMmMuLmU2MjQxOGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tYmxpbmt5LmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywgDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2ggDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwgDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLSAgICANCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eSANCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZCANCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiAgKiBUaGlzIGlzIGEgdmVyeSBzaW1wbGUgZGVtbyB0aGF0IGNyZWF0ZXMgdHdvIHRhc2tzLCBvbmUgcXVldWUsIGFuZCBvbmUgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vbWFpbi1mdWxsLmMKaW5kZXggNTViNzc1Yy4uNGZlNDE4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby9tYWluLWZ1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL21haW4tZnVsbC5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkgDQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQgDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBpbmNsdWRlcyBhIGxvdCBvZiB0YXNrcyBhbmQgdGVzdHMgYW5kIGlzIHRoZXJlZm9yZSBjb21wbGV4Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwppbmRleCA4YWJhMWEwLi44OTM3ZjVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2M04tUlNLX1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwppbmRleCA3YjVmMDk3Li4yNjIyYzdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjNOLVJTS19SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDYzTi1SU0tfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsIA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoIA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsIA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0gICAgDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkgDQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQgDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgInBsYXRmb3JtLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGUyMmY2ZGUuLjNhYjIxYzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYwppbmRleCA5NDc2NTQwLi5jOGViNzNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIG5vbi1wb3J0YWJsZSBhbmQgdGhlcmVmb3JlIFJYNjRNIHNwZWNpZmljIHBhcnRzIG9mDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAppbmRleCA4MDdiMThjLi44M2Q1ZDg2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUGFyVGVzdC5jCmluZGV4IDQ3MjAwN2IuLmYwNjRiODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9SZWdUZXN0LlMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL1JlZ1Rlc3QuUwppbmRleCBiOTBjMzM4Li40ZWI0ZDY3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL1JlZ1Rlc3QuUworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL1JlZ1Rlc3QuUwpAQCAtMSw2NyArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsgICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotOyAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLTsgICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBoYXMgYmVjb21lIGEgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgYW5kIHN1cHBvcnQgdGhlIEZyZWVSVE9TICAgICAgICAgKg0KLTsgICAgICogICAgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlICAgICAgICAgICoNCi07ICAgICAqICAgIG1hbnVhbCwgb3IgYm90aCBmcm9tOiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91ISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICA+PiEgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byBkaXN0cmlidXRlDQotOyAgICA+PiEgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvIHByb3ZpZGUNCi07ICAgID4+ISB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgID4+ISBrZXJuZWwuDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgZm9sbG93aW5nDQotOyAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotOyAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi07ICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuOw0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotOyAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLmdsb2JhbCBfdlJlZ1Rlc3QxSW1wbGVtZW50YXRpb24NCiAJLmdsb2JhbCBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCkBAIC05Nyw3ICs2MCw3IEBACiAJTU9WLkwJIzEzLCBSMTMNCiAJTU9WLkwJIzE0LCBSMTQNCiAJTU9WLkwJIzE1LCBSMTUNCi0JDQorDQogCTsvKiBQdXQgYSBrbm93biB2YWx1ZSBpbiB0aGUgaGkgYW5kIGxvdyBvZiB0aGUgYWNjdW11bGF0b3JzLiAqLw0KIAlNVlRBQ0hJIFIxLCBBMA0KIAlNVlRBQ0xPIFIyLCBBMA0KQEAgLTEwNiwyNCArNjksMjQgQEAKIA0KIAk7LyogTG9vcCwgY2hlY2tpbmcgZWFjaCBpdGVyYXRpb24gdGhhdCBlYWNoIHJlZ2lzdGVyIHN0aWxsIGNvbnRhaW5zIHRoZQ0KIAk7ZXhwZWN0ZWQgdmFsdWUuICovDQotVGVzdExvb3AxOgkJCQkJCQkJDQorVGVzdExvb3AxOg0KIA0KIAk7LyogUHVzaCB0aGUgcmVnaXN0ZXJzIHRoYXQgYXJlIGdvaW5nIHRvIGdldCBjbG9iYmVyZWQuICovDQotCVBVU0hNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBVU0hNCVIxNC1SMTUNCisNCiAJOy8qIEluY3JlbWVudCB0aGUgbG9vcCBjb3VudGVyIHRvIHNob3cgdGhpcyB0YXNrIGlzIHN0aWxsIGdldHRpbmcgQ1BVIHRpbWUuICovDQogCU1PVi5MCSNfdWxSZWdUZXN0MUxvb3BDb3VudGVyLCBSMTQNCiAJTU9WLkwJWyBSMTQgXSwgUjE1DQotCUFERAkjMSwgUjE1CQkJCQkJDQorCUFERAkjMSwgUjE1DQogCU1PVi5MCVIxNSwgWyBSMTQgXQ0KLQkNCisNCiAJOy8qIFlpZWxkIHRvIGV4dGVuZCB0aGUgdGV4dCBjb3ZlcmFnZS4gIFNldCB0aGUgYml0IGluIHRoZSBJVFUgU1dJTlRSIHJlZ2lzdGVyLiAqLw0KIAlNT1YuTAkjMSwgUjE0DQogCU1PVi5MIAkjMDg3MkUwSCwgUjE1DQogCU1PVi5CCVIxNCwgW1IxNV0NCi0JTk9QCQkJCQkJCQkNCi0JTk9QCQkJCQkJCQkNCi0JDQorCU5PUA0KKwlOT1ANCisNCiAJOy8qIENoZWNrIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZGQUNISQkjMCwgQTAsIFIxNQ0KIAlDTVAgIzEsIFIxNQ0KQEAgLTE0NSw0OCArMTA4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEsIFIxCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzIsIFIyCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzMsIFIzCQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzQsIFI0CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzUsIFI1CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzYsIFI2CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzcsIFI3CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzgsIFI4CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzksIFI5CQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEwLCBSMTAJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMSwgUjExCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTIsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEzLCBSMTMJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxNCwgUjE0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTUsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KKwlDTVAJIzEsIFIxDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMiwgUjINCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMzLCBSMw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzQsIFI0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNSwgUjUNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM2LCBSNg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzcsIFI3DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjOCwgUjgNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM5LCBSOQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEwLCBSMTANCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMSwgUjExDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTIsIFIxMg0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEzLCBSMTMNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxNCwgUjE0DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTUsIFIxNQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCQlUZXN0TG9vcDEJCQkJDQotCQ0KLVJlZ1Rlc3QxRXJyb3I6CQkJCQkJCQ0KKwlCUkEJCVRlc3RMb29wMQ0KKw0KK1JlZ1Rlc3QxRXJyb3I6DQogCTsvKiBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7LSBjYXVzaW5nIHRoZSBjaGVjayB0YXNrIHRvIGluZGljYXRlIHRoZSBlcnJvci4gKi8NCi0JQlJBIFJlZ1Rlc3QxRXJyb3IJCQkJCQ0KKwlCUkEgUmVnVGVzdDFFcnJvcg0KIDsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiA7LyogVGhpcyBmdW5jdGlvbiBpcyBleHBsYWluZWQgaW4gdGhlIGNvbW1lbnRzIGF0IHRoZSB0b3Agb2YgbWFpbi5jLiAqLw0KQEAgLTIyMywxNyArMTg2LDE3IEBACiANCiAJOy8qIExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCiAJO2V4cGVjdGVkIHZhbHVlLiAqLw0KLVRlc3RMb29wMjoJCQkJCQkJCQ0KK1Rlc3RMb29wMjoNCiANCiAJOy8qIFB1c2ggdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBnb2luZyB0byBnZXQgY2xvYmJlcmVkLiAqLw0KLQlQVVNITQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQVVNITQlSMTQtUjE1DQorDQogCTsvKiBJbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciB0byBzaG93IHRoaXMgdGFzayBpcyBzdGlsbCBnZXR0aW5nIENQVSB0aW1lLiAqLw0KIAlNT1YuTAkjX3VsUmVnVGVzdDJMb29wQ291bnRlciwgUjE0DQogCU1PVi5MCVsgUjE0IF0sIFIxNQ0KLQlBREQJIzEsIFIxNQkJCQkJCQ0KKwlBREQJIzEsIFIxNQ0KIAlNT1YuTAlSMTUsIFsgUjE0IF0NCi0JDQorDQogCTsvKiBDaGVjayBhY2N1bXVsYXRvcnMuICovDQogCU1WRkFDSEkJIzAsIEEwLCBSMTUNCiAJQ01QICMxMEgsIFIxNQ0KQEAgLTI1NSw0OCArMjE4LDQ4IEBACiAJQk5FIFJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIFJlc3RvcmUgdGhlIGNsb2JiZXJlZCByZWdpc3RlcnMuICovDQotCVBPUE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUE9QTQlSMTQtUjE1DQorDQogCTsvKiBOb3cgY29tcGFyZSBlYWNoIHJlZ2lzdGVyIHRvIGVuc3VyZSBpdCBzdGlsbCBjb250YWlucyB0aGUgdmFsdWUgdGhhdCB3YXMNCiAJO3NldCBiZWZvcmUgdGhpcyBsb29wIHdhcyBlbnRlcmVkLiAqLw0KLQlDTVAJIzEwSCwgUjEJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMyMEgsIFIyCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMzBILCBSMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzQwSCwgUjQJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM1MEgsIFI1CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNjBILCBSNgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzcwSCwgUjcJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM4MEgsIFI4CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjOTBILCBSOQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEwMEgsIFIxMAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzExMEgsIFIxMQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEyMEgsIFIxMgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzEzMEgsIFIxMwkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE0MEgsIFIxNAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzE1MEgsIFIxNQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KKwlDTVAJIzEwSCwgUjENCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMyMEgsIFIyDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMzBILCBSMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzQwSCwgUjQNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM1MEgsIFI1DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNjBILCBSNg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzcwSCwgUjcNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM4MEgsIFI4DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjOTBILCBSOQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEwMEgsIFIxMA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzExMEgsIFIxMQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEyMEgsIFIxMg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzEzMEgsIFIxMw0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE0MEgsIFIxNA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzE1MEgsIFIxNQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KIA0KIAk7LyogQWxsIGNvbXBhcmlzb25zIHBhc3NlZCwgc3RhcnQgYSBuZXcgaXR0ZXJhdGlvIG9mIHRoaXMgbG9vcC4gKi8NCi0JQlJBCVRlc3RMb29wMgkJCQkJDQotCQ0KLVJlZ1Rlc3QyRXJyb3I6CQkJCQkJCQ0KKwlCUkEJVGVzdExvb3AyDQorDQorUmVnVGVzdDJFcnJvcjoNCiAJOy8qIEEgY29tcGFyZSBmYWlsZWQsIGp1c3QgbG9vcCBoZXJlIHNvIHRoZSBsb29wIGNvdW50ZXIgc3RvcHMgaW5jcmVtZW50aW5nDQogCTstIGNhdXNpbmcgdGhlIGNoZWNrIHRhc2sgdG8gaW5kaWNhdGUgdGhlIGVycm9yLiAqLw0KLQlCUkEgUmVnVGVzdDJFcnJvcgkJCQkJDQorCUJSQSBSZWdUZXN0MkVycm9yDQogDQotCQ0KKw0KIAkuRU5EDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW4uYwppbmRleCA0YmQxMjBkLi4yNTEzNjUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fYmxpbmt5LmMKaW5kZXggZjY5NTQzYS4uMjQyMTE5MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfR0NDX2Uyc3R1ZGlvL3NyYy9tYWluX2Z1bGwuYwppbmRleCBhMGVmZTkwLi45MWM4ZjI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19HQ0NfZTJzdHVkaW8vc3JjL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX0dDQ19lMnN0dWRpby9zcmMvbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggZTIyZjZkZS4uM2FiMjFjNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuYwppbmRleCBlNjBiNWU3Li5kYmJhMGRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlg2NE0gc3BlY2lmaWMgcGFydHMgb2YNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmggYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggODA3YjE4Yy4uODNkNWQ4NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL0ludFF1ZXVlVGltZXIuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBJTlRfUVVFVUVfVElNRVJfSA0KICNkZWZpbmUgSU5UX1FVRVVFX1RJTUVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9QYXJUZXN0LmMKaW5kZXggY2JiMjg1OC4uM2EyZDQyMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFNpbXBsZSBJTyByb3V0aW5lcyB0byBjb250cm9sIHRoZSBMRURzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL1JlZ1Rlc3Quc3JjIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUmVnVGVzdC5zcmMKaW5kZXggNDA2OTcyNS4uNTMxMzUyMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUmVnVGVzdC5zcmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvUmVnVGVzdC5zcmMKQEAgLTEsNjcgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi07ICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotOyAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4hIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KLTsgICAgPj4hIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotOyAgICA+PiEgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICA+PiEga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLjsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5HTEIgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5HTEIgX3ZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpAQCAtOTcsNyArNjAsNyBAQAogCU1PVi5MCSMxMywgUjEzDQogCU1PVi5MCSMxNCwgUjE0DQogCU1PVi5MCSMxNSwgUjE1DQotCQ0KKw0KIAk7LyogUHV0IGEga25vd24gdmFsdWUgaW4gdGhlIGhpIGFuZCBsb3cgb2YgdGhlIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZUQUNISSBSMSwgQTANCiAJTVZUQUNMTyBSMiwgQTANCkBAIC0xMDYsMjQgKzY5LDI0IEBACiANCiAJOy8qIExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCiAJO2V4cGVjdGVkIHZhbHVlLiAqLw0KLVRlc3RMb29wMToJCQkJCQkJCQ0KK1Rlc3RMb29wMToNCiANCiAJOy8qIFB1c2ggdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBnb2luZyB0byBnZXQgY2xvYmJlcmVkLiAqLw0KLQlQVVNITQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQVVNITQlSMTQtUjE1DQorDQogCTsvKiBJbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciB0byBzaG93IHRoaXMgdGFzayBpcyBzdGlsbCBnZXR0aW5nIENQVSB0aW1lLiAqLw0KIAlNT1YuTAkjX3VsUmVnVGVzdDFMb29wQ291bnRlciwgUjE0DQogCU1PVi5MCVsgUjE0IF0sIFIxNQ0KLQlBREQJIzEsIFIxNQkJCQkJCQ0KKwlBREQJIzEsIFIxNQ0KIAlNT1YuTAlSMTUsIFsgUjE0IF0NCi0JDQorDQogCTsvKiBZaWVsZCB0byBleHRlbmQgdGhlIHRleHQgY292ZXJhZ2UuICBTZXQgdGhlIGJpdCBpbiB0aGUgSVRVIFNXSU5UUiByZWdpc3Rlci4gKi8NCiAJTU9WLkwJIzEsIFIxNA0KIAlNT1YuTCAJIzA4NzJFMEgsIFIxNQ0KIAlNT1YuQglSMTQsIFtSMTVdDQotCU5PUAkJCQkJCQkJDQotCU5PUAkJCQkJCQkJDQotCQ0KKwlOT1ANCisJTk9QDQorDQogCTsvKiBDaGVjayBhY2N1bXVsYXRvcnMuICovDQogCU1WRkFDSEkJIzAsIEEwLCBSMTUNCiAJQ01QICMxLCBSMTUNCkBAIC0xNDUsNDggKzEwOCw0OCBAQAogCUJORSBSZWdUZXN0MUVycm9yDQogDQogCTsvKiBSZXN0b3JlIHRoZSBjbG9iYmVyZWQgcmVnaXN0ZXJzLiAqLw0KLQlQT1BNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBPUE0JUjE0LVIxNQ0KKw0KIAk7LyogTm93IGNvbXBhcmUgZWFjaCByZWdpc3RlciB0byBlbnN1cmUgaXQgc3RpbGwgY29udGFpbnMgdGhlIHZhbHVlIHRoYXQgd2FzDQogCTtzZXQgYmVmb3JlIHRoaXMgbG9vcCB3YXMgZW50ZXJlZC4gKi8NCi0JQ01QCSMxLCBSMQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMyLCBSMgkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMzLCBSMwkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM0LCBSNAkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM1LCBSNQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM2LCBSNgkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM3LCBSNwkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM4LCBSOAkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM5LCBSOQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMCwgUjEwCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTEsIFIxMQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEyLCBSMTIJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMywgUjEzCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTQsIFIxNAkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzE1LCBSMTUJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCisJQ01QCSMxLCBSMQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzIsIFIyDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMywgUjMNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM0LCBSNA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzUsIFI1DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNiwgUjYNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM3LCBSNw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzgsIFI4DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjOSwgUjkNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMCwgUjEwDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTEsIFIxMQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEyLCBSMTINCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMywgUjEzDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTQsIFIxNA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzE1LCBSMTUNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIEFsbCBjb21wYXJpc29ucyBwYXNzZWQsIHN0YXJ0IGEgbmV3IGl0dGVyYXRpbyBvZiB0aGlzIGxvb3AuICovDQotCUJSQQkJVGVzdExvb3AxCQkJCQ0KLQkNCi1SZWdUZXN0MUVycm9yOgkJCQkJCQkNCisJQlJBCQlUZXN0TG9vcDENCisNCitSZWdUZXN0MUVycm9yOg0KIAk7LyogQSBjb21wYXJlIGZhaWxlZCwganVzdCBsb29wIGhlcmUgc28gdGhlIGxvb3AgY291bnRlciBzdG9wcyBpbmNyZW1lbnRpbmcNCiAJOy0gY2F1c2luZyB0aGUgY2hlY2sgdGFzayB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuICovDQotCUJSQSBSZWdUZXN0MUVycm9yCQkJCQkNCisJQlJBIFJlZ1Rlc3QxRXJyb3INCiA7LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogOy8qIFRoaXMgZnVuY3Rpb24gaXMgZXhwbGFpbmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIG1haW4uYy4gKi8NCkBAIC0yMjMsMTcgKzE4NiwxNyBAQAogDQogCTsvKiBMb29wLCBjaGVja2luZyBlYWNoIGl0ZXJhdGlvbiB0aGF0IGVhY2ggcmVnaXN0ZXIgc3RpbGwgY29udGFpbnMgdGhlDQogCTtleHBlY3RlZCB2YWx1ZS4gKi8NCi1UZXN0TG9vcDI6CQkJCQkJCQkNCitUZXN0TG9vcDI6DQogDQogCTsvKiBQdXNoIHRoZSByZWdpc3RlcnMgdGhhdCBhcmUgZ29pbmcgdG8gZ2V0IGNsb2JiZXJlZC4gKi8NCi0JUFVTSE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUFVTSE0JUjE0LVIxNQ0KKw0KIAk7LyogSW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIgdG8gc2hvdyB0aGlzIHRhc2sgaXMgc3RpbGwgZ2V0dGluZyBDUFUgdGltZS4gKi8NCiAJTU9WLkwJI191bFJlZ1Rlc3QyTG9vcENvdW50ZXIsIFIxNA0KIAlNT1YuTAlbIFIxNCBdLCBSMTUNCi0JQURECSMxLCBSMTUJCQkJCQkNCisJQURECSMxLCBSMTUNCiAJTU9WLkwJUjE1LCBbIFIxNCBdDQotCQ0KKw0KIAk7LyogQ2hlY2sgYWNjdW11bGF0b3JzLiAqLw0KIAlNVkZBQ0hJCSMwLCBBMCwgUjE1DQogCUNNUCAjMTBILCBSMTUNCkBAIC0yNTUsNDggKzIxOCw0OCBAQAogCUJORSBSZWdUZXN0MUVycm9yDQogDQogCTsvKiBSZXN0b3JlIHRoZSBjbG9iYmVyZWQgcmVnaXN0ZXJzLiAqLw0KLQlQT1BNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBPUE0JUjE0LVIxNQ0KKw0KIAk7LyogTm93IGNvbXBhcmUgZWFjaCByZWdpc3RlciB0byBlbnN1cmUgaXQgc3RpbGwgY29udGFpbnMgdGhlIHZhbHVlIHRoYXQgd2FzDQogCTtzZXQgYmVmb3JlIHRoaXMgbG9vcCB3YXMgZW50ZXJlZC4gKi8NCi0JQ01QCSMxMEgsIFIxCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMjBILCBSMgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzMwSCwgUjMJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM0MEgsIFI0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNTBILCBSNQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzYwSCwgUjYJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM3MEgsIFI3CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjODBILCBSOAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzkwSCwgUjkJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMDBILCBSMTAJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMTBILCBSMTEJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMjBILCBSMTIJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMzBILCBSMTMJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxNDBILCBSMTQJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxNTBILCBSMTUJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCisJQ01QCSMxMEgsIFIxDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMjBILCBSMg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzMwSCwgUjMNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM0MEgsIFI0DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNTBILCBSNQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzYwSCwgUjYNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM3MEgsIFI3DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjODBILCBSOA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzkwSCwgUjkNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMDBILCBSMTANCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMTBILCBSMTENCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMjBILCBSMTINCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMzBILCBSMTMNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxNDBILCBSMTQNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxNTBILCBSMTUNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCiANCiAJOy8qIEFsbCBjb21wYXJpc29ucyBwYXNzZWQsIHN0YXJ0IGEgbmV3IGl0dGVyYXRpbyBvZiB0aGlzIGxvb3AuICovDQotCUJSQQlUZXN0TG9vcDIJCQkJCQ0KLQkNCi1SZWdUZXN0MkVycm9yOgkJCQkJCQkNCisJQlJBCVRlc3RMb29wMg0KKw0KK1JlZ1Rlc3QyRXJyb3I6DQogCTsvKiBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7LSBjYXVzaW5nIHRoZSBjaGVjayB0YXNrIHRvIGluZGljYXRlIHRoZSBlcnJvci4gKi8NCi0JQlJBIFJlZ1Rlc3QyRXJyb3IJCQkJCQ0KKwlCUkEgUmVnVGVzdDJFcnJvcg0KIA0KLQkNCisNCiAJLkVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW4uYwppbmRleCAzODBiZTM4Li41ZTE1YTZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9tYWluX2JsaW5reS5jCmluZGV4IGY2OTU0M2EuLjI0MjExOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDYwMF9SWDY0TV9SU0tfUmVuZXNhc19lMnN0dWRpby9Tb3VyY2UvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNjAwX1JYNjRNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL1NvdXJjZS9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fZnVsbC5jCmluZGV4IDkzNzQxODQuLjc5MDY1YmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg2MDBfUlg2NE1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vU291cmNlL21haW5fZnVsbC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCmluZGV4IGYxOTgxYzQuLjY0OTAyODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnJlZVJUT1NDb25maWcuaAppbmRleCBjOWI1NTRiLi4xNDEwMzk5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKaW5kZXggNGU1ZDhlOS4uNThiNDJiOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbm9uLXBvcnRhYmxlIGFuZCB0aGVyZWZvcmUgUlggc3BlY2lmaWMgcGFydHMgb2YgdGhlDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaCBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKaW5kZXggOGI5NGJhZC4uZWE3NTI3NSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAorKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOVF9RVUVVRV9USU1FUl9IDQogI2RlZmluZSBJTlRfUVVFVUVfVElNRVJfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0dDQy5TIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKaW5kZXggYjkwYzMzOC4uNGViNGQ2NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfR0NDLlMKQEAgLTEsNjcgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaGFzIGJlY29tZSBhIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IGFuZCBzdXBwb3J0IHRoZSBGcmVlUlRPUyAgICAgICAgICoNCi07ICAgICAqICAgIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSAgICAgICAgICAqDQotOyAgICAgKiAgICBtYW51YWwsIG9yIGJvdGggZnJvbTogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgPj4hIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gZGlzdHJpYnV0ZQ0KLTsgICAgPj4hIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0byBwcm92aWRlDQotOyAgICA+PiEgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICA+PiEga2VybmVsLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLTsgICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotOyAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLjsNCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLTsgICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi07ICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLTsgICAgSW50ZWdyaXR5IFN5c3RlbXMgdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5nbG9iYWwgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCS5nbG9iYWwgX3ZSZWdUZXN0MkltcGxlbWVudGF0aW9uDQpAQCAtOTcsNyArNjAsNyBAQAogCU1PVi5MCSMxMywgUjEzDQogCU1PVi5MCSMxNCwgUjE0DQogCU1PVi5MCSMxNSwgUjE1DQotCQ0KKw0KIAk7LyogUHV0IGEga25vd24gdmFsdWUgaW4gdGhlIGhpIGFuZCBsb3cgb2YgdGhlIGFjY3VtdWxhdG9ycy4gKi8NCiAJTVZUQUNISSBSMSwgQTANCiAJTVZUQUNMTyBSMiwgQTANCkBAIC0xMDYsMjQgKzY5LDI0IEBACiANCiAJOy8qIExvb3AsIGNoZWNraW5nIGVhY2ggaXRlcmF0aW9uIHRoYXQgZWFjaCByZWdpc3RlciBzdGlsbCBjb250YWlucyB0aGUNCiAJO2V4cGVjdGVkIHZhbHVlLiAqLw0KLVRlc3RMb29wMToJCQkJCQkJCQ0KK1Rlc3RMb29wMToNCiANCiAJOy8qIFB1c2ggdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBnb2luZyB0byBnZXQgY2xvYmJlcmVkLiAqLw0KLQlQVVNITQlSMTQtUjE1CQkJCQkJDQotCQ0KKwlQVVNITQlSMTQtUjE1DQorDQogCTsvKiBJbmNyZW1lbnQgdGhlIGxvb3AgY291bnRlciB0byBzaG93IHRoaXMgdGFzayBpcyBzdGlsbCBnZXR0aW5nIENQVSB0aW1lLiAqLw0KIAlNT1YuTAkjX3VsUmVnVGVzdDFMb29wQ291bnRlciwgUjE0DQogCU1PVi5MCVsgUjE0IF0sIFIxNQ0KLQlBREQJIzEsIFIxNQkJCQkJCQ0KKwlBREQJIzEsIFIxNQ0KIAlNT1YuTAlSMTUsIFsgUjE0IF0NCi0JDQorDQogCTsvKiBZaWVsZCB0byBleHRlbmQgdGhlIHRleHQgY292ZXJhZ2UuICBTZXQgdGhlIGJpdCBpbiB0aGUgSVRVIFNXSU5UUiByZWdpc3Rlci4gKi8NCiAJTU9WLkwJIzEsIFIxNA0KIAlNT1YuTCAJIzA4NzJFMEgsIFIxNQ0KIAlNT1YuQglSMTQsIFtSMTVdDQotCU5PUAkJCQkJCQkJDQotCU5PUAkJCQkJCQkJDQotCQ0KKwlOT1ANCisJTk9QDQorDQogCTsvKiBDaGVjayBhY2N1bXVsYXRvcnMuICovDQogCU1WRkFDSEkJIzAsIEEwLCBSMTUNCiAJQ01QICMxLCBSMTUNCkBAIC0xNDUsNDggKzEwOCw0OCBAQAogCUJORSBSZWdUZXN0MUVycm9yDQogDQogCTsvKiBSZXN0b3JlIHRoZSBjbG9iYmVyZWQgcmVnaXN0ZXJzLiAqLw0KLQlQT1BNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBPUE0JUjE0LVIxNQ0KKw0KIAk7LyogTm93IGNvbXBhcmUgZWFjaCByZWdpc3RlciB0byBlbnN1cmUgaXQgc3RpbGwgY29udGFpbnMgdGhlIHZhbHVlIHRoYXQgd2FzDQogCTtzZXQgYmVmb3JlIHRoaXMgbG9vcCB3YXMgZW50ZXJlZC4gKi8NCi0JQ01QCSMxLCBSMQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMyLCBSMgkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMzLCBSMwkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM0LCBSNAkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM1LCBSNQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM2LCBSNgkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM3LCBSNwkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM4LCBSOAkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSM5LCBSOQkJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMCwgUjEwCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTEsIFIxMQkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzEyLCBSMTIJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCi0JQ01QCSMxMywgUjEzCQkJCQkNCi0JQk5FCVJlZ1Rlc3QxRXJyb3IJCQkJDQotCUNNUAkjMTQsIFIxNAkJCQkJDQotCUJORQlSZWdUZXN0MUVycm9yCQkJCQ0KLQlDTVAJIzE1LCBSMTUJCQkJCQ0KLQlCTkUJUmVnVGVzdDFFcnJvcgkJCQkNCisJQ01QCSMxLCBSMQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzIsIFIyDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMywgUjMNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM0LCBSNA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzUsIFI1DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjNiwgUjYNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSM3LCBSNw0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzgsIFI4DQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjOSwgUjkNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMCwgUjEwDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTEsIFIxMQ0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzEyLCBSMTINCisJQk5FCVJlZ1Rlc3QxRXJyb3INCisJQ01QCSMxMywgUjEzDQorCUJORQlSZWdUZXN0MUVycm9yDQorCUNNUAkjMTQsIFIxNA0KKwlCTkUJUmVnVGVzdDFFcnJvcg0KKwlDTVAJIzE1LCBSMTUNCisJQk5FCVJlZ1Rlc3QxRXJyb3INCiANCiAJOy8qIEFsbCBjb21wYXJpc29ucyBwYXNzZWQsIHN0YXJ0IGEgbmV3IGl0dGVyYXRpbyBvZiB0aGlzIGxvb3AuICovDQotCUJSQQkJVGVzdExvb3AxCQkJCQ0KLQkNCi1SZWdUZXN0MUVycm9yOgkJCQkJCQkNCisJQlJBCQlUZXN0TG9vcDENCisNCitSZWdUZXN0MUVycm9yOg0KIAk7LyogQSBjb21wYXJlIGZhaWxlZCwganVzdCBsb29wIGhlcmUgc28gdGhlIGxvb3AgY291bnRlciBzdG9wcyBpbmNyZW1lbnRpbmcNCiAJOy0gY2F1c2luZyB0aGUgY2hlY2sgdGFzayB0byBpbmRpY2F0ZSB0aGUgZXJyb3IuICovDQotCUJSQSBSZWdUZXN0MUVycm9yCQkJCQkNCisJQlJBIFJlZ1Rlc3QxRXJyb3INCiA7LyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogOy8qIFRoaXMgZnVuY3Rpb24gaXMgZXhwbGFpbmVkIGluIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIG1haW4uYy4gKi8NCkBAIC0yMjMsMTcgKzE4NiwxNyBAQAogDQogCTsvKiBMb29wLCBjaGVja2luZyBlYWNoIGl0ZXJhdGlvbiB0aGF0IGVhY2ggcmVnaXN0ZXIgc3RpbGwgY29udGFpbnMgdGhlDQogCTtleHBlY3RlZCB2YWx1ZS4gKi8NCi1UZXN0TG9vcDI6CQkJCQkJCQkNCitUZXN0TG9vcDI6DQogDQogCTsvKiBQdXNoIHRoZSByZWdpc3RlcnMgdGhhdCBhcmUgZ29pbmcgdG8gZ2V0IGNsb2JiZXJlZC4gKi8NCi0JUFVTSE0JUjE0LVIxNQkJCQkJCQ0KLQkNCisJUFVTSE0JUjE0LVIxNQ0KKw0KIAk7LyogSW5jcmVtZW50IHRoZSBsb29wIGNvdW50ZXIgdG8gc2hvdyB0aGlzIHRhc2sgaXMgc3RpbGwgZ2V0dGluZyBDUFUgdGltZS4gKi8NCiAJTU9WLkwJI191bFJlZ1Rlc3QyTG9vcENvdW50ZXIsIFIxNA0KIAlNT1YuTAlbIFIxNCBdLCBSMTUNCi0JQURECSMxLCBSMTUJCQkJCQkNCisJQURECSMxLCBSMTUNCiAJTU9WLkwJUjE1LCBbIFIxNCBdDQotCQ0KKw0KIAk7LyogQ2hlY2sgYWNjdW11bGF0b3JzLiAqLw0KIAlNVkZBQ0hJCSMwLCBBMCwgUjE1DQogCUNNUCAjMTBILCBSMTUNCkBAIC0yNTUsNDggKzIxOCw0OCBAQAogCUJORSBSZWdUZXN0MUVycm9yDQogDQogCTsvKiBSZXN0b3JlIHRoZSBjbG9iYmVyZWQgcmVnaXN0ZXJzLiAqLw0KLQlQT1BNCVIxNC1SMTUJCQkJCQkNCi0JDQorCVBPUE0JUjE0LVIxNQ0KKw0KIAk7LyogTm93IGNvbXBhcmUgZWFjaCByZWdpc3RlciB0byBlbnN1cmUgaXQgc3RpbGwgY29udGFpbnMgdGhlIHZhbHVlIHRoYXQgd2FzDQogCTtzZXQgYmVmb3JlIHRoaXMgbG9vcCB3YXMgZW50ZXJlZC4gKi8NCi0JQ01QCSMxMEgsIFIxCQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjMjBILCBSMgkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzMwSCwgUjMJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM0MEgsIFI0CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjNTBILCBSNQkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzYwSCwgUjYJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSM3MEgsIFI3CQkJCQkNCi0JQk5FCVJlZ1Rlc3QyRXJyb3IJCQkJDQotCUNNUAkjODBILCBSOAkJCQkJDQotCUJORQlSZWdUZXN0MkVycm9yCQkJCQ0KLQlDTVAJIzkwSCwgUjkJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMDBILCBSMTAJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMTBILCBSMTEJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMjBILCBSMTIJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxMzBILCBSMTMJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxNDBILCBSMTQJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCi0JQ01QCSMxNTBILCBSMTUJCQkJCQ0KLQlCTkUJUmVnVGVzdDJFcnJvcgkJCQkNCisJQ01QCSMxMEgsIFIxDQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjMjBILCBSMg0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzMwSCwgUjMNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM0MEgsIFI0DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjNTBILCBSNQ0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzYwSCwgUjYNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSM3MEgsIFI3DQorCUJORQlSZWdUZXN0MkVycm9yDQorCUNNUAkjODBILCBSOA0KKwlCTkUJUmVnVGVzdDJFcnJvcg0KKwlDTVAJIzkwSCwgUjkNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMDBILCBSMTANCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMTBILCBSMTENCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMjBILCBSMTINCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxMzBILCBSMTMNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxNDBILCBSMTQNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCisJQ01QCSMxNTBILCBSMTUNCisJQk5FCVJlZ1Rlc3QyRXJyb3INCiANCiAJOy8qIEFsbCBjb21wYXJpc29ucyBwYXNzZWQsIHN0YXJ0IGEgbmV3IGl0dGVyYXRpbyBvZiB0aGlzIGxvb3AuICovDQotCUJSQQlUZXN0TG9vcDIJCQkJCQ0KLQkNCi1SZWdUZXN0MkVycm9yOgkJCQkJCQkNCisJQlJBCVRlc3RMb29wMg0KKw0KK1JlZ1Rlc3QyRXJyb3I6DQogCTsvKiBBIGNvbXBhcmUgZmFpbGVkLCBqdXN0IGxvb3AgaGVyZSBzbyB0aGUgbG9vcCBjb3VudGVyIHN0b3BzIGluY3JlbWVudGluZw0KIAk7LSBjYXVzaW5nIHRoZSBjaGVjayB0YXNrIHRvIGluZGljYXRlIHRoZSBlcnJvci4gKi8NCi0JQlJBIFJlZ1Rlc3QyRXJyb3IJCQkJCQ0KKwlCUkEgUmVnVGVzdDJFcnJvcg0KIA0KLQkNCisNCiAJLkVORA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9SZWdUZXN0X0lBUi5zIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKaW5kZXggYzY0NWMzYi4uODZkNjgwOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL1JlZ1Rlc3RfSUFSLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAlQVUJMSUMgX3ZSZWdUZXN0MUltcGxlbWVudGF0aW9uDQogCVBVQkxJQyBfdlJlZ1Rlc3QySW1wbGVtZW50YXRpb24NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKaW5kZXggYTVjYmVmMi4uYjY5YTdlNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmggYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9Qcmlvcml0eURlZmluaXRpb25zLmgKaW5kZXggMjYyYWE0My4uNjQ5MGU2ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvUHJpb3JpdHlEZWZpbml0aW9ucy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL1ByaW9yaXR5RGVmaW5pdGlvbnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQUklPUklUWV9ERUZJTklUSU9OU19IDQogI2RlZmluZSBQUklPUklUWV9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfR0NDX2Uyc3R1ZGlvX0lBUi9zcmMvbWFpbi5jCmluZGV4IDFmNjlkMjYuLmQ5NjA3YzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX0dDQ19lMnN0dWRpb19JQVIvc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19HQ0NfZTJzdHVkaW9fSUFSL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0JsaW5reV9EZW1vL21haW5fYmxpbmt5LmMKaW5kZXggZjE5ODFjNC4uNjQ5MDI4MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvQmxpbmt5X0RlbW8vbWFpbl9ibGlua3kuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9CbGlua3lfRGVtby9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URSAxOiAgVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDdmZjFmOTkuLjZmMTMzMWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuYwppbmRleCBkNjA4NTFiLi44YjRmZjEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBub24tcG9ydGFibGUgYW5kIHRoZXJlZm9yZSBSWCBzcGVjaWZpYyBwYXJ0cyBvZiB0aGUNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL0ludFF1ZXVlVGltZXIuaAppbmRleCA4Yjk0YmFkLi5lYTc1Mjc1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vSW50UXVldWVUaW1lci5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9JbnRRdWV1ZVRpbWVyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5UX1FVRVVFX1RJTUVSX0gNCiAjZGVmaW5lIElOVF9RVUVVRV9USU1FUl9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvRnVsbF9EZW1vL21haW5fZnVsbC5jCmluZGV4IGU1YzM0Y2IuLmM3MGI3Y2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL0Z1bGxfRGVtby9tYWluX2Z1bGwuYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9GdWxsX0RlbW8vbWFpbl9mdWxsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6ICBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9SWDcwMF9SWDcxTV9SU0tfUmVuZXNhc19lMnN0dWRpby9zcmMvbWFpbi5jCmluZGV4IDVjYTMxYjIuLjgxNTBlOTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vUlg3MDBfUlg3MU1fUlNLX1JlbmVzYXNfZTJzdHVkaW8vc3JjL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1JYNzAwX1JYNzFNX1JTS19SZW5lc2FzX2Uyc3R1ZGlvL3NyYy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggMTFkMTU0MS4uODg1NTQyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiaW9kZWZpbmUuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDU4NmE2OTAuLjM2MmY1ODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogU2ltcGxlIElPIHJvdXRpbmVzIHRvIGNvbnRyb2wgdGhlIExFRHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vZmxvcC5jIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vZmxvcC5jCmluZGV4IDIxN2Y4NzEuLjI1ZjJlYTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL2Zsb3AuYworKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9mbG9wLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBlaWdodCB0YXNrcywgZWFjaCBvZiB3aGljaCBsb29wcyBjb250aW51b3VzbHkgcGVyZm9ybWluZyBhIGZsb2F0aW5nIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL21haW4uYwppbmRleCBkOGFlZTI3Li4xMTdlM2ZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby9yZWd0ZXN0LnNyYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3JlZ3Rlc3Quc3JjCmluZGV4IGVkYzEyMDEuLjkwYTIzZDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3JlZ3Rlc3Quc3JjCisrKyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3JlZ3Rlc3Quc3JjCkBAIC0xLDU1ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuaW1wb3J0IF91bFJlZ1Rlc3QxQ3ljbGVDb3VudA0KIAkuaW1wb3J0IF91bFJlZ1Rlc3QyQ3ljbGVDb3VudA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby91SVBfVGFzay5jCmluZGV4IDc2Mzk0YWYuLmNhOWIxYjggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3VJUF9UYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vdUlQX1Rhc2suYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0cmluZy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQy5jCmluZGV4IDFlYjMyOGQuLmJjYTBmZmMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDLmMKKysrIGIvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGFyZHdhcmUgc3BlY2lmaWMgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgImlvZGVmaW5lLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUNfSVNSLnNyYyBiL0ZyZWVSVE9TL0RlbW8vU3VwZXJIX1NINzIxNl9SZW5lc2FzL1JUT1NEZW1vL3dlYnNlcnZlci9FTUFDX0lTUi5zcmMKaW5kZXggMTYzYzExYi4uNzc1NTNkMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9TdXBlckhfU0g3MjE2X1JlbmVzYXMvUlRPU0RlbW8vd2Vic2VydmVyL0VNQUNfSVNSLnNyYworKysgYi9GcmVlUlRPUy9EZW1vL1N1cGVySF9TSDcyMTZfUmVuZXNhcy9SVE9TRGVtby93ZWJzZXJ2ZXIvRU1BQ19JU1Iuc3JjCkBAIC0xLDU1ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAkuaW1wb3J0IF92RU1BQ19JU1JfSGFuZGxlcg0KIAkuaW1wb3J0IF9weEN1cnJlbnRUQ0INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vRnJlZVJUT1NDb25maWcuaAppbmRleCA2NmU3MjM4Li5iZjk5ODZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vSW50ZXJydXB0TmVzdFRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ludGVycnVwdE5lc3RUZXN0LmMKaW5kZXggMjgwZTUwYS4uYzdmODczOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vSW50ZXJydXB0TmVzdFRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEl0IGlzIGludGVuZGVkIHRoYXQgdGhlIHRhc2tzIGFuZCB0aW1lcnMgaW4gdGhpcyBmaWxlIGNhdXNlIGludGVycnVwdHMgdG8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5oIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vSW50ZXJydXB0TmVzdFRlc3QuaAppbmRleCBhZDJhZTQ1Li4yMWEyN2RmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9JbnRlcnJ1cHROZXN0VGVzdC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL0ludGVycnVwdE5lc3RUZXN0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSU5URVJSVVBUX05FU1RfVEVTVF9IDQogI2RlZmluZSBJTlRFUlJVUFRfTkVTVF9URVNUX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9QYXJUZXN0LmMKaW5kZXggYWRhYTlmMC4uZmUzZTBlMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIEluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL21haW4uYwppbmRleCBhZDc4MmNmLi45YTFlOTliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1RyaUNvcmVfVEMxNzgyX1RyaUJvYXJkX0dDQy9SVE9TRGVtby9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogPj4+Pj4+IE5PVEU6IDw8PDw8PA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vVHJpQ29yZV9UQzE3ODJfVHJpQm9hcmRfR0NDL1JUT1NEZW1vL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMKaW5kZXggMmE1MTA1OC4uMDg0YTczZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9UcmlDb3JlX1RDMTc4Ml9UcmlCb2FyZF9HQ0MvUlRPU0RlbW8vc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEhhcmR3YXJlIHNwZWNpZmljIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDx0YzE3ODIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvRnJlZVJUT1NDb25maWcuaAppbmRleCAzMTgwYWUwLi5jZjBiMDI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvV0lOMzIudmN4cHJvagppbmRleCAxYTBiM2QwLi5iZjViZjAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2oKQEAgLTE4OCw2ICsxODgsNyBAQAogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxldmVudF9ncm91cHMuYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2Vcc3RyZWFtX2J1ZmZlci5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVx0aW1lcnMuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdGF0aWNBbGxvY2F0aW9uLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0ibWFpbi5jIj4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qLmZpbHRlcnMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9XSU4zMi52Y3hwcm9qLmZpbHRlcnMKaW5kZXggM2MzZjlmMy4uZmY0ZDFlNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvV0lOMzIudmN4cHJvai5maWx0ZXJzCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L1dJTjMyLnZjeHByb2ouZmlsdGVycwpAQCAtNDAsNiArNDAsOSBAQAogICAgIDwvQ2xDb21waWxlPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdGF0aWNBbGxvY2F0aW9uLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHN0cmVhbV9idWZmZXIuYyI+DQorICAgICAgPEZpbHRlcj5GcmVlUlRPUyBTb3VyY2VcU291cmNlPC9GaWx0ZXI+DQorICAgIDwvQ2xDb21waWxlPg0KICAgPC9JdGVtR3JvdXA+DQogICA8SXRlbUdyb3VwPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXGNyb3V0aW5lLmgiPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1TdGF0aWMtQWxsb2NhdGlvbi1Pbmx5L21haW4uYwppbmRleCA5M2VhOWRiLi4yOWNmODE3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtU3RhdGljLUFsbG9jYXRpb24tT25seS9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLVN0YXRpYy1BbGxvY2F0aW9uLU9ubHkvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvRnJlZVJUT1NDb25maWcuaAppbmRleCBhMWE1ODI3Li45ODRiNTIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2FwcHMvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci5jCmluZGV4IDBiMjMxNWMuLjIyYTk3ZGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9hcHBzL0Jhc2ljU29ja2V0Q29tbWFuZFNlcnZlci9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIuYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvYXBwcy9CYXNpY1NvY2tldENvbW1hbmRTZXJ2ZXIvQmFzaWNTb2NrZXRDb21tYW5kU2VydmVyLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAic3RkbGliLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5jCmluZGV4IGNiYmQzNGIuLjhmM2ZiMGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9sd0lQX0FwcHMuYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvbHdJUF9BcHBzLmMKQEAgLTEsNzYgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY3LjQuMCAtIENvcHlyaWdodCAoQykgMjAxMyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0NCi0gICAgRkVBVFVSRVMgQU5EIFBPUlRTIEFSRSBBRERFRCBUTyBGUkVFUlRPUyBBTEwgVEhFIFRJTUUuICBQTEVBU0UgVklTSVQNCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgPj4+Pj4+Tk9URTw8PDw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotICAgIGtlcm5lbC4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZQ0KLSAgICBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KLSAgICBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdGNhbiBiZQ0KLSAgICB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQgYnkNCi0gICAgd3JpdGluZyB0byBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4sIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlDQotICAgIG9uIHRoZSBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZyB0aGUgRkFRICJNeSBhcHBsaWNhdGlvbiBkb2VzICAgKg0KLSAgICAgKiAgICBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBib29rcywgdHJhaW5pbmcsIGxhdGVzdCB2ZXJzaW9ucywNCi0gICAgbGljZW5zZSBhbmQgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYW5kIG91ciBuZXcNCi0gICAgZnVsbHkgdGhyZWFkIGF3YXJlIGFuZCByZWVudHJhbnQgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcywgd2hvIHNlbGwgdGhlIGNvZGUgd2l0aCBjb21tZXJjaWFsIHN1cHBvcnQsDQotICAgIGluZGVtbmlmaWNhdGlvbiBhbmQgbWlkZGxld2FyZSwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9sd0lQX0FwcHMuaCBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL2x3SVBfQXBwcy9sd0lQX0FwcHMuaAppbmRleCAzZDNhZjMzLi4yMWEwMmU1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9sd0lQX0FwcHMvbHdJUF9BcHBzLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbHdJUF9BcHBzL2x3SVBfQXBwcy5oCkBAIC0xLDg0ICsxLDM4IEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCisjaWZuZGVmIExXSVBfQVBQU19IDQorI2RlZmluZSBMV0lQX0FQUFNfSA0KIA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0gICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0gICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0gICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi0gICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0gICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0gICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi0gICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorLyogRnVuY3Rpb25zIHVzZWQgdG8gb2J0YWluIGFuZCByZWxlYXNlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIFR4IGJ1ZmZlci4gIFRoZQ0KK0dldCBmdW5jdGlvbiB3aWxsIGJsb2NrIGlmIHRoZSBUeCBidWZmZXIgaXMgbm90IGF2YWlsYWJsZSAtIHVzZSB3aXRoIGNhcmUhICovDQorc2lnbmVkIGNoYXIgKnBjTHdpcEFwcHNCbG9ja2luZ0dldFR4QnVmZmVyKCB2b2lkICk7DQordm9pZCB2THdpcEFwcHNSZWxlYXNlVHhCdWZmZXIoIHZvaWQgKTsNCiANCisjZW5kaWYgLyogTFdJUF9BUFBTX0ggKi8NCiANCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICA+Pj4+Pj5OT1RFPDw8PDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlDQotICAgIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQotICAgIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0Y2FuIGJlDQotICAgIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZCBieQ0KLSAgICB3cml0aW5nIHRvIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUNCi0gICAgb24gdGhlIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nIHRoZSBGQVEgIk15IGFwcGxpY2F0aW9uIGRvZXMgICAqDQotICAgICAqICAgIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGJvb2tzLCB0cmFpbmluZywgbGF0ZXN0IHZlcnNpb25zLA0KLSAgICBsaWNlbnNlIGFuZCBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhbmQgb3VyIG5ldw0KLSAgICBmdWxseSB0aHJlYWQgYXdhcmUgYW5kIHJlZW50cmFudCBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQgbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zLCB3aG8gc2VsbCB0aGUgY29kZSB3aXRoIGNvbW1lcmNpYWwgc3VwcG9ydCwNCi0gICAgaW5kZW1uaWZpY2F0aW9uIGFuZCBtaWRkbGV3YXJlLCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0qLw0KLQ0KLSNpZm5kZWYgTFdJUF9BUFBTX0gKLSNkZWZpbmUgTFdJUF9BUFBTX0gKLQotLyogRnVuY3Rpb25zIHVzZWQgdG8gb2J0YWluIGFuZCByZWxlYXNlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIFR4IGJ1ZmZlci4gIFRoZQotR2V0IGZ1bmN0aW9uIHdpbGwgYmxvY2sgaWYgdGhlIFR4IGJ1ZmZlciBpcyBub3QgYXZhaWxhYmxlIC0gdXNlIHdpdGggY2FyZSEgKi8KLXNpZ25lZCBjaGFyICpwY0x3aXBBcHBzQmxvY2tpbmdHZXRUeEJ1ZmZlciggdm9pZCApOwotdm9pZCB2THdpcEFwcHNSZWxlYXNlVHhCdWZmZXIoIHZvaWQgKTsKLQotI2VuZGlmIC8qIExXSVBfQVBQU19IICovCi0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy1sd0lQL21haW4uYwppbmRleCA3ZWY3Y2Y4Li5iYTM2OTgzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMtbHdJUC9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLWx3SVAvbWFpbi5jCkBAIC0xLDc2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWNy40LjAgLSBDb3B5cmlnaHQgKEMpIDIwMTMgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotDQotICAgIEZFQVRVUkVTIEFORCBQT1JUUyBBUkUgQURERUQgVE8gRlJFRVJUT1MgQUxMIFRIRSBUSU1FLiAgUExFQVNFIFZJU0lUDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgID4+Pj4+Pk5PVEU8PDw8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUNCi0gICAgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXRjYW4gYmUNCi0gICAgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkIGJ5DQotICAgIHdyaXRpbmcgdG8gUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuLCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZQ0KLSAgICBvbiB0aGUgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcgdGhlIEZBUSAiTXkgYXBwbGljYXRpb24gZG9lcyAgICoNCi0gICAgICogICAgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgYm9va3MsIHRyYWluaW5nLCBsYXRlc3QgdmVyc2lvbnMsDQotICAgIGxpY2Vuc2UgYW5kIFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLiBjb250YWN0IGRldGFpbHMuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGFuZCBvdXIgbmV3DQotICAgIGZ1bGx5IHRocmVhZCBhd2FyZSBhbmQgcmVlbnRyYW50IFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZCBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMsIHdobyBzZWxsIHRoZSBjb2RlIHdpdGggY29tbWVyY2lhbCBzdXBwb3J0LA0KLSAgICBpbmRlbW5pZmljYXRpb24gYW5kIG1pZGRsZXdhcmUsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy8udnMvV0lOMzIvdjE0Ly5zdW8gYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvLnZzL1dJTjMyL3YxNC8uc3VvCmluZGV4IDdmNGQ5MDEuLmUyOGM4ODkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy8udnMvV0lOMzIvdjE0Ly5zdW8KKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDLy52cy9XSU4zMi92MTQvLnN1bwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGYwNWJkMzEuLjIzNTY5Y2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQpAQCAtODgsOCArNDcsOCBAQAogI2RlZmluZSBjb25maWdVU0VfVElDS19IT09LCQkJCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFX0RBRU1PTl9UQVNLX1NUQVJUVVBfSE9PSwkJMQ0KICNkZWZpbmUgY29uZmlnVElDS19SQVRFX0haCQkJCQkJKCAxMDAwICkgLyogSW4gdGhpcyBub24tcmVhbCB0aW1lIHNpbXVsYXRlZCBlbnZpcm9ubWVudCB0aGUgdGljayBmcmVxdWVuY3kgaGFzIHRvIGJlIGF0IGxlYXN0IGEgbXVsdGlwbGUgb2YgdGhlIFdpbjMyIHRpY2sgZnJlcXVlbmN5LCBhbmQgdGhlcmVmb3JlIHZlcnkgc2xvdy4gKi8NCi0jZGVmaW5lIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRQkJCQkoICggdW5zaWduZWQgc2hvcnQgKSA1MCApIC8qIEluIHRoaXMgc2ltdWxhdGVkIGNhc2UsIHRoZSBzdGFjayBvbmx5IGhhcyB0byBob2xkIG9uZSBzbWFsbCBzdHJ1Y3R1cmUgYXMgdGhlIHJlYWwgc3RhY2sgaXMgcGFydCBvZiB0aGUgd2luMzIgdGhyZWFkLiAqLw0KLSNkZWZpbmUgY29uZmlnVE9UQUxfSEVBUF9TSVpFCQkJCQkoICggc2l6ZV90ICkgKCAzMCAqIDEwMjQgKSApDQorI2RlZmluZSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUJCQkJKCAoIHVuc2lnbmVkIHNob3J0ICkgNzAgKSAvKiBJbiB0aGlzIHNpbXVsYXRlZCBjYXNlLCB0aGUgc3RhY2sgb25seSBoYXMgdG8gaG9sZCBvbmUgc21hbGwgc3RydWN0dXJlIGFzIHRoZSByZWFsIHN0YWNrIGlzIHBhcnQgb2YgdGhlIHdpbjMyIHRocmVhZC4gKi8NCisjZGVmaW5lIGNvbmZpZ1RPVEFMX0hFQVBfU0laRQkJCQkJKCAoIHNpemVfdCApICggNDUgKiAxMDI0ICkgKQ0KICNkZWZpbmUgY29uZmlnTUFYX1RBU0tfTkFNRV9MRU4JCQkJCSggMTIgKQ0KICNkZWZpbmUgY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZCQkJCTENCiAjZGVmaW5lIGNvbmZpZ1VTRV8xNl9CSVRfVElDS1MJCQkJCTANCkBAIC0xNTYsNiArMTE1LDEyIEBACiBleHRlcm4gdm9pZCB2QXNzZXJ0Q2FsbGVkKCB1bnNpZ25lZCBsb25nIHVsTGluZSwgY29uc3QgY2hhciAqIGNvbnN0IHBjRmlsZU5hbWUgKTsNCiAjZGVmaW5lIGNvbmZpZ0FTU0VSVCggeCApIGlmKCAoIHggKSA9PSAwICkgdkFzc2VydENhbGxlZCggX19MSU5FX18sIF9fRklMRV9fICkNCiANCisjZGVmaW5lIGNvbmZpZ0lOQ0xVREVfTUVTU0FHRV9CVUZGRVJfQU1QX0RFTU8JMA0KKyNpZiAoIGNvbmZpZ0lOQ0xVREVfTUVTU0FHRV9CVUZGRVJfQU1QX0RFTU8gPT0gMSApDQorCWV4dGVybiB2b2lkIHZHZW5lcmF0ZUNvcmVCSW50ZXJydXB0KCB2b2lkICogeFVwZGF0ZWRNZXNzYWdlQnVmZmVyICk7DQorCSNkZWZpbmUgc2JTRU5EX0NPTVBMRVRFRCggcHhTdHJlYW1CdWZmZXIgKSB2R2VuZXJhdGVDb3JlQkludGVycnVwdCggcHhTdHJlYW1CdWZmZXIgKQ0KKyNlbmRpZiAvKiBjb25maWdJTkNMVURFX01FU1NBR0VfQlVGRkVSX0FNUF9ERU1PICovDQorDQogLyogSW5jbHVkZSB0aGUgRnJlZVJUT1MrVHJhY2UgRnJlZVJUT1MgdHJhY2UgbWFjcm8gZGVmaW5pdGlvbnMuICovDQogI2luY2x1ZGUgInRyY1JlY29yZGVyLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwppbmRleCBjMjgxNWNhLi4yNDNiNDU2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBVdGlsaXR5IGZ1bmN0aW9ucyByZXF1aXJlZCB0byBnYXRoZXIgcnVuIHRpbWUgc3RhdGlzdGljcy4gIFNlZToNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvV0lOMzIudmN4cHJvaiBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qCmluZGV4IGZmOWJiMjAuLjg3YzAzNGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qCkBAIC00OCwxMSArNDgsMTIgQEAKICAgICAgIDxBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb24+LlxEZWJ1Zy88L0Fzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj4NCiAgICAgICA8T2JqZWN0RmlsZU5hbWU+LlxEZWJ1Zy88L09iamVjdEZpbGVOYW1lPg0KICAgICAgIDxQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT4uXERlYnVnLzwvUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU+DQotICAgICAgPFdhcm5pbmdMZXZlbD5MZXZlbDQ8L1dhcm5pbmdMZXZlbD4NCisgICAgICA8V2FybmluZ0xldmVsPkVuYWJsZUFsbFdhcm5pbmdzPC9XYXJuaW5nTGV2ZWw+DQogICAgICAgPFN1cHByZXNzU3RhcnR1cEJhbm5lcj50cnVlPC9TdXBwcmVzc1N0YXJ0dXBCYW5uZXI+DQogICAgICAgPERlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+RWRpdEFuZENvbnRpbnVlPC9EZWJ1Z0luZm9ybWF0aW9uRm9ybWF0Pg0KICAgICAgIDxEaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zPmZhbHNlPC9EaXNhYmxlTGFuZ3VhZ2VFeHRlbnNpb25zPg0KLSAgICAgIDxBZGRpdGlvbmFsT3B0aW9ucz4vd2Q0MjEwICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgICA8QWRkaXRpb25hbE9wdGlvbnM+L3dkNDIxMCAvd2M0NTc0ICUoQWRkaXRpb25hbE9wdGlvbnMpPC9BZGRpdGlvbmFsT3B0aW9ucz4NCisgICAgICA8RGlzYWJsZVNwZWNpZmljV2FybmluZ3M+NDU3NDs0ODIwOzQ2Njg7NDI1NTs0NzEwOyUoRGlzYWJsZVNwZWNpZmljV2FybmluZ3MpPC9EaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz4NCiAgICAgPC9DbENvbXBpbGU+DQogICAgIDxSZXNvdXJjZUNvbXBpbGU+DQogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9ERUJVRzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+DQpAQCAtNzksNiArODAsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGNyb3V0aW5lLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGV2ZW50X2dyb3Vwcy5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxwb3J0YWJsZVxNZW1NYW5nXGhlYXBfNS5jIiAvPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXHRpbWVycy5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXEFib3J0RGVsYXkuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxCbG9ja1EuYyIgLz4NCkBAIC05MSw2ICs5Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxHZW5RVGVzdC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXGludGVnZXIuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxJbnRTZW1UZXN0LmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcTWVzc2FnZUJ1ZmZlckFNUC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXFBvbGxRLmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcUVBlZWsuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxRdWV1ZU92ZXJ3cml0ZS5jIiAvPg0KQEAgLTk5LDYgKzEwMiw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxyZWNtdXRleC5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXHNlbXRlc3QuYyIgLz4NCiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdGF0aWNBbGxvY2F0aW9uLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcTWVzc2FnZUJ1ZmZlckRlbW8uYyIgLz4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxTdHJlYW1CdWZmZXJEZW1vLmMiIC8+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcU3RyZWFtQnVmZmVySW50ZXJydXB0LmMiIC8+DQogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcVGFza05vdGlmeS5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXENvbW1vblxNaW5pbWFsXHRpbWVyZGVtby5jIiAvPg0KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Im1haW4uYyI+DQpAQCAtMTI3LDYgKzEzMyw4IEBACiAgIDwvSXRlbUdyb3VwPg0KICAgPEl0ZW1Hcm91cD4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVxldmVudF9ncm91cHMuaCIgLz4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVxtZXNzYWdlX2J1ZmZlci5oIiAvPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXHN0cmVhbV9idWZmZXIuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVx0aW1lcnMuaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VccG9ydGFibGVcTVNWQy1NaW5nV1xwb3J0bWFjcm8uaCIgLz4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmVlUlRPU0NvbmZpZy5oIiAvPg0KQEAgLTE0MCw2ICsxNDgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cLi5cU291cmNlXGluY2x1ZGVcdGFzay5oIiAvPg0KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IlRyYWNlX1JlY29yZGVyX0NvbmZpZ3VyYXRpb25cdHJjQ29uZmlnLmgiIC8+DQogICA8L0l0ZW1Hcm91cD4NCisgIDxJdGVtR3JvdXA+DQorICAgIDxOb25lIEluY2x1ZGU9InBhY2thZ2VzLmNvbmZpZyIgLz4NCisgIDwvSXRlbUdyb3VwPg0KICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4NCiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+DQogICA8L0ltcG9ydEdyb3VwPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qLmZpbHRlcnMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvV0lOMzIudmN4cHJvai5maWx0ZXJzCmluZGV4IGQ3M2MyMGUuLmFlNDNlYTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9XSU4zMi52Y3hwcm9qLmZpbHRlcnMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL1dJTjMyLnZjeHByb2ouZmlsdGVycwpAQCAtMTQ1LDYgKzE0NSwyMSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cLi5cLi5cRnJlZVJUT1MtUGx1c1xTb3VyY2VcRnJlZVJUT1MtUGx1cy1UcmFjZVx0cmNTbmFwc2hvdFJlY29yZGVyLmMiPg0KICAgICAgIDxGaWx0ZXI+RGVtbyBBcHAgU291cmNlXEZyZWVSVE9TK1RyYWNlIFJlY29yZGVyPC9GaWx0ZXI+DQogICAgIDwvQ2xDb21waWxlPg0KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxzdHJlYW1fYnVmZmVyLmMiPg0KKyAgICAgIDxGaWx0ZXI+RnJlZVJUT1MgU291cmNlXFNvdXJjZTwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxNZXNzYWdlQnVmZmVyRGVtby5jIj4NCisgICAgICA8RmlsdGVyPkRlbW8gQXBwIFNvdXJjZVxGdWxsX0RlbW9cQ29tbW9uIERlbW8gVGFza3M8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcU3RyZWFtQnVmZmVyRGVtby5jIj4NCisgICAgICA8RmlsdGVyPkRlbW8gQXBwIFNvdXJjZVxGdWxsX0RlbW9cQ29tbW9uIERlbW8gVGFza3M8L0ZpbHRlcj4NCisgICAgPC9DbENvbXBpbGU+DQorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cQ29tbW9uXE1pbmltYWxcU3RyZWFtQnVmZmVySW50ZXJydXB0LmMiPg0KKyAgICAgIDxGaWx0ZXI+RGVtbyBBcHAgU291cmNlXEZ1bGxfRGVtb1xDb21tb24gRGVtbyBUYXNrczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxDb21tb25cTWluaW1hbFxNZXNzYWdlQnVmZmVyQU1QLmMiPg0KKyAgICAgIDxGaWx0ZXI+RGVtbyBBcHAgU291cmNlXEZ1bGxfRGVtb1xDb21tb24gRGVtbyBUYXNrczwvRmlsdGVyPg0KKyAgICA8L0NsQ29tcGlsZT4NCiAgIDwvSXRlbUdyb3VwPg0KICAgPEl0ZW1Hcm91cD4NCiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSJGcmVlUlRPU0NvbmZpZy5oIj4NCkBAIC0xODYsNSArMjAxLDE0IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVxldmVudF9ncm91cHMuaCI+DQogICAgICAgPEZpbHRlcj5GcmVlUlRPUyBTb3VyY2VcSW5jbHVkZTwvRmlsdGVyPg0KICAgICA8L0NsSW5jbHVkZT4NCisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlwuLlxTb3VyY2VcaW5jbHVkZVxtZXNzYWdlX2J1ZmZlci5oIj4NCisgICAgICA8RmlsdGVyPkZyZWVSVE9TIFNvdXJjZVxJbmNsdWRlPC9GaWx0ZXI+DQorICAgIDwvQ2xJbmNsdWRlPg0KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXC4uXFNvdXJjZVxpbmNsdWRlXHN0cmVhbV9idWZmZXIuaCI+DQorICAgICAgPEZpbHRlcj5GcmVlUlRPUyBTb3VyY2VcSW5jbHVkZTwvRmlsdGVyPg0KKyAgICA8L0NsSW5jbHVkZT4NCisgIDwvSXRlbUdyb3VwPg0KKyAgPEl0ZW1Hcm91cD4NCisgICAgPE5vbmUgSW5jbHVkZT0icGFja2FnZXMuY29uZmlnIiAvPg0KICAgPC9JdGVtR3JvdXA+DQogPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvbWFpbi5jCmluZGV4IGY0MmNmYjMuLmI5MDU0ODcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUgcHJvamVjdCwNCkBAIC04Niw4ICs0NSw3IEBACiAgKiBwb3J0IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uOg0KICAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL0ZyZWVSVE9TLVdpbmRvd3MtU2ltdWxhdG9yLUVtdWxhdG9yLWZvci1WaXN1YWwtU3R1ZGlvLWFuZC1FY2xpcHNlLU1pbmdXLmh0bWwNCiAgKg0KLSAqIFRoaXMgZGVtbyB3YXMgY3JlYXRlZCB1c2luZyBXaW5kb3dzIFhQIG9uIGEgZHVhbCBjb3JlIGxhcHRvcCwgYW5kIGhhcyBzaW5jZQ0KLSAqIGJlZW4gbWFpbnRhaW5lZCB1c2luZyBXaW5kb3dzIDcgb24gYSBxdWFkIGNvcmUgbGFwdG9wLg0KKw0KICAqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKi8NCkBAIC0xMTEsMTYgKzY5LDE2IEBACiBJZiBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZIGlzIG5vdCAxIHRoZW4gdGhlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQNCiBkZW1vIGFwcGxpY2F0aW9uIHdpbGwgYmUgYnVpbHQuICBUaGUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uIGlzDQogaW1wbGVtZW50ZWQgYW5kIGRlc2NyaWJlZCBpbiBtYWluX2Z1bGwuYy4gKi8NCi0jZGVmaW5lIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkJMQ0KKyNkZWZpbmUgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWQkwDQogDQogLyogVGhpcyBkZW1vIHVzZXMgaGVhcF81LmMsIGFuZCB0aGVzZSBjb25zdGFudHMgZGVmaW5lIHRoZSBzaXplcyBvZiB0aGUgcmVnaW9ucw0KIHRoYXQgbWFrZSB1cCB0aGUgdG90YWwgaGVhcC4gIGhlYXBfNSBpcyBvbmx5IHVzZWQgZm9yIHRlc3QgYW5kIGV4YW1wbGUgcHVycG9zZXMNCiBhcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUgbGFyZ2UgaGVhcCByZWdpb24gaW5zdGVhZCBvZiBtdWx0aXBsZQ0KIHNtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZSBoZWFwXzQuYyB3b3VsZCBiZSB0aGUgbW9yZSBhcHByb3ByaWF0ZQ0KIGNob2ljZS4gIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbCBmb3IgYW4gZXhwbGFuYXRpb24uICovDQotI2RlZmluZSBtYWluUkVHSU9OXzFfU0laRQk3MDAxDQotI2RlZmluZSBtYWluUkVHSU9OXzJfU0laRQkxODEwNQ0KLSNkZWZpbmUgbWFpblJFR0lPTl8zX1NJWkUJMjgwNw0KKyNkZWZpbmUgbWFpblJFR0lPTl8xX1NJWkUJNzIwMQ0KKyNkZWZpbmUgbWFpblJFR0lPTl8yX1NJWkUJMjk5MDUNCisjZGVmaW5lIG1haW5SRUdJT05fM19TSVpFCTY0MDcNCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCkBAIC0zMTYsNyArMjc0LDcgQEAKIAkoIHZvaWQgKSB1bExpbmU7DQogCSggdm9pZCApIHBjRmlsZU5hbWU7DQogDQotCXByaW50ZiggIkFTU0VSVCEgTGluZSAlZCwgZmlsZSAlcywgR2V0TGFzdEVycm9yKCkgJWRcclxuIiwgdWxMaW5lLCBwY0ZpbGVOYW1lLCBHZXRMYXN0RXJyb3IoKSApOw0KKwlwcmludGYoICJBU1NFUlQhIExpbmUgJWxkLCBmaWxlICVzLCBHZXRMYXN0RXJyb3IoKSAlbGRcclxuIiwgdWxMaW5lLCBwY0ZpbGVOYW1lLCBHZXRMYXN0RXJyb3IoKSApOw0KIA0KICAJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQogCXsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvbWFpbl9ibGlua3kuYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2JsaW5reS5jCmluZGV4IGIyNzhmZTQuLmJjZmZjNTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2JsaW5reS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICogTk9URTogV2luZG93cyB3aWxsIG5vdCBiZSBydW5uaW5nIHRoZSBGcmVlUlRPUyBkZW1vIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2Z1bGwuYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTVNWQy9tYWluX2Z1bGwuYwppbmRleCBkMTI3MGYwLi5jNzBkNjM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1TVkMvbWFpbl9mdWxsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NU1ZDL21haW5fZnVsbC5jCkBAIC0xLDgwICsxLDQ0IEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICogTk9URTogV2luZG93cyB3aWxsIG5vdCBiZSBydW5uaW5nIHRoZSBGcmVlUlRPUyBkZW1vIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KLSAqIGRvIG5vdCBleHBlY3QgdG8gZ2V0IHJlYWwgdGltZSBiZWhhdmlvdXIgZnJvbSB0aGUgRnJlZVJUT1MgV2luZG93cyBwb3J0LCBvcg0KLSAqIHRoaXMgZGVtbyBhcHBsaWNhdGlvbi4gIEFsc28sIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlIEZyZWVSVE9TK1RyYWNlDQotICogbG9ncyBoYXZlIG5vIG1lYW5pbmdmdWwgdW5pdHMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhlIFdpbmRvd3MNCi0gKiBwb3J0IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uOg0KKyAqIE5PVEUgMTogVGhlIFdpbjMyIHBvcnQgaXMgYSBzaW11bGF0aW9uIChvciBpcyB0aGF0IGVtdWxhdGlvbj8pIG9ubHkhICBEbyBub3QNCisgKiBleHBlY3QgdG8gZ2V0IHJlYWwgdGltZSBiZWhhdmlvdXIgZnJvbSB0aGUgV2luMzIgcG9ydCBvciB0aGlzIGRlbW8NCisgKiBhcHBsaWNhdGlvbi4gIEl0IGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVudCBkZXZlbG9wbWVudCBhbmQgZGVtb25zdHJhdGlvbg0KKyAqIHRlc3QgYmVkIG9ubHkuDQorICoNCisgKiBXaW5kb3dzIHdpbGwgbm90IGJlIHJ1bm5pbmcgdGhlIEZyZWVSVE9TIHNpbXVsYXRvciB0aHJlYWRzIGNvbnRpbnVvdXNseSwgc28NCisgKiB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGluIHRoZSBGcmVlUlRPUytUcmFjZSBsb2dzIGhhdmUgbm8gbWVhbmluZ2Z1bCB1bml0cy4NCisgKiBTZWUgdGhlIGRvY3VtZW50YXRpb24gcGFnZSBmb3IgdGhlIFdpbmRvd3Mgc2ltdWxhdG9yIGZvciBhbiBleHBsYW5hdGlvbiBvZg0KKyAqIHRoZSBzbG93IHRpbWluZzoNCiAgKiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9GcmVlUlRPUy1XaW5kb3dzLVNpbXVsYXRvci1FbXVsYXRvci1mb3ItVmlzdWFsLVN0dWRpby1hbmQtRWNsaXBzZS1NaW5nVy5odG1sDQorICogLSBSRUFEIFRIRSBXRUIgRE9DVU1FTlRBVElPTiBGT1IgVEhJUyBQT1JUIEZPUiBNT1JFIElORk9STUFUSU9OIE9OIFVTSU5HIElUIC0NCiAgKg0KICAqIE5PVEUgMjogIFRoaXMgcHJvamVjdCBwcm92aWRlcyB0d28gZGVtbyBhcHBsaWNhdGlvbnMuICBBIHNpbXBsZSBibGlua3kgc3R5bGUNCiAgKiBwcm9qZWN0LCBhbmQgYSBtb3JlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbi4gIFRoZQ0KQEAgLTk4LDkgKzYyLDkgQEAKICAqICJDaGVjayIgdGFzayAtIFRoaXMgb25seSBleGVjdXRlcyBldmVyeSBmaXZlIHNlY29uZHMgYnV0IGhhcyBhIGhpZ2ggcHJpb3JpdHkNCiAgKiB0byBlbnN1cmUgaXQgZ2V0cyBwcm9jZXNzb3IgdGltZS4gIEl0cyBtYWluIGZ1bmN0aW9uIGlzIHRvIGNoZWNrIHRoYXQgYWxsIHRoZQ0KICAqIHN0YW5kYXJkIGRlbW8gdGFza3MgYXJlIHN0aWxsIG9wZXJhdGlvbmFsLiAgV2hpbGUgbm8gZXJyb3JzIGhhdmUgYmVlbg0KLSAqIGRpc2NvdmVyZWQgdGhlIGNoZWNrIHRhc2sgd2lsbCBwcmludCBvdXQgIk5vIEVycm9ycyIgYWxvbmcgd2l0aCBzb21lIHN5c3RlbQ0KLSAqIHN0YXR1cyBpbmZvcm1hdGlvbi4gIElmIGFuIGVycm9yIGlzIGRpc2NvdmVyZWQgaW4gdGhlIGV4ZWN1dGlvbiBvZiBhIHRhc2sNCi0gKiB0aGVuIHRoZSBjaGVjayB0YXNrIHdpbGwgcHJpbnQgb3V0IGFuIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2UuDQorICogZGlzY292ZXJlZCB0aGUgY2hlY2sgdGFzayB3aWxsIHByaW50IG91dCAiT0siIGFuZCB0aGUgY3VycmVudCBzaW11bGF0ZWQgdGljaw0KKyAqIHRpbWUuICBJZiBhbiBlcnJvciBpcyBkaXNjb3ZlcmVkIGluIHRoZSBleGVjdXRpb24gb2YgYSB0YXNrIHRoZW4gdGhlIGNoZWNrDQorICogdGFzayB3aWxsIHByaW50IG91dCBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlLg0KICAqDQogICovDQogDQpAQCAtMTM4LDYgKzEwMiwxMCBAQAogI2luY2x1ZGUgIlN0YXRpY0FsbG9jYXRpb24uaCINCiAjaW5jbHVkZSAiYmxvY2t0aW0uaCINCiAjaW5jbHVkZSAiQWJvcnREZWxheS5oIg0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyRGVtby5oIg0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJEZW1vLmgiDQorI2luY2x1ZGUgIlN0cmVhbUJ1ZmZlckludGVycnVwdC5oIg0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyQU1QLmgiDQogDQogLyogUHJpb3JpdGllcyBhdCB3aGljaCB0aGUgdGFza3MgYXJlIGNyZWF0ZWQuICovDQogI2RlZmluZSBtYWluQ0hFQ0tfVEFTS19QUklPUklUWQkJCSggY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAyICkNCkBAIC0yMzcsNiArMjA1LDExIEBACiAJeFRhc2tDcmVhdGUoIHBydlBlcm1hbmVudGx5QmxvY2tpbmdTZW1hcGhvcmVUYXNrLCAiQmxvY2tTZW0iLCBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUsIE5VTEwsIHRza0lETEVfUFJJT1JJVFksIE5VTEwgKTsNCiAJeFRhc2tDcmVhdGUoIHBydlBlcm1hbmVudGx5QmxvY2tpbmdOb3RpZmljYXRpb25UYXNrLCAiQmxvY2tOb3RpIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQogDQorCXZTdGFydE1lc3NhZ2VCdWZmZXJUYXNrcygpOw0KKwl2U3RhcnRTdHJlYW1CdWZmZXJUYXNrcygpOw0KKwl2U3RhcnRTdHJlYW1CdWZmZXJJbnRlcnJ1cHREZW1vKCk7DQorCXZTdGFydE1lc3NhZ2VCdWZmZXJBTVBUYXNrcygpOw0KKw0KIAkjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSApDQogCXsNCiAJCXZTdGFydFN0YXRpY2FsbHlBbGxvY2F0ZWRUYXNrcygpOw0KQEAgLTI5NiwxMiArMjY5LDE5IEBACiAJCX0NCiAJCSNlbmRpZg0KIA0KLQkJaWYoIHhBcmVUYXNrTm90aWZpY2F0aW9uVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJaWYoIHhBcmVTdHJlYW1CdWZmZXJUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQorCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgU3RyZWFtQnVmZmVyIjsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVNZXNzYWdlQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIE1lc3NhZ2VCdWZmZXIiOw0KKwkJfQ0KKwkJZWxzZSBpZiggeEFyZVRhc2tOb3RpZmljYXRpb25UYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgTm90aWZpY2F0aW9uIjsNCiAJCX0NCi0NCi0JCWlmKCB4QXJlSW50ZXJydXB0U2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJZWxzZSBpZiggeEFyZUludGVycnVwdFNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEludFNlbSI7DQogCQl9DQpAQCAtMzczLDYgKzM1MywxNCBAQAogCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBBYm9ydCBkZWxheSI7DQogCQl9DQorCQllbHNlIGlmKCB4SXNJbnRlcnJ1cHRTdHJlYW1CdWZmZXJEZW1vU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCisJCXsNCisJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IFN0cmVhbSBidWZmZXIgaW50ZXJydXB0IjsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVNZXNzYWdlQnVmZmVyQU1QVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFBBU1MgKQ0KKwkJew0KKwkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogTWVzc2FnZSBidWZmZXIgQU1QIjsNCisJCX0NCiANCiAJCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCiAJCQllbHNlIGlmKCB4QXJlU3RhdGljQWxsb2NhdGlvblRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCkBAIC0zODMsMTAgKzM3MSwxMCBAQAogDQogCQkvKiBUaGlzIGlzIHRoZSBvbmx5IHRhc2sgdGhhdCB1c2VzIHN0ZG91dCBzbyBpdHMgb2sgdG8gY2FsbCBwcmludGYoKQ0KIAkJZGlyZWN0bHkuICovDQotCQlwcmludGYoICIlcyAtIHRpY2sgY291bnQgJWQgLSBmcmVlIGhlYXAgJWQgLSBtaW4gZnJlZSBoZWFwICVkXHJcbiIsIHBjU3RhdHVzTWVzc2FnZSwNCi0JCQkJCQkJCQkJCQkJCQkJCQkJeFRhc2tHZXRUaWNrQ291bnQoKSwNCi0JCQkJCQkJCQkJCQkJCQkJCQkJeFBvcnRHZXRGcmVlSGVhcFNpemUoKSwNCi0JCQkJCQkJCQkJCQkJCQkJCQkJeFBvcnRHZXRNaW5pbXVtRXZlckZyZWVIZWFwU2l6ZSgpICk7DQorCQlwcmludGYoICIlcyAtIHRpY2sgY291bnQgJXp1IC0gZnJlZSBoZWFwICV6dSAtIG1pbiBmcmVlIGhlYXAgJXp1XHJcbiIsIHBjU3RhdHVzTWVzc2FnZSwNCisJCQkJCQkJCQkJCQkJCQkJCQkJICAgeFRhc2tHZXRUaWNrQ291bnQoKSwNCisJCQkJCQkJCQkJCQkJCQkJCQkJICAgeFBvcnRHZXRGcmVlSGVhcFNpemUoKSwNCisJCQkJCQkJCQkJCQkJCQkJCQkJICAgeFBvcnRHZXRNaW5pbXVtRXZlckZyZWVIZWFwU2l6ZSgpICk7DQogCX0NCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpAQCAtNDkwLDYgKzQ3OCwxNCBAQAogCS8qIEV4ZXJjaXNlIHVzaW5nIHRhc2sgbm90aWZpY2F0aW9ucyBmcm9tIGFuIGludGVycnVwdC4gKi8NCiAJeE5vdGlmeVRhc2tGcm9tSVNSKCk7DQogDQorCS8qIFdyaXRlcyB0byBzdHJlYW0gYnVmZmVyIGJ5dGUgYnkgYnl0ZSB0byB0ZXN0IHRoZSBzdHJlYW0gYnVmZmVyIHRyaWdnZXINCisJbGV2ZWwgZnVuY3Rpb25hbGl0eS4gKi8NCisJdlBlcmlvZGljU3RyZWFtQnVmZmVyUHJvY2Vzc2luZygpOw0KKw0KKwkvKiBXcml0ZXMgYSBzdHJpbmcgdG8gYSBzdHJpbmcgYnVmZmVyIGZvdXIgYnl0ZXMgYXQgYSB0aW1lIHRvIGRlbW9uc3RyYXRlDQorCWEgc3RyZWFtIGJlaW5nIHNlbnQgZnJvbSBhbiBpbnRlcnJ1cHQgdG8gYSB0YXNrLiAqLw0KKwl2QmFzaWNTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpOw0KKw0KIAkvKiBGb3IgY29kZSBjb3ZlcmFnZSBwdXJwb3Nlcy4gKi8NCiAJeFRpbWVyVGFzayA9IHhUaW1lckdldFRpbWVyRGFlbW9uVGFza0hhbmRsZSgpOw0KIAljb25maWdBU1NFUlQoIHV4VGFza1ByaW9yaXR5R2V0RnJvbUlTUiggeFRpbWVyVGFzayApID09IGNvbmZpZ1RJTUVSX1RBU0tfUFJJT1JJVFkgKTsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXLy5wcm9qZWN0IGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy8ucHJvamVjdAppbmRleCA1MWNkZjhlLi4zZDI3NDFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXLy5wcm9qZWN0CisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvLnByb2plY3QKQEAgLTU2LDcgKzU2LDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTM5OTwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMDQ8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC02NSw3ICs2NSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0MDQ8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzA3PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtNzQsNyArNzQsNyBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KLQkJCTxpZD4xNDU4NTgxNjA1NDEwPC9pZD4NCisJCQk8aWQ+MTUwNzczNTE1NjMxMDwvaWQ+DQogCQkJPG5hbWU+U3RhbmRhcmRfRGVtb19UYXNrczwvbmFtZT4NCiAJCQk8dHlwZT41PC90eXBlPg0KIAkJCTxtYXRjaGVyPg0KQEAgLTgzLDcgKzgzLDcgQEAKIAkJCTwvbWF0Y2hlcj4NCiAJCTwvZmlsdGVyPg0KIAkJPGZpbHRlcj4NCi0JCQk8aWQ+MTQ1ODU4MTYwNTQxNTwvaWQ+DQorCQkJPGlkPjE1MDc3MzUxNTYzMTM8L2lkPg0KIAkJCTxuYW1lPlN0YW5kYXJkX0RlbW9fVGFza3M8L25hbWU+DQogCQkJPHR5cGU+NTwvdHlwZT4NCiAJCQk8bWF0Y2hlcj4NCkBAIC05Miw3ICs5Miw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0MjE8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzE2PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTAxLDcgKzEwMSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0Mjc8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzE5PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTEwLDcgKzExMCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0MzQ8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzIzPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTE5LDcgKzExOSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0NDE8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzI3PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTI4LDcgKzEyOCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0NTA8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzMwPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTM3LDcgKzEzNyw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0NTg8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzMzPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTQ2LDcgKzE0Niw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0NjM8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzM3PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTU1LDcgKzE1NSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0NzM8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzQwPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTY0LDcgKzE2NCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU0OTA8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzQzPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTczLDcgKzE3Myw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1MTQ8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzQ3PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1MjQ8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzUwPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMTkxLDcgKzE5MSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1MzA8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzUzPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1MzU8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzU2PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMjA5LDcgKzIwOSw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1NDA8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzU5PC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMjE4LDcgKzIxOCw3IEBACiAJCQk8L21hdGNoZXI+DQogCQk8L2ZpbHRlcj4NCiAJCTxmaWx0ZXI+DQotCQkJPGlkPjE0NTg1ODE2MDU1NDc8L2lkPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzYyPC9pZD4NCiAJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KIAkJCTx0eXBlPjU8L3R5cGU+DQogCQkJPG1hdGNoZXI+DQpAQCAtMjI3LDYgKzIyNywyNCBAQAogCQkJPC9tYXRjaGVyPg0KIAkJPC9maWx0ZXI+DQogCQk8ZmlsdGVyPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzY2PC9pZD4NCisJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KKwkJCTx0eXBlPjU8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtU3RyZWFtQnVmZmVyRGVtby5jPC9hcmd1bWVudHM+DQorCQkJPC9tYXRjaGVyPg0KKwkJPC9maWx0ZXI+DQorCQk8ZmlsdGVyPg0KKwkJCTxpZD4xNTA3NzM1MTU2MzY5PC9pZD4NCisJCQk8bmFtZT5TdGFuZGFyZF9EZW1vX1Rhc2tzPC9uYW1lPg0KKwkJCTx0eXBlPjU8L3R5cGU+DQorCQkJPG1hdGNoZXI+DQorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPg0KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtTWVzc2FnZUJ1ZmZlckRlbW8uYzwvYXJndW1lbnRzPg0KKwkJCTwvbWF0Y2hlcj4NCisJCTwvZmlsdGVyPg0KKwkJPGZpbHRlcj4NCiAJCQk8aWQ+MDwvaWQ+DQogCQkJPG5hbWU+RnJlZVJUT1NfU291cmNlL3BvcnRhYmxlPC9uYW1lPg0KIAkJCTx0eXBlPjk8L3R5cGU+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9EZW1vc01vZGlmaWVkRm9yTG93VGlja1JhdGUvcmVjbXV0ZXguYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvRGVtb3NNb2RpZmllZEZvckxvd1RpY2tSYXRlL3JlY211dGV4LmMKaW5kZXggN2Q2OTM2MS4uZjI3YWI0ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9EZW1vc01vZGlmaWVkRm9yTG93VGlja1JhdGUvcmVjbXV0ZXguYworKysgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0RlbW9zTW9kaWZpZWRGb3JMb3dUaWNrUmF0ZS9yZWNtdXRleC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlUaGUgdGFza3MgZGVmaW5lZCBvbiB0aGlzIHBhZ2UgZGVtb25zdHJhdGUgdGhlIHVzZSBvZiByZWN1cnNpdmUgbXV0ZXhlcy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL0ZyZWVSVE9TQ29uZmlnLmgKaW5kZXggN2Y5N2RmNS4uNTM0OGU5ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KQEAgLTg2LDkgKzQ1LDEwIEBACiAjZGVmaW5lIGNvbmZpZ1VTRV9QT1JUX09QVElNSVNFRF9UQVNLX1NFTEVDVElPTgkxDQogI2RlZmluZSBjb25maWdVU0VfSURMRV9IT09LCQkJCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFX1RJQ0tfSE9PSwkJCQkJCTENCisjZGVmaW5lIGNvbmZpZ1VTRV9EQUVNT05fVEFTS19TVEFSVFVQX0hPT0sJCTENCiAjZGVmaW5lIGNvbmZpZ1RJQ0tfUkFURV9IWgkJCQkJCSggMTAwMCApIC8qIEluIHRoaXMgbm9uLXJlYWwgdGltZSBzaW11bGF0ZWQgZW52aXJvbm1lbnQgdGhlIHRpY2sgZnJlcXVlbmN5IGhhcyB0byBiZSBhdCBsZWFzdCBhIG11bHRpcGxlIG9mIHRoZSBXaW4zMiB0aWNrIGZyZXF1ZW5jeSwgYW5kIHRoZXJlZm9yZSB2ZXJ5IHNsb3cuICovDQotI2RlZmluZSBjb25maWdNSU5JTUFMX1NUQUNLX1NJWkUJCQkJKCAoIHVuc2lnbmVkIHNob3J0ICkgNTAgKSAvKiBJbiB0aGlzIHNpbXVsYXRlZCBjYXNlLCB0aGUgc3RhY2sgb25seSBoYXMgdG8gaG9sZCBvbmUgc21hbGwgc3RydWN0dXJlIGFzIHRoZSByZWFsIHN0YWNrIGlzIHBhcnQgb2YgdGhlIHdpbjMyIHRocmVhZC4gKi8NCi0jZGVmaW5lIGNvbmZpZ1RPVEFMX0hFQVBfU0laRQkJCQkJKCAoIHNpemVfdCApICggMzUgKiAxMDI0ICkgKQ0KKyNkZWZpbmUgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFCQkJCSggKCB1bnNpZ25lZCBzaG9ydCApIDcwICkgLyogSW4gdGhpcyBzaW11bGF0ZWQgY2FzZSwgdGhlIHN0YWNrIG9ubHkgaGFzIHRvIGhvbGQgb25lIHNtYWxsIHN0cnVjdHVyZSBhcyB0aGUgcmVhbCBzdGFjayBpcyBwYXJ0IG9mIHRoZSB3aW4zMiB0aHJlYWQuICovDQorI2RlZmluZSBjb25maWdUT1RBTF9IRUFQX1NJWkUJCQkJCSggKCBzaXplX3QgKSAoIDQ1ICogMTAyNCApICkNCiAjZGVmaW5lIGNvbmZpZ01BWF9UQVNLX05BTUVfTEVOCQkJCQkoIDEyICkNCiAjZGVmaW5lIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWQkJCQkxDQogI2RlZmluZSBjb25maWdVU0VfMTZfQklUX1RJQ0tTCQkJCQkwDQpAQCAtMTAzLDYgKzYzLDcgQEAKICNkZWZpbmUgY29uZmlnVVNFX0FMVEVSTkFUSVZFX0FQSQkJCQkwDQogI2RlZmluZSBjb25maWdVU0VfUVVFVUVfU0VUUwkJCQkJMQ0KICNkZWZpbmUgY29uZmlnVVNFX1RBU0tfTk9USUZJQ0FUSU9OUwkJCTENCisjZGVmaW5lIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04JCQkwDQogDQogLyogU29mdHdhcmUgdGltZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuICovDQogI2RlZmluZSBjb25maWdVU0VfVElNRVJTCQkJCQkJMQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvUnVuLXRpbWUtc3RhdHMtdXRpbHMuYwppbmRleCBmNjZjYjQ2Li5mMTA5Y2RiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL1J1bi10aW1lLXN0YXRzLXV0aWxzLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9SdW4tdGltZS1zdGF0cy11dGlscy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFV0aWxpdHkgZnVuY3Rpb25zIHJlcXVpcmVkIHRvIGdhdGhlciBydW4gdGltZSBzdGF0aXN0aWNzLiAgU2VlOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluLmMKaW5kZXggY2FhZWUxYy4uYTk4Nzg3NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBUaGlzIHByb2plY3QgcHJvdmlkZXMgdHdvIGRlbW8gYXBwbGljYXRpb25zLiAgQSBzaW1wbGUgYmxpbmt5IHN0eWxlIHByb2plY3QsDQpAQCAtNzksMTkgKzM4LDE2IEBACiAgKiBoYXJkd2FyZSBzZXR1cCBhbmQgRnJlZVJUT1MgaG9vayBmdW5jdGlvbnMuDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAqIC1OT1RFLSBUaGUgV2luMzIgcG9ydCBpcyBhIHNpbXVsYXRpb24gKG9yIGlzIHRoYXQgZW11bGF0aW9uPykgb25seSEgIERvIG5vdA0KLSAqIGV4cGVjdCB0byBnZXQgcmVhbCB0aW1lIGJlaGF2aW91ciBmcm9tIHRoZSBXaW4zMiBwb3J0IG9yIHRoaXMgZGVtbw0KLSAqIGFwcGxpY2F0aW9uLiAgSXQgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW50IGRldmVsb3BtZW50IGFuZCBkZW1vbnN0cmF0aW9uDQotICogdGVzdCBiZWQgb25seS4gIFRoaXMgd2FzIHRlc3RlZCB1c2luZyBXaW5kb3dzIFhQIG9uIGEgZHVhbCBjb3JlIGxhcHRvcC4NCi0gKg0KLSAqIFdpbmRvd3Mgd2lsbCBub3QgYmUgcnVubmluZyB0aGUgRnJlZVJUT1Mgc2ltdWxhdG9yIHRocmVhZHMgY29udGludW91c2x5LCBzbw0KLSAqIHRoZSB0aW1pbmcgaW5mb3JtYXRpb24gaW4gdGhlIEZyZWVSVE9TK1RyYWNlIGxvZ3MgaGF2ZSBubyBtZWFuaW5nZnVsIHVuaXRzLg0KLSAqIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBwYWdlIGZvciB0aGUgV2luZG93cyBzaW11bGF0b3IgZm9yIGFuIGV4cGxhbmF0aW9uIG9mDQotICogdGhlIHNsb3cgdGltaW5nOg0KKyAqIE5PVEU6IFdpbmRvd3Mgd2lsbCBub3QgYmUgcnVubmluZyB0aGUgRnJlZVJUT1MgZGVtbyB0aHJlYWRzIGNvbnRpbnVvdXNseSwgc28NCisgKiBkbyBub3QgZXhwZWN0IHRvIGdldCByZWFsIHRpbWUgYmVoYXZpb3VyIGZyb20gdGhlIEZyZWVSVE9TIFdpbmRvd3MgcG9ydCwgb3INCisgKiB0aGlzIGRlbW8gYXBwbGljYXRpb24uICBBbHNvLCB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGluIHRoZSBGcmVlUlRPUytUcmFjZQ0KKyAqIGxvZ3MgaGF2ZSBubyBtZWFuaW5nZnVsIHVuaXRzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIHBhZ2UgZm9yIHRoZSBXaW5kb3dzDQorICogcG9ydCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbjoNCiAgKiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9GcmVlUlRPUy1XaW5kb3dzLVNpbXVsYXRvci1FbXVsYXRvci1mb3ItVmlzdWFsLVN0dWRpby1hbmQtRWNsaXBzZS1NaW5nVy5odG1sDQotICogLSBSRUFEIFRIRSBXRUIgRE9DVU1FTlRBVElPTiBGT1IgVEhJUyBQT1JUIEZPUiBNT1JFIElORk9STUFUSU9OIE9OIFVTSU5HIElUIC0NCi0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqDQorDQorICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KQEAgLTEwMywyMiArNTksMjggQEAKICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQogDQotLyogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBwcm9qZWN0LA0KLWFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQorLyogVGhpcyBwcm9qZWN0IHByb3ZpZGVzIHR3byBkZW1vIGFwcGxpY2F0aW9ucy4gIEEgc2ltcGxlIGJsaW5reSBzdHlsZSBkZW1vDQorYXBwbGljYXRpb24sIGFuZCBhIG1vcmUgY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uLiAgVGhlDQogbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBzZXR0aW5nIGlzIHVzZWQgdG8gc2VsZWN0IGJldHdlZW4gdGhlIHR3by4NCi1UaGUgc2ltcGx5IGJsaW5reSBkZW1vIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4gbWFpbl9ibGlua3kuYy4gIFRoZSBtb3JlDQotY29tcHJlaGVuc2l2ZSB0ZXN0IGFuZCBkZW1vIGFwcGxpY2F0aW9uIGlzIGltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4NCi1tYWluX2Z1bGwuYy4gKi8NCi0jZGVmaW5lIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkJMQ0KKw0KK0lmIG1haW5DUkVBVEVfU0lNUExFX0JMSU5LWV9ERU1PX09OTFkgaXMgMSB0aGVuIHRoZSBibGlua3kgZGVtbyB3aWxsIGJlIGJ1aWx0Lg0KK1RoZSBibGlua3kgZGVtbyBpcyBpbXBsZW1lbnRlZCBhbmQgZGVzY3JpYmVkIGluIG1haW5fYmxpbmt5LmMuDQorDQorSWYgbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBub3QgMSB0aGVuIHRoZSBjb21wcmVoZW5zaXZlIHRlc3QgYW5kDQorZGVtbyBhcHBsaWNhdGlvbiB3aWxsIGJlIGJ1aWx0LiAgVGhlIGNvbXByZWhlbnNpdmUgdGVzdCBhbmQgZGVtbyBhcHBsaWNhdGlvbiBpcw0KK2ltcGxlbWVudGVkIGFuZCBkZXNjcmliZWQgaW4gbWFpbl9mdWxsLmMuICovDQorI2RlZmluZSBtYWluQ1JFQVRFX1NJTVBMRV9CTElOS1lfREVNT19PTkxZCTANCiANCiAvKiBUaGlzIGRlbW8gdXNlcyBoZWFwXzUuYywgYW5kIHRoZXNlIGNvbnN0YW50cyBkZWZpbmUgdGhlIHNpemVzIG9mIHRoZSByZWdpb25zDQotdGhhdCBtYWtlIHVwIHRoZSB0b3RhbCBoZWFwLiAgVGhpcyBpcyBvbmx5IGRvbmUgdG8gcHJvdmlkZSBhbiBleGFtcGxlIG9mIGhlYXBfNQ0KLWJlaW5nIHVzZWQgYXMgdGhpcyBkZW1vIGNvdWxkIGVhc2lseSBjcmVhdGUgb25lIGxhcmdlIGhlYXAgcmVnaW9uIGluc3RlYWQgb2YNCi1tdWx0aXBsZSBzbWFsbGVyIGhlYXAgcmVnaW9ucyAtIGluIHdoaWNoIGNhc2UgaGVhcF80LmMgd291bGQgYmUgdGhlIG1vcmUNCi1hcHByb3ByaWF0ZSBjaG9pY2UuICovDQotI2RlZmluZSBtYWluUkVHSU9OXzFfU0laRQk3MDAxDQotI2RlZmluZSBtYWluUkVHSU9OXzJfU0laRQkxODEwNQ0KLSNkZWZpbmUgbWFpblJFR0lPTl8zX1NJWkUJMjgwNw0KK3RoYXQgbWFrZSB1cCB0aGUgdG90YWwgaGVhcC4gIGhlYXBfNSBpcyBvbmx5IHVzZWQgZm9yIHRlc3QgYW5kIGV4YW1wbGUgcHVycG9zZXMNCithcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUgbGFyZ2UgaGVhcCByZWdpb24gaW5zdGVhZCBvZiBtdWx0aXBsZQ0KK3NtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZSBoZWFwXzQuYyB3b3VsZCBiZSB0aGUgbW9yZSBhcHByb3ByaWF0ZQ0KK2Nob2ljZS4gIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbCBmb3IgYW4gZXhwbGFuYXRpb24uICovDQorI2RlZmluZSBtYWluUkVHSU9OXzFfU0laRQk3MjAxDQorI2RlZmluZSBtYWluUkVHSU9OXzJfU0laRQkyOTkwNQ0KKyNkZWZpbmUgbWFpblJFR0lPTl8zX1NJWkUJNjQwNw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KIC8qDQogICogbWFpbl9ibGlua3koKSBpcyB1c2VkIHdoZW4gbWFpbkNSRUFURV9TSU1QTEVfQkxJTktZX0RFTU9fT05MWSBpcyBzZXQgdG8gMS4NCkBAIC0xMjgsMjYgKzkwLDIzIEBACiBleHRlcm4gdm9pZCBtYWluX2Z1bGwoIHZvaWQgKTsNCiANCiAvKg0KLSAqIFNvbWUgb2YgdGhlIFJUT1MgaG9vayAoY2FsbGJhY2spIGZ1bmN0aW9ucyBvbmx5IG5lZWQgc3BlY2lhbCBwcm9jZXNzaW5nIHdoZW4NCi0gKiB0aGUgZnVsbCBkZW1vIGlzIGJlaW5nIHVzZWQuICBUaGUgc2ltcGx5IGJsaW5reSBkZW1vIGhhcyBubyBzcGVjaWFsDQotICogcmVxdWlyZW1lbnRzLCBzbyB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCBmcm9tIHRoZSBob29rIGZ1bmN0aW9ucyBkZWZpbmVkDQotICogaW4gdGhpcyBmaWxlLCBidXQgYXJlIGRlZmluZWQgaW4gbWFpbl9mdWxsLmMuDQorICogT25seSB0aGUgY29tcHJlaGVuc2l2ZSBkZW1vIHVzZXMgYXBwbGljYXRpb24gaG9vayAoY2FsbGJhY2spIGZ1bmN0aW9ucy4gIFNlZQ0KKyAqIGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDAxNi5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KICAqLw0KIHZvaWQgdkZ1bGxEZW1vVGlja0hvb2tGdW5jdGlvbiggdm9pZCApOw0KIHZvaWQgdkZ1bGxEZW1vSWRsZUZ1bmN0aW9uKCB2b2lkICk7DQogDQogLyoNCi0gKiBUaGlzIGRlbW8gdXNlcyBoZWFwXzUuYywgc28gc3RhcnQgYnkgZGVmaW5pbmcgc29tZSBoZWFwIHJlZ2lvbnMuICBUaGlzIGlzDQotICogb25seSBkb25lIHRvIHByb3ZpZGUgYW4gZXhhbXBsZSBhcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUgbGFyZ2UNCi0gKiBoZWFwIHJlZ2lvbiBpbnN0ZWFkIG9mIG11bHRpcGxlIHNtYWxsZXIgaGVhcCByZWdpb25zIC0gaW4gd2hpY2ggY2FzZSBoZWFwXzQuYw0KLSAqIHdvdWxkIGJlIHRoZSBtb3JlIGFwcHJvcHJpYXRlIGNob2ljZS4gIE5vIGluaXRpYWxpc2F0aW9uIGlzIHJlcXVpcmVkIHdoZW4NCi0gKiBoZWFwXzQuYyBpcyB1c2VkLg0KKyAqIFRoaXMgZGVtbyB1c2VzIGhlYXBfNS5jLCBzbyBzdGFydCBieSBkZWZpbmluZyBzb21lIGhlYXAgcmVnaW9ucy4gIEl0IGlzIG5vdA0KKyAqIG5lY2Vzc2FyeSBmb3IgdGhpcyBkZW1vIHRvIHVzZSBoZWFwXzUsIGFzIGl0IGNvdWxkIGRlZmluZSBvbmUgbGFyZ2UgaGVhcA0KKyAqIHJlZ2lvbi4gIEhlYXBfNSBpcyBvbmx5IHVzZWQgZm9yIHRlc3QgYW5kIGV4YW1wbGUgcHVycG9zZXMuICBTZWUNCisgKiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbCBmb3IgYW4gZXhwbGFuYXRpb24uDQogICovDQogc3RhdGljIHZvaWQgIHBydkluaXRpYWxpc2VIZWFwKCB2b2lkICk7DQogDQogLyoNCi0gKiBQcm90b3R5cGVzIGZvciB0aGUgc3RhbmRhcmQgRnJlZVJUT1MgY2FsbGJhY2svaG9vayBmdW5jdGlvbnMgaW1wbGVtZW50ZWQNCi0gKiB3aXRoaW4gdGhpcyBmaWxlLg0KKyAqIFByb3RvdHlwZXMgZm9yIHRoZSBzdGFuZGFyZCBGcmVlUlRPUyBhcHBsaWNhdGlvbiBob29rIChjYWxsYmFjaykgZnVuY3Rpb25zDQorICogaW1wbGVtZW50ZWQgd2l0aGluIHRoaXMgZmlsZS4gIFNlZSBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAwMTYuaHRtbCAuDQogICovDQogdm9pZCB2QXBwbGljYXRpb25NYWxsb2NGYWlsZWRIb29rKCB2b2lkICk7DQogdm9pZCB2QXBwbGljYXRpb25JZGxlSG9vayggdm9pZCApOw0KQEAgLTE2NywxMSArMTI2LDkgQEAKIA0KIGludCBtYWluKCB2b2lkICkNCiB7DQotCS8qIFRoaXMgZGVtbyB1c2VzIGhlYXBfNS5jLCBzbyBzdGFydCBieSBkZWZpbmluZyBzb21lIGhlYXAgcmVnaW9ucy4gIFRoaXMNCi0JaXMgb25seSBkb25lIHRvIHByb3ZpZGUgYW4gZXhhbXBsZSBhcyB0aGlzIGRlbW8gY291bGQgZWFzaWx5IGNyZWF0ZSBvbmUNCi0JbGFyZ2UgaGVhcCByZWdpb24gaW5zdGVhZCBvZiBtdWx0aXBsZSBzbWFsbGVyIGhlYXAgcmVnaW9ucyAtIGluIHdoaWNoIGNhc2UNCi0JaGVhcF80LmMgd291bGQgYmUgdGhlIG1vcmUgYXBwcm9wcmlhdGUgY2hvaWNlLiAgTm8gaW5pdGlhbGlzYXRpb24gaXMNCi0JcmVxdWlyZWQgd2hlbiBoZWFwXzQuYyBpcyB1c2VkLiAqLw0KKwkvKiBUaGlzIGRlbW8gdXNlcyBoZWFwXzUuYywgc28gc3RhcnQgYnkgZGVmaW5pbmcgc29tZSBoZWFwIHJlZ2lvbnMuICBoZWFwXzUNCisJaXMgb25seSB1c2VkIGZvciB0ZXN0IGFuZCBleGFtcGxlIHJlYXNvbnMuICBIZWFwXzQgaXMgbW9yZSBhcHByb3ByaWF0ZS4gIFNlZQ0KKwlodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTEuaHRtbCBmb3IgYW4gZXhwbGFuYXRpb24uICovDQogCXBydkluaXRpYWxpc2VIZWFwKCk7DQogDQogCS8qIEluaXRpYWxpc2UgdGhlIHRyYWNlIHJlY29yZGVyLiAgVXNlIG9mIHRoZSB0cmFjZSByZWNvcmRlciBpcyBvcHRpb25hbC4NCkBAIC0yMDcsMTEgKzE2NCwxMyBAQAogCWZ1bmN0aW9uIHRoYXQgd2lsbCBnZXQgY2FsbGVkIGlmIGEgY2FsbCB0byBwdlBvcnRNYWxsb2MoKSBmYWlscy4NCiAJcHZQb3J0TWFsbG9jKCkgaXMgY2FsbGVkIGludGVybmFsbHkgYnkgdGhlIGtlcm5lbCB3aGVuZXZlciBhIHRhc2ssIHF1ZXVlLA0KIAl0aW1lciBvciBzZW1hcGhvcmUgaXMgY3JlYXRlZC4gIEl0IGlzIGFsc28gY2FsbGVkIGJ5IHZhcmlvdXMgcGFydHMgb2YgdGhlDQotCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYyBvciBoZWFwXzIuYyBhcmUgdXNlZCwgdGhlbiB0aGUgc2l6ZSBvZiB0aGUNCi0JaGVhcCBhdmFpbGFibGUgdG8gcHZQb3J0TWFsbG9jKCkgaXMgZGVmaW5lZCBieSBjb25maWdUT1RBTF9IRUFQX1NJWkUgaW4NCi0JRnJlZVJUT1NDb25maWcuaCwgYW5kIHRoZSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpIEFQSSBmdW5jdGlvbiBjYW4gYmUgdXNlZA0KLQl0byBxdWVyeSB0aGUgc2l6ZSBvZiBmcmVlIGhlYXAgc3BhY2UgdGhhdCByZW1haW5zIChhbHRob3VnaCBpdCBkb2VzIG5vdA0KLQlwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgcmVtYWluaW5nIGhlYXAgbWlnaHQgYmUgZnJhZ21lbnRlZCkuICovDQorCWRlbW8gYXBwbGljYXRpb24uICBJZiBoZWFwXzEuYywgaGVhcF8yLmMgb3IgaGVhcF80LmMgaXMgYmVpbmcgdXNlZCwgdGhlbiB0aGUNCisJc2l6ZSBvZiB0aGUJaGVhcCBhdmFpbGFibGUgdG8gcHZQb3J0TWFsbG9jKCkgaXMgZGVmaW5lZCBieQ0KKwljb25maWdUT1RBTF9IRUFQX1NJWkUgaW4gRnJlZVJUT1NDb25maWcuaCwgYW5kIHRoZSB4UG9ydEdldEZyZWVIZWFwU2l6ZSgpDQorCUFQSSBmdW5jdGlvbiBjYW4gYmUgdXNlZCB0byBxdWVyeSB0aGUgc2l6ZSBvZiBmcmVlIGhlYXAgc3BhY2UgdGhhdCByZW1haW5zDQorCShhbHRob3VnaCBpdCBkb2VzIG5vdCBwcm92aWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0aGUgcmVtYWluaW5nIGhlYXAgbWlnaHQgYmUNCisJZnJhZ21lbnRlZCkuICBTZWUgaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTExLmh0bWwgZm9yIG1vcmUNCisJaW5mb3JtYXRpb24uICovDQogCXZBc3NlcnRDYWxsZWQoIF9fTElORV9fLCBfX0ZJTEVfXyApOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC0yMjIsMTMgKzE4MSwxMyBAQAogCXRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gIEl0IHdpbGwgYmUgY2FsbGVkIG9uIGVhY2ggaXRlcmF0aW9uIG9mIHRoZSBpZGxlDQogCXRhc2suICBJdCBpcyBlc3NlbnRpYWwgdGhhdCBjb2RlIGFkZGVkIHRvIHRoaXMgaG9vayBmdW5jdGlvbiBuZXZlciBhdHRlbXB0cw0KIAl0byBibG9jayBpbiBhbnkgd2F5IChmb3IgZXhhbXBsZSwgY2FsbCB4UXVldWVSZWNlaXZlKCkgd2l0aCBhIGJsb2NrIHRpbWUNCi0Jc3BlY2lmaWVkLCBvciBjYWxsIHZUYXNrRGVsYXkoKSkuICBJZiB0aGUgYXBwbGljYXRpb24gbWFrZXMgdXNlIG9mIHRoZQ0KLQl2VGFza0RlbGV0ZSgpIEFQSSBmdW5jdGlvbiAoYXMgdGhpcyBkZW1vIGFwcGxpY2F0aW9uIGRvZXMpIHRoZW4gaXQgaXMgYWxzbw0KLQlpbXBvcnRhbnQgdGhhdCB2QXBwbGljYXRpb25JZGxlSG9vaygpIGlzIHBlcm1pdHRlZCB0byByZXR1cm4gdG8gaXRzIGNhbGxpbmcNCi0JZnVuY3Rpb24sIGJlY2F1c2UgaXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBpZGxlIHRhc2sgdG8gY2xlYW4gdXANCi0JbWVtb3J5IGFsbG9jYXRlZCBieSB0aGUga2VybmVsIHRvIGFueSB0YXNrIHRoYXQgaGFzIHNpbmNlIGJlZW4gZGVsZXRlZC4gKi8NCisJc3BlY2lmaWVkLCBvciBjYWxsIHZUYXNrRGVsYXkoKSkuICBJZiBhcHBsaWNhdGlvbiB0YXNrcyBtYWtlIHVzZSBvZiB0aGUNCisJdlRhc2tEZWxldGUoKSBBUEkgZnVuY3Rpb24gdG8gZGVsZXRlIHRoZW1zZWx2ZXMgdGhlbiBpdCBpcyBhbHNvIGltcG9ydGFudA0KKwl0aGF0IHZBcHBsaWNhdGlvbklkbGVIb29rKCkgaXMgcGVybWl0dGVkIHRvIHJldHVybiB0byBpdHMgY2FsbGluZyBmdW5jdGlvbiwNCisJYmVjYXVzZSBpdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGlkbGUgdGFzayB0byBjbGVhbiB1cCBtZW1vcnkNCisJYWxsb2NhdGVkIGJ5IHRoZSBrZXJuZWwgdG8gYW55IHRhc2sgdGhhdCBoYXMgc2luY2UgZGVsZXRlZCBpdHNlbGYuICovDQogDQotCS8qIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gYWxsb3cgdGhlIHRyYWNlIHRvIGJlIHN0b3BwZWQgd2l0aCBhbnkgDQorCS8qIFVuY29tbWVudCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gYWxsb3cgdGhlIHRyYWNlIHRvIGJlIHN0b3BwZWQgd2l0aCBhbnkNCiAJa2V5IHByZXNzLiAgVGhlIGNvZGUgaXMgY29tbWVudGVkIG91dCBieSBkZWZhdWx0IGFzIHRoZSBrYmhpdCgpIGZ1bmN0aW9uDQogCWludGVyZmVyZXMgd2l0aCB0aGUgcnVuIHRpbWUgYmVoYXZpb3VyLiAqLw0KIAkvKg0KQEAgLTI2MCw3ICsyMTksOSBAQAogDQogCS8qIFJ1biB0aW1lIHN0YWNrIG92ZXJmbG93IGNoZWNraW5nIGlzIHBlcmZvcm1lZCBpZg0KIAljb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgaXMgZGVmaW5lZCB0byAxIG9yIDIuICBUaGlzIGhvb2sNCi0JZnVuY3Rpb24gaXMgY2FsbGVkIGlmIGEgc3RhY2sgb3ZlcmZsb3cgaXMgZGV0ZWN0ZWQuICovDQorCWZ1bmN0aW9uIGlzIGNhbGxlZCBpZiBhIHN0YWNrIG92ZXJmbG93IGlzIGRldGVjdGVkLiAgVGhpcyBmdW5jdGlvbiBpcw0KKwlwcm92aWRlZCBhcyBhbiBleGFtcGxlIG9ubHkgYXMgc3RhY2sgb3ZlcmZsb3cgY2hlY2tpbmcgZG9lcyBub3QgZnVuY3Rpb24NCisJd2hlbiBydW5uaW5nIHRoZSBGcmVlUlRPUyBXaW5kb3dzIHBvcnQuICovDQogCXZBc3NlcnRDYWxsZWQoIF9fTElORV9fLCBfX0ZJTEVfXyApOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC0yODEsMTUgKzI0MiwyOCBAQAogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KK3ZvaWQgdkFwcGxpY2F0aW9uRGFlbW9uVGFza1N0YXJ0dXBIb29rKCB2b2lkICkNCit7DQorCS8qIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25jZSBvbmx5LCB3aGVuIHRoZSBkYWVtb24gdGFzayBzdGFydHMgdG8NCisJZXhlY3V0ZQkoc29tZXRpbWVzIGNhbGxlZCB0aGUgdGltZXIgdGFzaykuICBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUNCisJYXBwbGljYXRpb24gaW5jbHVkZXMgaW5pdGlhbGlzYXRpb24gY29kZSB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSBleGVjdXRpbmcNCisJYWZ0ZXIgdGhlIHNjaGVkdWxlciBoYXMgYmVlbiBzdGFydGVkLiAqLw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCiB2b2lkIHZBc3NlcnRDYWxsZWQoIHVuc2lnbmVkIGxvbmcgdWxMaW5lLCBjb25zdCBjaGFyICogY29uc3QgcGNGaWxlTmFtZSApDQogew0KIHN0YXRpYyBCYXNlVHlwZV90IHhQcmludGVkID0gcGRGQUxTRTsNCiB2b2xhdGlsZSB1aW50MzJfdCB1bFNldFRvTm9uWmVyb0luRGVidWdnZXJUb0NvbnRpbnVlID0gMDsNCiANCisJLyogQ2FsbGVkIGlmIGFuIGFzc2VydGlvbiBwYXNzZWQgdG8gY29uZmlnQVNTRVJUKCkgZmFpbHMuICBTZWUNCisJaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTEwLmh0bWwjY29uZmlnQVNTRVJUIGZvciBtb3JlIGluZm9ybWF0aW9uLiAqLw0KKw0KIAkvKiBQYXJhbWV0ZXJzIGFyZSBub3QgdXNlZC4gKi8NCiAJKCB2b2lkICkgdWxMaW5lOw0KIAkoIHZvaWQgKSBwY0ZpbGVOYW1lOw0KIA0KKw0KICAJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQogCXsNCiAJCS8qIFN0b3AgdGhlIHRyYWNlIHJlY29yZGluZy4gKi8NCkBAIC0zMzcsMTMgKzMxMSwxNSBAQAogDQogc3RhdGljIHZvaWQgIHBydkluaXRpYWxpc2VIZWFwKCB2b2lkICkNCiB7DQotLyogVGhpcyBkZW1vIHVzZXMgaGVhcF81LmMsIHNvIHN0YXJ0IGJ5IGRlZmluaW5nIHNvbWUgaGVhcCByZWdpb25zLiAgVGhpcyBpcw0KLW9ubHkgZG9uZSB0byBwcm92aWRlIGFuIGV4YW1wbGUgYXMgdGhpcyBkZW1vIGNvdWxkIGVhc2lseSBjcmVhdGUgb25lIGxhcmdlIGhlYXANCi1yZWdpb24gaW5zdGVhZCBvZiBtdWx0aXBsZSBzbWFsbGVyIGhlYXAgcmVnaW9ucyAtIGluIHdoaWNoIGNhc2UgaGVhcF80LmMgd291bGQNCi1iZSB0aGUgbW9yZSBhcHByb3ByaWF0ZSBjaG9pY2UuICBObyBpbml0aWFsaXNhdGlvbiBpcyByZXF1aXJlZCB3aGVuIGhlYXBfNC5jIGlzDQotdXNlZC4gIFRoZSB4SGVhcFJlZ2lvbnMgc3RydWN0dXJlIHJlcXVpcmVzIHRoZSByZWdpb25zIHRvIGJlIGRlZmluZWQgaW4gb3JkZXIsDQotc28gdGhpcyBqdXN0IGNyZWF0ZXMgb25lIGJpZyBhcnJheSwgdGhlbiBwb3B1bGF0ZXMgdGhlIHN0cnVjdHVyZSB3aXRoIG9mZnNldHMNCi1pbnRvIHRoZSBhcnJheSAtIHdpdGggZ2FwcyBpbiBiZXR3ZWVuIGFuZCBtZXNzeSBhbGlnbm1lbnQganVzdCBmb3IgdGVzdA0KKy8qIFRoZSBXaW5kb3dzIGRlbW8gY291bGQgY3JlYXRlIG9uZSBsYXJnZSBoZWFwIHJlZ2lvbiwgaW4gd2hpY2ggY2FzZSBpdCB3b3VsZA0KK2JlIGFwcHJvcHJpYXRlIHRvIHVzZSBoZWFwXzQuICBIb3dldmVyLCBwdXJlbHkgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMsDQoraGVhcF81IGlzIHVzZWQgaW5zdGVhZCwgc28gc3RhcnQgYnkgZGVmaW5pbmcgc29tZSBoZWFwIHJlZ2lvbnMuICBObw0KK2luaXRpYWxpc2F0aW9uIGlzIHJlcXVpcmVkIHdoZW4gYW55IG90aGVyIGhlYXAgaW1wbGVtZW50YXRpb24gaXMgdXNlZC4gIFNlZQ0KK2h0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExMS5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KKw0KK1RoZSB4SGVhcFJlZ2lvbnMgc3RydWN0dXJlIHJlcXVpcmVzIHRoZSByZWdpb25zIHRvIGJlIGRlZmluZWQgaW4gc3RhcnQgYWRkcmVzcw0KK29yZGVyLCBzbyB0aGlzIGp1c3QgY3JlYXRlcyBvbmUgYmlnIGFycmF5LCB0aGVuIHBvcHVsYXRlcyB0aGUgc3RydWN0dXJlIHdpdGgNCitvZmZzZXRzIGludG8gdGhlIGFycmF5IC0gd2l0aCBnYXBzIGluIGJldHdlZW4gYW5kIG1lc3N5IGFsaWdubWVudCBqdXN0IGZvciB0ZXN0DQogcHVycG9zZXMuICovDQogc3RhdGljIHVpbnQ4X3QgdWNIZWFwWyBjb25maWdUT1RBTF9IRUFQX1NJWkUgXTsNCiB2b2xhdGlsZSB1aW50MzJfdCB1bEFkZGl0aW9uYWxPZmZzZXQgPSAxOTsgLyogSnVzdCB0byBwcmV2ZW50ICdjb25kaXRpb24gaXMgYWx3YXlzIHRydWUnIHdhcm5pbmdzIGluIGNvbmZpZ0FTU0VSVCgpLiAqLw0KQEAgLTM2MCw2ICszMzYsOSBAQAogCWFycmF5LiAqLw0KIAljb25maWdBU1NFUlQoICggdWxBZGRpdGlvbmFsT2Zmc2V0ICsgbWFpblJFR0lPTl8xX1NJWkUgKyBtYWluUkVHSU9OXzJfU0laRSArIG1haW5SRUdJT05fM19TSVpFICkgPCBjb25maWdUT1RBTF9IRUFQX1NJWkUgKTsNCiANCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSB1bEFkZGl0aW9uYWxPZmZzZXQ7DQorDQogCXZQb3J0RGVmaW5lSGVhcFJlZ2lvbnMoIHhIZWFwUmVnaW9ucyApOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fYmxpbmt5LmMgYi9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fYmxpbmt5LmMKaW5kZXggNmFmNTJhNC4uNTZhY2VmZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluX2JsaW5reS5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9ibGlua3kuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIE5PVEUgMTogVGhlIFdpbjMyIHBvcnQgaXMgYSBzaW11bGF0aW9uIChvciBpcyB0aGF0IGVtdWxhdGlvbj8pIG9ubHkhICBEbyBub3QNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fZnVsbC5jIGIvRnJlZVJUT1MvRGVtby9XSU4zMi1NaW5nVy9tYWluX2Z1bGwuYwppbmRleCA5N2JkYmY2Li4zMTJlNjdmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dJTjMyLU1pbmdXL21haW5fZnVsbC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV0lOMzItTWluZ1cvbWFpbl9mdWxsLmMKQEAgLTEsNzggKzEsMzcgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBOT1RFIDE6IFRoZSBXaW4zMiBwb3J0IGlzIGEgc2ltdWxhdGlvbiAob3IgaXMgdGhhdCBlbXVsYXRpb24/KSBvbmx5ISAgRG8gbm90DQogICogZXhwZWN0IHRvIGdldCByZWFsIHRpbWUgYmVoYXZpb3VyIGZyb20gdGhlIFdpbjMyIHBvcnQgb3IgdGhpcyBkZW1vDQogICogYXBwbGljYXRpb24uICBJdCBpcyBwcm92aWRlZCBhcyBhIGNvbnZlbmllbnQgZGV2ZWxvcG1lbnQgYW5kIGRlbW9uc3RyYXRpb24NCi0gKiB0ZXN0IGJlZCBvbmx5LiAgVGhpcyB3YXMgdGVzdGVkIHVzaW5nIFdpbmRvd3MgWFAgb24gYSBkdWFsIGNvcmUgbGFwdG9wLg0KKyAqIHRlc3QgYmVkIG9ubHkuDQogICoNCiAgKiBXaW5kb3dzIHdpbGwgbm90IGJlIHJ1bm5pbmcgdGhlIEZyZWVSVE9TIHNpbXVsYXRvciB0aHJlYWRzIGNvbnRpbnVvdXNseSwgc28NCiAgKiB0aGUgdGltaW5nIGluZm9ybWF0aW9uIGluIHRoZSBGcmVlUlRPUytUcmFjZSBsb2dzIGhhdmUgbm8gbWVhbmluZ2Z1bCB1bml0cy4NCkBAIC0xNDIsNiArMTAxLDggQEAKICNpbmNsdWRlICJRdWV1ZVNldFBvbGxpbmcuaCINCiAjaW5jbHVkZSAiYmxvY2t0aW0uaCINCiAjaW5jbHVkZSAiQWJvcnREZWxheS5oIg0KKyNpbmNsdWRlICJNZXNzYWdlQnVmZmVyRGVtby5oIg0KKyNpbmNsdWRlICJTdHJlYW1CdWZmZXJEZW1vLmgiDQogDQogLyogUHJpb3JpdGllcyBhdCB3aGljaCB0aGUgdGFza3MgYXJlIGNyZWF0ZWQuICovDQogI2RlZmluZSBtYWluQ0hFQ0tfVEFTS19QUklPUklUWQkJCSggY29uZmlnTUFYX1BSSU9SSVRJRVMgLSAyICkNCkBAIC0xODMsMTQgKzE0NCwyOSBAQAogc3RhdGljIHZvaWQgcHJ2UGVuZGVkRnVuY3Rpb24oIHZvaWQgKnB2UGFyYW1ldGVyMSwgdWludDMyX3QgdWxQYXJhbWV0ZXIyICk7DQogDQogLyoNCisgKiBwcnZEZW1vbnN0cmF0ZVRpbWVyUXVlcnlGdW5jdGlvbnMoKSBpcyBjYWxsZWQgZnJvbSB0aGUgaWRsZSB0YXNrIGhvb2sNCisgKiBmdW5jdGlvbiB0byBkZW1vbnN0cmF0ZSB0aGUgdXNlIG9mIGZ1bmN0aW9ucyB0aGF0IHF1ZXJ5IGluZm9ybWF0aW9uIGFib3V0IGENCisgKiBzb2Z0d2FyZSB0aW1lci4gIHBydlRlc3RUaW1lckNhbGxiYWNrKCkgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUNCisgKiB0aW1lciBiZWluZyBxdWVyaWVkLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkRlbW9uc3RyYXRlVGltZXJRdWVyeUZ1bmN0aW9ucyggdm9pZCApOw0KK3N0YXRpYyB2b2lkIHBydlRlc3RUaW1lckNhbGxiYWNrKCBUaW1lckhhbmRsZV90IHhUaW1lciApOw0KKw0KKy8qDQogICogQSB0YXNrIHRvIGRlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgdGhlIHhRdWV1ZVNwYWNlc0F2YWlsYWJsZSgpIGZ1bmN0aW9uLg0KICAqLw0KIHN0YXRpYyB2b2lkIHBydkRlbW9RdWV1ZVNwYWNlRnVuY3Rpb25zKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCiANCisvKg0KKyAqIFRhc2tzIHRoYXQgZW5zdXJlIGluZGVmaW5pdGUgZGVsYXlzIGFyZSB0cnVseSBpbmRlZmluaXRlLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydlBlcm1hbmVudGx5QmxvY2tpbmdTZW1hcGhvcmVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKTsNCitzdGF0aWMgdm9pZCBwcnZQZXJtYW5lbnRseUJsb2NraW5nTm90aWZpY2F0aW9uVGFzayggdm9pZCAqcHZQYXJhbWV0ZXJzICk7DQorDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogLyogVGhlIHZhcmlhYmxlIGludG8gd2hpY2ggZXJyb3IgbWVzc2FnZXMgYXJlIGxhdGNoZWQuICovDQotc3RhdGljIGNoYXIgKnBjU3RhdHVzTWVzc2FnZSA9ICJPSyI7DQorc3RhdGljIGNoYXIgKnBjU3RhdHVzTWVzc2FnZSA9ICJObyBlcnJvcnMiOw0KIA0KIC8qIFRoaXMgc2VtYXBob3JlIGlzIGNyZWF0ZWQgcHVyZWx5IHRvIHRlc3QgdXNpbmcgdGhlIHZTZW1hcGhvcmVEZWxldGUoKSBhbmQNCiBzZW1hcGhvcmUgdHJhY2luZyBBUEkgZnVuY3Rpb25zLiAgSXQgaGFzIG5vIG90aGVyIHB1cnBvc2UuICovDQpAQCAtMjIzLDYgKzE5OSwxMiBAQAogCXZTdGFydFF1ZXVlU2V0UG9sbGluZ1Rhc2soKTsNCiAJdkNyZWF0ZUJsb2NrVGltZVRhc2tzKCk7DQogCXZDcmVhdGVBYm9ydERlbGF5VGFza3MoKTsNCisJeFRhc2tDcmVhdGUoIHBydkRlbW9RdWV1ZVNwYWNlRnVuY3Rpb25zLCAiUVNwYWNlIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZQZXJtYW5lbnRseUJsb2NraW5nU2VtYXBob3JlVGFzaywgIkJsb2NrU2VtIiwgY29uZmlnTUlOSU1BTF9TVEFDS19TSVpFLCBOVUxMLCB0c2tJRExFX1BSSU9SSVRZLCBOVUxMICk7DQorCXhUYXNrQ3JlYXRlKCBwcnZQZXJtYW5lbnRseUJsb2NraW5nTm90aWZpY2F0aW9uVGFzaywgIkJsb2NrTm90aSIsIGNvbmZpZ01JTklNQUxfU1RBQ0tfU0laRSwgTlVMTCwgdHNrSURMRV9QUklPUklUWSwgTlVMTCApOw0KKw0KKwl2U3RhcnRNZXNzYWdlQnVmZmVyVGFza3MoKTsNCisJdlN0YXJ0U3RyZWFtQnVmZmVyVGFza3MoKTsNCiANCiAJI2lmKCBjb25maWdVU0VfUFJFRU1QVElPTiAhPSAwICApDQogCXsNCkBAIC0yNzcsMTIgKzI1OSwxOSBAQAogCQl9DQogCQkjZW5kaWYNCiANCi0JCWlmKCB4QXJlVGFza05vdGlmaWNhdGlvblRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCWlmKCB4QXJlU3RyZWFtQnVmZmVyVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KKwkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFN0cmVhbUJ1ZmZlciI7DQorCQl9DQorCQllbHNlIGlmKCB4QXJlTWVzc2FnZUJ1ZmZlclRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCXsNCisJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBNZXNzYWdlQnVmZmVyIjsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVUYXNrTm90aWZpY2F0aW9uVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIE5vdGlmaWNhdGlvbiI7DQogCQl9DQotDQotCQlpZiggeEFyZUludGVycnVwdFNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCWVsc2UgaWYoIHhBcmVJbnRlcnJ1cHRTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQogCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBJbnRTZW0iOw0KIAkJfQ0KQEAgLTI5MCwxMCArMjc5LDEwIEBACiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEV2ZW50R3JvdXAiOw0KIAkJfQ0KLQkgICAgZWxzZSBpZiggeEFyZUludGVnZXJNYXRoc1Rhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkgICAgew0KKwkJZWxzZSBpZiggeEFyZUludGVnZXJNYXRoc1Rhc2tTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogSW50TWF0aCI7DQotCSAgICB9DQorCQl9DQogCQllbHNlIGlmKCB4QXJlR2VuZXJpY1F1ZXVlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KIAkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogR2VuUXVldWUiOw0KQEAgLTMwNiwyMCArMjk1LDIwIEBACiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEJsb2NrUXVldWUiOw0KIAkJfQ0KLQkgICAgZWxzZSBpZiggeEFyZVNlbWFwaG9yZVRhc2tzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JICAgIHsNCisJCWVsc2UgaWYoIHhBcmVTZW1hcGhvcmVUYXNrc1N0aWxsUnVubmluZygpICE9IHBkVFJVRSApDQorCQl7DQogCQkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiBTZW1UZXN0IjsNCi0JICAgIH0NCi0JICAgIGVsc2UgaWYoIHhBcmVQb2xsaW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCi0JICAgIHsNCisJCX0NCisJCWVsc2UgaWYoIHhBcmVQb2xsaW5nUXVldWVzU3RpbGxSdW5uaW5nKCkgIT0gcGRUUlVFICkNCisJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IFBvbGxRdWV1ZSI7DQotCSAgICB9DQorCQl9DQogCQllbHNlIGlmKCB4QXJlTWF0aHNUYXNrU3RpbGxSdW5uaW5nKCkgIT0gcGRQQVNTICkNCiAJCXsNCiAJCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6IEZsb3AiOw0KIAkJfQ0KLQkgICAgZWxzZSBpZiggeEFyZVJlY3Vyc2l2ZU11dGV4VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KLQkgICAgew0KKwkJZWxzZSBpZiggeEFyZVJlY3Vyc2l2ZU11dGV4VGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KKwkJew0KIAkJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogUmVjTXV0ZXgiOw0KIAkJfQ0KIAkJZWxzZSBpZiggeEFyZUNvdW50aW5nU2VtYXBob3JlVGFza3NTdGlsbFJ1bm5pbmcoKSAhPSBwZFRSVUUgKQ0KQEAgLTM5OSwxOSArMzg4LDM0IEBACiAJZGVtb25zdHJhdGVkIGJ5IGFueSBvZiB0aGUgc3RhbmRhcmQgZGVtbyB0YXNrcy4gKi8NCiAJcHJ2RGVtb25zdHJhdGVQZW5kaW5nRnVuY3Rpb25DYWxsKCk7DQogDQorCS8qIERlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgZnVuY3Rpb25zIHRoYXQgcXVlcnkgaW5mb3JtYXRpb24gYWJvdXQgYSBzb2Z0d2FyZQ0KKwl0aW1lci4gKi8NCisJcHJ2RGVtb25zdHJhdGVUaW1lclF1ZXJ5RnVuY3Rpb25zKCk7DQorDQorDQogCS8qIElmIHhNdXRleFRvRGVsZXRlIGhhcyBub3QgYWxyZWFkeSBiZWVuIGRlbGV0ZWQsIHRoZW4gZGVsZXRlIGl0IG5vdy4NCiAJVGhpcyBpcyBkb25lIHB1cmVseSB0byBkZW1vbnN0cmF0ZSB0aGUgdXNlIG9mLCBhbmQgdGVzdCwgdGhlDQogCXZTZW1hcGhvcmVEZWxldGUoKSBtYWNyby4gIENhcmUgbXVzdCBiZSB0YWtlbiBub3QgdG8gZGVsZXRlIGEgc2VtYXBob3JlDQogCXRoYXQgaGFzIHRhc2tzIGJsb2NrZWQgb24gaXQuICovDQogCWlmKCB4TXV0ZXhUb0RlbGV0ZSAhPSBOVUxMICkNCiAJew0KKwkJLyogRm9yIHRlc3QgcHVycG9zZXMsIGFkZCB0aGUgbXV0ZXggdG8gdGhlIHJlZ2lzdHJ5LCB0aGVuIHJlbW92ZSBpdA0KKwkJYWdhaW4sIGJlZm9yZSBpdCBpcyBkZWxldGVkIC0gY2hlY2tpbmcgaXRzIG5hbWUgaXMgYXMgZXhwZWN0ZWQgYmVmb3JlDQorCQlhbmQgYWZ0ZXIgdGhlIGFzc2VydGlvbiBpbnRvIHRoZSByZWdpc3RyeSBhbmQgaXRzIHJlbW92YWwgZnJvbSB0aGUNCisJCXJlZ2lzdHJ5LiAqLw0KKwkJY29uZmlnQVNTRVJUKCBwY1F1ZXVlR2V0TmFtZSggeE11dGV4VG9EZWxldGUgKSA9PSBOVUxMICk7DQorCQl2UXVldWVBZGRUb1JlZ2lzdHJ5KCB4TXV0ZXhUb0RlbGV0ZSwgIlRlc3RfTXV0ZXgiICk7DQorCQljb25maWdBU1NFUlQoIHN0cmNtcCggcGNRdWV1ZUdldE5hbWUoIHhNdXRleFRvRGVsZXRlICksICJUZXN0X011dGV4IiApID09IDAgKTsNCisJCXZRdWV1ZVVucmVnaXN0ZXJRdWV1ZSggeE11dGV4VG9EZWxldGUgKTsNCisJCWNvbmZpZ0FTU0VSVCggcGNRdWV1ZUdldE5hbWUoIHhNdXRleFRvRGVsZXRlICkgPT0gTlVMTCApOw0KKw0KIAkJdlNlbWFwaG9yZURlbGV0ZSggeE11dGV4VG9EZWxldGUgKTsNCiAJCXhNdXRleFRvRGVsZXRlID0gTlVMTDsNCiAJfQ0KIA0KIAkvKiBFeGVyY2lzZSBoZWFwXzUgYSBiaXQuICBUaGUgbWFsbG9jIGZhaWxlZCBob29rIHdpbGwgdHJhcCBmYWlsZWQNCiAJYWxsb2NhdGlvbnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byB0ZXN0IGhlcmUuICovDQotCXB2QWxsb2NhdGVkID0gcHZQb3J0TWFsbG9jKCAoIHJhbmQoKSAlIDEwMCApICsgMSApOw0KKwlwdkFsbG9jYXRlZCA9IHB2UG9ydE1hbGxvYyggKCByYW5kKCkgJSA1MDAgKSArIDEgKTsNCiAJdlBvcnRGcmVlKCBwdkFsbG9jYXRlZCApOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC00MTksNiArNDIzLDggQEAKIC8qIENhbGxlZCBieSB2QXBwbGljYXRpb25UaWNrSG9vaygpLCB3aGljaCBpcyBkZWZpbmVkIGluIG1haW4uYy4gKi8NCiB2b2lkIHZGdWxsRGVtb1RpY2tIb29rRnVuY3Rpb24oIHZvaWQgKQ0KIHsNCitUYXNrSGFuZGxlX3QgeFRpbWVyVGFzazsNCisNCiAJLyogQ2FsbCB0aGUgcGVyaW9kaWMgdGltZXIgdGVzdCwgd2hpY2ggdGVzdHMgdGhlIHRpbWVyIEFQSSBmdW5jdGlvbnMgdGhhdA0KIAljYW4gYmUgY2FsbGVkIGZyb20gYW4gSVNSLiAqLw0KIAkjaWYoIGNvbmZpZ1VTRV9QUkVFTVBUSU9OICE9IDAgKQ0KQEAgLTQ0NCw2ICs0NTAsMTUgQEAKIA0KIAkvKiBFeGVyY2lzZSB1c2luZyB0YXNrIG5vdGlmaWNhdGlvbnMgZnJvbSBhbiBpbnRlcnJ1cHQuICovDQogCXhOb3RpZnlUYXNrRnJvbUlTUigpOw0KKw0KKwkvKiBXcml0ZXMgdG8gc3RyZWFtIGJ1ZmZlciBieXRlIGJ5IGJ5dGUgdG8gdGVzdCB0aGUgc3RyZWFtIGJ1ZmZlciB0cmlnZ2VyDQorCWxldmVsIGZ1bmN0aW9uYWxpdHkuICovDQorCXZQZXJpb2RpY1N0cmVhbUJ1ZmZlclByb2Nlc3NpbmcoKTsNCisNCisJLyogRm9yIGNvZGUgY292ZXJhZ2UgcHVycG9zZXMuICovDQorCXhUaW1lclRhc2sgPSB4VGltZXJHZXRUaW1lckRhZW1vblRhc2tIYW5kbGUoKTsNCisJY29uZmlnQVNTRVJUKCB1eFRhc2tQcmlvcml0eUdldEZyb21JU1IoIHhUaW1lclRhc2sgKSA9PSBjb25maWdUSU1FUl9UQVNLX1BSSU9SSVRZICk7DQorCSggdm9pZCApIHhUaW1lclRhc2s7IC8qIEluIGNhc2UgY29uZmlnQVNTRVJUKCkgaXMgbm90IGRlZmluZWQuICovDQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KQEAgLTQ2MSw2ICs0NzYsNTcgQEAKIAkvKiBSZW1lbWJlciB0aGUgcGFyYW1ldGVycyBmb3IgdGhlIG5leHQgdGltZSB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiAqLw0KIAl1bExhc3RQYXJhbWV0ZXIxID0gdWxQYXJhbWV0ZXIxOw0KIAl1bExhc3RQYXJhbWV0ZXIyID0gdWxQYXJhbWV0ZXIyOw0KKw0KKwkvKiBSZW1vdmUgY29tcGlsZXIgd2FybmluZ3MgaW4gY2FzZSBjb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgdWxMYXN0UGFyYW1ldGVyMTsNCisJKCB2b2lkICkgdWxMYXN0UGFyYW1ldGVyMjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2VGVzdFRpbWVyQ2FsbGJhY2soIFRpbWVySGFuZGxlX3QgeFRpbWVyICkNCit7DQorCS8qIFRoaXMgaXMgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgdGltZXIgYWNjZXNzZWQgYnkNCisJcHJ2RGVtb25zdHJhdGVUaW1lclF1ZXJ5RnVuY3Rpb25zKCkuICBUaGUgY2FsbGJhY2sgZG9lcyBub3QgZG8gYW55dGhpbmcuICovDQorCSggdm9pZCApIHhUaW1lcjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2RGVtb25zdHJhdGVUaW1lclF1ZXJ5RnVuY3Rpb25zKCB2b2lkICkNCit7DQorc3RhdGljIFRpbWVySGFuZGxlX3QgeFRpbWVyID0gTlVMTDsNCitjb25zdCBjaGFyICpwY1RpbWVyTmFtZSA9ICJUZXN0VGltZXIiOw0KK3ZvbGF0aWxlIFRpY2tUeXBlX3QgeEV4cGlyeVRpbWU7DQorY29uc3QgVGlja1R5cGVfdCB4RG9udEJsb2NrID0gMDsNCisNCisJaWYoIHhUaW1lciA9PSBOVUxMICkNCisJew0KKwkJeFRpbWVyID0geFRpbWVyQ3JlYXRlKCBwY1RpbWVyTmFtZSwgcG9ydE1BWF9ERUxBWSwgcGRUUlVFLCBOVUxMLCBwcnZUZXN0VGltZXJDYWxsYmFjayApOw0KKw0KKwkJaWYoIHhUaW1lciAhPSBOVUxMICkNCisJCXsNCisJCQkvKiBDYWxsZWQgZnJvbSB0aGUgaWRsZSB0YXNrIHNvIGEgYmxvY2sgdGltZSBtdXN0IG5vdCBiZQ0KKwkJCXNwZWNpZmllZC4gKi8NCisJCQl4VGltZXJTdGFydCggeFRpbWVyLCB4RG9udEJsb2NrICk7DQorCQl9DQorCX0NCisNCisJaWYoIHhUaW1lciAhPSBOVUxMICkNCisJew0KKwkJLyogRGVtb25zdHJhdGUgcXVlcnlpbmcgYSB0aW1lcidzIG5hbWUuICovDQorCQljb25maWdBU1NFUlQoIHN0cmNtcCggcGNUaW1lckdldE5hbWUoIHhUaW1lciApLCBwY1RpbWVyTmFtZSApID09IDAgKTsNCisNCisJCS8qIERlbW9uc3RyYXRlIHF1ZXJ5aW5nIGEgdGltZXIncyBwZXJpb2QuICovDQorCQljb25maWdBU1NFUlQoIHhUaW1lckdldFBlcmlvZCggeFRpbWVyICkgPT0gcG9ydE1BWF9ERUxBWSApOw0KKw0KKwkJLyogRGVtb25zdHJhdGUgcXVlcnlpbmcgYSB0aW1lcidzIG5leHQgZXhwaXJ5IHRpbWUsIGFsdGhvdWdoIG5vdGhpbmcgaXMNCisJCWRvbmUgd2l0aCB0aGUgcmV0dXJuZWQgdmFsdWUuICBOb3RlIGlmIHRoZSBleHBpcnkgdGltZSBpcyBsZXNzIHRoYW4gdGhlDQorCQltYXhpbXVtIHRpY2sgY291bnQgdGhlbiB0aGUgZXhwaXJ5IHRpbWUgaGFzIG92ZXJmbG93ZWQgZnJvbSB0aGUgY3VycmVudA0KKwkJdGltZS4gIEluIHRoaXMgY2FzZSB0aGUgZXhwaXJ5IHRpbWUgd2FzIHNldCB0byBwb3J0TUFYX0RFTEFZLCBzbyBpdCBpcw0KKwkJZXhwZWN0ZWQgdG8gYmUgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHRpbWUgdW50aWwgdGhlIGN1cnJlbnQgdGltZSBoYXMNCisJCWl0c2VsZiBvdmVyZmxvd2VkLiAqLw0KKwkJeEV4cGlyeVRpbWUgPSB4VGltZXJHZXRFeHBpcnlUaW1lKCB4VGltZXIgKTsNCisJCSggdm9pZCApIHhFeHBpcnlUaW1lOw0KKwl9DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KQEAgLTQ4NSw2ICs1NTEsNyBAQAogY2hhciAqcGNUYXNrTmFtZTsNCiBzdGF0aWMgcG9ydEJBU0VfVFlQRSB4UGVyZm9ybWVkT25lU2hvdFRlc3RzID0gcGRGQUxTRTsNCiBUYXNrSGFuZGxlX3QgeFRlc3RUYXNrOw0KK1Rhc2tTdGF0dXNfdCB4VGFza0luZm87DQogDQogCS8qIERlbW9uc3RyYXRlIHRoZSB1c2Ugb2YgdGhlIHhUaW1lckdldFRpbWVyRGFlbW9uVGFza0hhbmRsZSgpIGFuZA0KIAl4VGFza0dldElkbGVUYXNrSGFuZGxlKCkgZnVuY3Rpb25zLiAgQWxzbyB0cnkgdXNpbmcgdGhlIGZ1bmN0aW9uIHRoYXQgc2V0cw0KQEAgLTQ5OSw2ICs1NjYsMTggQEAKIAkJcGNTdGF0dXNNZXNzYWdlID0gIkVycm9yOiAgUmV0dXJuZWQgaWRsZSB0YXNrIGhhbmRsZSB3YXMgaW5jb3JyZWN0IjsNCiAJfQ0KIA0KKwkvKiBDaGVjayB0aGUgc2FtZSBoYW5kbGUgaXMgb2J0YWluZWQgdXNpbmcgdGhlIGlkbGUgdGFzaydzIG5hbWUuICBGaXJzdCB0cnkNCisJd2l0aCB0aGUgd3JvbmcgbmFtZSwgdGhlbiB0aGUgcmlnaHQgbmFtZS4gKi8NCisJaWYoIHhUYXNrR2V0SGFuZGxlKCAiSWRsZSIgKSA9PSB4SWRsZVRhc2tIYW5kbGUgKQ0KKwl7DQorCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBSZXR1cm5lZCBoYW5kbGUgZm9yIG5hbWUgSWRsZSB3YXMgaW5jb3JyZWN0IjsNCisJfQ0KKw0KKwlpZiggeFRhc2tHZXRIYW5kbGUoICJJRExFIiApICE9IHhJZGxlVGFza0hhbmRsZSApDQorCXsNCisJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFJldHVybmVkIGhhbmRsZSBmb3IgbmFtZSBJZGxlIHdhcyBpbmNvcnJlY3QiOw0KKwl9DQorDQogCS8qIENoZWNrIHRoZSB0aW1lciB0YXNrIGhhbmRsZSB3YXMgcmV0dXJuZWQgY29ycmVjdGx5LiAqLw0KIAlwY1Rhc2tOYW1lID0gcGNUYXNrR2V0TmFtZSggeFRpbWVyVGFza0hhbmRsZSApOw0KIAlpZiggc3RyY21wKCBwY1Rhc2tOYW1lLCAiVG1yIFN2YyIgKSAhPSAwICkNCkBAIC01MDYsNiArNTg1LDExIEBACiAJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFJldHVybmVkIHRpbWVyIHRhc2sgaGFuZGxlIHdhcyBpbmNvcnJlY3QiOw0KIAl9DQogDQorCWlmKCB4VGFza0dldEhhbmRsZSggIlRtciBTdmMiICkgIT0geFRpbWVyVGFza0hhbmRsZSApDQorCXsNCisJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIFJldHVybmVkIGhhbmRsZSBmb3IgbmFtZSBUbXIgU3ZjIHdhcyBpbmNvcnJlY3QiOw0KKwl9DQorDQogCS8qIFRoaXMgdGFzayBpcyBydW5uaW5nLCBtYWtlIHN1cmUgaXQncyBzdGF0ZSBpcyByZXR1cm5lZCBhcyBydW5uaW5nLiAqLw0KIAlpZiggZVRhc2tTdGF0ZUdldCggeElkbGVUYXNrSGFuZGxlICkgIT0gZVJ1bm5pbmcgKQ0KIAl7DQpAQCAtNTE4LDYgKzYwMiwyMSBAQAogCQlwY1N0YXR1c01lc3NhZ2UgPSAiRXJyb3I6ICBSZXR1cm5lZCB0aW1lciB0YXNrIHN0YXRlIHdhcyBpbmNvcnJlY3QiOw0KIAl9DQogDQorCS8qIEFsc28gd2l0aCB0aGUgdlRhc2tHZXRJbmZvKCkgZnVuY3Rpb24uICovDQorCXZUYXNrR2V0SW5mbyggeFRpbWVyVGFza0hhbmRsZSwgLyogVGhlIHRhc2sgYmVpbmcgcXVlcmllZC4gKi8NCisJCQkJCSAgJnhUYXNrSW5mbywJCS8qIFRoZSBzdHJ1Y3R1cmUgaW50byB3aGljaCBpbmZvcm1hdGlvbiBvbiB0aGUgdGFzayB3aWxsIGJlIHdyaXR0ZW4uICovDQorCQkJCQkgIHBkVFJVRSwJCQkvKiBJbmNsdWRlIHRoZSB0YXNrJ3MgaGlnaCB3YXRlcm1hcmsgaW4gdGhlIHN0cnVjdHVyZS4gKi8NCisJCQkJCSAgZUludmFsaWQgKTsJCS8qIEluY2x1ZGUgdGhlIHRhc2sgc3RhdGUgaW4gdGhlIHN0cnVjdHVyZS4gKi8NCisNCisJLyogQ2hlY2sgdGhlIGluZm9ybWF0aW9uIHJldHVybmVkIGJ5IHZUYXNrR2V0SW5mbygpIGlzIGFzIGV4cGVjdGVkLiAqLw0KKwlpZiggKCB4VGFza0luZm8uZUN1cnJlbnRTdGF0ZSAhPSBlQmxvY2tlZCApCQkJCQkJIHx8DQorCQkoIHN0cmNtcCggeFRhc2tJbmZvLnBjVGFza05hbWUsICJUbXIgU3ZjIiApICE9IDAgKQkJCSB8fA0KKwkJKCB4VGFza0luZm8udXhDdXJyZW50UHJpb3JpdHkgIT0gY29uZmlnVElNRVJfVEFTS19QUklPUklUWSApIHx8DQorCQkoIHhUYXNrSW5mby54SGFuZGxlICE9IHhUaW1lclRhc2tIYW5kbGUgKSApDQorCXsNCisJCXBjU3RhdHVzTWVzc2FnZSA9ICJFcnJvcjogIHZUYXNrR2V0SW5mbygpIHJldHVybmVkIGluY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGltZXIgdGFzayI7DQorCX0NCisNCiAJLyogT3RoZXIgdGVzdHMgdGhhdCBzaG91bGQgb25seSBiZSBwZXJmb3JtZWQgb25jZSBmb2xsb3cuICBUaGUgdGVzdCB0YXNrDQogCWlzIG5vdCBjcmVhdGVkIG9uIGVhY2ggaXRlcmF0aW9uIGJlY2F1c2UgdG8gZG8gc28gd291bGQgY2F1c2UgdGhlIGRlYXRoDQogCXRhc2sgdG8gcmVwb3J0IGFuIGVycm9yICh0b28gbWFueSB0YXNrcyBydW5uaW5nKS4gKi8NCkBAIC02MjEsNSArNzIwLDQyIEBACiAJCSNlbmRpZg0KIAl9DQogfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlBlcm1hbmVudGx5QmxvY2tpbmdTZW1hcGhvcmVUYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCitTZW1hcGhvcmVIYW5kbGVfdCB4U2VtYXBob3JlOw0KKw0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgdW51c2VkIHBhcmFtZXRlciBpbiB0aGUgY2FzZSB0aGF0DQorCWNvbmZpZ0FTU0VSVCgpIGlzIG5vdCBkZWZpbmVkLiAqLw0KKwkoIHZvaWQgKSBwdlBhcmFtZXRlcnM7DQorDQorCS8qIFRoaXMgdGFzayBzaG91bGQgYmxvY2sgb24gYSBzZW1hcGhvcmUsIGFuZCBuZXZlciByZXR1cm4uICovDQorCXhTZW1hcGhvcmUgPSB4U2VtYXBob3JlQ3JlYXRlQmluYXJ5KCk7DQorCWNvbmZpZ0FTU0VSVCggeFNlbWFwaG9yZSApOw0KKw0KKwl4U2VtYXBob3JlVGFrZSggeFNlbWFwaG9yZSwgcG9ydE1BWF9ERUxBWSApOw0KKw0KKwkvKiBUaGUgYWJvdmUgeFNlbWFwaG9yZVRha2UoKSBjYWxsIHNob3VsZCBuZXZlciByZXR1cm4sIGZvcmNlIGFuIGFzc2VydCBpZg0KKwlpdCBkb2VzLiAqLw0KKwljb25maWdBU1NFUlQoIHB2UGFyYW1ldGVycyAhPSBOVUxMICk7DQorCXZUYXNrRGVsZXRlKCBOVUxMICk7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyB2b2lkIHBydlBlcm1hbmVudGx5QmxvY2tpbmdOb3RpZmljYXRpb25UYXNrKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK3sNCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwYXJhbWV0ZXIgaW4gdGhlIGNhc2UgdGhhdA0KKwljb25maWdBU1NFUlQoKSBpcyBub3QgZGVmaW5lZC4gKi8NCisJKCB2b2lkICkgcHZQYXJhbWV0ZXJzOw0KKw0KKwkvKiBUaGlzIHRhc2sgc2hvdWxkIGJsb2NrIG9uIGEgdGFzayBub3RpZmljYXRpb24sIGFuZCBuZXZlciByZXR1cm4uICovDQorCXVsVGFza05vdGlmeVRha2UoIHBkVFJVRSwgcG9ydE1BWF9ERUxBWSApOw0KKw0KKwkvKiBUaGUgYWJvdmUgdWxUYXNrTm90aWZ5VGFrZSgpIGNhbGwgc2hvdWxkIG5ldmVyIHJldHVybiwgZm9yY2UgYW4gYXNzZXJ0DQorCWlmIGl0IGRvZXMuICovDQorCWNvbmZpZ0FTU0VSVCggcHZQYXJhbWV0ZXJzICE9IE5VTEwgKTsNCisJdlRhc2tEZWxldGUoIE5VTEwgKTsNCit9DQogDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGQxYThhYzcuLjA4MzU0NTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9IVFRQX1NlcnYuYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvSFRUUF9TZXJ2LmMKaW5kZXggMzg4MWQxNi4uMjY1ZDY2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9IVFRQX1NlcnYuYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9IVFRQX1NlcnYuaAppbmRleCAwN2M4ZDQ5Li5kNDgxNWFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L0hUVFBfU2Vydi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvSFRUUF9TZXJ2LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSFRUUF9IDQogI2RlZmluZSBIVFRQX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L01ha2VmaWxlIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9NYWtlZmlsZQppbmRleCAyYmRjZjEwLi4zMTk5YTgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L01ha2VmaWxlCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvTWFrZWZpbGUKQEAgLTEsNTUgKzEsMzAgQEAKICMvKg0KLSMgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSMJDQotIw0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0jICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotIyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotIyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSMgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0jICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotIyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSMgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIw0KLSMNCi0jICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotIw0KLSMgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSMgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotIyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotIyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0jICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotIyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSMgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotIyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSMgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSMgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0jICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0jICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0jICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotIyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0jDQotIyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0jDQotIyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0jICAgIGNvbnRhY3QgZGV0YWlscy4NCi0jDQotIyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSMgICAgY3JpdGljYWwgc3lzdGVtcy4NCi0jDQotIyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotIyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSMqLw0KKyMgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyMgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIyAqDQorIyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisjICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisjICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyMgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyMgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorIyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyMgKg0KKyMgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisjICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisjICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyMgKg0KKyMgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyMgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyMgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisjICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorIyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorIyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorIyAqDQorIyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorIyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyMgKg0KKyMgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisjICovDQogDQogDQogQ0M9YXJtLWVsZi1nY2MNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5jIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1AuYwppbmRleCA1ZGM2ODkzLi5jZTMzYTYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMy4yLjMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1AuaAppbmRleCAwZWYwMzZjLi43ODZiNjhkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUC5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVENQX0gNCiAjZGVmaW5lIFRDUF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1BJU1IuYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvVENQSVNSLmMKaW5kZXggYzNhMmNhZS4uMmY1ZDNhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9UQ1BJU1IuYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L1RDUElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZSBmaWxlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2h0bWxfcGFnZXMuaCBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaHRtbF9wYWdlcy5oCmluZGV4IDBmODRiYjguLmQ1NDk3ZWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaHRtbF9wYWdlcy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaHRtbF9wYWdlcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEhUTUxfUEFHRVNfSA0KICNkZWZpbmUgSFRNTF9QQUdFU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmMuYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjLmMKaW5kZXggMDNhNzlkOS4uZDcyNjI0YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmMuYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmMuaAppbmRleCA3YzgyMDAzLi44N2FiMmZhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyYy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSTJDX0gNCiAjZGVmaW5lIEkyQ19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmNJU1IuYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvaTJjSVNSLmMKaW5kZXggYmQwMzliYy4uNmU2OTQ0ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19HQ0NfQVJNNy9pMmNJU1IuYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L2kyY0lTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX0dDQ19BUk03L21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvbWFpbi5jCmluZGV4IDk1ZjgxNDQuLjk3MTQ3NzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fR0NDX0FSTTcvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlOT1RFIDogVGFza3MgcnVuIGluIHN5c3RlbSBtb2RlIGFuZCB0aGUgc2NoZWR1bGVyIHJ1bnMgaW4gU3VwZXJ2aXNvciBtb2RlLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvRnJlZVJUT1NDb25maWcuaAppbmRleCBlMmI5OTgxLi4zYmQ5NWNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvSFRUUFRhc2suYyBiL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvSFRUUFRhc2suYwppbmRleCBiMDVlOTk4Li5jNDhmNjk0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0hUVFBUYXNrLmMKKysrIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIFZlcnkgc2ltcGxlIHRhc2sgdGhhdCByZXNwb25kcyB3aXRoIGEgc2luZ2xlIFdFQiBwYWdlIHRvIGh0dHAgcmVxdWVzdHMuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5oIGIvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9IVFRQVGFzay5oCmluZGV4IDM5NWJiYTUuLjFiZTAzNjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vV2l6TkVUX0RFTU9fVEVSTl8xODYvSFRUUFRhc2suaAorKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L0hUVFBUYXNrLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgSFRUUF9UQVNLX0gNCiAjZGVmaW5lIEhUVFBfVEFTS19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9tYWluLmMgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L21haW4uYwppbmRleCAwNGY2NGJhLi45MjNmMmM4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L21haW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBDcmVhdGVzIGFsbCB0aGUgZGVtbyBhcHBsaWNhdGlvbiB0YXNrcyB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgSW4gDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9XaXpORVRfREVNT19URVJOXzE4Ni9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L3NlcmlhbC9zZXJpYWwuYwppbmRleCBiYWYwZTdlLi4zNjEzMzkzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL1dpek5FVF9ERU1PX1RFUk5fMTg2L3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvRnJlZVJUT1NDb25maWcuaAppbmRleCA0NjRmNThiLi44N2E2MDFmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IDAzNjA4NDQuLjdmMDhkZDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmMgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL2xjZC5jCmluZGV4IDU5MjM5NDYuLjc2MGNjMzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmMKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmggYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL2xjZC5oCmluZGV4IDQ0OTVmOWUuLjBhNDY3YTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbGNkLmgKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9sY2QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBMQ0RfSU5DX0gNCiAjZGVmaW5lIExDRF9JTkNfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9tYWluLmMKaW5kZXggZWJlYjcyYS4uM2JiZjZhZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9tYWluLmMKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3NlcmlhbC9zZXJpYWwuYwppbmRleCBmYWQ3Njg4Li42MGU4ODc4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3NlcmlhbC9zZXJpYWwuYworKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvdGltZXJ0ZXN0LmMgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3RpbWVydGVzdC5jCmluZGV4IDI2MmM3OTMuLjI5NzdmMTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvdGltZXJ0ZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogSGlnaCBzcGVlZCB0aW1lciB0ZXN0IGFzIGRlc2NyaWJlZCBpbiBtYWluLmMuICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuaCBiL0ZyZWVSVE9TL0RlbW8vZHNQSUNfTVBMQUIvdGltZXJ0ZXN0LmgKaW5kZXggY2Q0NTc5ZC4uMzAzM2YzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9kc1BJQ19NUExBQi90aW1lcnRlc3QuaAorKysgYi9GcmVlUlRPUy9EZW1vL2RzUElDX01QTEFCL3RpbWVydGVzdC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFRJTUVSX1RFU1RfSA0KICNkZWZpbmUgVElNRVJfVEVTVF9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvQmFzaWNXRUIuYyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0Jhc2ljV0VCLmMKaW5kZXggYTRmOTVkNi4uZmYwNjM5ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvQmFzaWNXRUIuYworKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlJbXBsZW1lbnRzIGEgc2ltcGxpc3RpYyBXRUIgc2VydmVyLiAgRXZlcnkgdGltZSBhIGNvbm5lY3Rpb24gaXMgbWFkZSBhbmQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5oIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvQmFzaWNXRUIuaAppbmRleCAxY2NmNjZkLi5mNTkxZTg0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9CYXNpY1dFQi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0Jhc2ljV0VCLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgQkFTSUNfV0VCX1NFUlZFUl9IDQogI2RlZmluZSBCQVNJQ19XRUJfU0VSVkVSX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUMuYwppbmRleCA3MjY4YTY5Li4zMTAzODJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogSW50ZXJydXB0IGRyaXZlbiBkcml2ZXIgZm9yIHRoZSBFTUFDIHBlcmlwaGVyYWwuICBUaGlzIGRyaXZlciBpcyBub3QNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5oIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUMuaAppbmRleCBmOTJlYmExLi5iMGVkMGIzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9FTUFDL1NBTTdfRU1BQy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYzLjIuNA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0VNQUMvU0FNN19FTUFDX0lTUi5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUNfSVNSLmMKaW5kZXggOWZlNjAxNS4uMTJlODZlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUNfSVNSLmMKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRU1BQy9TQU03X0VNQUNfSVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGNkZDg3NjkuLmQ2NjU5ZGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L0ZyZWVSVE9TQ29uZmlnLmgKKysrIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1BhclRlc3QvUGFyVGVzdC5jCmluZGV4IGUwNjY0OGYuLjg0MTJkZjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQi1DREMuYyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0ItQ0RDLmMKaW5kZXggYzRhM2Y4MS4uYTRiYTBlYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQi1DREMuYworKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlVU0IgQ29tbXVuaWNhdGlvbnMgRGV2aWNlIENsYXNzIGRyaXZlci4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5oIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQi1DREMuaAppbmRleCA0YjIxNDE4Li5hNzQ1Yzk0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCLUNEQy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0ItQ0RDLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgVVNCX0NEQ19IDQogI2RlZmluZSBVU0JfQ0RDX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCSXNyLmMgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvVVNCSXNyLmMKaW5kZXggOWY2MmE1Yi4uOWM3NTU0MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL1VTQklzci5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi9VU0JJc3IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL2Rlc2NyaXB0b3JzLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvZGVzY3JpcHRvcnMuaAppbmRleCBmODQ4MDljLi44YjQ4MzZlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvZGVzY3JpcHRvcnMuaAorKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvZGVzY3JpcHRvcnMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJLSBERVNDUklQVE9SIERFRklOSVRJT05TIC0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvdXNiLmggYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9VU0IvdXNiLmgKaW5kZXggMDRhNWZiYi4uY2E4OGEyNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvVVNCL3VzYi5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L1VTQi91c2IuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRGVzY3JpcHRvciB0eXBlIGRlZmluaXRpb25zLiAqLw0KICNkZWZpbmUgdXNiREVTQ1JJUFRPUl9UWVBFX0RFVklDRQkJCSggMHgwMSApDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvbWFpbi5jCmluZGV4IDVjYjA0YTEuLjE4YmNmYjUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbHdJUF9EZW1vX1Jvd2xleV9BUk03L21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCU5PVEUgOiBUYXNrcyBydW4gaW4gc3lzdGVtIG1vZGUgYW5kIHRoZSBzY2hlZHVsZXIgcnVucyBpbiBTdXBlcnZpc29yIG1vZGUuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9sd0lQX0RlbW9fUm93bGV5X0FSTTcvbWFrZWZpbGUgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWtlZmlsZQppbmRleCA2M2IzZjliLi4yNzVjNmQ4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWtlZmlsZQorKysgYi9GcmVlUlRPUy9EZW1vL2x3SVBfRGVtb19Sb3dsZXlfQVJNNy9tYWtlZmlsZQpAQCAtMSw1NSArMSwzMCBAQAogIy8qDQotIyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotIwkNCi0jDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSMgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi0jICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi0jICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotIyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSMgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi0jICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotIyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0jDQotIw0KLSMgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0jDQotIyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotIyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0jICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0jICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSMgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0jICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotIyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0jICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotIyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotIyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSMgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSMgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLSMgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0jICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLSMNCi0jICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSMNCi0jICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLSMgICAgY29udGFjdCBkZXRhaWxzLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotIyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLSMNCi0jICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi0jICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotIyovDQorIyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorIyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjICoNCisjICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyMgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyMgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorIyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorIyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisjICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorIyAqDQorIyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyMgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyMgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorIyAqDQorIyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorIyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorIyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyMgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisjICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisjICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisjICoNCisjICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisjICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorIyAqDQorIyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyMgKi8NCiANCiBDQz1hcm0tZWxmLWdjYw0KIE9CSkNPUFk9YXJtLWVsZi1vYmpjb3B5DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9GcmVlUlRPU0NvbmZpZy5oIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IGJkZjEyMjIuLjRlNGUzMjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL0ZyZWVSVE9TQ29uZmlnLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgRlJFRVJUT1NfQ09ORklHX0gNCiAjZGVmaW5lIEZSRUVSVE9TX0NPTkZJR19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYzEzMjJjMy4uNzdiOThkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9QYXJUZXN0L1BhclRlc3QuYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogQ2hhcmFjdGVycyBvbiB0aGUgTENEIGFyZSB1c2VkIHRvIHNpbXVsYXRlIExFRCdzLiAgSW4gdGhpcyBjYXNlIHRoZSAnUGFyVGVzdCcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvbWFpbi5jCmluZGV4IGFkMjkzNWEuLmI1MGQ4NzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3MvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3Mvc2VyaWFsL3NlcmlhbC5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsLmMKaW5kZXggYmZlNWRiOS4uOGJlZjk0ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIEJBU0lDIElOVEVSUlVQVCBEUklWRU4gU0VSSUFMIFBPUlQgRFJJVkVSLiAgIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3Mvc2VyaWFsL3NlcmlhbEFTTS5hc20gYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9Dcm9zc1dvcmtzL3NlcmlhbC9zZXJpYWxBU00uYXNtCmluZGV4IDI1N2I4YjIuLjkyOTIwNjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0Nyb3NzV29ya3Mvc2VyaWFsL3NlcmlhbEFTTS5hc20KKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfQ3Jvc3NXb3Jrcy9zZXJpYWwvc2VyaWFsQVNNLmFzbQpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgInBvcnRhc20uaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvRnJlZVJUT1NDb25maWcuaCBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9GcmVlUlRPU0NvbmZpZy5oCmluZGV4IDhkZDlmMzMuLmVkNWQ5YjIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9GcmVlUlRPU0NvbmZpZy5oCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9GcmVlUlRPU0NvbmZpZy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIEZSRUVSVE9TX0NPTkZJR19IDQogI2RlZmluZSBGUkVFUlRPU19DT05GSUdfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9QYXJUZXN0L1BhclRlc3QuYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9QYXJUZXN0L1BhclRlc3QuYwppbmRleCA3MDk1ZGFjLi44ZWE2MzlhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvUGFyVGVzdC9QYXJUZXN0LmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL1BhclRlc3QvUGFyVGVzdC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogQ2hhcmFjdGVycyBvbiB0aGUgTENEIGFyZSB1c2VkIHRvIHNpbXVsYXRlIExFRCdzLiAgSW4gdGhpcyBjYXNlIHRoZSAnUGFyVGVzdCcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFpbi5jIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL21haW4uYwppbmRleCBkNjlhYWYwLi4yNGQ2ZGJkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFpbi5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9tYWluLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogQ3JlYXRlcyBhbGwgdGhlIGRlbW8gYXBwbGljYXRpb24gdGFza3MsIHRoZW4gc3RhcnRzIHRoZSBzY2hlZHVsZXIuICBUaGUgV0VCDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL21ha2VmaWxlIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL21ha2VmaWxlCmluZGV4IDc5NjNmNDYuLmE4NDRiMWIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9tYWtlZmlsZQorKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0MvbWFrZWZpbGUKQEAgLTEsNTUgKzEsMzAgQEAKICMvKg0KLSMgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSMJDQotIw0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi0jICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotIyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotIyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSMgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi0jICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotIyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSMgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotIyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSMgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0jICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotIyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSMgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotIw0KLSMNCi0jICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotIw0KLSMgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSMgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotIyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotIyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0jICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotIyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSMgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotIyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLSMgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSMgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0jICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi0jICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0jICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotIyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi0jDQotIyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0jDQotIyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0jICAgIGNvbnRhY3QgZGV0YWlscy4NCi0jDQotIyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSMgICAgY3JpdGljYWwgc3lzdGVtcy4NCi0jDQotIyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotIyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSMqLw0KKyMgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyMgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIyAqDQorIyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisjICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisjICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyMgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyMgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorIyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyMgKg0KKyMgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisjICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisjICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyMgKg0KKyMgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyMgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyMgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisjICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorIyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorIyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorIyAqDQorIyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorIyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyMgKg0KKyMgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisjICovDQogDQogDQogQ0M9bXNwNDMwLWdjYw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9HQ0Mvc2VyaWFsL3NlcmlhbC5jCmluZGV4IDc2ODIzYTkuLjk5YjY5NzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0dDQy9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfR0NDL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuICAgDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL0ZyZWVSVE9TQ29uZmlnLmggYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvRnJlZVJUT1NDb25maWcuaAppbmRleCBhOTcyODg2Li44YzY2NjgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvRnJlZVJUT1NDb25maWcuaAorKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvRnJlZVJUT1NDb25maWcuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBGUkVFUlRPU19DT05GSUdfSA0KICNkZWZpbmUgRlJFRVJUT1NfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvUGFyVGVzdC9QYXJUZXN0LmMKaW5kZXggYzEzMjJjMy4uNzdiOThkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL1BhclRlc3QvUGFyVGVzdC5jCisrKyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9QYXJUZXN0L1BhclRlc3QuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIENoYXJhY3RlcnMgb24gdGhlIExDRCBhcmUgdXNlZCB0byBzaW11bGF0ZSBMRUQncy4gIEluIHRoaXMgY2FzZSB0aGUgJ1BhclRlc3QnDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL21haW4uYyBiL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9tYWluLmMKaW5kZXggMmFmNGE3Mi4uMzJhZWUzNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL21haW4uYworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvbWFpbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIENyZWF0ZXMgYWxsIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHRhc2tzLCB0aGVuIHN0YXJ0cyB0aGUgc2NoZWR1bGVyLiAgVGhlIFdFQg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9zZXJpYWwvc2VyaWFsLmMgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvc2VyaWFsL3NlcmlhbC5jCmluZGV4IGM1NGJjN2IuLjdkMGNlZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9zZXJpYWwvc2VyaWFsLmMKKysrIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWwuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogQkFTSUMgSU5URVJSVVBUIERSSVZFTiBTRVJJQUwgUE9SVCBEUklWRVIuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWxBU00uczQzIGIvRnJlZVJUT1MvRGVtby9tc3A0MzBfSUFSL3NlcmlhbC9zZXJpYWxBU00uczQzCmluZGV4IDgwM2UyMGUuLjllNmY0YzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL0RlbW8vbXNwNDMwX0lBUi9zZXJpYWwvc2VyaWFsQVNNLnM0MworKysgYi9GcmVlUlRPUy9EZW1vL21zcDQzMF9JQVIvc2VyaWFsL3NlcmlhbEFTTS5zNDMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KICNpbmNsdWRlICIuLlwuLlxTb3VyY2VccG9ydGFibGVcSUFSXE1TUDQzMFxwb3J0YXNtLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvTGljZW5zZS9saWNlbnNlLnR4dCBiL0ZyZWVSVE9TL0xpY2Vuc2UvbGljZW5zZS50eHQKaW5kZXggOTY2Nzk1OC4uZTYzYjk0MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvTGljZW5zZS9saWNlbnNlLnR4dAorKysgYi9GcmVlUlRPUy9MaWNlbnNlL2xpY2Vuc2UudHh0CkBAIC0xLDM5OSArMSwzOCBAQAotVGhlIEZyZWVSVE9TIG9wZW4gc291cmNlIGxpY2Vuc2UgY292ZXJzIHRoZSBGcmVlUlRPUyBzb3VyY2UgZmlsZXMsDQotd2hpY2ggYXJlIGxvY2F0ZWQgaW4gdGhlIC9GcmVlUlRPUy9Tb3VyY2UgZGlyZWN0b3J5IG9mIHRoZSBvZmZpY2lhbCBGcmVlUlRPUw0KLWRvd25sb2FkLiAgSXQgYWxzbyBjb3ZlcnMgbW9zdCBvZiB0aGUgc291cmNlIGZpbGVzIGluIHRoZSBkZW1vIGFwcGxpY2F0aW9uDQotcHJvamVjdHMsIHdoaWNoIGFyZSBsb2NhdGVkIGluIHRoZSAvRnJlZVJUT1MvRGVtbyBkaXJlY3Rvcnkgb2YgdGhlIG9mZmljaWFsDQotRnJlZVJUT1MgZG93bmxvYWQuICBUaGUgZGVtbyBwcm9qZWN0cyBtYXkgYWxzbyBpbmNsdWRlIHRoaXJkIHBhcnR5IHNvZnR3YXJlIHRoYXQNCi1pcyBub3QgcGFydCBvZiBGcmVlUlRPUyBhbmQgaXMgbGljZW5zZWQgc2VwYXJhdGVseSB0byBGcmVlUlRPUy4gIEV4YW1wbGVzIG9mDQotdGhpcmQgcGFydHkgc29mdHdhcmUgaW5jbHVkZXMgaGVhZGVyIGZpbGVzIHByb3ZpZGVkIGJ5IGNoaXAgb3IgdG9vbHMgdmVuZG9ycywNCi1saW5rZXIgc2NyaXB0cywgcGVyaXBoZXJhbCBkcml2ZXJzLCBldGMuICBBbGwgdGhlIHNvZnR3YXJlIGluIHN1YmRpcmVjdG9yaWVzIG9mDQotdGhlIC9GcmVlUlRPUyBkaXJlY3RvcnkgaXMgZWl0aGVyIG9wZW4gc291cmNlIG9yIGRpc3RyaWJ1dGVkIHdpdGggcGVybWlzc2lvbiwNCi1hbmQgaXMgZnJlZSBmb3IgdXNlLiAgRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIHJlZmVyIHRvIHRoZSBjb21tZW50cyBhdCB0aGUNCi10b3Agb2YgZWFjaCBzb3VyY2UgZmlsZS4NCitUaGUgRnJlZVJUT1Mga2VybmVsIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgb3BlbiBzb3VyY2UgbGljZW5zZSwgdGhlIHRleHQgb2YNCit3aGljaCBpcyBwcm92aWRlZCBiZWxvdy4NCiANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorVGhpcyBsaWNlbnNlIGNvdmVycyB0aGUgRnJlZVJUT1Mga2VybmVsIHNvdXJjZSBmaWxlcywgd2hpY2ggYXJlIGxvY2F0ZWQgaW4gdGhlDQorL0ZyZWVSVE9TL1NvdXJjZSBkaXJlY3Rvcnkgb2YgdGhlIG9mZmljaWFsIEZyZWVSVE9TIGtlcm5lbCBkb3dubG9hZC4gIEl0IGFsc28NCitjb3ZlcnMgbW9zdCBvZiB0aGUgc291cmNlIGZpbGVzIGluIHRoZSBkZW1vIGFwcGxpY2F0aW9uIHByb2plY3RzLCB3aGljaCBhcmUNCitsb2NhdGVkIGluIHRoZSAvRnJlZVJUT1MvRGVtbyBkaXJlY3Rvcnkgb2YgdGhlIG9mZmljaWFsIEZyZWVSVE9TIGRvd25sb2FkLiAgVGhlDQorZGVtbyBwcm9qZWN0cyBtYXkgYWxzbyBpbmNsdWRlIHRoaXJkIHBhcnR5IHNvZnR3YXJlIHRoYXQgaXMgbm90IHBhcnQgb2YgRnJlZVJUT1MNCithbmQgaXMgbGljZW5zZWQgc2VwYXJhdGVseSB0byBGcmVlUlRPUy4gIEV4YW1wbGVzIG9mIHRoaXJkIHBhcnR5IHNvZnR3YXJlDQoraW5jbHVkZXMgaGVhZGVyIGZpbGVzIHByb3ZpZGVkIGJ5IGNoaXAgb3IgdG9vbHMgdmVuZG9ycywgbGlua2VyIHNjcmlwdHMsDQorcGVyaXBoZXJhbCBkcml2ZXJzLCBldGMuICBBbGwgdGhlIHNvZnR3YXJlIGluIHN1YmRpcmVjdG9yaWVzIG9mIHRoZSAvRnJlZVJUT1MNCitkaXJlY3RvcnkgaXMgZWl0aGVyIG9wZW4gc291cmNlIG9yIGRpc3RyaWJ1dGVkIHdpdGggcGVybWlzc2lvbiwgYW5kIGlzIGZyZWUgZm9yDQordXNlLiAgRm9yIHRoZSBhdm9pZGFuY2Ugb2YgZG91YnQsIHJlZmVyIHRvIHRoZSBjb21tZW50cyBhdCB0aGUgdG9wIG9mIGVhY2gNCitzb3VyY2UgZmlsZS4NCiANCi1OT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvIGRpc3RyaWJ1dGUgYQ0KLWNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlDQotY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cy4NCiANCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorTGljZW5zZSB0ZXh0Og0KKy0tLS0tLS0tLS0tLS0NCiANCi1BcHBseWluZyB0byBGcmVlUlRPUyBWOC4yLjMgdXAgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uLCB0aGUgRnJlZVJUT1MgR1BMIEV4Y2VwdGlvbg0KLVRleHQgZm9sbG93czoNCitDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KK3RoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQordGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KK3VzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQordGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KK3N1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KIA0KLUFueSBGcmVlUlRPUyAqc291cmNlIGNvZGUqLCB3aGV0aGVyIG1vZGlmaWVkIG9yIGluIGl0J3Mgb3JpZ2luYWwgcmVsZWFzZSBmb3JtLA0KLW9yIHdoZXRoZXIgaW4gd2hvbGUgb3IgaW4gcGFydCwgY2FuIG9ubHkgYmUgZGlzdHJpYnV0ZWQgYnkgeW91IHVuZGVyIHRoZSB0ZXJtcw0KLW9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBwbHVzIHRoaXMgZXhjZXB0aW9uLiAgQW4gaW5kZXBlbmRlbnQgbW9kdWxlIGlzDQotYSBtb2R1bGUgd2hpY2ggaXMgbm90IGRlcml2ZWQgZnJvbSBvciBiYXNlZCBvbiBGcmVlUlRPUy4NCitUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCitjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KK0ZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCiANCi1DbGF1c2UgMToNCi0NCi1MaW5raW5nIEZyZWVSVE9TIHdpdGggb3RoZXIgbW9kdWxlcyBpcyBtYWtpbmcgYSBjb21iaW5lZCB3b3JrIGJhc2VkIG9uIEZyZWVSVE9TLg0KLVRodXMsIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVjIgY292ZXIgdGhlDQotd2hvbGUgY29tYmluYXRpb24uDQotDQotQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mIEZyZWVSVE9TIGdpdmUgeW91IHBlcm1pc3Npb24gdG8NCi1saW5rIEZyZWVSVE9TIHdpdGggaW5kZXBlbmRlbnQgbW9kdWxlcyB0byBwcm9kdWNlIGEgc3RhdGljYWxseSBsaW5rZWQNCi1leGVjdXRhYmxlLCByZWdhcmRsZXNzIG9mIHRoZSBsaWNlbnNlIHRlcm1zIG9mIHRoZXNlIGluZGVwZW5kZW50IG1vZHVsZXMsIGFuZCB0bw0KLWNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLA0KLXByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCwgZm9yIGVhY2ggbGlua2VkIGluZGVwZW5kZW50IG1vZHVsZSwgdGhlIHRlcm1zIGFuZA0KLWNvbmRpdGlvbnMgb2YgdGhlIGxpY2Vuc2Ugb2YgdGhhdCBtb2R1bGUuICBBbiBpbmRlcGVuZGVudCBtb2R1bGUgaXMgYSBtb2R1bGUNCi13aGljaCBpcyBub3QgZGVyaXZlZCBmcm9tIG9yIGJhc2VkIG9uIEZyZWVSVE9TLg0KLQ0KLUNsYXVzZSAyOg0KLQ0KLUZyZWVSVE9TIG1heSBub3QgYmUgdXNlZCBmb3IgYW55IGNvbXBldGl0aXZlIG9yIGNvbXBhcmF0aXZlIHB1cnBvc2UsIGluY2x1ZGluZw0KLXRoZSBwdWJsaWNhdGlvbiBvZiBhbnkgZm9ybSBvZiBydW4gdGltZSBvciBjb21waWxlIHRpbWUgbWV0cmljLCB3aXRob3V0IHRoZQ0KLWV4cHJlc3MgcGVybWlzc2lvbiBvZiBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4gKHRoaXMgaXMgdGhlIG5vcm0gd2l0aGluIHRoZQ0KLWluZHVzdHJ5IGFuZCBpcyBpbnRlbmRlZCB0byBlbnN1cmUgaW5mb3JtYXRpb24gYWNjdXJhY3kpLg0KLQ0KLQ0KLQ0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotDQotDQotDQotVGhlIHN0YW5kYXJkIEdQTCBWMiB0ZXh0Og0KLQ0KLQ0KLQkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFDQotCQkgICAgICAgVmVyc2lvbiAyLCBKdW5lIDE5OTENCi0NCi0gQ29weXJpZ2h0IChDKSAxOTg5LCAxOTkxIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KLSAgICAgICAgICAgICAgICAgICAgICAgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQ0KLSBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMNCi0gb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuDQotDQotCQkJICAgIFByZWFtYmxlDQotDQotICBUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyDQotZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIGl0LiAgQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi1MaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBmcmVlDQotc29mdHdhcmUtLXRvIG1ha2Ugc3VyZSB0aGUgc29mdHdhcmUgaXMgZnJlZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFRoaXMNCi1HZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFwcGxpZXMgdG8gbW9zdCBvZiB0aGUgRnJlZSBTb2Z0d2FyZQ0KLUZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8NCi11c2luZyBpdC4gIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5DQotdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW5zdGVhZC4pICBZb3UgY2FuIGFwcGx5IGl0IHRvDQoteW91ciBwcm9ncmFtcywgdG9vLg0KLQ0KLSAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdA0KLXByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCi1oYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yDQotdGhpcyBzZXJ2aWNlIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0DQotaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQNCi1pbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQotDQotICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkDQotYW55b25lIHRvIGRlbnkgeW91IHRoZXNlIHJpZ2h0cyBvciB0byBhc2sgeW91IHRvIHN1cnJlbmRlciB0aGUgcmlnaHRzLg0KLVRoZXNlIHJlc3RyaWN0aW9ucyB0cmFuc2xhdGUgdG8gY2VydGFpbiByZXNwb25zaWJpbGl0aWVzIGZvciB5b3UgaWYgeW91DQotZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0Lg0KLQ0KLSAgRm9yIGV4YW1wbGUsIGlmIHlvdSBkaXN0cmlidXRlIGNvcGllcyBvZiBzdWNoIGEgcHJvZ3JhbSwgd2hldGhlcg0KLWdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdA0KLXlvdSBoYXZlLiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlDQotc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpcg0KLXJpZ2h0cy4NCi0NCi0gIFdlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQNCi0oMikgb2ZmZXIgeW91IHRoaXMgbGljZW5zZSB3aGljaCBnaXZlcyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LA0KLWRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSB0aGUgc29mdHdhcmUuDQotDQotICBBbHNvLCBmb3IgZWFjaCBhdXRob3IncyBwcm90ZWN0aW9uIGFuZCBvdXJzLCB3ZSB3YW50IHRvIG1ha2UgY2VydGFpbg0KLXRoYXQgZXZlcnlvbmUgdW5kZXJzdGFuZHMgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlDQotc29mdHdhcmUuICBJZiB0aGUgc29mdHdhcmUgaXMgbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHdlDQotd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28NCi10aGF0IGFueSBwcm9ibGVtcyBpbnRyb2R1Y2VkIGJ5IG90aGVycyB3aWxsIG5vdCByZWZsZWN0IG9uIHRoZSBvcmlnaW5hbA0KLWF1dGhvcnMnIHJlcHV0YXRpb25zLg0KLQ0KLSAgRmluYWxseSwgYW55IGZyZWUgcHJvZ3JhbSBpcyB0aHJlYXRlbmVkIGNvbnN0YW50bHkgYnkgc29mdHdhcmUNCi1wYXRlbnRzLiAgV2Ugd2lzaCB0byBhdm9pZCB0aGUgZGFuZ2VyIHRoYXQgcmVkaXN0cmlidXRvcnMgb2YgYSBmcmVlDQotcHJvZ3JhbSB3aWxsIGluZGl2aWR1YWxseSBvYnRhaW4gcGF0ZW50IGxpY2Vuc2VzLCBpbiBlZmZlY3QgbWFraW5nIHRoZQ0KLXByb2dyYW0gcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGhhdmUgbWFkZSBpdCBjbGVhciB0aGF0IGFueQ0KLXBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuDQotDQotICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KLW1vZGlmaWNhdGlvbiBmb2xsb3cuDQotDA0KLQkJICAgIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFDQotICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9ODQotDQotICAwLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zDQotYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQNCi11bmRlciB0aGUgdGVybXMgb2YgdGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgVGhlICJQcm9ncmFtIiwgYmVsb3csDQotcmVmZXJzIHRvIGFueSBzdWNoIHByb2dyYW0gb3Igd29yaywgYW5kIGEgIndvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0iDQotbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzoNCi10aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LA0KLWVpdGhlciB2ZXJiYXRpbSBvciB3aXRoIG1vZGlmaWNhdGlvbnMgYW5kL29yIHRyYW5zbGF0ZWQgaW50byBhbm90aGVyDQotbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzIGluY2x1ZGVkIHdpdGhvdXQgbGltaXRhdGlvbiBpbg0KLXRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLg0KLQ0KLUFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90DQotY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiAgVGhlIGFjdCBvZg0KLXJ1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0NCi1pcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkIG9uIHRoZQ0KLVByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuDQotV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuDQotDQotICAxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3MNCi1zb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UNCi1jb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlDQotY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZQ0KLW5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsNCi1hbmQgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgUHJvZ3JhbSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlDQotYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCi0NCi1Zb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQNCi15b3UgbWF5IGF0IHlvdXIgb3B0aW9uIG9mZmVyIHdhcnJhbnR5IHByb3RlY3Rpb24gaW4gZXhjaGFuZ2UgZm9yIGEgZmVlLg0KLQ0KLSAgMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbg0KLW9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBhbmQgY29weSBhbmQNCi1kaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDENCi1hYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KLQ0KLSAgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMNCi0gICAgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4NCi0NCi0gICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluDQotICAgIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueQ0KLSAgICBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZA0KLSAgICBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuDQotDQotICAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkNCi0gICAgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaA0KLSAgICBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuDQotICAgIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYQ0KLSAgICBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUNCi0gICAgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlcg0KLSAgICB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcw0KLSAgICBMaWNlbnNlLiAgKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dA0KLSAgICBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uDQotICAgIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQ0KLQwNCi1UaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmDQotaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwNCi1hbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4NCi10aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlDQotc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiAgQnV0IHdoZW4geW91DQotZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkDQotb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mDQotdGhpcyBMaWNlbnNlLCB3aG9zZSBwZXJtaXNzaW9ucyBmb3Igb3RoZXIgbGljZW5zZWVzIGV4dGVuZCB0byB0aGUNCi1lbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuDQotDQotVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0DQoteW91ciByaWdodHMgdG8gd29yayB3cml0dGVuIGVudGlyZWx5IGJ5IHlvdTsgcmF0aGVyLCB0aGUgaW50ZW50IGlzIHRvDQotZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yDQotY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4NCi0NCi1JbiBhZGRpdGlvbiwgbWVyZSBhZ2dyZWdhdGlvbiBvZiBhbm90aGVyIHdvcmsgbm90IGJhc2VkIG9uIHRoZSBQcm9ncmFtDQotd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mDQotYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXINCi10aGUgc2NvcGUgb2YgdGhpcyBMaWNlbnNlLg0KLQ0KLSAgMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsDQotdW5kZXIgU2VjdGlvbiAyKSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gdW5kZXIgdGhlIHRlcm1zIG9mDQotU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOg0KLQ0KLSAgICBhKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgY29tcGxldGUgY29ycmVzcG9uZGluZyBtYWNoaW5lLXJlYWRhYmxlDQotICAgIHNvdXJjZSBjb2RlLCB3aGljaCBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucw0KLSAgICAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwNCi0NCi0gICAgYikgQWNjb21wYW55IGl0IHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQgbGVhc3QgdGhyZWUNCi0gICAgeWVhcnMsIHRvIGdpdmUgYW55IHRoaXJkIHBhcnR5LCBmb3IgYSBjaGFyZ2Ugbm8gbW9yZSB0aGFuIHlvdXINCi0gICAgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgc291cmNlIGRpc3RyaWJ1dGlvbiwgYSBjb21wbGV0ZQ0KLSAgICBtYWNoaW5lLXJlYWRhYmxlIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUsIHRvIGJlDQotICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIG9uIGEgbWVkaXVtDQotICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlOyBvciwNCi0NCi0gICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXINCi0gICAgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAgKFRoaXMgYWx0ZXJuYXRpdmUgaXMNCi0gICAgYWxsb3dlZCBvbmx5IGZvciBub25jb21tZXJjaWFsIGRpc3RyaWJ1dGlvbiBhbmQgb25seSBpZiB5b3UNCi0gICAgcmVjZWl2ZWQgdGhlIHByb2dyYW0gaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHdpdGggc3VjaA0KLSAgICBhbiBvZmZlciwgaW4gYWNjb3JkIHdpdGggU3Vic2VjdGlvbiBiIGFib3ZlLikNCi0NCi1UaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yDQotbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuICBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UNCi1jb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueQ0KLWFzc29jaWF0ZWQgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0bw0KLWNvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gIEhvd2V2ZXIsIGFzIGENCi1zcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUNCi1hbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeQ0KLWZvcm0pIHdpdGggdGhlIG1ham9yIGNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlDQotb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQNCi1pdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuDQotDQotSWYgZGlzdHJpYnV0aW9uIG9mIGV4ZWN1dGFibGUgb3Igb2JqZWN0IGNvZGUgaXMgbWFkZSBieSBvZmZlcmluZw0KLWFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQNCi1hY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMNCi1kaXN0cmlidXRpb24gb2YgdGhlIHNvdXJjZSBjb2RlLCBldmVuIHRob3VnaCB0aGlyZCBwYXJ0aWVzIGFyZSBub3QNCi1jb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLg0KLQwNCi0gIDQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbQ0KLWV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQNCi1vdGhlcndpc2UgdG8gY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gaXMNCi12b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuDQotSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXINCi10aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcyB0ZXJtaW5hdGVkIHNvIGxvbmcgYXMgc3VjaA0KLXBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4NCi0NCi0gIDUuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdA0KLXNpZ25lZCBpdC4gIEhvd2V2ZXIsIG5vdGhpbmcgZWxzZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gbW9kaWZ5IG9yDQotZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gIFRoZXNlIGFjdGlvbnMgYXJlDQotcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQ0KLW1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQ0KLVByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kDQotYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZw0KLXRoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0Lg0KLQ0KLSAgNi4gRWFjaCB0aW1lIHlvdSByZWRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZQ0KLVByb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlDQotb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0bw0KLXRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyDQotcmVzdHJpY3Rpb25zIG9uIHRoZSByZWNpcGllbnRzJyBleGVyY2lzZSBvZiB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZWluLg0KLVlvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvDQotdGhpcyBMaWNlbnNlLg0KLQ0KLSAgNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudA0KLWluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksDQotY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcg0KLW90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCi1leGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdA0KLWRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCi1MaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91DQotbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiBhIHBhdGVudA0KLWxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkNCi1hbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4NCi10aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCBpdCBhbmQgdGhpcyBMaWNlbnNlIHdvdWxkIGJlIHRvDQotcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4NCi0NCi1JZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXINCi1hbnkgcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvDQotYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXINCi1jaXJjdW1zdGFuY2VzLg0KLQ0KLUl0IGlzIG5vdCB0aGUgcHVycG9zZSBvZiB0aGlzIHNlY3Rpb24gdG8gaW5kdWNlIHlvdSB0byBpbmZyaW5nZSBhbnkNCi1wYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueQ0KLXN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUNCi1pbnRlZ3JpdHkgb2YgdGhlIGZyZWUgc29mdHdhcmUgZGlzdHJpYnV0aW9uIHN5c3RlbSwgd2hpY2ggaXMNCi1pbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUNCi1nZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkDQotdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQNCi1zeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nDQotdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90DQotaW1wb3NlIHRoYXQgY2hvaWNlLg0KLQ0KLVRoaXMgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBtYWtlIHRob3JvdWdobHkgY2xlYXIgd2hhdCBpcyBiZWxpZXZlZCB0bw0KLWJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLg0KLQwNCi0gIDguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluDQotY2VydGFpbiBjb3VudHJpZXMgZWl0aGVyIGJ5IHBhdGVudHMgb3IgYnkgY29weXJpZ2h0ZWQgaW50ZXJmYWNlcywgdGhlDQotb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZQ0KLW1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZw0KLXRob3NlIGNvdW50cmllcywgc28gdGhhdCBkaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIG9ubHkgaW4gb3IgYW1vbmcNCi1jb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMNCi10aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4NCi0NCi0gIDkuIFRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gbWF5IHB1Ymxpc2ggcmV2aXNlZCBhbmQvb3IgbmV3IHZlcnNpb25zDQotb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsDQotYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQotYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuDQotDQotRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUgUHJvZ3JhbQ0KLXNwZWNpZmllcyBhIHZlcnNpb24gbnVtYmVyIG9mIHRoaXMgTGljZW5zZSB3aGljaCBhcHBsaWVzIHRvIGl0IGFuZCAiYW55DQotbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucw0KLWVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlDQotU29mdHdhcmUgRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZg0KLXRoaXMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCi1Gb3VuZGF0aW9uLg0KLQ0KLSAgMTAuIElmIHlvdSB3aXNoIHRvIGluY29ycG9yYXRlIHBhcnRzIG9mIHRoZSBQcm9ncmFtIGludG8gb3RoZXIgZnJlZQ0KLXByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3INCi10byBhc2sgZm9yIHBlcm1pc3Npb24uICBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUNCi1Tb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMNCi1tYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2Fscw0KLW9mIHByZXNlcnZpbmcgdGhlIGZyZWUgc3RhdHVzIG9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQNCi1vZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4NCi0NCi0JCQkgICAgTk8gV0FSUkFOVFkNCi0NCi0gIDExLiBCRUNBVVNFIFRIRSBQUk9HUkFNIElTIExJQ0VOU0VEIEZSRUUgT0YgQ0hBUkdFLCBUSEVSRSBJUyBOTyBXQVJSQU5UWQ0KLUZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuICBFWENFUFQgV0hFTg0KLU9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMNCi1QUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRA0KLU9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GDQotTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUw0KLVRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUNCi1QUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywNCi1SRVBBSVIgT1IgQ09SUkVDVElPTi4NCi0NCi0gIDEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCi1XSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SDQotUkVESVNUUklCVVRFIFRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywNCi1JTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcNCi1PVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEDQotVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZDQotWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVINCi1QUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUNCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuDQotDQotCQkgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw0KLQwNCi0JICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcw0KLQ0KLSAgSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdA0KLXBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQNCi1mcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4NCi0NCi0gIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0DQotdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQ0KLWNvbnZleSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0DQotdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuDQotDQotICAgIDxvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4+DQotICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+DQotDQotICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQotICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UqKiBhcyBwdWJsaXNoZWQgYnkNCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCi0gICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCi0NCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCi0gICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCi0NCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCi0gICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQ0KLQ0KLQ0KLUFsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLg0KLQ0KLUlmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMNCi13aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOg0KLQ0KLSAgICBHbm9tb3Zpc2lvbiB2ZXJzaW9uIDY5LCBDb3B5cmlnaHQgKEMpIHllYXIgbmFtZSBvZiBhdXRob3INCi0gICAgR25vbW92aXNpb24gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLg0KLSAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0DQotICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4NCi0NCi1UaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUNCi1wYXJ0cyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5DQotYmUgY2FsbGVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGBzaG93IHcnIGFuZCBgc2hvdyBjJzsgdGhleSBjb3VsZCBldmVuIGJlDQotbW91c2UtY2xpY2tzIG9yIG1lbnUgaXRlbXMtLXdoYXRldmVyIHN1aXRzIHlvdXIgcHJvZ3JhbS4NCi0NCi1Zb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91cg0KLXNjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmDQotbmVjZXNzYXJ5LiAgSGVyZSBpcyBhIHNhbXBsZTsgYWx0ZXIgdGhlIG5hbWVzOg0KLQ0KLSAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbQ0KLSAgYEdub21vdmlzaW9uJyAod2hpY2ggbWFrZXMgcGFzc2VzIGF0IGNvbXBpbGVycykgd3JpdHRlbiBieSBKYW1lcyBIYWNrZXIuDQotDQotICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5ODkNCi0gIFR5IENvb24sIFByZXNpZGVudCBvZiBWaWNlDQotDQotVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvDQotcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkNCi1jb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aCB0aGUNCi1saWJyYXJ5LiAgSWYgdGhpcyBpcyB3aGF0IHlvdSB3YW50IHRvIGRvLCB1c2UgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwNCi1QdWJsaWMgTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZS4NCitUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KK0lNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCitDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9jcm91dGluZS5jIGIvRnJlZVJUT1MvU291cmNlL2Nyb3V0aW5lLmMKaW5kZXggNTY5NDNhNS4uNjA4NDIwMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2Nyb3V0aW5lLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL2Nyb3V0aW5lLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KICNpbmNsdWRlICJ0YXNrLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2V2ZW50X2dyb3Vwcy5jIGIvRnJlZVJUT1MvU291cmNlL2V2ZW50X2dyb3Vwcy5jCmluZGV4IDZiMjQ2ZjkuLjlkYTA0MTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9ldmVudF9ncm91cHMuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvZXZlbnRfZ3JvdXBzLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCkBAIC0yNjksNiArMjI4LDcgQEAKIAkJCQkvKiBUaGUgcmVuZGV6dm91cyBiaXRzIHdlcmUgbm90IHNldCwgYnV0IG5vIGJsb2NrIHRpbWUgd2FzDQogCQkJCXNwZWNpZmllZCAtIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IGV2ZW50IGJpdCB2YWx1ZS4gKi8NCiAJCQkJdXhSZXR1cm4gPSBweEV2ZW50Qml0cy0+dXhFdmVudEJpdHM7DQorCQkJCXhUaW1lb3V0T2NjdXJyZWQgPSBwZFRSVUU7DQogCQkJfQ0KIAkJfQ0KIAl9DQpAQCAtMzI3LDYgKzI4Nyw5IEBACiANCiAJdHJhY2VFVkVOVF9HUk9VUF9TWU5DX0VORCggeEV2ZW50R3JvdXAsIHV4Qml0c1RvU2V0LCB1eEJpdHNUb1dhaXRGb3IsIHhUaW1lb3V0T2NjdXJyZWQgKTsNCiANCisJLyogUHJldmVudCBjb21waWxlciB3YXJuaW5ncyB3aGVuIHRyYWNlIG1hY3JvcyBhcmUgbm90IHVzZWQuICovDQorCSggdm9pZCApIHhUaW1lb3V0T2NjdXJyZWQ7DQorDQogCXJldHVybiB1eFJldHVybjsNCiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQpAQCAtMzc4LDYgKzM0MSw3IEBACiAJCQkvKiBUaGUgd2FpdCBjb25kaXRpb24gaGFzIG5vdCBiZWVuIG1ldCwgYnV0IG5vIGJsb2NrIHRpbWUgd2FzDQogCQkJc3BlY2lmaWVkLCBzbyBqdXN0IHJldHVybiB0aGUgY3VycmVudCB2YWx1ZS4gKi8NCiAJCQl1eFJldHVybiA9IHV4Q3VycmVudEV2ZW50Qml0czsNCisJCQl4VGltZW91dE9jY3VycmVkID0gcGRUUlVFOw0KIAkJfQ0KIAkJZWxzZQ0KIAkJew0KQEAgLTQ1OSwxMSArNDIzLDkgQEAKIAkJCQl7DQogCQkJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQogCQkJCX0NCisJCQkJeFRpbWVvdXRPY2N1cnJlZCA9IHBkVFJVRTsNCiAJCQl9DQogCQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCi0NCi0JCQkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdHJhY2UgbWFjcm9zIGFyZSBub3QgdXNlZC4gKi8NCi0JCQl4VGltZW91dE9jY3VycmVkID0gcGRGQUxTRTsNCiAJCX0NCiAJCWVsc2UNCiAJCXsNCkBAIC00NzUsNiArNDM3LDkgQEAKIAl9DQogCXRyYWNlRVZFTlRfR1JPVVBfV0FJVF9CSVRTX0VORCggeEV2ZW50R3JvdXAsIHV4Qml0c1RvV2FpdEZvciwgeFRpbWVvdXRPY2N1cnJlZCApOw0KIA0KKwkvKiBQcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdHJhY2UgbWFjcm9zIGFyZSBub3QgdXNlZC4gKi8NCisJKCB2b2lkICkgeFRpbWVvdXRPY2N1cnJlZDsNCisNCiAJcmV0dXJuIHV4UmV0dXJuOw0KIH0NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCkBAIC03NTgsNSArNzIzLDE3IEBACiAJCXJldHVybiB4UmV0dXJuOw0KIAl9DQogDQotI2VuZGlmDQorI2VuZGlmIC8qIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiAoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisNCisJdm9pZCB2RXZlbnRHcm91cFNldE51bWJlciggdm9pZCAqIHhFdmVudEdyb3VwLCBVQmFzZVR5cGVfdCB1eEV2ZW50R3JvdXBOdW1iZXIgKQ0KKwl7DQorCQkoICggRXZlbnRHcm91cF90ICogKSB4RXZlbnRHcm91cCApLT51eEV2ZW50R3JvdXBOdW1iZXIgPSB1eEV2ZW50R3JvdXBOdW1iZXI7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvRnJlZVJUT1MuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL0ZyZWVSVE9TLmgKaW5kZXggNjE1NGRiMS4uZGZkODljZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvRnJlZVJUT1MuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9GcmVlUlRPUy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIElOQ19GUkVFUlRPU19IDQogI2RlZmluZSBJTkNfRlJFRVJUT1NfSA0KQEAgLTM5Niw2ICszNTUsMTQgQEAKIAkjZGVmaW5lIHRyYWNlQkxPQ0tJTkdfT05fUVVFVUVfUkVDRUlWRSggcHhRdWV1ZSApDQogI2VuZGlmDQogDQorI2lmbmRlZiB0cmFjZUJMT0NLSU5HX09OX1FVRVVFX1BFRUsNCisJLyogVGFzayBpcyBhYm91dCB0byBibG9jayBiZWNhdXNlIGl0IGNhbm5vdCByZWFkIGZyb20gYQ0KKwlxdWV1ZS9tdXRleC9zZW1hcGhvcmUuICBweFF1ZXVlIGlzIGEgcG9pbnRlciB0byB0aGUgcXVldWUvbXV0ZXgvc2VtYXBob3JlDQorCXVwb24gd2hpY2ggdGhlIHJlYWQgd2FzIGF0dGVtcHRlZC4gIHB4Q3VycmVudFRDQiBwb2ludHMgdG8gdGhlIFRDQiBvZiB0aGUNCisJdGFzayB0aGF0IGF0dGVtcHRlZCB0aGUgcmVhZC4gKi8NCisJI2RlZmluZSB0cmFjZUJMT0NLSU5HX09OX1FVRVVFX1BFRUsoIHB4UXVldWUgKQ0KKyNlbmRpZg0KKw0KICNpZm5kZWYgdHJhY2VCTE9DS0lOR19PTl9RVUVVRV9TRU5EDQogCS8qIFRhc2sgaXMgYWJvdXQgdG8gYmxvY2sgYmVjYXVzZSBpdCBjYW5ub3Qgd3JpdGUgdG8gYQ0KIAlxdWV1ZS9tdXRleC9zZW1hcGhvcmUuICBweFF1ZXVlIGlzIGEgcG9pbnRlciB0byB0aGUgcXVldWUvbXV0ZXgvc2VtYXBob3JlDQpAQCAtNDgyLDYgKzQ0OSwxMCBAQAogCSNkZWZpbmUgdHJhY2VRVUVVRV9QRUVLKCBweFF1ZXVlICkNCiAjZW5kaWYNCiANCisjaWZuZGVmIHRyYWNlUVVFVUVfUEVFS19GQUlMRUQNCisJI2RlZmluZSB0cmFjZVFVRVVFX1BFRUtfRkFJTEVEKCBweFF1ZXVlICkNCisjZW5kaWYNCisNCiAjaWZuZGVmIHRyYWNlUVVFVUVfUEVFS19GUk9NX0lTUg0KIAkjZGVmaW5lIHRyYWNlUVVFVUVfUEVFS19GUk9NX0lTUiggcHhRdWV1ZSApDQogI2VuZGlmDQpAQCAtNjY2LDYgKzYzNyw1OCBAQAogCSNkZWZpbmUgdHJhY2VUQVNLX05PVElGWV9HSVZFX0ZST01fSVNSKCkNCiAjZW5kaWYNCiANCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9DUkVBVEVfRkFJTEVEDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9GQUlMRUQoIHhJc01lc3NhZ2VCdWZmZXIgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9TVEFUSUNfRkFJTEVEDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9TVEFUSUNfRkFJTEVEKCB4UmV0dXJuLCB4SXNNZXNzYWdlQnVmZmVyICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9DUkVBVEUNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfQ1JFQVRFKCBweFN0cmVhbUJ1ZmZlciwgeElzTWVzc2FnZUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfREVMRVRFDQorCSNkZWZpbmUgdHJhY2VTVFJFQU1fQlVGRkVSX0RFTEVURSggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfUkVTRVQNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfUkVTRVQoIHhTdHJlYW1CdWZmZXIgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VCTE9DS0lOR19PTl9TVFJFQU1fQlVGRkVSX1NFTkQNCisJI2RlZmluZSB0cmFjZUJMT0NLSU5HX09OX1NUUkVBTV9CVUZGRVJfU0VORCggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfU0VORA0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EKCB4U3RyZWFtQnVmZmVyLCB4Qnl0ZXNTZW50ICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EX0ZBSUxFRA0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EX0ZBSUxFRCggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfU0VORF9GUk9NX0lTUg0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9TRU5EX0ZST01fSVNSKCB4U3RyZWFtQnVmZmVyLCB4Qnl0ZXNTZW50ICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlQkxPQ0tJTkdfT05fU1RSRUFNX0JVRkZFUl9SRUNFSVZFDQorCSNkZWZpbmUgdHJhY2VCTE9DS0lOR19PTl9TVFJFQU1fQlVGRkVSX1JFQ0VJVkUoIHhTdHJlYW1CdWZmZXIgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgdHJhY2VTVFJFQU1fQlVGRkVSX1JFQ0VJVkUNCisJI2RlZmluZSB0cmFjZVNUUkVBTV9CVUZGRVJfUkVDRUlWRSggeFN0cmVhbUJ1ZmZlciwgeFJlY2VpdmVkTGVuZ3RoICkNCisjZW5kaWYNCisNCisjaWZuZGVmIHRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZBSUxFRA0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZBSUxFRCggeFN0cmVhbUJ1ZmZlciApDQorI2VuZGlmDQorDQorI2lmbmRlZiB0cmFjZVNUUkVBTV9CVUZGRVJfUkVDRUlWRV9GUk9NX0lTUg0KKwkjZGVmaW5lIHRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZST01fSVNSKCB4U3RyZWFtQnVmZmVyLCB4UmVjZWl2ZWRMZW5ndGggKQ0KKyNlbmRpZg0KKw0KICNpZm5kZWYgY29uZmlnR0VORVJBVEVfUlVOX1RJTUVfU1RBVFMNCiAJI2RlZmluZSBjb25maWdHRU5FUkFURV9SVU5fVElNRV9TVEFUUyAwDQogI2VuZGlmDQpAQCAtODQ2LDYgKzg2OSwzMiBAQAogCSNkZWZpbmUgY29uZmlnRU5BQkxFX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFkgMQ0KICNlbmRpZg0KIA0KKyNpZm5kZWYgY29uZmlnUFJJTlRGDQorCS8qIGNvbmZpZ1BSSU5URigpIHdhcyBub3QgZGVmaW5lZCwgc28gZGVmaW5lIGl0IGF3YXkgdG8gbm90aGluZy4gIFRvIHVzZQ0KKwljb25maWdQUklOVEYoKSB0aGVuIGRlZmluZSBpdCBhcyBmb2xsb3dzICh3aGVyZSBNeVByaW50RnVuY3Rpb24oKSBpcw0KKwlwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24gd3JpdGVyKToNCisNCisJdm9pZCBNeVByaW50RnVuY3Rpb24oY29uc3QgY2hhciAqcGNGb3JtYXQsIC4uLiApOw0KKwkjZGVmaW5lIGNvbmZpZ1BSSU5URiggWCApICAgTXlQcmludEZ1bmN0aW9uIFgNCisNCisJVGhlbiBjYWxsIGxpa2UgYSBzdGFuZGFyZCBwcmludGYoKSBmdW5jdGlvbiwgYnV0IHBsYWNpbmcgYnJhY2tldHMgYXJvdW5kDQorCWFsbCBwYXJhbWV0ZXJzIHNvIHRoZXkgYXJlIHBhc3NlZCBhcyBhIHNpbmdsZSBwYXJhbWV0ZXIuICBGb3IgZXhhbXBsZToNCisJY29uZmlnUFJJTlRGKCAoIlZhbHVlID0gJWQiLCBNeVZhcmlhYmxlKSApOyAqLw0KKwkjZGVmaW5lIGNvbmZpZ1BSSU5URiggWCApDQorI2VuZGlmDQorDQorI2lmbmRlZiBjb25maWdNQVgNCisJLyogVGhlIGFwcGxpY2F0aW9uIHdyaXRlciBoYXMgbm90IHByb3ZpZGVkIHRoZWlyIG93biBNQVggbWFjcm8sIHNvIGRlZmluZQ0KKwl0aGUgZm9sbG93aW5nIGdlbmVyaWMgaW1wbGVtZW50YXRpb24uICovDQorCSNkZWZpbmUgY29uZmlnTUFYKCBhLCBiICkgKCAoICggYSApID4gKCBiICkgKSA/ICggYSApIDogKCBiICkgKQ0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgY29uZmlnTUlODQorCS8qIFRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgaGFzIG5vdCBwcm92aWRlZCB0aGVpciBvd24gTUFYIG1hY3JvLCBzbyBkZWZpbmUNCisJdGhlIGZvbGxvd2luZyBnZW5lcmljIGltcGxlbWVudGF0aW9uLiAqLw0KKwkjZGVmaW5lIGNvbmZpZ01JTiggYSwgYiApICggKCAoIGEgKSA8ICggYiApICkgPyAoIGEgKSA6ICggYiApICkNCisjZW5kaWYNCisNCiAjaWYgY29uZmlnRU5BQkxFX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFkgPT0gMQ0KIAkjZGVmaW5lIGVUYXNrU3RhdGVHZXQgZVRhc2tHZXRTdGF0ZQ0KIAkjZGVmaW5lIHBvcnRUaWNrVHlwZSBUaWNrVHlwZV90DQpAQCAtMTA4NSw2ICsxMTM0LDMzIEBACiANCiB9IFN0YXRpY1RpbWVyX3Q7DQogDQorLyoNCisqIEluIGxpbmUgd2l0aCBzb2Z0d2FyZSBlbmdpbmVlcmluZyBiZXN0IHByYWN0aWNlLCBlc3BlY2lhbGx5IHdoZW4gc3VwcGx5aW5nIGENCisqIGxpYnJhcnkgdGhhdCBpcyBsaWtlbHkgdG8gY2hhbmdlIGluIGZ1dHVyZSB2ZXJzaW9ucywgRnJlZVJUT1MgaW1wbGVtZW50cyBhDQorKiBzdHJpY3QgZGF0YSBoaWRpbmcgcG9saWN5LiAgVGhpcyBtZWFucyB0aGUgc3RyZWFtIGJ1ZmZlciBzdHJ1Y3R1cmUgdXNlZA0KKyogaW50ZXJuYWxseSBieSBGcmVlUlRPUyBpcyBub3QgYWNjZXNzaWJsZSB0byBhcHBsaWNhdGlvbiBjb2RlLiAgSG93ZXZlciwgaWYNCisqIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgd2FudHMgdG8gc3RhdGljYWxseSBhbGxvY2F0ZSB0aGUgbWVtb3J5IHJlcXVpcmVkIHRvDQorKiBjcmVhdGUgYSBzdHJlYW0gYnVmZmVyIHRoZW4gdGhlIHNpemUgb2YgdGhlIHN0cmVhbSBidWZmZXIgb2JqZWN0IG5lZWRzIHRvIGJlDQorKiBrbm93LiAgVGhlIFN0YXRpY1N0cmVhbUJ1ZmZlcl90IHN0cnVjdHVyZSBiZWxvdyBpcyBwcm92aWRlZCBmb3IgdGhpcyBwdXJwb3NlLg0KKyogSXRzIHNpemUgYW5kIGFsaWdubWVudCByZXF1aXJlbWVudHMgYXJlIGd1YXJhbnRlZWQgdG8gbWF0Y2ggdGhvc2Ugb2YgdGhlDQorKiBnZW51aW5lIHN0cnVjdHVyZSwgbm8gbWF0dGVyIHdoaWNoIGFyY2hpdGVjdHVyZSBpcyBiZWluZyB1c2VkLCBhbmQgbm8gbWF0dGVyDQorKiBob3cgdGhlIHZhbHVlcyBpbiBGcmVlUlRPU0NvbmZpZy5oIGFyZSBzZXQuICBJdHMgY29udGVudHMgYXJlIHNvbWV3aGF0DQorKiBvYmZ1c2NhdGVkIGluIHRoZSBob3BlIHVzZXJzIHdpbGwgcmVjb2duaXNlIHRoYXQgaXQgd291bGQgYmUgdW53aXNlIHRvIG1ha2UNCisqIGRpcmVjdCB1c2Ugb2YgdGhlIHN0cnVjdHVyZSBtZW1iZXJzLg0KKyovDQordHlwZWRlZiBzdHJ1Y3QgeFNUQVRJQ19TVFJFQU1fQlVGRkVSDQorew0KKwlzaXplX3QgdXhEdW1teTFbIDQgXTsNCisJdm9pZCAqIHB2RHVtbXkyWyAzIF07DQorCXVpbnQ4X3QgdWNEdW1teTM7DQorCSNpZiAoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisJCVVCYXNlVHlwZV90IHV4RHVtbXk0Ow0KKwkjZW5kaWYNCit9IFN0YXRpY1N0cmVhbUJ1ZmZlcl90Ow0KKw0KKy8qIE1lc3NhZ2UgYnVmZmVycyBhcmUgYnVpbHQgb24gc3RyZWFtIGJ1ZmZlcnMuICovDQordHlwZWRlZiBTdGF0aWNTdHJlYW1CdWZmZXJfdCBTdGF0aWNNZXNzYWdlQnVmZmVyX3Q7DQorDQogI2lmZGVmIF9fY3BsdXNwbHVzDQogfQ0KICNlbmRpZg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL1N0YWNrTWFjcm9zLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9TdGFja01hY3Jvcy5oCmluZGV4IDZmNjZjNDIuLjU1YzUyMWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL1N0YWNrTWFjcm9zLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvU3RhY2tNYWNyb3MuaApAQCAtMSw3NSArMSwzOCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBTVEFDS19NQUNST1NfSA0KICNkZWZpbmUgU1RBQ0tfTUFDUk9TX0gNCiANCisjaWZuZGVmIF9NU0NfVkVSIC8qIFZpc3VhbCBTdHVkaW8gZG9lc24ndCBzdXBwb3J0ICN3YXJuaW5nLiAqLw0KKwkjd2FybmluZyBUaGUgbmFtZSBvZiB0aGlzIGZpbGUgaGFzIGNoYW5nZWQgdG8gc3RhY2tfbWFjcm9zLmguICBQbGVhc2UgdXBkYXRlIHlvdXIgY29kZSBhY2NvcmRpbmdseS4gIFRoaXMgc291cmNlIGZpbGUgKHdoaWNoIGhhcyB0aGUgb3JpZ2luYWwgbmFtZSkgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSByZWxlYXNlZC4NCisjZW5kaWYNCisNCiAvKg0KICAqIENhbGwgdGhlIHN0YWNrIG92ZXJmbG93IGhvb2sgZnVuY3Rpb24gaWYgdGhlIHN0YWNrIG9mIHRoZSB0YXNrIGJlaW5nIHN3YXBwZWQNCiAgKiBvdXQgaXMgY3VycmVudGx5IG92ZXJmbG93ZWQsIG9yIGxvb2tzIGxpa2UgaXQgbWlnaHQgaGF2ZSBvdmVyZmxvd2VkIGluIHRoZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2Nyb3V0aW5lLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9jcm91dGluZS5oCmluZGV4IDViZWM4YWEuLmI0NDQ3YzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2Nyb3V0aW5lLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvY3JvdXRpbmUuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBDT19ST1VUSU5FX0gNCiAjZGVmaW5lIENPX1JPVVRJTkVfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2RlcHJlY2F0ZWRfZGVmaW5pdGlvbnMuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2RlcHJlY2F0ZWRfZGVmaW5pdGlvbnMuaAppbmRleCAwN2E0NDdjLi4zZmQzYTZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9kZXByZWNhdGVkX2RlZmluaXRpb25zLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvZGVwcmVjYXRlZF9kZWZpbml0aW9ucy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIERFUFJFQ0FURURfREVGSU5JVElPTlNfSA0KICNkZWZpbmUgREVQUkVDQVRFRF9ERUZJTklUSU9OU19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvZXZlbnRfZ3JvdXBzLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9ldmVudF9ncm91cHMuaAppbmRleCBlODkyMjZlLi5jN2Q5N2Q5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9ldmVudF9ncm91cHMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9ldmVudF9ncm91cHMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBFVkVOVF9HUk9VUFNfSA0KICNkZWZpbmUgRVZFTlRfR1JPVVBTX0gNCkBAIC03ODYsNiArNzQ1LDcgQEAKIA0KICNpZiAoY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEpDQogCVVCYXNlVHlwZV90IHV4RXZlbnRHcm91cEdldE51bWJlciggdm9pZCogeEV2ZW50R3JvdXAgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKwl2b2lkIHZFdmVudEdyb3VwU2V0TnVtYmVyKCB2b2lkKiB4RXZlbnRHcm91cCwgVUJhc2VUeXBlX3QgdXhFdmVudEdyb3VwTnVtYmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCiAjZW5kaWYNCiANCiAjaWZkZWYgX19jcGx1c3BsdXMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9saXN0LmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9saXN0LmgKaW5kZXggZTA4ZmNhYi4uOTI4YThlYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbGlzdC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL2xpc3QuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBUaGlzIGlzIHRoZSBsaXN0IGltcGxlbWVudGF0aW9uIHVzZWQgYnkgdGhlIHNjaGVkdWxlci4gIFdoaWxlIGl0IGlzIHRhaWxvcmVkDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbWVzc2FnZV9idWZmZXIuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21lc3NhZ2VfYnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVhYjBhMgotLS0gL2Rldi9udWxsCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21lc3NhZ2VfYnVmZmVyLmgKQEAgLTAsMCArMSw3ODAgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorDQorLyoNCisgKiBNZXNzYWdlIGJ1ZmZlcnMgYnVpbGQgZnVuY3Rpb25hbGl0eSBvbiB0b3Agb2YgRnJlZVJUT1Mgc3RyZWFtIGJ1ZmZlcnMuDQorICogV2hlcmVhcyBzdHJlYW0gYnVmZmVycyBhcmUgdXNlZCB0byBzZW5kIGEgY29udGludW91cyBzdHJlYW0gb2YgZGF0YSBmcm9tIG9uZQ0KKyAqIHRhc2sgb3IgaW50ZXJydXB0IHRvIGFub3RoZXIsIG1lc3NhZ2UgYnVmZmVycyBhcmUgdXNlZCB0byBzZW5kIHZhcmlhYmxlDQorICogbGVuZ3RoIGRpc2NyZXRlIG1lc3NhZ2VzIGZyb20gb25lIHRhc2sgb3IgaW50ZXJydXB0IHRvIGFub3RoZXIuICBUaGVpcg0KKyAqIGltcGxlbWVudGF0aW9uIGlzIGxpZ2h0IHdlaWdodCwgbWFraW5nIHRoZW0gcGFydGljdWxhcmx5IHN1aXRlZCBmb3IgaW50ZXJydXB0DQorICogdG8gdGFzayBhbmQgY29yZSB0byBjb3JlIGNvbW11bmljYXRpb24gc2NlbmFyaW9zLg0KKyAqDQorICogKioqTk9URSoqKjogIFVuaXF1ZWx5IGFtb25nIEZyZWVSVE9TIG9iamVjdHMsIHRoZSBzdHJlYW0gYnVmZmVyDQorICogaW1wbGVtZW50YXRpb24gKHNvIGFsc28gdGhlIG1lc3NhZ2UgYnVmZmVyIGltcGxlbWVudGF0aW9uLCBhcyBtZXNzYWdlIGJ1ZmZlcnMNCisgKiBhcmUgYnVpbHQgb24gdG9wIG9mIHN0cmVhbSBidWZmZXJzKSBhc3N1bWVzIHRoZXJlIGlzIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHdyaXRlIHRvIHRoZSBidWZmZXIgKHRoZSB3cml0ZXIpLCBhbmQgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgcmVhZCBmcm9tIHRoZSBidWZmZXIgKHRoZSByZWFkZXIpLiAgSXQgaXMgc2FmZSBmb3IgdGhlDQorICogd3JpdGVyIGFuZCByZWFkZXIgdG8gYmUgZGlmZmVyZW50IHRhc2tzIG9yIGludGVycnVwdHMsIGJ1dCwgdW5saWtlIG90aGVyDQorICogRnJlZVJUT1Mgb2JqZWN0cywgaXQgaXMgbm90IHNhZmUgdG8gaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycyBvcg0KKyAqIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzLiAgSWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgd3JpdGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclNlbmQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSBzZW5kDQorICogYmxvY2sgdGltZSB0byAwLiAgTGlrZXdpc2UsIGlmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHJlYWRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIHRpbWVvdXQgdG8gMC4NCisgKg0KKyAqIE1lc3NhZ2UgYnVmZmVycyBob2xkIHZhcmlhYmxlIGxlbmd0aCBtZXNzYWdlcy4gIFRvIGVuYWJsZSB0aGF0LCB3aGVuIGENCisgKiBtZXNzYWdlIGlzIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuIGFkZGl0aW9uYWwgc2l6ZW9mKCBzaXplX3QgKSBieXRlcw0KKyAqIGFyZSBhbHNvIHdyaXR0ZW4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UncyBsZW5ndGggKHRoYXQgaGFwcGVucyBpbnRlcm5hbGx5LCB3aXRoDQorICogdGhlIEFQSSBmdW5jdGlvbikuICBzaXplb2YoIHNpemVfdCApIGlzIHR5cGljYWxseSA0IGJ5dGVzIG9uIGEgMzItYml0DQorICogYXJjaGl0ZWN0dXJlLCBzbyB3cml0aW5nIGEgMTAgYnl0ZSBtZXNzYWdlIHRvIGEgbWVzc2FnZSBidWZmZXIgb24gYSAzMi1iaXQNCisgKiBhcmNoaXRlY3R1cmUgd2lsbCBhY3R1YWxseSByZWR1Y2UgdGhlIGF2YWlsYWJsZSBzcGFjZSBpbiB0aGUgbWVzc2FnZSBidWZmZXINCisgKiBieSAxNCBieXRlcyAoMTAgYnl0ZSBhcmUgdXNlZCBieSB0aGUgbWVzc2FnZSwgYW5kIDQgYnl0ZXMgdG8gaG9sZCB0aGUgbGVuZ3RoDQorICogb2YgdGhlIG1lc3NhZ2UpLg0KKyAqLw0KKw0KKyNpZm5kZWYgRlJFRVJUT1NfTUVTU0FHRV9CVUZGRVJfSA0KKyNkZWZpbmUgRlJFRVJUT1NfTUVTU0FHRV9CVUZGRVJfSA0KKw0KKy8qIE1lc3NhZ2UgYnVmZmVycyBhcmUgYnVpbHQgb250byBvZiBzdHJlYW0gYnVmZmVycy4gKi8NCisjaW5jbHVkZSAic3RyZWFtX2J1ZmZlci5oIg0KKw0KKyNpZiBkZWZpbmVkKCBfX2NwbHVzcGx1cyApDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmDQorDQorLyoqDQorICogVHlwZSBieSB3aGljaCBtZXNzYWdlIGJ1ZmZlcnMgYXJlIHJlZmVyZW5jZWQuICBGb3IgZXhhbXBsZSwgYSBjYWxsIHRvDQorICogeE1lc3NhZ2VCdWZmZXJDcmVhdGUoKSByZXR1cm5zIGFuIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB2YXJpYWJsZSB0aGF0IGNhbg0KKyAqIHRoZW4gYmUgdXNlZCBhcyBhIHBhcmFtZXRlciB0byB4TWVzc2FnZUJ1ZmZlclNlbmQoKSwgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCksDQorICogZXRjLg0KKyAqLw0KK3R5cGVkZWYgdm9pZCAqIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdDsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKioNCisgKiBtZXNzYWdlX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMgKTsNCis8L3ByZT4NCisgKg0KKyAqIENyZWF0ZXMgYSBuZXcgbWVzc2FnZSBidWZmZXIgdXNpbmcgZHluYW1pY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gIFNlZQ0KKyAqIHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljKCkgZm9yIGEgdmVyc2lvbiB0aGF0IHVzZXMgc3RhdGljYWxseSBhbGxvY2F0ZWQNCisgKiBtZW1vcnkgKG1lbW9yeSB0aGF0IGlzIGFsbG9jYXRlZCBhdCBjb21waWxlIHRpbWUpLg0KKyAqDQorICogY29uZmlnU1VQUE9SVF9EWU5BTUlDX0FMTE9DQVRJT04gbXVzdCBiZSBzZXQgdG8gMSBvciBsZWZ0IHVuZGVmaW5lZCBpbg0KKyAqIEZyZWVSVE9TQ29uZmlnLmggZm9yIHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCkgdG8gYmUgYXZhaWxhYmxlLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJTaXplQnl0ZXMgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyAobm90IG1lc3NhZ2VzKSB0aGUgbWVzc2FnZQ0KKyAqIGJ1ZmZlciB3aWxsIGJlIGFibGUgdG8gaG9sZCBhdCBhbnkgb25lIHRpbWUuICBXaGVuIGEgbWVzc2FnZSBpcyB3cml0dGVuIHRvDQorICogdGhlIG1lc3NhZ2UgYnVmZmVyIGFuIGFkZGl0aW9uYWwgc2l6ZW9mKCBzaXplX3QgKSBieXRlcyBhcmUgYWxzbyB3cml0dGVuIHRvDQorICogc3RvcmUgdGhlIG1lc3NhZ2UncyBsZW5ndGguICBzaXplb2YoIHNpemVfdCApIGlzIHR5cGljYWxseSA0IGJ5dGVzIG9uIGENCisgKiAzMi1iaXQgYXJjaGl0ZWN0dXJlLCBzbyBvbiBtb3N0IDMyLWJpdCBhcmNoaXRlY3R1cmVzIGEgMTAgYnl0ZSBtZXNzYWdlIHdpbGwNCisgKiB0YWtlIHVwIDE0IGJ5dGVzIG9mIG1lc3NhZ2UgYnVmZmVyIHNwYWNlLg0KKyAqDQorICogQHJldHVybiBJZiBOVUxMIGlzIHJldHVybmVkLCB0aGVuIHRoZSBtZXNzYWdlIGJ1ZmZlciBjYW5ub3QgYmUgY3JlYXRlZA0KKyAqIGJlY2F1c2UgdGhlcmUgaXMgaW5zdWZmaWNpZW50IGhlYXAgbWVtb3J5IGF2YWlsYWJsZSBmb3IgRnJlZVJUT1MgdG8gYWxsb2NhdGUNCisgKiB0aGUgbWVzc2FnZSBidWZmZXIgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzdG9yYWdlIGFyZWEuICBBIG5vbi1OVUxMIHZhbHVlIGJlaW5nDQorICogcmV0dXJuZWQgaW5kaWNhdGVzIHRoYXQgdGhlIG1lc3NhZ2UgYnVmZmVyIGhhcyBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IC0NCisgKiB0aGUgcmV0dXJuZWQgdmFsdWUgc2hvdWxkIGJlIHN0b3JlZCBhcyB0aGUgaGFuZGxlIHRvIHRoZSBjcmVhdGVkIG1lc3NhZ2UNCisgKiBidWZmZXIuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KKw0KK3ZvaWQgdkFGdW5jdGlvbiggdm9pZCApDQorew0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlcjsNCitjb25zdCBzaXplX3QgeE1lc3NhZ2VCdWZmZXJTaXplQnl0ZXMgPSAxMDA7DQorDQorICAgIC8vIENyZWF0ZSBhIG1lc3NhZ2UgYnVmZmVyIHRoYXQgY2FuIGhvbGQgMTAwIGJ5dGVzLiAgVGhlIG1lbW9yeSB1c2VkIHRvIGhvbGQNCisgICAgLy8gYm90aCB0aGUgbWVzc2FnZSBidWZmZXIgc3RydWN0dXJlIGFuZCB0aGUgbWVzc2FnZXMgdGhlbXNlbHZlcyBpcyBhbGxvY2F0ZWQNCisgICAgLy8gZHluYW1pY2FsbHkuICBFYWNoIG1lc3NhZ2UgYWRkZWQgdG8gdGhlIGJ1ZmZlciBjb25zdW1lcyBhbiBhZGRpdGlvbmFsIDQNCisgICAgLy8gYnl0ZXMgd2hpY2ggYXJlIHVzZWQgdG8gaG9sZCB0aGUgbGVuZ2ggb2YgdGhlIG1lc3NhZ2UuDQorICAgIHhNZXNzYWdlQnVmZmVyID0geE1lc3NhZ2VCdWZmZXJDcmVhdGUoIHhNZXNzYWdlQnVmZmVyU2l6ZUJ5dGVzICk7DQorDQorICAgIGlmKCB4TWVzc2FnZUJ1ZmZlciA9PSBOVUxMICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlcmUgd2FzIG5vdCBlbm91Z2ggaGVhcCBtZW1vcnkgc3BhY2UgYXZhaWxhYmxlIHRvIGNyZWF0ZSB0aGUNCisgICAgICAgIC8vIG1lc3NhZ2UgYnVmZmVyLg0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgLy8gVGhlIG1lc3NhZ2UgYnVmZmVyIHdhcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseSBhbmQgY2FuIG5vdyBiZSB1c2VkLg0KKyAgICB9DQorDQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyQ3JlYXRlIHhNZXNzYWdlQnVmZmVyQ3JlYXRlDQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCB4QnVmZmVyU2l6ZUJ5dGVzICkgKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgKSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggeEJ1ZmZlclNpemVCeXRlcywgKCBzaXplX3QgKSAwLCBwZFRSVUUgKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKnB1Y01lc3NhZ2VCdWZmZXJTdG9yYWdlQXJlYSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY01lc3NhZ2VCdWZmZXJfdCAqcHhTdGF0aWNNZXNzYWdlQnVmZmVyICk7DQorPC9wcmU+DQorICogQ3JlYXRlcyBhIG5ldyBtZXNzYWdlIGJ1ZmZlciB1c2luZyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuICBTZWUNCisgKiB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSgpIGZvciBhIHZlcnNpb24gdGhhdCB1c2VzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlclNpemVCeXRlcyBUaGUgc2l6ZSwgaW4gYnl0ZXMsIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSB0aGUNCisgKiBwdWNNZXNzYWdlQnVmZmVyU3RvcmFnZUFyZWEgcGFyYW1ldGVyLiAgV2hlbiBhIG1lc3NhZ2UgaXMgd3JpdHRlbiB0byB0aGUNCisgKiBtZXNzYWdlIGJ1ZmZlciBhbiBhZGRpdGlvbmFsIHNpemVvZiggc2l6ZV90ICkgYnl0ZXMgYXJlIGFsc28gd3JpdHRlbiB0byBzdG9yZQ0KKyAqIHRoZSBtZXNzYWdlJ3MgbGVuZ3RoLiAgc2l6ZW9mKCBzaXplX3QgKSBpcyB0eXBpY2FsbHkgNCBieXRlcyBvbiBhIDMyLWJpdA0KKyAqIGFyY2hpdGVjdHVyZSwgc28gb24gbW9zdCAzMi1iaXQgYXJjaGl0ZWN0dXJlIGEgMTAgYnl0ZSBtZXNzYWdlIHdpbGwgdGFrZSB1cA0KKyAqIDE0IGJ5dGVzIG9mIG1lc3NhZ2UgYnVmZmVyIHNwYWNlLiAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlDQorICogc3RvcmVkIGluIHRoZSBtZXNzYWdlIGJ1ZmZlciBpcyBhY3R1YWxseSAoeEJ1ZmZlclNpemVCeXRlcyAtIDEpLg0KKyAqDQorICogQHBhcmFtIHB1Y01lc3NhZ2VCdWZmZXJTdG9yYWdlQXJlYSBNdXN0IHBvaW50IHRvIGEgdWludDhfdCBhcnJheSB0aGF0IGlzIGF0DQorICogbGVhc3QgeEJ1ZmZlclNpemVCeXRlcyArIDEgYmlnLiAgVGhpcyBpcyB0aGUgYXJyYXkgdG8gd2hpY2ggbWVzc2FnZXMgYXJlDQorICogY29waWVkIHdoZW4gdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0gcHhTdGF0aWNNZXNzYWdlQnVmZmVyIE11c3QgcG9pbnQgdG8gYSB2YXJpYWJsZSBvZiB0eXBlDQorICogU3RhdGljTWVzc2FnZUJ1ZmZlcl90LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaG9sZCB0aGUgbWVzc2FnZSBidWZmZXIncyBkYXRhDQorICogc3RydWN0dXJlLg0KKyAqDQorICogQHJldHVybiBJZiB0aGUgbWVzc2FnZSBidWZmZXIgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgdGhlbiBhIGhhbmRsZSB0byB0aGUNCisgKiBjcmVhdGVkIG1lc3NhZ2UgYnVmZmVyIGlzIHJldHVybmVkLiBJZiBlaXRoZXIgcHVjTWVzc2FnZUJ1ZmZlclN0b3JhZ2VBcmVhIG9yDQorICogcHhTdGF0aWNtZXNzYWdlQnVmZmVyIGFyZSBOVUxMIHRoZW4gTlVMTCBpcyByZXR1cm5lZC4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorDQorLy8gVXNlZCB0byBkaW1lbnNpb24gdGhlIGFycmF5IHVzZWQgdG8gaG9sZCB0aGUgbWVzc2FnZXMuICBUaGUgYXZhaWxhYmxlIHNwYWNlDQorLy8gd2lsbCBhY3R1YWxseSBiZSBvbmUgbGVzcyB0aGFuIHRoaXMsIHNvIDk5OS4NCisjZGVmaW5lIFNUT1JBR0VfU0laRV9CWVRFUyAxMDAwDQorDQorLy8gRGVmaW5lcyB0aGUgbWVtb3J5IHRoYXQgd2lsbCBhY3R1YWxseSBob2xkIHRoZSBtZXNzYWdlcyB3aXRoaW4gdGhlIG1lc3NhZ2UNCisvLyBidWZmZXIuDQorc3RhdGljIHVpbnQ4X3QgdWNTdG9yYWdlQnVmZmVyWyBTVE9SQUdFX1NJWkVfQllURVMgXTsNCisNCisvLyBUaGUgdmFyaWFibGUgdXNlZCB0byBob2xkIHRoZSBtZXNzYWdlIGJ1ZmZlciBzdHJ1Y3R1cmUuDQorU3RhdGljTWVzc2FnZUJ1ZmZlcl90IHhNZXNzYWdlQnVmZmVyU3RydWN0Ow0KKw0KK3ZvaWQgTXlGdW5jdGlvbiggdm9pZCApDQorew0KK01lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlcjsNCisNCisgICAgeE1lc3NhZ2VCdWZmZXIgPSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZVN0YXRpYyggc2l6ZW9mKCB1Y0J1ZmZlclN0b3JhZ2UgKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNCdWZmZXJTdG9yYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeE1lc3NhZ2VCdWZmZXJTdHJ1Y3QgKTsNCisNCisgICAgLy8gQXMgbmVpdGhlciB0aGUgcHVjTWVzc2FnZUJ1ZmZlclN0b3JhZ2VBcmVhIG9yIHB4U3RhdGljTWVzc2FnZUJ1ZmZlcg0KKyAgICAvLyBwYXJhbWV0ZXJzIHdlcmUgTlVMTCwgeE1lc3NhZ2VCdWZmZXIgd2lsbCBub3QgYmUgTlVMTCwgYW5kIGNhbiBiZSB1c2VkIHRvDQorICAgIC8vIHJlZmVyZW5jZSB0aGUgY3JlYXRlZCBtZXNzYWdlIGJ1ZmZlciBpbiBvdGhlciBtZXNzYWdlIGJ1ZmZlciBBUEkgY2FsbHMuDQorDQorICAgIC8vIE90aGVyIGNvZGUgdGhhdCB1c2VzIHRoZSBtZXNzYWdlIGJ1ZmZlciBjYW4gZ28gaGVyZS4NCit9DQorDQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljIHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljDQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyQ3JlYXRlU3RhdGljKCB4QnVmZmVyU2l6ZUJ5dGVzLCBwdWNNZXNzYWdlQnVmZmVyU3RvcmFnZUFyZWEsIHB4U3RhdGljTWVzc2FnZUJ1ZmZlciApICggTWVzc2FnZUJ1ZmZlckhhbmRsZV90ICkgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHhCdWZmZXJTaXplQnl0ZXMsIDAsIHBkVFJVRSwgcHVjTWVzc2FnZUJ1ZmZlclN0b3JhZ2VBcmVhLCBweFN0YXRpY01lc3NhZ2VCdWZmZXIgKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhNZXNzYWdlQnVmZmVyU2VuZCggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnB2VHhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorPHByZT4NCisgKg0KKyAqIFNlbmRzIGEgZGlzY3JldGUgbWVzc2FnZSB0byB0aGUgbWVzc2FnZSBidWZmZXIuICBUaGUgbWVzc2FnZSBjYW4gYmUgYW55DQorICogbGVuZ3RoIHRoYXQgZml0cyB3aXRoaW4gdGhlIGJ1ZmZlcidzIGZyZWUgc3BhY2UsIGFuZCBpcyBjb3BpZWQgaW50byB0aGUNCisgKiBidWZmZXIuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyU2VuZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHNlbmQNCisgKiBibG9jayB0aW1lIHRvIDAuICBMaWtld2lzZSwgaWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgcmVhZGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclJlYWQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSByZWNlaXZlDQorICogYmxvY2sgdGltZSB0byAwLg0KKyAqDQorICogVXNlIHhNZXNzYWdlQnVmZmVyU2VuZCgpIHRvIHdyaXRlIHRvIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSKCkgdG8gd3JpdGUgdG8gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGFuIGludGVycnVwdA0KKyAqIHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciB0byB3aGljaCBhIG1lc3NhZ2UgaXMNCisgKiBiZWluZyBzZW50Lg0KKyAqDQorICogQHBhcmFtIHB2VHhEYXRhIEEgcG9pbnRlciB0byB0aGUgbWVzc2FnZSB0aGF0IGlzIHRvIGJlIGNvcGllZCBpbnRvIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhEYXRhTGVuZ3RoQnl0ZXMgVGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZS4gIFRoYXQgaXMsIHRoZSBudW1iZXIgb2YNCisgKiBieXRlcyB0byBjb3B5IGZyb20gcHZUeERhdGEgaW50byB0aGUgbWVzc2FnZSBidWZmZXIuICBXaGVuIGEgbWVzc2FnZSBpcw0KKyAqIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuIGFkZGl0aW9uYWwgc2l6ZW9mKCBzaXplX3QgKSBieXRlcyBhcmUgYWxzbw0KKyAqIHdyaXR0ZW4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UncyBsZW5ndGguICBzaXplb2YoIHNpemVfdCApIGlzIHR5cGljYWxseSA0IGJ5dGVzDQorICogb24gYSAzMi1iaXQgYXJjaGl0ZWN0dXJlLCBzbyBvbiBtb3N0IDMyLWJpdCBhcmNoaXRlY3R1cmUgc2V0dGluZw0KKyAqIHhEYXRhTGVuZ3RoQnl0ZXMgdG8gMjAgd2lsbCByZWR1Y2UgdGhlIGZyZWUgc3BhY2UgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGJ5IDI0DQorICogYnl0ZXMgKDIwIGJ5dGVzIG9mIG1lc3NhZ2UgZGF0YSBhbmQgNCBieXRlcyB0byBob2xkIHRoZSBtZXNzYWdlIGxlbmd0aCkuDQorICoNCisgKiBAcGFyYW0geFRpY2tzVG9XYWl0IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSBjYWxsaW5nIHRhc2sgc2hvdWxkIHJlbWFpbg0KKyAqIGluIHRoZSBCbG9ja2VkIHN0YXRlIHRvIHdhaXQgZm9yIGVub3VnaCBzcGFjZSB0byBiZWNvbWUgYXZhaWxhYmxlIGluIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyLCBzaG91bGQgdGhlIG1lc3NhZ2UgYnVmZmVyIGhhdmUgaW5zdWZmaWNpZW50IHNwYWNlIHdoZW4NCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmQoKSBpcyBjYWxsZWQuICBUaGUgY2FsbGluZyB0YXNrIHdpbGwgbmV2ZXIgYmxvY2sgaWYNCisgKiB4VGlja3NUb1dhaXQgaXMgemVyby4gIFRoZSBibG9jayB0aW1lIGlzIHNwZWNpZmllZCBpbiB0aWNrIHBlcmlvZHMsIHNvIHRoZQ0KKyAqIGFic29sdXRlIHRpbWUgaXQgcmVwcmVzZW50cyBpcyBkZXBlbmRlbnQgb24gdGhlIHRpY2sgZnJlcXVlbmN5LiAgVGhlIG1hY3JvDQorICogcGRNU19UT19USUNLUygpIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYSB0aW1lIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMgaW50bw0KKyAqIGEgdGltZSBzcGVjaWZpZWQgaW4gdGlja3MuICBTZXR0aW5nIHhUaWNrc1RvV2FpdCB0byBwb3J0TUFYX0RFTEFZIHdpbGwgY2F1c2UNCisgKiB0aGUgdGFzayB0byB3YWl0IGluZGVmaW5pdGVseSAod2l0aG91dCB0aW1pbmcgb3V0KSwgcHJvdmlkZWQNCisgKiBJTkNMVURFX3ZUYXNrU3VzcGVuZCBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgVGFza3MgZG8gbm90IHVzZSBhbnkNCisgKiBDUFUgdGltZSB3aGVuIHRoZXkgYXJlIGluIHRoZSBCbG9ja2VkIHN0YXRlLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLiAgSWYgdGhlIGNhbGwgdG8NCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmQoKSB0aW1lcyBvdXQgYmVmb3JlIHRoZXJlIHdhcyBlbm91Z2ggc3BhY2UgdG8gd3JpdGUgdGhlDQorICogbWVzc2FnZSBpbnRvIHRoZSBtZXNzYWdlIGJ1ZmZlciB0aGVuIHplcm8gaXMgcmV0dXJuZWQuICBJZiB0aGUgY2FsbCBkaWQgbm90DQorICogdGltZSBvdXQgdGhlbiB4RGF0YUxlbmd0aEJ5dGVzIGlzIHJldHVybmVkLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCit2b2lkIHZBRnVuY3Rpb24oIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciApDQorew0KK3NpemVfdCB4Qnl0ZXNTZW50Ow0KK3VpbnQ4X3QgdWNBcnJheVRvU2VuZFtdID0geyAwLCAxLCAyLCAzIH07DQorY2hhciAqcGNTdHJpbmdUb1NlbmQgPSAiU3RyaW5nIHRvIHNlbmQiOw0KK2NvbnN0IFRpY2tUeXBlX3QgeDEwMG1zID0gcGRNU19UT19USUNLUyggMTAwICk7DQorDQorICAgIC8vIFNlbmQgYW4gYXJyYXkgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyLCBibG9ja2luZyBmb3IgYSBtYXhpbXVtIG9mIDEwMG1zIHRvDQorICAgIC8vIHdhaXQgZm9yIGVub3VnaCBzcGFjZSB0byBiZSBhdmFpbGFibGUgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSB1Y0FycmF5VG9TZW5kLCBzaXplb2YoIHVjQXJyYXlUb1NlbmQgKSwgeDEwMG1zICk7DQorDQorICAgIGlmKCB4Qnl0ZXNTZW50ICE9IHNpemVvZiggdWNBcnJheVRvU2VuZCApICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlIGNhbGwgdG8geE1lc3NhZ2VCdWZmZXJTZW5kKCkgdGltZXMgb3V0IGJlZm9yZSB0aGVyZSB3YXMgZW5vdWdoDQorICAgICAgICAvLyBzcGFjZSBpbiB0aGUgYnVmZmVyIGZvciB0aGUgZGF0YSB0byBiZSB3cml0dGVuLg0KKyAgICB9DQorDQorICAgIC8vIFNlbmQgdGhlIHN0cmluZyB0byB0aGUgbWVzc2FnZSBidWZmZXIuICBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlcmUgaXMNCisgICAgLy8gbm90IGVub3VnaCBzcGFjZSBpbiB0aGUgYnVmZmVyLg0KKyAgICB4Qnl0ZXNTZW50ID0geE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgKCB2b2lkICogKSBwY1N0cmluZ1RvU2VuZCwgc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApLCAwICk7DQorDQorICAgIGlmKCB4Qnl0ZXNTZW50ICE9IHN0cmxlbiggcGNTdHJpbmdUb1NlbmQgKSApDQorICAgIHsNCisgICAgICAgIC8vIFRoZSBzdHJpbmcgY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZWNhdXNlIHRoZXJlIHdhcw0KKyAgICAgICAgLy8gbm90IGVub3VnaCBmcmVlIHNwYWNlIGluIHRoZSBidWZmZXIuDQorICAgIH0NCit9DQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyU2VuZCB4TWVzc2FnZUJ1ZmZlclNlbmQNCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJTZW5kKCB4TWVzc2FnZUJ1ZmZlciwgcHZUeERhdGEsIHhEYXRhTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApIHhTdHJlYW1CdWZmZXJTZW5kKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCB4VGlja3NUb1dhaXQgKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPHByZT4NCisgKg0KKyAqIEludGVycnVwdCBzYWZlIHZlcnNpb24gb2YgdGhlIEFQSSBmdW5jdGlvbiB0aGF0IHNlbmRzIGEgZGlzY3JldGUgbWVzc2FnZSB0bw0KKyAqIHRoZSBtZXNzYWdlIGJ1ZmZlci4gIFRoZSBtZXNzYWdlIGNhbiBiZSBhbnkgbGVuZ3RoIHRoYXQgZml0cyB3aXRoaW4gdGhlDQorICogYnVmZmVyJ3MgZnJlZSBzcGFjZSwgYW5kIGlzIGNvcGllZCBpbnRvIHRoZSBidWZmZXIuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyU2VuZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHNlbmQNCisgKiBibG9jayB0aW1lIHRvIDAuICBMaWtld2lzZSwgaWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgcmVhZGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4TWVzc2FnZUJ1ZmZlclJlYWQoKSkgaW5zaWRlIGEgY3JpdGljYWwgc2VjdGlvbiBhbmQgc2V0IHRoZSByZWNlaXZlDQorICogYmxvY2sgdGltZSB0byAwLg0KKyAqDQorICogVXNlIHhNZXNzYWdlQnVmZmVyU2VuZCgpIHRvIHdyaXRlIHRvIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSKCkgdG8gd3JpdGUgdG8gYSBtZXNzYWdlIGJ1ZmZlciBmcm9tIGFuIGludGVycnVwdA0KKyAqIHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciB0byB3aGljaCBhIG1lc3NhZ2UgaXMNCisgKiBiZWluZyBzZW50Lg0KKyAqDQorICogQHBhcmFtIHB2VHhEYXRhIEEgcG9pbnRlciB0byB0aGUgbWVzc2FnZSB0aGF0IGlzIHRvIGJlIGNvcGllZCBpbnRvIHRoZQ0KKyAqIG1lc3NhZ2UgYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhEYXRhTGVuZ3RoQnl0ZXMgVGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZS4gIFRoYXQgaXMsIHRoZSBudW1iZXIgb2YNCisgKiBieXRlcyB0byBjb3B5IGZyb20gcHZUeERhdGEgaW50byB0aGUgbWVzc2FnZSBidWZmZXIuICBXaGVuIGEgbWVzc2FnZSBpcw0KKyAqIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuIGFkZGl0aW9uYWwgc2l6ZW9mKCBzaXplX3QgKSBieXRlcyBhcmUgYWxzbw0KKyAqIHdyaXR0ZW4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UncyBsZW5ndGguICBzaXplb2YoIHNpemVfdCApIGlzIHR5cGljYWxseSA0IGJ5dGVzDQorICogb24gYSAzMi1iaXQgYXJjaGl0ZWN0dXJlLCBzbyBvbiBtb3N0IDMyLWJpdCBhcmNoaXRlY3R1cmUgc2V0dGluZw0KKyAqIHhEYXRhTGVuZ3RoQnl0ZXMgdG8gMjAgd2lsbCByZWR1Y2UgdGhlIGZyZWUgc3BhY2UgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGJ5IDI0DQorICogYnl0ZXMgKDIwIGJ5dGVzIG9mIG1lc3NhZ2UgZGF0YSBhbmQgNCBieXRlcyB0byBob2xkIHRoZSBtZXNzYWdlIGxlbmd0aCkuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAgSXQgaXMgcG9zc2libGUgdGhhdCBhIG1lc3NhZ2UgYnVmZmVyIHdpbGwNCisgKiBoYXZlIGEgdGFzayBibG9ja2VkIG9uIGl0IHdhaXRpbmcgZm9yIGRhdGEuICBDYWxsaW5nDQorICogeE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUigpIGNhbiBtYWtlIGRhdGEgYXZhaWxhYmxlLCBhbmQgc28gY2F1c2UgYSB0YXNrIHRoYXQNCisgKiB3YXMgd2FpdGluZyBmb3IgZGF0YSB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZS4gIElmIGNhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSKCkgY2F1c2VzIGEgdGFzayB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZSwgYW5kIHRoZQ0KKyAqIHVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgKHRoZQ0KKyAqIHRhc2sgdGhhdCB3YXMgaW50ZXJydXB0ZWQpLCB0aGVuLCBpbnRlcm5hbGx5LCB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSKCkNCisgKiB3aWxsIHNldCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB0byBwZFRSVUUuICBJZg0KKyAqIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKSBzZXRzIHRoaXMgdmFsdWUgdG8gcGRUUlVFLCB0aGVuIG5vcm1hbGx5IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgaW50ZXJydXB0IGlzIGV4aXRlZC4gIFRoaXMgd2lsbA0KKyAqIGVuc3VyZSB0aGF0IHRoZSBpbnRlcnJ1cHQgcmV0dXJucyBkaXJlY3RseSB0byB0aGUgaGlnaGVzdCBwcmlvcml0eSBSZWFkeQ0KKyAqIHN0YXRlIHRhc2suICAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUgc2V0IHRvIHBkRkFMU0UgYmVmb3JlIGl0DQorICogaXMgcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uLiAgU2VlIHRoZSBjb2RlIGV4YW1wbGUgYmVsb3cgZm9yIGFuIGV4YW1wbGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIuICBJZiB0aGUNCisgKiBtZXNzYWdlIGJ1ZmZlciBkaWRuJ3QgaGF2ZSBlbm91Z2ggZnJlZSBzcGFjZSBmb3IgdGhlIG1lc3NhZ2UgdG8gYmUgc3RvcmVkDQorICogdGhlbiAwIGlzIHJldHVybmVkLCBvdGhlcndpc2UgeERhdGFMZW5ndGhCeXRlcyBpcyByZXR1cm5lZC4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorLy8gQSBtZXNzYWdlIGJ1ZmZlciB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4NCitNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXI7DQorDQordm9pZCB2QW5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSggdm9pZCApDQorew0KK3NpemVfdCB4Qnl0ZXNTZW50Ow0KK2NoYXIgKnBjU3RyaW5nVG9TZW5kID0gIlN0cmluZyB0byBzZW5kIjsNCitCYXNlVHlwZV90IHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7IC8vIEluaXRpYWxpc2VkIHRvIHBkRkFMU0UuDQorDQorICAgIC8vIEF0dGVtcHQgdG8gc2VuZCB0aGUgc3RyaW5nIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlci4NCisgICAgeEJ5dGVzU2VudCA9IHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB2b2lkICogKSBwY1N0cmluZ1RvU2VuZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbiggcGNTdHJpbmdUb1NlbmQgKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlIHN0cmluZyBjb3VsZCBub3QgYmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgYnVmZmVyIGJlY2F1c2UgdGhlcmUgd2FzDQorICAgICAgICAvLyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIGJ1ZmZlci4NCisgICAgfQ0KKw0KKyAgICAvLyBJZiB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2FzIHNldCB0byBwZFRSVUUgaW5zaWRlDQorICAgIC8vIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoKSB0aGVuIGEgdGFzayB0aGF0IGhhcyBhIHByaW9yaXR5IGFib3ZlIHRoZQ0KKyAgICAvLyBwcmlvcml0eSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIHdhcyB1bmJsb2NrZWQgYW5kIGEgY29udGV4dA0KKyAgICAvLyBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCB0byBlbnN1cmUgdGhlIElTUiByZXR1cm5zIHRvIHRoZSB1bmJsb2NrZWQNCisgICAgLy8gdGFzay4gIEluIG1vc3QgRnJlZVJUT1MgcG9ydHMgdGhpcyBpcyBkb25lIGJ5IHNpbXBseSBwYXNzaW5nDQorICAgIC8vIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBpbnRvIHRhc2tZSUVMRF9GUk9NX0lTUigpLCB3aGljaCB3aWxsIHRlc3QgdGhlDQorICAgIC8vIHZhcmlhYmxlcyB2YWx1ZSwgYW5kIHBlcmZvcm0gdGhlIGNvbnRleHQgc3dpdGNoIGlmIG5lY2Vzc2FyeS4gIENoZWNrIHRoZQ0KKyAgICAvLyBkb2N1bWVudGF0aW9uIGZvciB0aGUgcG9ydCBpbiB1c2UgZm9yIHBvcnQgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zLg0KKyAgICB0YXNrWUlFTERfRlJPTV9JU1IoIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJTZW5kRnJvbUlTUiB4TWVzc2FnZUJ1ZmZlclNlbmRGcm9tSVNSDQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyU2VuZEZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLCBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcywgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyLCBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcywgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeE1lc3NhZ2VCdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHZSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApOw0KKzwvcHJlPg0KKyAqDQorICogUmVjZWl2ZXMgYSBkaXNjcmV0ZSBtZXNzYWdlIGZyb20gYSBtZXNzYWdlIGJ1ZmZlci4gIE1lc3NhZ2VzIGNhbiBiZSBvZg0KKyAqIHZhcmlhYmxlIGxlbmd0aCBhbmQgYXJlIGNvcGllZCBvdXQgb2YgdGhlIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHJlY2VpdmUNCisgKiBibG9jayB0aW1lIHRvIDAuDQorICoNCisgKiBVc2UgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCkgdG8gcmVhZCBmcm9tIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgdG8gcmVhZCBmcm9tIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhbg0KKyAqIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgKElTUikuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgZnJvbSB3aGljaCBhIG1lc3NhZ2UNCisgKiBpcyBiZWluZyByZWNlaXZlZC4NCisgKg0KKyAqIEBwYXJhbSBwdlJ4RGF0YSBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSByZWNlaXZlZCBtZXNzYWdlIGlzDQorICogdG8gYmUgY29waWVkLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJMZW5ndGhCeXRlcyBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSB0aGUgcHZSeERhdGENCisgKiBwYXJhbWV0ZXIuICBUaGlzIHNldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIHRoYXQgY2FuIGJlIHJlY2VpdmVkLg0KKyAqIElmIHhCdWZmZXJMZW5ndGhCeXRlcyBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgbmV4dCBtZXNzYWdlIHRoZW4gdGhlIG1lc3NhZ2UNCisgKiB3aWxsIGJlIGxlZnQgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuZCAwIHdpbGwgYmUgcmV0dXJuZWQuDQorICoNCisgKiBAcGFyYW0geFRpY2tzVG9XYWl0IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRoZSB0YXNrIHNob3VsZCByZW1haW4gaW4gdGhlDQorICogQmxvY2tlZCBzdGF0ZSB0byB3YWl0IGZvciBhIG1lc3NhZ2UsIHNob3VsZCB0aGUgbWVzc2FnZSBidWZmZXIgYmUgZW1wdHkuDQorICogeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCkgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkgaWYgeFRpY2tzVG9XYWl0IGlzIHplcm8gYW5kDQorICogdGhlIG1lc3NhZ2UgYnVmZmVyIGlzIGVtcHR5LiAgVGhlIGJsb2NrIHRpbWUgaXMgc3BlY2lmaWVkIGluIHRpY2sgcGVyaW9kcywgc28NCisgKiB0aGUgYWJzb2x1dGUgdGltZSBpdCByZXByZXNlbnRzIGlzIGRlcGVuZGVudCBvbiB0aGUgdGljayBmcmVxdWVuY3kuICBUaGUNCisgKiBtYWNybyBwZE1TX1RPX1RJQ0tTKCkgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhIHRpbWUgc3BlY2lmaWVkIGluIG1pbGxpc2Vjb25kcw0KKyAqIGludG8gYSB0aW1lIHNwZWNpZmllZCBpbiB0aWNrcy4gIFNldHRpbmcgeFRpY2tzVG9XYWl0IHRvIHBvcnRNQVhfREVMQVkgd2lsbA0KKyAqIGNhdXNlIHRoZSB0YXNrIHRvIHdhaXQgaW5kZWZpbml0ZWx5ICh3aXRob3V0IHRpbWluZyBvdXQpLCBwcm92aWRlZA0KKyAqIElOQ0xVREVfdlRhc2tTdXNwZW5kIGlzIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmguICBUYXNrcyBkbyBub3QgdXNlIGFueQ0KKyAqIENQVSB0aW1lIHdoZW4gdGhleSBhcmUgaW4gdGhlIEJsb2NrZWQgc3RhdGUuDQorICoNCisgKiBAcmV0dXJuIFRoZSBsZW5ndGgsIGluIGJ5dGVzLCBvZiB0aGUgbWVzc2FnZSByZWFkIGZyb20gdGhlIG1lc3NhZ2UgYnVmZmVyLCBpZg0KKyAqIGFueS4gIElmIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZSgpIHRpbWVzIG91dCBiZWZvcmUgYSBtZXNzYWdlIGJlY2FtZSBhdmFpbGFibGUNCisgKiB0aGVuIHplcm8gaXMgcmV0dXJuZWQuICBJZiB0aGUgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIGlzIGdyZWF0ZXIgdGhhbg0KKyAqIHhCdWZmZXJMZW5ndGhCeXRlcyB0aGVuIHRoZSBtZXNzYWdlIHdpbGwgYmUgbGVmdCBpbiB0aGUgbWVzc2FnZSBidWZmZXIgYW5kDQorICogemVybyBpcyByZXR1cm5lZC4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQordm9pZCB2QUZ1bmN0aW9uKCBNZXNzYWdlQnVmZmVyX3QgeE1lc3NhZ2VCdWZmZXIgKQ0KK3sNCit1aW50OF90IHVjUnhEYXRhWyAyMCBdOw0KK3NpemVfdCB4UmVjZWl2ZWRCeXRlczsNCitjb25zdCBUaWNrVHlwZV90IHhCbG9ja1RpbWUgPSBwZE1TX1RPX1RJQ0tTKCAyMCApOw0KKw0KKyAgICAvLyBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBidWZmZXIuICBXYWl0IGluIHRoZSBCbG9ja2VkDQorICAgIC8vIHN0YXRlIChzbyBub3QgdXNpbmcgYW55IENQVSBwcm9jZXNzaW5nIHRpbWUpIGZvciBhIG1heGltdW0gb2YgMTAwbXMgZm9yDQorICAgIC8vIGEgbWVzc2FnZSB0byBiZWNvbWUgYXZhaWxhYmxlLg0KKyAgICB4UmVjZWl2ZWRCeXRlcyA9IHhNZXNzYWdlQnVmZmVyUmVjZWl2ZSggeE1lc3NhZ2VCdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHVjUnhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCB1Y1J4RGF0YSApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeEJsb2NrVGltZSApOw0KKw0KKyAgICBpZiggeFJlY2VpdmVkQnl0ZXMgPiAwICkNCisgICAgew0KKyAgICAgICAgLy8gQSB1Y1J4RGF0YSBjb250YWlucyBhIG1lc3NhZ2UgdGhhdCBpcyB4UmVjZWl2ZWRCeXRlcyBsb25nLiAgUHJvY2Vzcw0KKyAgICAgICAgLy8gdGhlIG1lc3NhZ2UgaGVyZS4uLi4NCisgICAgfQ0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZQ0KKyAqIFxpbmdyb3VwIE1lc3NhZ2VCdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlclJlY2VpdmUoIHhNZXNzYWdlQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCB4VGlja3NUb1dhaXQgKSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCB4VGlja3NUb1dhaXQgKQ0KKw0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHZSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VUeXBlX3QgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCis8L3ByZT4NCisgKg0KKyAqIEFuIGludGVycnVwdCBzYWZlIHZlcnNpb24gb2YgdGhlIEFQSSBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGEgZGlzY3JldGUNCisgKiBtZXNzYWdlIGZyb20gYSBtZXNzYWdlIGJ1ZmZlci4gIE1lc3NhZ2VzIGNhbiBiZSBvZiB2YXJpYWJsZSBsZW5ndGggYW5kIGFyZQ0KKyAqIGNvcGllZCBvdXQgb2YgdGhlIGJ1ZmZlci4NCisgKg0KKyAqICoqKk5PVEUqKio6ICBVbmlxdWVseSBhbW9uZyBGcmVlUlRPUyBvYmplY3RzLCB0aGUgc3RyZWFtIGJ1ZmZlcg0KKyAqIGltcGxlbWVudGF0aW9uIChzbyBhbHNvIHRoZSBtZXNzYWdlIGJ1ZmZlciBpbXBsZW1lbnRhdGlvbiwgYXMgbWVzc2FnZSBidWZmZXJzDQorICogYXJlIGJ1aWx0IG9uIHRvcCBvZiBzdHJlYW0gYnVmZmVycykgYXNzdW1lcyB0aGVyZSBpcyBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCB3cml0ZSB0byB0aGUgYnVmZmVyICh0aGUgd3JpdGVyKSwgYW5kIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHJlYWQgZnJvbSB0aGUgYnVmZmVyICh0aGUgcmVhZGVyKS4gIEl0IGlzIHNhZmUgZm9yIHRoZQ0KKyAqIHdyaXRlciBhbmQgcmVhZGVyIHRvIGJlIGRpZmZlcmVudCB0YXNrcyBvciBpbnRlcnJ1cHRzLCBidXQsIHVubGlrZSBvdGhlcg0KKyAqIEZyZWVSVE9TIG9iamVjdHMsIGl0IGlzIG5vdCBzYWZlIHRvIGhhdmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMgb3INCisgKiBtdWx0aXBsZSBkaWZmZXJlbnQgcmVhZGVycy4gIElmIHRoZXJlIGFyZSB0byBiZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycw0KKyAqIHRoZW4gdGhlIGFwcGxpY2F0aW9uIHdyaXRlciBtdXN0IHBsYWNlIGVhY2ggY2FsbCB0byBhIHdyaXRpbmcgQVBJIGZ1bmN0aW9uDQorICogKHN1Y2ggYXMgeE1lc3NhZ2VCdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhNZXNzYWdlQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHJlY2VpdmUNCisgKiBibG9jayB0aW1lIHRvIDAuDQorICoNCisgKiBVc2UgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlKCkgdG8gcmVhZCBmcm9tIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgdG8gcmVhZCBmcm9tIGEgbWVzc2FnZSBidWZmZXIgZnJvbSBhbg0KKyAqIGludGVycnVwdCBzZXJ2aWNlIHJvdXRpbmUgKElTUikuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgZnJvbSB3aGljaCBhIG1lc3NhZ2UNCisgKiBpcyBiZWluZyByZWNlaXZlZC4NCisgKg0KKyAqIEBwYXJhbSBwdlJ4RGF0YSBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBpbnRvIHdoaWNoIHRoZSByZWNlaXZlZCBtZXNzYWdlIGlzDQorICogdG8gYmUgY29waWVkLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJMZW5ndGhCeXRlcyBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieSB0aGUgcHZSeERhdGENCisgKiBwYXJhbWV0ZXIuICBUaGlzIHNldHMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIHRoYXQgY2FuIGJlIHJlY2VpdmVkLg0KKyAqIElmIHhCdWZmZXJMZW5ndGhCeXRlcyBpcyB0b28gc21hbGwgdG8gaG9sZCB0aGUgbmV4dCBtZXNzYWdlIHRoZW4gdGhlIG1lc3NhZ2UNCisgKiB3aWxsIGJlIGxlZnQgaW4gdGhlIG1lc3NhZ2UgYnVmZmVyIGFuZCAwIHdpbGwgYmUgcmV0dXJuZWQuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAgSXQgaXMgcG9zc2libGUgdGhhdCBhIG1lc3NhZ2UgYnVmZmVyIHdpbGwNCisgKiBoYXZlIGEgdGFzayBibG9ja2VkIG9uIGl0IHdhaXRpbmcgZm9yIHNwYWNlIHRvIGJlY29tZSBhdmFpbGFibGUuICBDYWxsaW5nDQorICogeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUigpIGNhbiBtYWtlIHNwYWNlIGF2YWlsYWJsZSwgYW5kIHNvIGNhdXNlIGEgdGFzaw0KKyAqIHRoYXQgaXMgd2FpdGluZyBmb3Igc3BhY2UgdG8gbGVhdmUgdGhlIEJsb2NrZWQgc3RhdGUuICBJZiBjYWxsaW5nDQorICogeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUigpIGNhdXNlcyBhIHRhc2sgdG8gbGVhdmUgdGhlIEJsb2NrZWQgc3RhdGUsIGFuZA0KKyAqIHRoZSB1bmJsb2NrZWQgdGFzayBoYXMgYSBwcmlvcml0eSBoaWdoZXIgdGhhbiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrDQorICogKHRoZSB0YXNrIHRoYXQgd2FzIGludGVycnVwdGVkKSwgdGhlbiwgaW50ZXJuYWxseSwNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgd2lsbCBzZXQgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gdG8gcGRUUlVFLg0KKyAqIElmIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSBzZXRzIHRoaXMgdmFsdWUgdG8gcGRUUlVFLCB0aGVuIG5vcm1hbGx5IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSB0aGUgaW50ZXJydXB0IGlzIGV4aXRlZC4gIFRoYXQgd2lsbA0KKyAqIGVuc3VyZSB0aGUgaW50ZXJydXB0IHJldHVybnMgZGlyZWN0bHkgdG8gdGhlIGhpZ2hlc3QgcHJpb3JpdHkgUmVhZHkgc3RhdGUNCisgKiB0YXNrLiAgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlIHNldCB0byBwZEZBTFNFIGJlZm9yZSBpdCBpcw0KKyAqIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi4gIFNlZSB0aGUgY29kZSBleGFtcGxlIGJlbG93IGZvciBhbiBleGFtcGxlLg0KKyAqDQorICogQHJldHVybiBUaGUgbGVuZ3RoLCBpbiBieXRlcywgb2YgdGhlIG1lc3NhZ2UgcmVhZCBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlciwgaWYNCisgKiBhbnkuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KKy8vIEEgbWVzc2FnZSBidWZmZXIgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuDQorTWVzc2FnZUJ1ZmZlcl90IHhNZXNzYWdlQnVmZmVyOw0KKw0KK3ZvaWQgdkFuSW50ZXJydXB0U2VydmljZVJvdXRpbmUoIHZvaWQgKQ0KK3sNCit1aW50OF90IHVjUnhEYXRhWyAyMCBdOw0KK3NpemVfdCB4UmVjZWl2ZWRCeXRlczsNCitCYXNlVHlwZV90IHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiA9IHBkRkFMU0U7ICAvLyBJbml0aWFsaXNlZCB0byBwZEZBTFNFLg0KKw0KKyAgICAvLyBSZWNlaXZlIHRoZSBuZXh0IG1lc3NhZ2UgZnJvbSB0aGUgbWVzc2FnZSBidWZmZXIuDQorICAgIHhSZWNlaXZlZEJ5dGVzID0geE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHVjUnhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCB1Y1J4RGF0YSApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKw0KKyAgICBpZiggeFJlY2VpdmVkQnl0ZXMgPiAwICkNCisgICAgew0KKyAgICAgICAgLy8gQSB1Y1J4RGF0YSBjb250YWlucyBhIG1lc3NhZ2UgdGhhdCBpcyB4UmVjZWl2ZWRCeXRlcyBsb25nLiAgUHJvY2Vzcw0KKyAgICAgICAgLy8gdGhlIG1lc3NhZ2UgaGVyZS4uLi4NCisgICAgfQ0KKw0KKyAgICAvLyBJZiB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2FzIHNldCB0byBwZFRSVUUgaW5zaWRlDQorICAgIC8vIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0aGVuIGEgdGFzayB0aGF0IGhhcyBhIHByaW9yaXR5IGFib3ZlIHRoZQ0KKyAgICAvLyBwcmlvcml0eSBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrIHdhcyB1bmJsb2NrZWQgYW5kIGEgY29udGV4dA0KKyAgICAvLyBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCB0byBlbnN1cmUgdGhlIElTUiByZXR1cm5zIHRvIHRoZSB1bmJsb2NrZWQNCisgICAgLy8gdGFzay4gIEluIG1vc3QgRnJlZVJUT1MgcG9ydHMgdGhpcyBpcyBkb25lIGJ5IHNpbXBseSBwYXNzaW5nDQorICAgIC8vIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBpbnRvIHRhc2tZSUVMRF9GUk9NX0lTUigpLCB3aGljaCB3aWxsIHRlc3QgdGhlDQorICAgIC8vIHZhcmlhYmxlcyB2YWx1ZSwgYW5kIHBlcmZvcm0gdGhlIGNvbnRleHQgc3dpdGNoIGlmIG5lY2Vzc2FyeS4gIENoZWNrIHRoZQ0KKyAgICAvLyBkb2N1bWVudGF0aW9uIGZvciB0aGUgcG9ydCBpbiB1c2UgZm9yIHBvcnQgc3BlY2lmaWMgaW5zdHJ1Y3Rpb25zLg0KKyAgICB0YXNrWUlFTERfRlJPTV9JU1IoIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlRnJvbUlTUiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVGcm9tSVNSDQorICogXGluZ3JvdXAgTWVzc2FnZUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLCBwdlJ4RGF0YSwgeEJ1ZmZlckxlbmd0aEJ5dGVzLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIsIHB2UnhEYXRhLCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQordm9pZCB2TWVzc2FnZUJ1ZmZlckRlbGV0ZSggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBEZWxldGVzIGEgbWVzc2FnZSBidWZmZXIgdGhhdCB3YXMgcHJldmlvdXNseSBjcmVhdGVkIHVzaW5nIGEgY2FsbCB0bw0KKyAqIHhNZXNzYWdlQnVmZmVyQ3JlYXRlKCkgb3IgeE1lc3NhZ2VCdWZmZXJDcmVhdGVTdGF0aWMoKS4gIElmIHRoZSBtZXNzYWdlDQorICogYnVmZmVyIHdhcyBjcmVhdGVkIHVzaW5nIGR5bmFtaWMgbWVtb3J5ICh0aGF0IGlzLCBieSB4TWVzc2FnZUJ1ZmZlckNyZWF0ZSgpKSwNCisgKiB0aGVuIHRoZSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZyZWVkLg0KKyAqDQorICogQSBtZXNzYWdlIGJ1ZmZlciBoYW5kbGUgbXVzdCBub3QgYmUgdXNlZCBhZnRlciB0aGUgbWVzc2FnZSBidWZmZXIgaGFzIGJlZW4NCisgKiBkZWxldGVkLg0KKyAqDQorICogQHBhcmFtIHhNZXNzYWdlQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIHRvIGJlIGRlbGV0ZWQuDQorICoNCisgKi8NCisjZGVmaW5lIHZNZXNzYWdlQnVmZmVyRGVsZXRlKCB4TWVzc2FnZUJ1ZmZlciApIHZTdHJlYW1CdWZmZXJEZWxldGUoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKzxwcmU+DQorQmFzZVR5cGVfdCB4TWVzc2FnZUJ1ZmZlcklzRnVsbCggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICkgKTsNCis8L3ByZT4NCisgKg0KKyAqIFRlc3RzIHRvIHNlZSBpZiBhIG1lc3NhZ2UgYnVmZmVyIGlzIGZ1bGwuICBBIG1lc3NhZ2UgYnVmZmVyIGlzIGZ1bGwgaWYgaXQNCisgKiBjYW5ub3QgYWNjZXB0IGFueSBtb3JlIG1lc3NhZ2VzLCBvZiBhbnkgc2l6ZSwgdW50aWwgc3BhY2UgaXMgbWFkZSBhdmFpbGFibGUNCisgKiBieSBhIG1lc3NhZ2UgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBtZXNzYWdlIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSB4TWVzc2FnZUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZWluZyBxdWVyaWVkLg0KKyAqDQorICogQHJldHVybiBJZiB0aGUgbWVzc2FnZSBidWZmZXIgcmVmZXJlbmNlZCBieSB4TWVzc2FnZUJ1ZmZlciBpcyBmdWxsIHRoZW4NCisgKiBwZFRSVUUgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UgcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVySXNGdWxsKCB4TWVzc2FnZUJ1ZmZlciApIHhTdHJlYW1CdWZmZXJJc0Z1bGwoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciApDQorDQorLyoqDQorICogbWVzc2FnZV9idWZmZXIuaA0KKzxwcmU+DQorQmFzZVR5cGVfdCB4TWVzc2FnZUJ1ZmZlcklzRW1wdHkoIE1lc3NhZ2VCdWZmZXJIYW5kbGVfdCB4TWVzc2FnZUJ1ZmZlciApICk7DQorPC9wcmU+DQorICoNCisgKiBUZXN0cyB0byBzZWUgaWYgYSBtZXNzYWdlIGJ1ZmZlciBpcyBlbXB0eSAoZG9lcyBub3QgY29udGFpbiBhbnkgbWVzc2FnZXMpLg0KKyAqDQorICogQHBhcmFtIHhNZXNzYWdlQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIG1lc3NhZ2UgYnVmZmVyIGJlaW5nIHF1ZXJpZWQuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBtZXNzYWdlIGJ1ZmZlciByZWZlcmVuY2VkIGJ5IHhNZXNzYWdlQnVmZmVyIGlzIGVtcHR5IHRoZW4NCisgKiBwZFRSVUUgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UgcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJJc0VtcHR5KCB4TWVzc2FnZUJ1ZmZlciApIHhTdHJlYW1CdWZmZXJJc0VtcHR5KCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIgKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeE1lc3NhZ2VCdWZmZXJSZXNldCggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBSZXNldHMgYSBtZXNzYWdlIGJ1ZmZlciB0byBpdHMgaW5pdGlhbCBlbXB0eSBzdGF0ZSwgZGlzY2FyZGluZyBhbnkgbWVzc2FnZSBpdA0KKyAqIGNvbnRhaW5lZC4NCisgKg0KKyAqIEEgbWVzc2FnZSBidWZmZXIgY2FuIG9ubHkgYmUgcmVzZXQgaWYgdGhlcmUgYXJlIG5vIHRhc2tzIGJsb2NrZWQgb24gaXQuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgYmVpbmcgcmVzZXQuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBtZXNzYWdlIGJ1ZmZlciB3YXMgcmVzZXQgdGhlbiBwZFBBU1MgaXMgcmV0dXJuZWQuICBJZiB0aGUNCisgKiBtZXNzYWdlIGJ1ZmZlciBjb3VsZCBub3QgYmUgcmVzZXQgYmVjYXVzZSBlaXRoZXIgdGhlcmUgd2FzIGEgdGFzayBibG9ja2VkIG9uDQorICogdGhlIG1lc3NhZ2UgcXVldWUgdG8gd2FpdCBmb3Igc3BhY2UgdG8gYmVjb21lIGF2YWlsYWJsZSwgb3IgdG8gd2FpdCBmb3IgYQ0KKyAqIGEgbWVzc2FnZSB0byBiZSBhdmFpbGFibGUsIHRoZW4gcGRGQUlMIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyUmVzZXQgeE1lc3NhZ2VCdWZmZXJSZXNldA0KKyAqIFxpbmdyb3VwIE1lc3NhZ2VCdWZmZXJNYW5hZ2VtZW50DQorICovDQorI2RlZmluZSB4TWVzc2FnZUJ1ZmZlclJlc2V0KCB4TWVzc2FnZUJ1ZmZlciApIHhTdHJlYW1CdWZmZXJSZXNldCggKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHhNZXNzYWdlQnVmZmVyICkNCisNCisNCisvKioNCisgKiBtZXNzYWdlX2J1ZmZlci5oDQorPHByZT4NCitzaXplX3QgeE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggTWVzc2FnZUJ1ZmZlckhhbmRsZV90IHhNZXNzYWdlQnVmZmVyICkgKTsNCis8L3ByZT4NCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgZnJlZSBzcGFjZSBpbiB0aGUgbWVzc2FnZSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geE1lc3NhZ2VCdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgbWVzc2FnZSBidWZmZXIgYmVpbmcgcXVlcmllZC4NCisgKg0KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSB3cml0dGVuIHRvIHRoZSBtZXNzYWdlIGJ1ZmZlciBiZWZvcmUNCisgKiB0aGUgbWVzc2FnZSBidWZmZXIgd291bGQgYmUgZnVsbC4gIFdoZW4gYSBtZXNzYWdlIGlzIHdyaXR0ZW4gdG8gdGhlIG1lc3NhZ2UNCisgKiBidWZmZXIgYW4gYWRkaXRpb25hbCBzaXplb2YoIHNpemVfdCApIGJ5dGVzIGFyZSBhbHNvIHdyaXR0ZW4gdG8gc3RvcmUgdGhlDQorICogbWVzc2FnZSdzIGxlbmd0aC4gIHNpemVvZiggc2l6ZV90ICkgaXMgdHlwaWNhbGx5IDQgYnl0ZXMgb24gYSAzMi1iaXQNCisgKiBhcmNoaXRlY3R1cmUsIHNvIGlmIHhNZXNzYWdlQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCkgcmV0dXJucyAxMCwgdGhlbiB0aGUgc2l6ZQ0KKyAqIG9mIHRoZSBsYXJnZXN0IG1lc3NhZ2UgdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0aGUgbWVzc2FnZSBidWZmZXIgaXMgNiBieXRlcy4NCisgKg0KKyAqIFxkZWZncm91cCB4TWVzc2FnZUJ1ZmZlclNwYWNlQXZhaWxhYmxlIHhNZXNzYWdlQnVmZmVyU3BhY2VBdmFpbGFibGUNCisgKiBcaW5ncm91cCBNZXNzYWdlQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJTcGFjZUF2YWlsYWJsZSggeE1lc3NhZ2VCdWZmZXIgKSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIgKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4TWVzc2FnZUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKzwvcHJlPg0KKyAqDQorICogRm9yIGFkdmFuY2VkIHVzZXJzIG9ubHkuDQorICoNCisgKiBUaGUgc2JTRU5EX0NPTVBMRVRFRCgpIG1hY3JvIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgRnJlZVJUT1MgQVBJcyB3aGVuDQorICogZGF0YSBpcyBzZW50IHRvIGEgbWVzc2FnZSBidWZmZXIgb3Igc3RyZWFtIGJ1ZmZlci4gIElmIHRoZXJlIHdhcyBhIHRhc2sgdGhhdA0KKyAqIHdhcyBibG9ja2VkIG9uIHRoZSBtZXNzYWdlIG9yIHN0cmVhbSBidWZmZXIgd2FpdGluZyBmb3IgZGF0YSB0byBhcnJpdmUgdGhlbg0KKyAqIHRoZSBzYlNFTkRfQ09NUExFVEVEKCkgbWFjcm8gc2VuZHMgYSBub3RpZmljYXRpb24gdG8gdGhlIHRhc2sgdG8gcmVtb3ZlIGl0DQorICogZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZS4gIHhNZXNzYWdlQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoKSBkb2VzIHRoZSBzYW1lDQorICogdGhpbmcuICBJdCBpcyBwcm92aWRlZCB0byBlbmFibGUgYXBwbGljYXRpb24gd3JpdGVycyB0byBpbXBsZW1lbnQgdGhlaXIgb3duDQorICogdmVyc2lvbiBvZiBzYlNFTkRfQ09NUExFVEVEKCksIGFuZCBNVVNUIE5PVCBCRSBVU0VEIEFUIEFOWSBPVEhFUiBUSU1FLg0KKyAqDQorICogU2VlIHRoZSBleGFtcGxlIGltcGxlbWVudGVkIGluIEZyZWVSVE9TL0RlbW8vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMgZm9yDQorICogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gd2hpY2ggZGF0YSB3YXMNCisgKiB3cml0dGVuLg0KKyAqDQorICogQHBhcmFtIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlDQorICogaW5pdGlhbGlzZWQgdG8gcGRGQUxTRSBiZWZvcmUgaXQgaXMgcGFzc2VkIGludG8NCisgKiB4TWVzc2FnZUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCkuICBJZiBjYWxsaW5nDQorICogeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUigpIHJlbW92ZXMgYSB0YXNrIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUsDQorICogYW5kIHRoZSB0YXNrIGhhcyBhIHByaW9yaXR5IGFib3ZlIHRoZSBwcmlvcml0eSBvZiB0aGUgY3VycmVudGx5IHJ1bm5pbmcgdGFzaywNCisgKiB0aGVuICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHdpbGwgZ2V0IHNldCB0byBwZFRSVUUgaW5kaWNhdGluZyB0aGF0IGENCisgKiBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIGJlZm9yZSBleGl0aW5nIHRoZSBJU1IuDQorICoNCisgKiBAcmV0dXJuIElmIGEgdGFzayB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlIHRoZW4gcGRUUlVFIGlzIHJldHVybmVkLg0KKyAqIE90aGVyd2lzZSBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhNZXNzYWdlQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IgeE1lc3NhZ2VCdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUg0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhNZXNzYWdlQnVmZmVyU2VuZENvbXBsZXRlZEZyb21JU1IoIHhNZXNzYWdlQnVmZmVyLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgeE1lc3NhZ2VCdWZmZXIsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQ0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCBNZXNzYWdlQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKzwvcHJlPg0KKyAqDQorICogRm9yIGFkdmFuY2VkIHVzZXJzIG9ubHkuDQorICoNCisgKiBUaGUgc2JSRUNFSVZFX0NPTVBMRVRFRCgpIG1hY3JvIGlzIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgRnJlZVJUT1MgQVBJcyB3aGVuDQorICogZGF0YSBpcyByZWFkIG91dCBvZiBhIG1lc3NhZ2UgYnVmZmVyIG9yIHN0cmVhbSBidWZmZXIuICBJZiB0aGVyZSB3YXMgYSB0YXNrDQorICogdGhhdCB3YXMgYmxvY2tlZCBvbiB0aGUgbWVzc2FnZSBvciBzdHJlYW0gYnVmZmVyIHdhaXRpbmcgZm9yIGRhdGEgdG8gYXJyaXZlDQorICogdGhlbiB0aGUgc2JSRUNFSVZFX0NPTVBMRVRFRCgpIG1hY3JvIHNlbmRzIGEgbm90aWZpY2F0aW9uIHRvIHRoZSB0YXNrIHRvDQorICogcmVtb3ZlIGl0IGZyb20gdGhlIEJsb2NrZWQgc3RhdGUuICB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCkNCisgKiBkb2VzIHRoZSBzYW1lIHRoaW5nLiAgSXQgaXMgcHJvdmlkZWQgdG8gZW5hYmxlIGFwcGxpY2F0aW9uIHdyaXRlcnMgdG8NCisgKiBpbXBsZW1lbnQgdGhlaXIgb3duIHZlcnNpb24gb2Ygc2JSRUNFSVZFX0NPTVBMRVRFRCgpLCBhbmQgTVVTVCBOT1QgQkUgVVNFRCBBVA0KKyAqIEFOWSBPVEhFUiBUSU1FLg0KKyAqDQorICogU2VlIHRoZSBleGFtcGxlIGltcGxlbWVudGVkIGluIEZyZWVSVE9TL0RlbW8vTWluaW1hbC9NZXNzYWdlQnVmZmVyQU1QLmMgZm9yDQorICogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgZnJvbSB3aGljaCBkYXRhIHdhcw0KKyAqIHJlYWQuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiBzaG91bGQgYmUNCisgKiBpbml0aWFsaXNlZCB0byBwZEZBTFNFIGJlZm9yZSBpdCBpcyBwYXNzZWQgaW50bw0KKyAqIHhNZXNzYWdlQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoKS4gIElmIGNhbGxpbmcNCisgKiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCkgcmVtb3ZlcyBhIHRhc2sgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSwNCisgKiBhbmQgdGhlIHRhc2sgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrLA0KKyAqIHRoZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2lsbCBnZXQgc2V0IHRvIHBkVFJVRSBpbmRpY2F0aW5nIHRoYXQgYQ0KKyAqIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgYmVmb3JlIGV4aXRpbmcgdGhlIElTUi4NCisgKg0KKyAqIEByZXR1cm4gSWYgYSB0YXNrIHdhcyByZW1vdmVkIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUgdGhlbiBwZFRSVUUgaXMgcmV0dXJuZWQuDQorICogT3RoZXJ3aXNlIHBkRkFMU0UgaXMgcmV0dXJuZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUiB4TWVzc2FnZUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeE1lc3NhZ2VCdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUiggeE1lc3NhZ2VCdWZmZXIsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoICggU3RyZWFtQnVmZmVySGFuZGxlX3QgKSB4TWVzc2FnZUJ1ZmZlciwgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorDQorI2lmIGRlZmluZWQoIF9fY3BsdXNwbHVzICkNCit9IC8qIGV4dGVybiAiQyIgKi8NCisjZW5kaWYNCisNCisjZW5kaWYJLyogIWRlZmluZWQoIEZSRUVSVE9TX01FU1NBR0VfQlVGRkVSX0ggKSAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21wdV9wcm90b3R5cGVzLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9tcHVfcHJvdG90eXBlcy5oCmluZGV4IGY3N2UzMTAuLjNiOTgyNjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21wdV9wcm90b3R5cGVzLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3Byb3RvdHlwZXMuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBXaGVuIHRoZSBNUFUgaXMgdXNlZCB0aGUgc3RhbmRhcmQgKG5vbiBNUFUpIEFQSSBmdW5jdGlvbnMgYXJlIG1hcHBlZCB0bw0KQEAgLTc5LDcgKzM4LDcgQEAKICNpZm5kZWYgTVBVX1BST1RPVFlQRVNfSA0KICNkZWZpbmUgTVBVX1BST1RPVFlQRVNfSA0KIA0KLS8qIE1QVSB2ZXJzaW9ucyBvZiB0YXNrcy5oIEFQSSBmdW5jdGlvbi4gKi8NCisvKiBNUFUgdmVyc2lvbnMgb2YgdGFza3MuaCBBUEkgZnVuY3Rpb25zLiAqLw0KIEJhc2VUeXBlX3QgTVBVX3hUYXNrQ3JlYXRlKCBUYXNrRnVuY3Rpb25fdCBweFRhc2tDb2RlLCBjb25zdCBjaGFyICogY29uc3QgcGNOYW1lLCBjb25zdCB1aW50MTZfdCB1c1N0YWNrRGVwdGgsIHZvaWQgKiBjb25zdCBwdlBhcmFtZXRlcnMsIFVCYXNlVHlwZV90IHV4UHJpb3JpdHksIFRhc2tIYW5kbGVfdCAqIGNvbnN0IHB4Q3JlYXRlZFRhc2sgKTsNCiBUYXNrSGFuZGxlX3QgTVBVX3hUYXNrQ3JlYXRlU3RhdGljKCBUYXNrRnVuY3Rpb25fdCBweFRhc2tDb2RlLCBjb25zdCBjaGFyICogY29uc3QgcGNOYW1lLCBjb25zdCB1aW50MzJfdCB1bFN0YWNrRGVwdGgsIHZvaWQgKiBjb25zdCBwdlBhcmFtZXRlcnMsIFVCYXNlVHlwZV90IHV4UHJpb3JpdHksIFN0YWNrVHlwZV90ICogY29uc3QgcHV4U3RhY2tCdWZmZXIsIFN0YXRpY1Rhc2tfdCAqIGNvbnN0IHB4VGFza0J1ZmZlciApOw0KIEJhc2VUeXBlX3QgTVBVX3hUYXNrQ3JlYXRlUmVzdHJpY3RlZCggY29uc3QgVGFza1BhcmFtZXRlcnNfdCAqIGNvbnN0IHB4VGFza0RlZmluaXRpb24sIFRhc2tIYW5kbGVfdCAqcHhDcmVhdGVkVGFzayApOw0KQEAgLTEyMyw3ICs4Miw3IEBACiB2b2lkIE1QVV92VGFza01pc3NlZFlpZWxkKCB2b2lkICk7DQogQmFzZVR5cGVfdCBNUFVfeFRhc2tHZXRTY2hlZHVsZXJTdGF0ZSggdm9pZCApOw0KIA0KLS8qIE1QVSB2ZXJzaW9ucyBvZiBxdWV1ZS5oIEFQSSBmdW5jdGlvbi4gKi8NCisvKiBNUFUgdmVyc2lvbnMgb2YgcXVldWUuaCBBUEkgZnVuY3Rpb25zLiAqLw0KIEJhc2VUeXBlX3QgTVBVX3hRdWV1ZUdlbmVyaWNTZW5kKCBRdWV1ZUhhbmRsZV90IHhRdWV1ZSwgY29uc3Qgdm9pZCAqIGNvbnN0IHB2SXRlbVRvUXVldWUsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0LCBjb25zdCBCYXNlVHlwZV90IHhDb3B5UG9zaXRpb24gKTsNCiBCYXNlVHlwZV90IE1QVV94UXVldWVSZWNlaXZlKCBRdWV1ZUhhbmRsZV90IHhRdWV1ZSwgdm9pZCAqIGNvbnN0IHB2QnVmZmVyLCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApOw0KIEJhc2VUeXBlX3QgeFF1ZXVlUGVlayggUXVldWVIYW5kbGVfdCB4UXVldWUsIHZvaWQgKiBjb25zdCBwdkJ1ZmZlciwgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKTsNCkBAIC0xNTIsOSArMTExLDkgQEAKIFVCYXNlVHlwZV90IE1QVV91eFF1ZXVlR2V0UXVldWVOdW1iZXIoIFF1ZXVlSGFuZGxlX3QgeFF1ZXVlICk7DQogdWludDhfdCBNUFVfdWNRdWV1ZUdldFF1ZXVlVHlwZSggUXVldWVIYW5kbGVfdCB4UXVldWUgKTsNCiANCi0vKiBNUFUgdmVyc2lvbnMgb2YgdGltZXJzLmggQVBJIGZ1bmN0aW9uLiAqLw0KLVRpbWVySGFuZGxlX3QgTVBVX3hUaW1lckNyZWF0ZSgJY29uc3QgY2hhciAqIGNvbnN0IHBjVGltZXJOYW1lLCBjb25zdCBUaWNrVHlwZV90IHhUaW1lclBlcmlvZEluVGlja3MsIGNvbnN0IFVCYXNlVHlwZV90IHV4QXV0b1JlbG9hZCwgdm9pZCAqIGNvbnN0IHB2VGltZXJJRCwgVGltZXJDYWxsYmFja0Z1bmN0aW9uX3QgcHhDYWxsYmFja0Z1bmN0aW9uICk7DQotVGltZXJIYW5kbGVfdCBNUFVfeFRpbWVyQ3JlYXRlU3RhdGljKAljb25zdCBjaGFyICogY29uc3QgcGNUaW1lck5hbWUsIGNvbnN0IFRpY2tUeXBlX3QgeFRpbWVyUGVyaW9kSW5UaWNrcywgY29uc3QgVUJhc2VUeXBlX3QgdXhBdXRvUmVsb2FkLCB2b2lkICogY29uc3QgcHZUaW1lcklELCBUaW1lckNhbGxiYWNrRnVuY3Rpb25fdCBweENhbGxiYWNrRnVuY3Rpb24sIFN0YXRpY1RpbWVyX3QgKnB4VGltZXJCdWZmZXIgKTsNCisvKiBNUFUgdmVyc2lvbnMgb2YgdGltZXJzLmggQVBJIGZ1bmN0aW9ucy4gKi8NCitUaW1lckhhbmRsZV90IE1QVV94VGltZXJDcmVhdGUoIGNvbnN0IGNoYXIgKiBjb25zdCBwY1RpbWVyTmFtZSwgY29uc3QgVGlja1R5cGVfdCB4VGltZXJQZXJpb2RJblRpY2tzLCBjb25zdCBVQmFzZVR5cGVfdCB1eEF1dG9SZWxvYWQsIHZvaWQgKiBjb25zdCBwdlRpbWVySUQsIFRpbWVyQ2FsbGJhY2tGdW5jdGlvbl90IHB4Q2FsbGJhY2tGdW5jdGlvbiApOw0KK1RpbWVySGFuZGxlX3QgTVBVX3hUaW1lckNyZWF0ZVN0YXRpYyggY29uc3QgY2hhciAqIGNvbnN0IHBjVGltZXJOYW1lLCBjb25zdCBUaWNrVHlwZV90IHhUaW1lclBlcmlvZEluVGlja3MsIGNvbnN0IFVCYXNlVHlwZV90IHV4QXV0b1JlbG9hZCwgdm9pZCAqIGNvbnN0IHB2VGltZXJJRCwgVGltZXJDYWxsYmFja0Z1bmN0aW9uX3QgcHhDYWxsYmFja0Z1bmN0aW9uLCBTdGF0aWNUaW1lcl90ICpweFRpbWVyQnVmZmVyICk7DQogdm9pZCAqIE1QVV9wdlRpbWVyR2V0VGltZXJJRCggY29uc3QgVGltZXJIYW5kbGVfdCB4VGltZXIgKTsNCiB2b2lkIE1QVV92VGltZXJTZXRUaW1lcklEKCBUaW1lckhhbmRsZV90IHhUaW1lciwgdm9pZCAqcHZOZXdJRCApOw0KIEJhc2VUeXBlX3QgTVBVX3hUaW1lcklzVGltZXJBY3RpdmUoIFRpbWVySGFuZGxlX3QgeFRpbWVyICk7DQpAQCAtMTY2LDcgKzEyNSw3IEBACiBCYXNlVHlwZV90IE1QVV94VGltZXJDcmVhdGVUaW1lclRhc2soIHZvaWQgKTsNCiBCYXNlVHlwZV90IE1QVV94VGltZXJHZW5lcmljQ29tbWFuZCggVGltZXJIYW5kbGVfdCB4VGltZXIsIGNvbnN0IEJhc2VUeXBlX3QgeENvbW1hbmRJRCwgY29uc3QgVGlja1R5cGVfdCB4T3B0aW9uYWxWYWx1ZSwgQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4sIGNvbnN0IFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQogDQotLyogTVBVIHZlcnNpb25zIG9mIGV2ZW50X2dyb3VwLmggQVBJIGZ1bmN0aW9uLiAqLw0KKy8qIE1QVSB2ZXJzaW9ucyBvZiBldmVudF9ncm91cC5oIEFQSSBmdW5jdGlvbnMuICovDQogRXZlbnRHcm91cEhhbmRsZV90IE1QVV94RXZlbnRHcm91cENyZWF0ZSggdm9pZCApOw0KIEV2ZW50R3JvdXBIYW5kbGVfdCBNUFVfeEV2ZW50R3JvdXBDcmVhdGVTdGF0aWMoIFN0YXRpY0V2ZW50R3JvdXBfdCAqcHhFdmVudEdyb3VwQnVmZmVyICk7DQogRXZlbnRCaXRzX3QgTVBVX3hFdmVudEdyb3VwV2FpdEJpdHMoIEV2ZW50R3JvdXBIYW5kbGVfdCB4RXZlbnRHcm91cCwgY29uc3QgRXZlbnRCaXRzX3QgdXhCaXRzVG9XYWl0Rm9yLCBjb25zdCBCYXNlVHlwZV90IHhDbGVhck9uRXhpdCwgY29uc3QgQmFzZVR5cGVfdCB4V2FpdEZvckFsbEJpdHMsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQpAQCAtMTc2LDUgKzEzNSwyMiBAQAogdm9pZCBNUFVfdkV2ZW50R3JvdXBEZWxldGUoIEV2ZW50R3JvdXBIYW5kbGVfdCB4RXZlbnRHcm91cCApOw0KIFVCYXNlVHlwZV90IE1QVV91eEV2ZW50R3JvdXBHZXROdW1iZXIoIHZvaWQqIHhFdmVudEdyb3VwICk7DQogDQorLyogTVBVIHZlcnNpb25zIG9mIG1lc3NhZ2Uvc3RyZWFtX2J1ZmZlci5oIEFQSSBmdW5jdGlvbnMuICovDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyU2VuZCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgY29uc3Qgdm9pZCAqcHZUeERhdGEsIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApOw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBjb25zdCB2b2lkICpwdlR4RGF0YSwgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsIEJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyUmVjZWl2ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgdm9pZCAqcHZSeERhdGEsIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHZvaWQgKnB2UnhEYXRhLCBzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLCBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KK3ZvaWQgTVBVX3ZTdHJlYW1CdWZmZXJEZWxldGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVySXNGdWxsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorQmFzZVR5cGVfdCBNUFVfeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVyUmVzZXQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KK0Jhc2VUeXBlX3QgTVBVX3hTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHNpemVfdCB4VHJpZ2dlckxldmVsICk7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyICk7DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyLCB1aW50OF90ICogY29uc3QgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsIFN0YXRpY1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKTsNCisNCisNCisNCiAjZW5kaWYgLyogTVBVX1BST1RPVFlQRVNfSCAqLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL21wdV93cmFwcGVycy5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3dyYXBwZXJzLmgKaW5kZXggZGUyMDU2MS4uNGM4YWExMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3dyYXBwZXJzLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvbXB1X3dyYXBwZXJzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgTVBVX1dSQVBQRVJTX0gNCiAjZGVmaW5lIE1QVV9XUkFQUEVSU19IDQpAQCAtMTc5LDYgKzEzOCwyMyBAQAogCQkjZGVmaW5lIHhFdmVudEdyb3VwU3luYwkJCQkJCQlNUFVfeEV2ZW50R3JvdXBTeW5jDQogCQkjZGVmaW5lIHZFdmVudEdyb3VwRGVsZXRlCQkJCQkJTVBVX3ZFdmVudEdyb3VwRGVsZXRlDQogDQorCQkvKiBNYXAgc3RhbmRhcmQgbWVzc2FnZS9zdHJlYW1fYnVmZmVyLmggQVBJIGZ1bmN0aW9ucyB0byB0aGUgTVBVDQorCQllcXVpdmFsZW50cy4gKi8NCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlclNlbmQJCQkJCQlNUFVfeFN0cmVhbUJ1ZmZlclNlbmQNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSCQkJCU1QVV94U3RyZWFtQnVmZmVyU2VuZEZyb21JU1INCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlclJlY2VpdmUJCQkJCU1QVV94U3RyZWFtQnVmZmVyUmVjZWl2ZQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IJCQkJTVBVX3hTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUg0KKwkJI2RlZmluZSB2U3RyZWFtQnVmZmVyRGVsZXRlCQkJCQkJTVBVX3ZTdHJlYW1CdWZmZXJEZWxldGUNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlcklzRnVsbAkJCQkJCU1QVV94U3RyZWFtQnVmZmVySXNGdWxsDQorCQkjZGVmaW5lIHhTdHJlYW1CdWZmZXJJc0VtcHR5CQkJCQlNUFVfeFN0cmVhbUJ1ZmZlcklzRW1wdHkNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlclJlc2V0CQkJCQkJTVBVX3hTdHJlYW1CdWZmZXJSZXNldA0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlCQkJTVBVX3hTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlCQkJCU1QVV94U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUNCisJCSNkZWZpbmUgeFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbAkJCU1QVV94U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsDQorCQkjZGVmaW5lIHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlCQkJCU1QVV94U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZQ0KKwkJI2RlZmluZSB4U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZVN0YXRpYwkJTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljDQorDQorDQogCQkvKiBSZW1vdmUgdGhlIHByaXZpbGVnZWQgZnVuY3Rpb24gbWFjcm8sIGJ1dCBrZWVwIHRoZSBQUklWSUxFR0VEX0RBVEENCiAJCW1hY3JvIHNvIGFwcGxpY2F0aW9ucyBjYW4gcGxhY2UgZGF0YSBpbiBwcml2aWxlZ2VkIGFjY2VzcyBzZWN0aW9ucw0KIAkJKHVzZWZ1bCB3aGVuIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG9iamVjdHMpLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3BvcnRhYmxlLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9wb3J0YWJsZS5oCmluZGV4IDFjNzc0MzIuLjhiZmIyODUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3BvcnRhYmxlLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcG9ydGFibGUuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIFBvcnRhYmxlIGxheWVyIEFQSS4gIEVhY2ggZnVuY3Rpb24gbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcHJvamRlZnMuaCBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3Byb2pkZWZzLmgKaW5kZXggMzY5ZTA4My4uOGVkOTcyYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcHJvamRlZnMuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9wcm9qZGVmcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBST0pERUZTX0gNCiAjZGVmaW5lIFBST0pERUZTX0gNCkBAIC0xNTIsOCArMTExLDEzIEBACiANCiAvKiBUaGUgZm9sbG93aW5nIGVuZGlhbiB2YWx1ZXMgYXJlIHVzZWQgYnkgRnJlZVJUT1MrIGNvbXBvbmVudHMsIG5vdCBGcmVlUlRPUw0KIGl0c2VsZi4gKi8NCi0jZGVmaW5lIHBkRlJFRVJUT1NfTElUVExFX0VORElBTgkwDQotI2RlZmluZSBwZEZSRUVSVE9TX0JJR19FTkRJQU4JCTENCisjZGVmaW5lIHBkRlJFRVJUT1NfTElUVExFX0VORElBTgkJMA0KKyNkZWZpbmUgcGRGUkVFUlRPU19CSUdfRU5ESUFOCQkJMQ0KKw0KKy8qIFJlLWRlZmluaW5nIGVuZGlhbiB2YWx1ZXMgZm9yIGdlbmVyaWMgbmFtaW5nLiAqLw0KKyNkZWZpbmUgcGRMSVRUTEVfRU5ESUFOCQkJCQlwZEZSRUVSVE9TX0xJVFRMRV9FTkRJQU4NCisjZGVmaW5lIHBkQklHX0VORElBTgkJCQkJcGRGUkVFUlRPU19CSUdfRU5ESUFODQorDQogDQogI2VuZGlmIC8qIFBST0pERUZTX0ggKi8NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9xdWV1ZS5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvcXVldWUuaAppbmRleCA1ZWE4MTg4Li41Nzc1N2Q4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9xdWV1ZS5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3F1ZXVlLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUVVFVUVfSA0KQEAgLTI4Miw4ICsyNDEsNiBAQAogCQkJCQkJCSAgICk7DQogICogPC9wcmU+DQogICoNCi0gKiBUaGlzIGlzIGEgbWFjcm8gdGhhdCBjYWxscyB4UXVldWVHZW5lcmljU2VuZCgpLg0KLSAqDQogICogUG9zdCBhbiBpdGVtIHRvIHRoZSBmcm9udCBvZiBhIHF1ZXVlLiAgVGhlIGl0ZW0gaXMgcXVldWVkIGJ5IGNvcHksIG5vdCBieQ0KICAqIHJlZmVyZW5jZS4gIFRoaXMgZnVuY3Rpb24gbXVzdCBub3QgYmUgY2FsbGVkIGZyb20gYW4gaW50ZXJydXB0IHNlcnZpY2UNCiAgKiByb3V0aW5lLiAgU2VlIHhRdWV1ZVNlbmRGcm9tSVNSICgpIGZvciBhbiBhbHRlcm5hdGl2ZSB3aGljaCBtYXkgYmUgdXNlZA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3NlbXBoci5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc2VtcGhyLmgKaW5kZXggZjg3OTFiZS4uNTI1NWMwNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc2VtcGhyLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc2VtcGhyLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgU0VNQVBIT1JFX0gNCiAjZGVmaW5lIFNFTUFQSE9SRV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc3RhY2tfbWFjcm9zLmggYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdGFja19tYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWRkN2QxCi0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc3RhY2tfbWFjcm9zLmgKQEAgLTAsMCArMSwxMzAgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorI2lmbmRlZiBTVEFDS19NQUNST1NfSA0KKyNkZWZpbmUgU1RBQ0tfTUFDUk9TX0gNCisNCisvKg0KKyAqIENhbGwgdGhlIHN0YWNrIG92ZXJmbG93IGhvb2sgZnVuY3Rpb24gaWYgdGhlIHN0YWNrIG9mIHRoZSB0YXNrIGJlaW5nIHN3YXBwZWQNCisgKiBvdXQgaXMgY3VycmVudGx5IG92ZXJmbG93ZWQsIG9yIGxvb2tzIGxpa2UgaXQgbWlnaHQgaGF2ZSBvdmVyZmxvd2VkIGluIHRoZQ0KKyAqIHBhc3QuDQorICoNCisgKiBTZXR0aW5nIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyB0byAxIHdpbGwgY2F1c2UgdGhlIG1hY3JvIHRvIGNoZWNrDQorICogdGhlIGN1cnJlbnQgc3RhY2sgc3RhdGUgb25seSAtIGNvbXBhcmluZyB0aGUgY3VycmVudCB0b3Agb2Ygc3RhY2sgdmFsdWUgdG8NCisgKiB0aGUgc3RhY2sgbGltaXQuICBTZXR0aW5nIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyB0byBncmVhdGVyIHRoYW4gMQ0KKyAqIHdpbGwgYWxzbyBjYXVzZSB0aGUgbGFzdCBmZXcgc3RhY2sgYnl0ZXMgdG8gYmUgY2hlY2tlZCB0byBlbnN1cmUgdGhlIHZhbHVlDQorICogdG8gd2hpY2ggdGhlIGJ5dGVzIHdlcmUgc2V0IHdoZW4gdGhlIHRhc2sgd2FzIGNyZWF0ZWQgaGF2ZSBub3QgYmVlbg0KKyAqIG92ZXJ3cml0dGVuLiAgTm90ZSB0aGlzIHNlY29uZCB0ZXN0IGRvZXMgbm90IGd1YXJhbnRlZSB0aGF0IGFuIG92ZXJmbG93ZWQNCisgKiBzdGFjayB3aWxsIGFsd2F5cyBiZSByZWNvZ25pc2VkLg0KKyAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggKCBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPT0gMSApICYmICggcG9ydFNUQUNLX0dST1dUSCA8IDAgKSApDQorDQorCS8qIE9ubHkgdGhlIGN1cnJlbnQgc3RhY2sgc3RhdGUgaXMgdG8gYmUgY2hlY2tlZC4gKi8NCisJI2RlZmluZSB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XKCkJCQkJCQkJCQkJCQkJCQkJXA0KKwl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCS8qIElzIHRoZSBjdXJyZW50bHkgc2F2ZWQgc3RhY2sgcG9pbnRlciB3aXRoaW4gdGhlIHN0YWNrIGxpbWl0PyAqLwkJCQkJCQkJXA0KKwkJaWYoIHB4Q3VycmVudFRDQi0+cHhUb3BPZlN0YWNrIDw9IHB4Q3VycmVudFRDQi0+cHhTdGFjayApCQkJCQkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soICggVGFza0hhbmRsZV90ICkgcHhDdXJyZW50VENCLCBweEN1cnJlbnRUQ0ItPnBjVGFza05hbWUgKTsJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPT0gMSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggKCBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPT0gMSApICYmICggcG9ydFNUQUNLX0dST1dUSCA+IDAgKSApDQorDQorCS8qIE9ubHkgdGhlIGN1cnJlbnQgc3RhY2sgc3RhdGUgaXMgdG8gYmUgY2hlY2tlZC4gKi8NCisJI2RlZmluZSB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XKCkJCQkJCQkJCQkJCQkJCQkJXA0KKwl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCS8qIElzIHRoZSBjdXJyZW50bHkgc2F2ZWQgc3RhY2sgcG9pbnRlciB3aXRoaW4gdGhlIHN0YWNrIGxpbWl0PyAqLwkJCQkJCQkJXA0KKwkJaWYoIHB4Q3VycmVudFRDQi0+cHhUb3BPZlN0YWNrID49IHB4Q3VycmVudFRDQi0+cHhFbmRPZlN0YWNrICkJCQkJCQkJCQlcDQorCQl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCXZBcHBsaWNhdGlvblN0YWNrT3ZlcmZsb3dIb29rKCAoIFRhc2tIYW5kbGVfdCApIHB4Q3VycmVudFRDQiwgcHhDdXJyZW50VENCLT5wY1Rhc2tOYW1lICk7CVwNCisJCX0JCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XID09IDEgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoICggY29uZmlnQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XID4gMSApICYmICggcG9ydFNUQUNLX0dST1dUSCA8IDAgKSApDQorDQorCSNkZWZpbmUgdGFza0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVygpCQkJCQkJCQkJCQkJCQkJCVwNCisJewkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQljb25zdCB1aW50MzJfdCAqIGNvbnN0IHB1bFN0YWNrID0gKCB1aW50MzJfdCAqICkgcHhDdXJyZW50VENCLT5weFN0YWNrOwkJCQkJCQlcDQorCQljb25zdCB1aW50MzJfdCB1bENoZWNrVmFsdWUgPSAoIHVpbnQzMl90ICkgMHhhNWE1YTVhNTsJCQkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCWlmKCAoIHB1bFN0YWNrWyAwIF0gIT0gdWxDaGVja1ZhbHVlICkgfHwJCQkJCQkJCQkJCQlcDQorCQkJKCBwdWxTdGFja1sgMSBdICE9IHVsQ2hlY2tWYWx1ZSApIHx8CQkJCQkJCQkJCQkJXA0KKwkJCSggcHVsU3RhY2tbIDIgXSAhPSB1bENoZWNrVmFsdWUgKSB8fAkJCQkJCQkJCQkJCVwNCisJCQkoIHB1bFN0YWNrWyAzIF0gIT0gdWxDaGVja1ZhbHVlICkgKQkJCQkJCQkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soICggVGFza0hhbmRsZV90ICkgcHhDdXJyZW50VENCLCBweEN1cnJlbnRUQ0ItPnBjVGFza05hbWUgKTsJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJfQ0KKw0KKyNlbmRpZiAvKiAjaWYoIGNvbmZpZ0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVyA+IDEgKSAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggKCBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPiAxICkgJiYgKCBwb3J0U1RBQ0tfR1JPV1RIID4gMCApICkNCisNCisJI2RlZmluZSB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XKCkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCWludDhfdCAqcGNFbmRPZlN0YWNrID0gKCBpbnQ4X3QgKiApIHB4Q3VycmVudFRDQi0+cHhFbmRPZlN0YWNrOwkJCQkJCQkJCQkJCQkJCQkJCVwNCisJc3RhdGljIGNvbnN0IHVpbnQ4X3QgdWNFeHBlY3RlZFN0YWNrQnl0ZXNbXSA9IHsJdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLAkJXA0KKwkJCQkJCQkJCQkJCQl0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsCQlcDQorCQkJCQkJCQkJCQkJCXRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwJCVwNCisJCQkJCQkJCQkJCQkJdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLAkJXA0KKwkJCQkJCQkJCQkJCQl0c2tTVEFDS19GSUxMX0JZVEUsIHRza1NUQUNLX0ZJTExfQllURSwgdHNrU1RBQ0tfRklMTF9CWVRFLCB0c2tTVEFDS19GSUxMX0JZVEUgfTsJXA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCXBjRW5kT2ZTdGFjayAtPSBzaXplb2YoIHVjRXhwZWN0ZWRTdGFja0J5dGVzICk7CQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkvKiBIYXMgdGhlIGV4dHJlbWl0eSBvZiB0aGUgdGFzayBzdGFjayBldmVyIGJlZW4gd3JpdHRlbiBvdmVyPyAqLwkJCQkJCQkJCQkJCQkJCQlcDQorCQlpZiggbWVtY21wKCAoIHZvaWQgKiApIHBjRW5kT2ZTdGFjaywgKCB2b2lkICogKSB1Y0V4cGVjdGVkU3RhY2tCeXRlcywgc2l6ZW9mKCB1Y0V4cGVjdGVkU3RhY2tCeXRlcyApICkgIT0gMCApCQkJCQlcDQorCQl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJdkFwcGxpY2F0aW9uU3RhY2tPdmVyZmxvd0hvb2soICggVGFza0hhbmRsZV90ICkgcHhDdXJyZW50VENCLCBweEN1cnJlbnRUQ0ItPnBjVGFza05hbWUgKTsJCQkJCQkJCQlcDQorCQl9CQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCX0NCisNCisjZW5kaWYgLyogI2lmKCBjb25maWdDSEVDS19GT1JfU1RBQ0tfT1ZFUkZMT1cgPiAxICkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBSZW1vdmUgc3RhY2sgb3ZlcmZsb3cgbWFjcm8gaWYgbm90IGJlaW5nIHVzZWQuICovDQorI2lmbmRlZiB0YXNrQ0hFQ0tfRk9SX1NUQUNLX09WRVJGTE9XDQorCSNkZWZpbmUgdGFza0NIRUNLX0ZPUl9TVEFDS19PVkVSRkxPVygpDQorI2VuZGlmDQorDQorDQorDQorI2VuZGlmIC8qIFNUQUNLX01BQ1JPU19IICovDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc3RyZWFtX2J1ZmZlci5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvc3RyZWFtX2J1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYjQ5MjMKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS9zdHJlYW1fYnVmZmVyLmgKQEAgLTAsMCArMSw4NDkgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorLyoNCisgKiBTdHJlYW0gYnVmZmVycyBhcmUgdXNlZCB0byBzZW5kIGEgY29udGludW91cyBzdHJlYW0gb2YgZGF0YSBmcm9tIG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRvIGFub3RoZXIuICBUaGVpciBpbXBsZW1lbnRhdGlvbiBpcyBsaWdodCB3ZWlnaHQsIG1ha2luZyB0aGVtDQorICogcGFydGljdWxhcmx5IHN1aXRlZCBmb3IgaW50ZXJydXB0IHRvIHRhc2sgYW5kIGNvcmUgdG8gY29yZSBjb21tdW5pY2F0aW9uDQorICogc2NlbmFyaW9zLg0KKyAqDQorICogKioqTk9URSoqKjogIFVuaXF1ZWx5IGFtb25nIEZyZWVSVE9TIG9iamVjdHMsIHRoZSBzdHJlYW0gYnVmZmVyDQorICogaW1wbGVtZW50YXRpb24gKHNvIGFsc28gdGhlIG1lc3NhZ2UgYnVmZmVyIGltcGxlbWVudGF0aW9uLCBhcyBtZXNzYWdlIGJ1ZmZlcnMNCisgKiBhcmUgYnVpbHQgb24gdG9wIG9mIHN0cmVhbSBidWZmZXJzKSBhc3N1bWVzIHRoZXJlIGlzIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHdyaXRlIHRvIHRoZSBidWZmZXIgKHRoZSB3cml0ZXIpLCBhbmQgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgcmVhZCBmcm9tIHRoZSBidWZmZXIgKHRoZSByZWFkZXIpLiAgSXQgaXMgc2FmZSBmb3IgdGhlDQorICogd3JpdGVyIGFuZCByZWFkZXIgdG8gYmUgZGlmZmVyZW50IHRhc2tzIG9yIGludGVycnVwdHMsIGJ1dCwgdW5saWtlIG90aGVyDQorICogRnJlZVJUT1Mgb2JqZWN0cywgaXQgaXMgbm90IHNhZmUgdG8gaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycyBvcg0KKyAqIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzLiAgSWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgd3JpdGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4U3RyZWFtQnVmZmVyU2VuZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHNlbmQNCisgKiBibG9jayB0aW1lIHRvIDAuICBMaWtld2lzZSwgaWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgcmVhZGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4U3RyZWFtQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIHNlY3Rpb24gYW5kIHNldCB0aGUNCisgKiByZWNlaXZlIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqLw0KKw0KKyNpZm5kZWYgU1RSRUFNX0JVRkZFUl9IDQorI2RlZmluZSBTVFJFQU1fQlVGRkVSX0gNCisNCisvKioNCisgKiBUeXBlIGJ5IHdoaWNoIHN0cmVhbSBidWZmZXJzIGFyZSByZWZlcmVuY2VkLiAgRm9yIGV4YW1wbGUsIGEgY2FsbCB0bw0KKyAqIHhTdHJlYW1CdWZmZXJDcmVhdGUoKSByZXR1cm5zIGFuIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHZhcmlhYmxlIHRoYXQgY2FuDQorICogdGhlbiBiZSB1c2VkIGFzIGEgcGFyYW1ldGVyIHRvIHhTdHJlYW1CdWZmZXJTZW5kKCksIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCksDQorICogZXRjLg0KKyAqLw0KK3R5cGVkZWYgdm9pZCAqIFN0cmVhbUJ1ZmZlckhhbmRsZV90Ow0KKw0KKw0KKy8qKg0KKyAqIG1lc3NhZ2VfYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckNyZWF0ZSggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMgKTsNCis8L3ByZT4NCisgKg0KKyAqIENyZWF0ZXMgYSBuZXcgc3RyZWFtIGJ1ZmZlciB1c2luZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LiAgU2VlDQorICogeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYygpIGZvciBhIHZlcnNpb24gdGhhdCB1c2VzIHN0YXRpY2FsbHkgYWxsb2NhdGVkDQorICogbWVtb3J5IChtZW1vcnkgdGhhdCBpcyBhbGxvY2F0ZWQgYXQgY29tcGlsZSB0aW1lKS4NCisgKg0KKyAqIGNvbmZpZ1NVUFBPUlRfRFlOQU1JQ19BTExPQ0FUSU9OIG11c3QgYmUgc2V0IHRvIDEgb3IgbGVmdCB1bmRlZmluZWQgaW4NCisgKiBGcmVlUlRPU0NvbmZpZy5oIGZvciB4U3RyZWFtQnVmZmVyQ3JlYXRlKCkgdG8gYmUgYXZhaWxhYmxlLg0KKyAqDQorICogQHBhcmFtIHhCdWZmZXJTaXplQnl0ZXMgVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyB0aGUgc3RyZWFtIGJ1ZmZlciB3aWxsIGJlDQorICogYWJsZSB0byBob2xkIGF0IGFueSBvbmUgdGltZS4NCisgKg0KKyAqIEBwYXJhbSB4VHJpZ2dlckxldmVsQnl0ZXMgVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgaW4gdGhlIHN0cmVhbQ0KKyAqIGJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgYmxvY2tlZCBvbiB0aGUgc3RyZWFtIGJ1ZmZlciB0byB3YWl0IGZvciBkYXRhIGlzDQorICogbW92ZWQgb3V0IG9mIHRoZSBibG9ja2VkIHN0YXRlLiAgRm9yIGV4YW1wbGUsIGlmIGEgdGFzayBpcyBibG9ja2VkIG9uIGEgcmVhZA0KKyAqIG9mIGFuIGVtcHR5IHN0cmVhbSBidWZmZXIgdGhhdCBoYXMgYSB0cmlnZ2VyIGxldmVsIG9mIDEgdGhlbiB0aGUgdGFzayB3aWxsIGJlDQorICogdW5ibG9ja2VkIHdoZW4gYSBzaW5nbGUgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBidWZmZXIgb3IgdGhlIHRhc2sncyBibG9jaw0KKyAqIHRpbWUgZXhwaXJlcy4gIEFzIGFub3RoZXIgZXhhbXBsZSwgaWYgYSB0YXNrIGlzIGJsb2NrZWQgb24gYSByZWFkIG9mIGFuIGVtcHR5DQorICogc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhIHRyaWdnZXIgbGV2ZWwgb2YgMTAgdGhlbiB0aGUgdGFzayB3aWxsIG5vdCBiZQ0KKyAqIHVuYmxvY2tlZCB1bnRpbCB0aGUgc3RyZWFtIGJ1ZmZlciBjb250YWlucyBhdCBsZWFzdCAxMCBieXRlcyBvciB0aGUgdGFzaydzDQorICogYmxvY2sgdGltZSBleHBpcmVzLiAgSWYgYSByZWFkaW5nIHRhc2sncyBibG9jayB0aW1lIGV4cGlyZXMgYmVmb3JlIHRoZQ0KKyAqIHRyaWdnZXIgbGV2ZWwgaXMgcmVhY2hlZCB0aGVuIHRoZSB0YXNrIHdpbGwgc3RpbGwgcmVjZWl2ZSBob3dldmVyIG1hbnkgYnl0ZXMNCisgKiBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlLiAgU2V0dGluZyBhIHRyaWdnZXIgbGV2ZWwgb2YgMCB3aWxsIHJlc3VsdCBpbiBhDQorICogdHJpZ2dlciBsZXZlbCBvZiAxIGJlaW5nIHVzZWQuICBJdCBpcyBub3QgdmFsaWQgdG8gc3BlY2lmeSBhIHRyaWdnZXIgbGV2ZWwNCisgKiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgYnVmZmVyIHNpemUuDQorICoNCisgKiBAcmV0dXJuIElmIE5VTEwgaXMgcmV0dXJuZWQsIHRoZW4gdGhlIHN0cmVhbSBidWZmZXIgY2Fubm90IGJlIGNyZWF0ZWQNCisgKiBiZWNhdXNlIHRoZXJlIGlzIGluc3VmZmljaWVudCBoZWFwIG1lbW9yeSBhdmFpbGFibGUgZm9yIEZyZWVSVE9TIHRvIGFsbG9jYXRlDQorICogdGhlIHN0cmVhbSBidWZmZXIgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBzdG9yYWdlIGFyZWEuICBBIG5vbi1OVUxMIHZhbHVlIGJlaW5nDQorICogcmV0dXJuZWQgaW5kaWNhdGVzIHRoYXQgdGhlIHN0cmVhbSBidWZmZXIgaGFzIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkgLQ0KKyAqIHRoZSByZXR1cm5lZCB2YWx1ZSBzaG91bGQgYmUgc3RvcmVkIGFzIHRoZSBoYW5kbGUgdG8gdGhlIGNyZWF0ZWQgc3RyZWFtDQorICogYnVmZmVyLg0KKyAqDQorICogRXhhbXBsZSB1c2U6DQorPHByZT4NCisNCit2b2lkIHZBRnVuY3Rpb24oIHZvaWQgKQ0KK3sNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyOw0KK2NvbnN0IHNpemVfdCB4U3RyZWFtQnVmZmVyU2l6ZUJ5dGVzID0gMTAwLCB4VHJpZ2dlckxldmVsID0gMTA7DQorDQorICAgIC8vIENyZWF0ZSBhIHN0cmVhbSBidWZmZXIgdGhhdCBjYW4gaG9sZCAxMDAgYnl0ZXMuICBUaGUgbWVtb3J5IHVzZWQgdG8gaG9sZA0KKyAgICAvLyBib3RoIHRoZSBzdHJlYW0gYnVmZmVyIHN0cnVjdHVyZSBhbmQgdGhlIGRhdGEgaW4gdGhlIHN0cmVhbSBidWZmZXIgaXMNCisgICAgLy8gYWxsb2NhdGVkIGR5bmFtaWNhbGx5Lg0KKyAgICB4U3RyZWFtQnVmZmVyID0geFN0cmVhbUJ1ZmZlckNyZWF0ZSggeFN0cmVhbUJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbCApOw0KKw0KKyAgICBpZiggeFN0cmVhbUJ1ZmZlciA9PSBOVUxMICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlcmUgd2FzIG5vdCBlbm91Z2ggaGVhcCBtZW1vcnkgc3BhY2UgYXZhaWxhYmxlIHRvIGNyZWF0ZSB0aGUNCisgICAgICAgIC8vIHN0cmVhbSBidWZmZXIuDQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgc3RyZWFtIGJ1ZmZlciB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgYW5kIGNhbiBub3cgYmUgdXNlZC4NCisgICAgfQ0KK30NCis8L3ByZT4NCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlckNyZWF0ZSB4U3RyZWFtQnVmZmVyQ3JlYXRlDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KKyNkZWZpbmUgeFN0cmVhbUJ1ZmZlckNyZWF0ZSggeEJ1ZmZlclNpemVCeXRlcywgeFRyaWdnZXJMZXZlbEJ5dGVzICkgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUoIHhCdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWxCeXRlcywgcGRGQUxTRSApDQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGljU3RyZWFtQnVmZmVyX3QgKnB4U3RhdGljU3RyZWFtQnVmZmVyICk7DQorPC9wcmU+DQorICogQ3JlYXRlcyBhIG5ldyBzdHJlYW0gYnVmZmVyIHVzaW5nIHN0YXRpY2FsbHkgYWxsb2NhdGVkIG1lbW9yeS4gIFNlZQ0KKyAqIHhTdHJlYW1CdWZmZXJDcmVhdGUoKSBmb3IgYSB2ZXJzaW9uIHRoYXQgdXNlcyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5Lg0KKyAqDQorICogY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiBtdXN0IGJlIHNldCB0byAxIGluIEZyZWVSVE9TQ29uZmlnLmggZm9yDQorICogeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYygpIHRvIGJlIGF2YWlsYWJsZS4NCisgKg0KKyAqIEBwYXJhbSB4QnVmZmVyU2l6ZUJ5dGVzIFRoZSBzaXplLCBpbiBieXRlcywgb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHRoZQ0KKyAqIHB1Y1N0cmVhbUJ1ZmZlclN0b3JhZ2VBcmVhIHBhcmFtZXRlci4NCisgKg0KKyAqIEBwYXJhbSB4VHJpZ2dlckxldmVsQnl0ZXMgVGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgaW4gdGhlIHN0cmVhbQ0KKyAqIGJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgYmxvY2tlZCBvbiB0aGUgc3RyZWFtIGJ1ZmZlciB0byB3YWl0IGZvciBkYXRhIGlzDQorICogbW92ZWQgb3V0IG9mIHRoZSBibG9ja2VkIHN0YXRlLiAgRm9yIGV4YW1wbGUsIGlmIGEgdGFzayBpcyBibG9ja2VkIG9uIGEgcmVhZA0KKyAqIG9mIGFuIGVtcHR5IHN0cmVhbSBidWZmZXIgdGhhdCBoYXMgYSB0cmlnZ2VyIGxldmVsIG9mIDEgdGhlbiB0aGUgdGFzayB3aWxsIGJlDQorICogdW5ibG9ja2VkIHdoZW4gYSBzaW5nbGUgYnl0ZSBpcyB3cml0dGVuIHRvIHRoZSBidWZmZXIgb3IgdGhlIHRhc2sncyBibG9jaw0KKyAqIHRpbWUgZXhwaXJlcy4gIEFzIGFub3RoZXIgZXhhbXBsZSwgaWYgYSB0YXNrIGlzIGJsb2NrZWQgb24gYSByZWFkIG9mIGFuIGVtcHR5DQorICogc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhIHRyaWdnZXIgbGV2ZWwgb2YgMTAgdGhlbiB0aGUgdGFzayB3aWxsIG5vdCBiZQ0KKyAqIHVuYmxvY2tlZCB1bnRpbCB0aGUgc3RyZWFtIGJ1ZmZlciBjb250YWlucyBhdCBsZWFzdCAxMCBieXRlcyBvciB0aGUgdGFzaydzDQorICogYmxvY2sgdGltZSBleHBpcmVzLiAgSWYgYSByZWFkaW5nIHRhc2sncyBibG9jayB0aW1lIGV4cGlyZXMgYmVmb3JlIHRoZQ0KKyAqIHRyaWdnZXIgbGV2ZWwgaXMgcmVhY2hlZCB0aGVuIHRoZSB0YXNrIHdpbGwgc3RpbGwgcmVjZWl2ZSBob3dldmVyIG1hbnkgYnl0ZXMNCisgKiBhcmUgYWN0dWFsbHkgYXZhaWxhYmxlLiAgU2V0dGluZyBhIHRyaWdnZXIgbGV2ZWwgb2YgMCB3aWxsIHJlc3VsdCBpbiBhDQorICogdHJpZ2dlciBsZXZlbCBvZiAxIGJlaW5nIHVzZWQuICBJdCBpcyBub3QgdmFsaWQgdG8gc3BlY2lmeSBhIHRyaWdnZXIgbGV2ZWwNCisgKiB0aGF0IGlzIGdyZWF0ZXIgdGhhbiB0aGUgYnVmZmVyIHNpemUuDQorICoNCisgKiBAcGFyYW0gcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEgTXVzdCBwb2ludCB0byBhIHVpbnQ4X3QgYXJyYXkgdGhhdCBpcyBhdA0KKyAqIGxlYXN0IHhCdWZmZXJTaXplQnl0ZXMgKyAxIGJpZy4gIFRoaXMgaXMgdGhlIGFycmF5IHRvIHdoaWNoIHN0cmVhbXMgYXJlDQorICogY29waWVkIHdoZW4gdGhleSBhcmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgKg0KKyAqIEBwYXJhbSBweFN0YXRpY1N0cmVhbUJ1ZmZlciBNdXN0IHBvaW50IHRvIGEgdmFyaWFibGUgb2YgdHlwZQ0KKyAqIFN0YXRpY1N0cmVhbUJ1ZmZlcl90LCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaG9sZCB0aGUgc3RyZWFtIGJ1ZmZlcidzIGRhdGENCisgKiBzdHJ1Y3R1cmUuDQorICoNCisgKiBAcmV0dXJuIElmIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5IHRoZW4gYSBoYW5kbGUgdG8gdGhlDQorICogY3JlYXRlZCBzdHJlYW0gYnVmZmVyIGlzIHJldHVybmVkLiBJZiBlaXRoZXIgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEgb3INCisgKiBweFN0YXRpY3N0cmVhbUJ1ZmZlciBhcmUgTlVMTCB0aGVuIE5VTEwgaXMgcmV0dXJuZWQuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KKw0KKy8vIFVzZWQgdG8gZGltZW5zaW9uIHRoZSBhcnJheSB1c2VkIHRvIGhvbGQgdGhlIHN0cmVhbXMuICBUaGUgYXZhaWxhYmxlIHNwYWNlDQorLy8gd2lsbCBhY3R1YWxseSBiZSBvbmUgbGVzcyB0aGFuIHRoaXMsIHNvIDk5OS4NCisjZGVmaW5lIFNUT1JBR0VfU0laRV9CWVRFUyAxMDAwDQorDQorLy8gRGVmaW5lcyB0aGUgbWVtb3J5IHRoYXQgd2lsbCBhY3R1YWxseSBob2xkIHRoZSBzdHJlYW1zIHdpdGhpbiB0aGUgc3RyZWFtDQorLy8gYnVmZmVyLg0KK3N0YXRpYyB1aW50OF90IHVjU3RvcmFnZUJ1ZmZlclsgU1RPUkFHRV9TSVpFX0JZVEVTIF07DQorDQorLy8gVGhlIHZhcmlhYmxlIHVzZWQgdG8gaG9sZCB0aGUgc3RyZWFtIGJ1ZmZlciBzdHJ1Y3R1cmUuDQorU3RhdGljU3RyZWFtQnVmZmVyX3QgeFN0cmVhbUJ1ZmZlclN0cnVjdDsNCisNCit2b2lkIE15RnVuY3Rpb24oIHZvaWQgKQ0KK3sNCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyOw0KK2NvbnN0IHNpemVfdCB4VHJpZ2dlckxldmVsID0gMTsNCisNCisgICAgeFN0cmVhbUJ1ZmZlciA9IHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoIHNpemVvZiggdWNCdWZmZXJTdG9yYWdlICksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4VHJpZ2dlckxldmVsLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWNCdWZmZXJTdG9yYWdlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnhTdHJlYW1CdWZmZXJTdHJ1Y3QgKTsNCisNCisgICAgLy8gQXMgbmVpdGhlciB0aGUgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEgb3IgcHhTdGF0aWNTdHJlYW1CdWZmZXINCisgICAgLy8gcGFyYW1ldGVycyB3ZXJlIE5VTEwsIHhTdHJlYW1CdWZmZXIgd2lsbCBub3QgYmUgTlVMTCwgYW5kIGNhbiBiZSB1c2VkIHRvDQorICAgIC8vIHJlZmVyZW5jZSB0aGUgY3JlYXRlZCBzdHJlYW0gYnVmZmVyIGluIG90aGVyIHN0cmVhbSBidWZmZXIgQVBJIGNhbGxzLg0KKw0KKyAgICAvLyBPdGhlciBjb2RlIHRoYXQgdXNlcyB0aGUgc3RyZWFtIGJ1ZmZlciBjYW4gZ28gaGVyZS4NCit9DQorDQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMgeFN0cmVhbUJ1ZmZlckNyZWF0ZVN0YXRpYw0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCisjZGVmaW5lIHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoIHhCdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWxCeXRlcywgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsIHB4U3RhdGljU3RyZWFtQnVmZmVyICkgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGVTdGF0aWMoIHhCdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWxCeXRlcywgcGRGQUxTRSwgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsIHB4U3RhdGljU3RyZWFtQnVmZmVyICkNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICk7DQorPHByZT4NCisgKg0KKyAqIFNlbmRzIGJ5dGVzIHRvIGEgc3RyZWFtIGJ1ZmZlci4gIFRoZSBieXRlcyBhcmUgY29waWVkIGludG8gdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqIFVzZSB4U3RyZWFtQnVmZmVyU2VuZCgpIHRvIHdyaXRlIHRvIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGEgdGFzay4gIFVzZQ0KKyAqIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpIHRvIHdyaXRlIHRvIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGFuIGludGVycnVwdA0KKyAqIHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgdG8gd2hpY2ggYSBzdHJlYW0gaXMNCisgKiBiZWluZyBzZW50Lg0KKyAqDQorICogQHBhcmFtIHB2VHhEYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHRoYXQgaG9sZHMgdGhlIGJ5dGVzIHRvIGJlIGNvcGllZA0KKyAqIGludG8gdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0geERhdGFMZW5ndGhCeXRlcyAgIFRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBjb3B5IGZyb20gcHZUeERhdGENCisgKiBpbnRvIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhUaWNrc1RvV2FpdCBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgdGFzayBzaG91bGQgcmVtYWluIGluIHRoZQ0KKyAqIEJsb2NrZWQgc3RhdGUgdG8gd2FpdCBmb3IgZW5vdWdoIHNwYWNlIHRvIGJlY29tZSBhdmFpbGFibGUgaW4gdGhlIHN0cmVhbQ0KKyAqIGJ1ZmZlciwgc2hvdWxkIHRoZSBzdHJlYW0gYnVmZmVyIGNvbnRhaW4gdG9vIGxpdHRsZSBzcGFjZSB0byBob2xkIHRoZQ0KKyAqIGFub3RoZXIgeERhdGFMZW5ndGhCeXRlcyBieXRlcy4gIFRoZSBibG9jayB0aW1lIGlzIHNwZWNpZmllZCBpbiB0aWNrIHBlcmlvZHMsDQorICogc28gdGhlIGFic29sdXRlIHRpbWUgaXQgcmVwcmVzZW50cyBpcyBkZXBlbmRlbnQgb24gdGhlIHRpY2sgZnJlcXVlbmN5LiAgVGhlDQorICogbWFjcm8gcGRNU19UT19USUNLUygpIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYSB0aW1lIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMNCisgKiBpbnRvIGEgdGltZSBzcGVjaWZpZWQgaW4gdGlja3MuICBTZXR0aW5nIHhUaWNrc1RvV2FpdCB0byBwb3J0TUFYX0RFTEFZIHdpbGwNCisgKiBjYXVzZSB0aGUgdGFzayB0byB3YWl0IGluZGVmaW5pdGVseSAod2l0aG91dCB0aW1pbmcgb3V0KSwgcHJvdmlkZWQNCisgKiBJTkNMVURFX3ZUYXNrU3VzcGVuZCBpcyBzZXQgdG8gMSBpbiBGcmVlUlRPU0NvbmZpZy5oLiAgSWYgYSB0YXNrIHRpbWVzIG91dA0KKyAqIGJlZm9yZSBpdCBjYW4gd3JpdGUgYWxsIHhEYXRhTGVuZ3RoQnl0ZXMgaW50byB0aGUgYnVmZmVyIGl0IHdpbGwgc3RpbGwgd3JpdGUNCisgKiBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlLiAgQSB0YXNrIGRvZXMgbm90IHVzZSBhbnkgQ1BVIHRpbWUgd2hlbiBpdCBpcyBpbg0KKyAqIHRoZSBibG9ja2VkIHN0YXRlLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSBidWZmZXIuICBJZiBhIHRhc2sgdGltZXMNCisgKiBvdXQgYmVmb3JlIGl0IGNhbiB3cml0ZSBhbGwgeERhdGFMZW5ndGhCeXRlcyBpbnRvIHRoZSBidWZmZXIgaXQgd2lsbCBzdGlsbA0KKyAqIHdyaXRlIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUuDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KK3ZvaWQgdkFGdW5jdGlvbiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK3NpemVfdCB4Qnl0ZXNTZW50Ow0KK3VpbnQ4X3QgdWNBcnJheVRvU2VuZFtdID0geyAwLCAxLCAyLCAzIH07DQorY2hhciAqcGNTdHJpbmdUb1NlbmQgPSAiU3RyaW5nIHRvIHNlbmQiOw0KK2NvbnN0IFRpY2tUeXBlX3QgeDEwMG1zID0gcGRNU19UT19USUNLUyggMTAwICk7DQorDQorICAgIC8vIFNlbmQgYW4gYXJyYXkgdG8gdGhlIHN0cmVhbSBidWZmZXIsIGJsb2NraW5nIGZvciBhIG1heGltdW0gb2YgMTAwbXMgdG8NCisgICAgLy8gd2FpdCBmb3IgZW5vdWdoIHNwYWNlIHRvIGJlIGF2YWlsYWJsZSBpbiB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgICAgeEJ5dGVzU2VudCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHVjQXJyYXlUb1NlbmQsIHNpemVvZiggdWNBcnJheVRvU2VuZCApLCB4MTAwbXMgKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc2l6ZW9mKCB1Y0FycmF5VG9TZW5kICkgKQ0KKyAgICB7DQorICAgICAgICAvLyBUaGUgY2FsbCB0byB4U3RyZWFtQnVmZmVyU2VuZCgpIHRpbWVzIG91dCBiZWZvcmUgdGhlcmUgd2FzIGVub3VnaA0KKyAgICAgICAgLy8gc3BhY2UgaW4gdGhlIGJ1ZmZlciBmb3IgdGhlIGRhdGEgdG8gYmUgd3JpdHRlbiwgYnV0IGl0IGRpZA0KKyAgICAgICAgLy8gc3VjY2Vzc2Z1bGx5IHdyaXRlIHhCeXRlc1NlbnQgYnl0ZXMuDQorICAgIH0NCisNCisgICAgLy8gU2VuZCB0aGUgc3RyaW5nIHRvIHRoZSBzdHJlYW0gYnVmZmVyLiAgUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZXJlIGlzIG5vdA0KKyAgICAvLyBlbm91Z2ggc3BhY2UgaW4gdGhlIGJ1ZmZlci4NCisgICAgeEJ5dGVzU2VudCA9IHhTdHJlYW1CdWZmZXJTZW5kKCB4U3RyZWFtQnVmZmVyLCAoIHZvaWQgKiApIHBjU3RyaW5nVG9TZW5kLCBzdHJsZW4oIHBjU3RyaW5nVG9TZW5kICksIDAgKTsNCisNCisgICAgaWYoIHhCeXRlc1NlbnQgIT0gc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApICkNCisgICAgew0KKyAgICAgICAgLy8gVGhlIGVudGlyZSBzdHJpbmcgY291bGQgbm90IGJlIGFkZGVkIHRvIHRoZSBzdHJlYW0gYnVmZmVyIGJlY2F1c2UNCisgICAgICAgIC8vIHRoZXJlIHdhcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIGJ1ZmZlciwgYnV0IHhCeXRlc1NlbnQgYnl0ZXMNCisgICAgICAgIC8vIHdlcmUgc2VudC4gIENvdWxkIHRyeSBhZ2FpbiB0byBzZW5kIHRoZSByZW1haW5pbmcgYnl0ZXMuDQorICAgIH0NCit9DQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJTZW5kIHhTdHJlYW1CdWZmZXJTZW5kDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU2VuZCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkgIGNvbnN0IHZvaWQgKnB2VHhEYXRhLA0KKwkJCQkJCSAgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorCQkJCQkJICBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKzxwcmU+DQorICoNCisgKiBJbnRlcnJ1cHQgc2FmZSB2ZXJzaW9uIG9mIHRoZSBBUEkgZnVuY3Rpb24gdGhhdCBzZW5kcyBhIHN0cmVhbSBvZiBieXRlcyB0bw0KKyAqIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAqDQorICogKioqTk9URSoqKjogIFVuaXF1ZWx5IGFtb25nIEZyZWVSVE9TIG9iamVjdHMsIHRoZSBzdHJlYW0gYnVmZmVyDQorICogaW1wbGVtZW50YXRpb24gKHNvIGFsc28gdGhlIG1lc3NhZ2UgYnVmZmVyIGltcGxlbWVudGF0aW9uLCBhcyBtZXNzYWdlIGJ1ZmZlcnMNCisgKiBhcmUgYnVpbHQgb24gdG9wIG9mIHN0cmVhbSBidWZmZXJzKSBhc3N1bWVzIHRoZXJlIGlzIG9ubHkgb25lIHRhc2sgb3INCisgKiBpbnRlcnJ1cHQgdGhhdCB3aWxsIHdyaXRlIHRvIHRoZSBidWZmZXIgKHRoZSB3cml0ZXIpLCBhbmQgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgcmVhZCBmcm9tIHRoZSBidWZmZXIgKHRoZSByZWFkZXIpLiAgSXQgaXMgc2FmZSBmb3IgdGhlDQorICogd3JpdGVyIGFuZCByZWFkZXIgdG8gYmUgZGlmZmVyZW50IHRhc2tzIG9yIGludGVycnVwdHMsIGJ1dCwgdW5saWtlIG90aGVyDQorICogRnJlZVJUT1Mgb2JqZWN0cywgaXQgaXMgbm90IHNhZmUgdG8gaGF2ZSBtdWx0aXBsZSBkaWZmZXJlbnQgd3JpdGVycyBvcg0KKyAqIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzLiAgSWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgd3JpdGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4U3RyZWFtQnVmZmVyU2VuZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHNlbmQNCisgKiBibG9jayB0aW1lIHRvIDAuICBMaWtld2lzZSwgaWYgdGhlcmUgYXJlIHRvIGJlIG11bHRpcGxlIGRpZmZlcmVudCByZWFkZXJzDQorICogdGhlbiB0aGUgYXBwbGljYXRpb24gd3JpdGVyIG11c3QgcGxhY2UgZWFjaCBjYWxsIHRvIGEgcmVhZGluZyBBUEkgZnVuY3Rpb24NCisgKiAoc3VjaCBhcyB4U3RyZWFtQnVmZmVyUmVhZCgpKSBpbnNpZGUgYSBjcml0aWNhbCBzZWN0aW9uIGFuZCBzZXQgdGhlIHJlY2VpdmUNCisgKiBibG9jayB0aW1lIHRvIDAuDQorICoNCisgKiBVc2UgeFN0cmVhbUJ1ZmZlclNlbmQoKSB0byB3cml0ZSB0byBhIHN0cmVhbSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoKSB0byB3cml0ZSB0byBhIHN0cmVhbSBidWZmZXIgZnJvbSBhbiBpbnRlcnJ1cHQNCisgKiBzZXJ2aWNlIHJvdXRpbmUgKElTUikuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIHRvIHdoaWNoIGEgc3RyZWFtIGlzDQorICogYmVpbmcgc2VudC4NCisgKg0KKyAqIEBwYXJhbSBwdlR4RGF0YSBBIHBvaW50ZXIgdG8gdGhlIGRhdGEgdGhhdCBpcyB0byBiZSBjb3BpZWQgaW50byB0aGUgc3RyZWFtDQorICogYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhEYXRhTGVuZ3RoQnl0ZXMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkgZnJvbSBwdlR4RGF0YQ0KKyAqIGludG8gdGhlIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAgSXQgaXMgcG9zc2libGUgdGhhdCBhIHN0cmVhbSBidWZmZXIgd2lsbA0KKyAqIGhhdmUgYSB0YXNrIGJsb2NrZWQgb24gaXQgd2FpdGluZyBmb3IgZGF0YS4gIENhbGxpbmcNCisgKiB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoKSBjYW4gbWFrZSBkYXRhIGF2YWlsYWJsZSwgYW5kIHNvIGNhdXNlIGEgdGFzayB0aGF0DQorICogd2FzIHdhaXRpbmcgZm9yIGRhdGEgdG8gbGVhdmUgdGhlIEJsb2NrZWQgc3RhdGUuICBJZiBjYWxsaW5nDQorICogeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCkgY2F1c2VzIGEgdGFzayB0byBsZWF2ZSB0aGUgQmxvY2tlZCBzdGF0ZSwgYW5kIHRoZQ0KKyAqIHVuYmxvY2tlZCB0YXNrIGhhcyBhIHByaW9yaXR5IGhpZ2hlciB0aGFuIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgKHRoZQ0KKyAqIHRhc2sgdGhhdCB3YXMgaW50ZXJydXB0ZWQpLCB0aGVuLCBpbnRlcm5hbGx5LCB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoKQ0KKyAqIHdpbGwgc2V0ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHRvIHBkVFJVRS4gIElmDQorICogeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCkgc2V0cyB0aGlzIHZhbHVlIHRvIHBkVFJVRSwgdGhlbiBub3JtYWxseSBhDQorICogY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGludGVycnVwdCBpcyBleGl0ZWQuICBUaGlzIHdpbGwNCisgKiBlbnN1cmUgdGhhdCB0aGUgaW50ZXJydXB0IHJldHVybnMgZGlyZWN0bHkgdG8gdGhlIGhpZ2hlc3QgcHJpb3JpdHkgUmVhZHkNCisgKiBzdGF0ZSB0YXNrLiAgKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlIHNldCB0byBwZEZBTFNFIGJlZm9yZSBpdA0KKyAqIGlzIHBhc3NlZCBpbnRvIHRoZSBmdW5jdGlvbi4gIFNlZSB0aGUgZXhhbXBsZSBjb2RlIGJlbG93IGZvciBhbiBleGFtcGxlLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIHN0cmVhbSBidWZmZXIsIHdoaWNoIHdpbGwNCisgKiBiZSBsZXNzIHRoYW4geERhdGFMZW5ndGhCeXRlcyBpZiB0aGUgc3RyZWFtIGJ1ZmZlciBkaWRuJ3QgaGF2ZSBlbm91Z2ggZnJlZQ0KKyAqIHNwYWNlIGZvciBhbGwgdGhlIGJ5dGVzIHRvIGJlIHdyaXR0ZW4uDQorICoNCisgKiBFeGFtcGxlIHVzZToNCis8cHJlPg0KKy8vIEEgc3RyZWFtIGJ1ZmZlciB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gY3JlYXRlZC4NCitTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyOw0KKw0KK3ZvaWQgdkFuSW50ZXJydXB0U2VydmljZVJvdXRpbmUoIHZvaWQgKQ0KK3sNCitzaXplX3QgeEJ5dGVzU2VudDsNCitjaGFyICpwY1N0cmluZ1RvU2VuZCA9ICJTdHJpbmcgdG8gc2VuZCI7DQorQmFzZVR5cGVfdCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gPSBwZEZBTFNFOyAvLyBJbml0aWFsaXNlZCB0byBwZEZBTFNFLg0KKw0KKyAgICAvLyBBdHRlbXB0IHRvIHNlbmQgdGhlIHN0cmluZyB0byB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgICAgeEJ5dGVzU2VudCA9IHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggeFN0cmVhbUJ1ZmZlciwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB2b2lkICogKSBwY1N0cmluZ1RvU2VuZCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKCBwY1N0cmluZ1RvU2VuZCApLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorDQorICAgIGlmKCB4Qnl0ZXNTZW50ICE9IHN0cmxlbiggcGNTdHJpbmdUb1NlbmQgKSApDQorICAgIHsNCisgICAgICAgIC8vIFRoZXJlIHdhcyBub3QgZW5vdWdoIGZyZWUgc3BhY2UgaW4gdGhlIHN0cmVhbSBidWZmZXIgZm9yIHRoZSBlbnRpcmUNCisgICAgICAgIC8vIHN0cmluZyB0byBiZSB3cml0dGVuLCB1dCB4Qnl0ZXNTZW50IGJ5dGVzIHdlcmUgd3JpdHRlbi4NCisgICAgfQ0KKw0KKyAgICAvLyBJZiB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2FzIHNldCB0byBwZFRSVUUgaW5zaWRlDQorICAgIC8vIHhTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUigpIHRoZW4gYSB0YXNrIHRoYXQgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlDQorICAgIC8vIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIHRhc2sgd2FzIHVuYmxvY2tlZCBhbmQgYSBjb250ZXh0DQorICAgIC8vIHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGVuc3VyZSB0aGUgSVNSIHJldHVybnMgdG8gdGhlIHVuYmxvY2tlZA0KKyAgICAvLyB0YXNrLiAgSW4gbW9zdCBGcmVlUlRPUyBwb3J0cyB0aGlzIGlzIGRvbmUgYnkgc2ltcGx5IHBhc3NpbmcNCisgICAgLy8geEhpZ2hlclByaW9yaXR5VGFza1dva2VuIGludG8gdGFza1lJRUxEX0ZST01fSVNSKCksIHdoaWNoIHdpbGwgdGVzdCB0aGUNCisgICAgLy8gdmFyaWFibGVzIHZhbHVlLCBhbmQgcGVyZm9ybSB0aGUgY29udGV4dCBzd2l0Y2ggaWYgbmVjZXNzYXJ5LiAgQ2hlY2sgdGhlDQorICAgIC8vIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwb3J0IGluIHVzZSBmb3IgcG9ydCBzcGVjaWZpYyBpbnN0cnVjdGlvbnMuDQorICAgIHRhc2tZSUVMRF9GUk9NX0lTUiggeEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IgeFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorCQkJCQkJCQkgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkgQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwdlJ4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApOw0KKzwvcHJlPg0KKyAqDQorICogUmVjZWl2ZXMgYnl0ZXMgZnJvbSBhIHN0cmVhbSBidWZmZXIuDQorICoNCisgKiAqKipOT1RFKioqOiAgVW5pcXVlbHkgYW1vbmcgRnJlZVJUT1Mgb2JqZWN0cywgdGhlIHN0cmVhbSBidWZmZXINCisgKiBpbXBsZW1lbnRhdGlvbiAoc28gYWxzbyB0aGUgbWVzc2FnZSBidWZmZXIgaW1wbGVtZW50YXRpb24sIGFzIG1lc3NhZ2UgYnVmZmVycw0KKyAqIGFyZSBidWlsdCBvbiB0b3Agb2Ygc3RyZWFtIGJ1ZmZlcnMpIGFzc3VtZXMgdGhlcmUgaXMgb25seSBvbmUgdGFzayBvcg0KKyAqIGludGVycnVwdCB0aGF0IHdpbGwgd3JpdGUgdG8gdGhlIGJ1ZmZlciAodGhlIHdyaXRlciksIGFuZCBvbmx5IG9uZSB0YXNrIG9yDQorICogaW50ZXJydXB0IHRoYXQgd2lsbCByZWFkIGZyb20gdGhlIGJ1ZmZlciAodGhlIHJlYWRlcikuICBJdCBpcyBzYWZlIGZvciB0aGUNCisgKiB3cml0ZXIgYW5kIHJlYWRlciB0byBiZSBkaWZmZXJlbnQgdGFza3Mgb3IgaW50ZXJydXB0cywgYnV0LCB1bmxpa2Ugb3RoZXINCisgKiBGcmVlUlRPUyBvYmplY3RzLCBpdCBpcyBub3Qgc2FmZSB0byBoYXZlIG11bHRpcGxlIGRpZmZlcmVudCB3cml0ZXJzIG9yDQorICogbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMuICBJZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHdyaXRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSB3cml0aW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJTZW5kKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgc2VuZA0KKyAqIGJsb2NrIHRpbWUgdG8gMC4gIExpa2V3aXNlLCBpZiB0aGVyZSBhcmUgdG8gYmUgbXVsdGlwbGUgZGlmZmVyZW50IHJlYWRlcnMNCisgKiB0aGVuIHRoZSBhcHBsaWNhdGlvbiB3cml0ZXIgbXVzdCBwbGFjZSBlYWNoIGNhbGwgdG8gYSByZWFkaW5nIEFQSSBmdW5jdGlvbg0KKyAqIChzdWNoIGFzIHhTdHJlYW1CdWZmZXJSZWFkKCkpIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24gYW5kIHNldCB0aGUgcmVjZWl2ZQ0KKyAqIGJsb2NrIHRpbWUgdG8gMC4NCisgKg0KKyAqIFVzZSB4U3RyZWFtQnVmZmVyUmVjZWl2ZSgpIHRvIHJlYWQgZnJvbSBhIHN0cmVhbSBidWZmZXIgZnJvbSBhIHRhc2suICBVc2UNCisgKiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB0byByZWFkIGZyb20gYSBzdHJlYW0gYnVmZmVyIGZyb20gYW4NCisgKiBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIChJU1IpLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBmcm9tIHdoaWNoIGJ5dGVzIGFyZSB0bw0KKyAqIGJlIHJlY2VpdmVkLg0KKyAqDQorICogQHBhcmFtIHB2UnhEYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGludG8gd2hpY2ggdGhlIHJlY2VpdmVkIGJ5dGVzIHdpbGwgYmUNCisgKiBjb3BpZWQuDQorICoNCisgKiBAcGFyYW0geEJ1ZmZlckxlbmd0aEJ5dGVzIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHRoZQ0KKyAqIHB2UnhEYXRhIHBhcmFtZXRlci4gIFRoaXMgc2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdG8gcmVjZWl2ZSBpbiBvbmUNCisgKiBjYWxsLiAgeFN0cmVhbUJ1ZmZlclJlY2VpdmUgd2lsbCByZXR1cm4gYXMgbWFueSBieXRlcyBhcyBwb3NzaWJsZSB1cCB0byBhDQorICogbWF4aW11bSBzZXQgYnkgeEJ1ZmZlckxlbmd0aEJ5dGVzLg0KKyAqDQorICogQHBhcmFtIHhUaWNrc1RvV2FpdCBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0aGUgdGFzayBzaG91bGQgcmVtYWluIGluIHRoZQ0KKyAqIEJsb2NrZWQgc3RhdGUgdG8gd2FpdCBmb3IgZGF0YSB0byBiZWNvbWUgYXZhaWxhYmxlIGlmIHRoZSBzdHJlYW0gYnVmZmVyIGlzDQorICogZW1wdHkuICB4U3RyZWFtQnVmZmVyUmVjZWl2ZSgpIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5IGlmIHhUaWNrc1RvV2FpdCBpcw0KKyAqIHplcm8uICBUaGUgYmxvY2sgdGltZSBpcyBzcGVjaWZpZWQgaW4gdGljayBwZXJpb2RzLCBzbyB0aGUgYWJzb2x1dGUgdGltZSBpdA0KKyAqIHJlcHJlc2VudHMgaXMgZGVwZW5kZW50IG9uIHRoZSB0aWNrIGZyZXF1ZW5jeS4gIFRoZSBtYWNybyBwZE1TX1RPX1RJQ0tTKCkgY2FuDQorICogYmUgdXNlZCB0byBjb252ZXJ0IGEgdGltZSBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzIGludG8gYSB0aW1lIHNwZWNpZmllZCBpbg0KKyAqIHRpY2tzLiAgU2V0dGluZyB4VGlja3NUb1dhaXQgdG8gcG9ydE1BWF9ERUxBWSB3aWxsIGNhdXNlIHRoZSB0YXNrIHRvIHdhaXQNCisgKiBpbmRlZmluaXRlbHkgKHdpdGhvdXQgdGltaW5nIG91dCksIHByb3ZpZGVkIElOQ0xVREVfdlRhc2tTdXNwZW5kIGlzIHNldCB0byAxDQorICogaW4gRnJlZVJUT1NDb25maWcuaC4gIEEgdGFzayBkb2VzIG5vdCB1c2UgYW55IENQVSB0aW1lIHdoZW4gaXQgaXMgaW4gdGhlDQorICogQmxvY2tlZCBzdGF0ZS4NCisgKg0KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIGZyb20gdGhlIHN0cmVhbSBidWZmZXIsIHdoaWNoIHdpbGwNCisgKiBiZSBsZXNzIHRoYW4geEJ1ZmZlckxlbmd0aEJ5dGVzIGlmIHRoZSBjYWxsIHRvIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCkgdGltZWQNCisgKiBvdXQgYmVmb3JlIHhCdWZmZXJMZW5ndGhCeXRlcyB3ZXJlIGF2YWlsYWJsZS4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQordm9pZCB2QUZ1bmN0aW9uKCBTdHJlYW1CdWZmZXJfdCB4U3RyZWFtQnVmZmVyICkNCit7DQordWludDhfdCB1Y1J4RGF0YVsgMjAgXTsNCitzaXplX3QgeFJlY2VpdmVkQnl0ZXM7DQorY29uc3QgVGlja1R5cGVfdCB4QmxvY2tUaW1lID0gcGRNU19UT19USUNLUyggMjAgKTsNCisNCisgICAgLy8gUmVjZWl2ZSB1cCB0byBhbm90aGVyIHNpemVvZiggdWNSeERhdGEgKSBieXRlcyBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAgICAvLyBXYWl0IGluIHRoZSBCbG9ja2VkIHN0YXRlIChzbyBub3QgdXNpbmcgYW55IENQVSBwcm9jZXNzaW5nIHRpbWUpIGZvciBhDQorICAgIC8vIG1heGltdW0gb2YgMTAwbXMgZm9yIHRoZSBmdWxsIHNpemVvZiggdWNSeERhdGEgKSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUNCisgICAgLy8gYXZhaWxhYmxlLg0KKyAgICB4UmVjZWl2ZWRCeXRlcyA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlKCB4U3RyZWFtQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHZvaWQgKiApIHVjUnhEYXRhLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoIHVjUnhEYXRhICksDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhCbG9ja1RpbWUgKTsNCisNCisgICAgaWYoIHhSZWNlaXZlZEJ5dGVzID4gMCApDQorICAgIHsNCisgICAgICAgIC8vIEEgdWNSeERhdGEgY29udGFpbnMgYW5vdGhlciB4UmVjaWV2ZWRCeXRlcyBieXRlcyBvZiBkYXRhLCB3aGljaCBjYW4NCisgICAgICAgIC8vIGJlIHByb2Nlc3NlZCBoZXJlLi4uLg0KKyAgICB9DQorfQ0KKzwvcHJlPg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyUmVjZWl2ZSB4U3RyZWFtQnVmZmVyUmVjZWl2ZQ0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCSB2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCSBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK3NpemVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcHZSeERhdGEsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPC9wcmU+DQorICoNCisgKiBBbiBpbnRlcnJ1cHQgc2FmZSB2ZXJzaW9uIG9mIHRoZSBBUEkgZnVuY3Rpb24gdGhhdCByZWNlaXZlcyBieXRlcyBmcm9tIGENCisgKiBzdHJlYW0gYnVmZmVyLg0KKyAqDQorICogVXNlIHhTdHJlYW1CdWZmZXJSZWNlaXZlKCkgdG8gcmVhZCBieXRlcyBmcm9tIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGEgdGFzay4NCisgKiBVc2UgeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgdG8gcmVhZCBieXRlcyBmcm9tIGEgc3RyZWFtIGJ1ZmZlciBmcm9tIGFuDQorICogaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSAoSVNSKS4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgZnJvbSB3aGljaCBhIHN0cmVhbQ0KKyAqIGlzIGJlaW5nIHJlY2VpdmVkLg0KKyAqDQorICogQHBhcmFtIHB2UnhEYXRhIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIGludG8gd2hpY2ggdGhlIHJlY2VpdmVkIGJ5dGVzIGFyZQ0KKyAqIGNvcGllZC4NCisgKg0KKyAqIEBwYXJhbSB4QnVmZmVyTGVuZ3RoQnl0ZXMgVGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgdGhlDQorICogcHZSeERhdGEgcGFyYW1ldGVyLiAgVGhpcyBzZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byByZWNlaXZlIGluIG9uZQ0KKyAqIGNhbGwuICB4U3RyZWFtQnVmZmVyUmVjZWl2ZSB3aWxsIHJldHVybiBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlIHVwIHRvIGENCisgKiBtYXhpbXVtIHNldCBieSB4QnVmZmVyTGVuZ3RoQnl0ZXMuDQorICoNCisgKiBAcGFyYW0gcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiAgSXQgaXMgcG9zc2libGUgdGhhdCBhIHN0cmVhbSBidWZmZXIgd2lsbA0KKyAqIGhhdmUgYSB0YXNrIGJsb2NrZWQgb24gaXQgd2FpdGluZyBmb3Igc3BhY2UgdG8gYmVjb21lIGF2YWlsYWJsZS4gIENhbGxpbmcNCisgKiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSBjYW4gbWFrZSBzcGFjZSBhdmFpbGFibGUsIGFuZCBzbyBjYXVzZSBhIHRhc2sNCisgKiB0aGF0IGlzIHdhaXRpbmcgZm9yIHNwYWNlIHRvIGxlYXZlIHRoZSBCbG9ja2VkIHN0YXRlLiAgSWYgY2FsbGluZw0KKyAqIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUigpIGNhdXNlcyBhIHRhc2sgdG8gbGVhdmUgdGhlIEJsb2NrZWQgc3RhdGUsIGFuZA0KKyAqIHRoZSB1bmJsb2NrZWQgdGFzayBoYXMgYSBwcmlvcml0eSBoaWdoZXIgdGhhbiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyB0YXNrDQorICogKHRoZSB0YXNrIHRoYXQgd2FzIGludGVycnVwdGVkKSwgdGhlbiwgaW50ZXJuYWxseSwNCisgKiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoKSB3aWxsIHNldCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB0byBwZFRSVUUuDQorICogSWYgeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgc2V0cyB0aGlzIHZhbHVlIHRvIHBkVFJVRSwgdGhlbiBub3JtYWxseSBhDQorICogY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCBiZWZvcmUgdGhlIGludGVycnVwdCBpcyBleGl0ZWQuICBUaGF0IHdpbGwNCisgKiBlbnN1cmUgdGhlIGludGVycnVwdCByZXR1cm5zIGRpcmVjdGx5IHRvIHRoZSBoaWdoZXN0IHByaW9yaXR5IFJlYWR5IHN0YXRlDQorICogdGFzay4gICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHNob3VsZCBiZSBzZXQgdG8gcGRGQUxTRSBiZWZvcmUgaXQgaXMNCisgKiBwYXNzZWQgaW50byB0aGUgZnVuY3Rpb24uICBTZWUgdGhlIGNvZGUgZXhhbXBsZSBiZWxvdyBmb3IgYW4gZXhhbXBsZS4NCisgKg0KKyAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyByZWFkIGZyb20gdGhlIHN0cmVhbSBidWZmZXIsIGlmIGFueS4NCisgKg0KKyAqIEV4YW1wbGUgdXNlOg0KKzxwcmU+DQorLy8gQSBzdHJlYW0gYnVmZmVyIHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLg0KK1N0cmVhbUJ1ZmZlcl90IHhTdHJlYW1CdWZmZXI7DQorDQordm9pZCB2QW5JbnRlcnJ1cHRTZXJ2aWNlUm91dGluZSggdm9pZCApDQorew0KK3VpbnQ4X3QgdWNSeERhdGFbIDIwIF07DQorc2l6ZV90IHhSZWNlaXZlZEJ5dGVzOw0KK0Jhc2VUeXBlX3QgeEhpZ2hlclByaW9yaXR5VGFza1dva2VuID0gcGRGQUxTRTsgIC8vIEluaXRpYWxpc2VkIHRvIHBkRkFMU0UuDQorDQorICAgIC8vIFJlY2VpdmUgdGhlIG5leHQgc3RyZWFtIGZyb20gdGhlIHN0cmVhbSBidWZmZXIuDQorICAgIHhSZWNlaXZlZEJ5dGVzID0geFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCB2b2lkICogKSB1Y1J4RGF0YSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiggdWNSeERhdGEgKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisNCisgICAgaWYoIHhSZWNlaXZlZEJ5dGVzID4gMCApDQorICAgIHsNCisgICAgICAgIC8vIHVjUnhEYXRhIGNvbnRhaW5zIHhSZWNlaXZlZEJ5dGVzIHJlYWQgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlci4NCisgICAgICAgIC8vIFByb2Nlc3MgdGhlIHN0cmVhbSBoZXJlLi4uLg0KKyAgICB9DQorDQorICAgIC8vIElmIHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3YXMgc2V0IHRvIHBkVFJVRSBpbnNpZGUNCisgICAgLy8geFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCkgdGhlbiBhIHRhc2sgdGhhdCBoYXMgYSBwcmlvcml0eSBhYm92ZSB0aGUNCisgICAgLy8gcHJpb3JpdHkgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGFzayB3YXMgdW5ibG9ja2VkIGFuZCBhIGNvbnRleHQNCisgICAgLy8gc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgdG8gZW5zdXJlIHRoZSBJU1IgcmV0dXJucyB0byB0aGUgdW5ibG9ja2VkDQorICAgIC8vIHRhc2suICBJbiBtb3N0IEZyZWVSVE9TIHBvcnRzIHRoaXMgaXMgZG9uZSBieSBzaW1wbHkgcGFzc2luZw0KKyAgICAvLyB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gaW50byB0YXNrWUlFTERfRlJPTV9JU1IoKSwgd2hpY2ggd2lsbCB0ZXN0IHRoZQ0KKyAgICAvLyB2YXJpYWJsZXMgdmFsdWUsIGFuZCBwZXJmb3JtIHRoZSBjb250ZXh0IHN3aXRjaCBpZiBuZWNlc3NhcnkuICBDaGVjayB0aGUNCisgICAgLy8gZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHBvcnQgaW4gdXNlIGZvciBwb3J0IHNwZWNpZmljIGluc3RydWN0aW9ucy4NCisgICAgdGFza1lJRUxEX0ZST01fSVNSKCB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCit9DQorPC9wcmU+DQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1INCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQl2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJCQlzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLA0KKwkJCQkJCQkJCUJhc2VUeXBlX3QgKiBjb25zdCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQordm9pZCB2U3RyZWFtQnVmZmVyRGVsZXRlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICk7DQorPC9wcmU+DQorICoNCisgKiBEZWxldGVzIGEgc3RyZWFtIGJ1ZmZlciB0aGF0IHdhcyBwcmV2aW91c2x5IGNyZWF0ZWQgdXNpbmcgYSBjYWxsIHRvDQorICogeFN0cmVhbUJ1ZmZlckNyZWF0ZSgpIG9yIHhTdHJlYW1CdWZmZXJDcmVhdGVTdGF0aWMoKS4gIElmIHRoZSBzdHJlYW0NCisgKiBidWZmZXIgd2FzIGNyZWF0ZWQgdXNpbmcgZHluYW1pYyBtZW1vcnkgKHRoYXQgaXMsIGJ5IHhTdHJlYW1CdWZmZXJDcmVhdGUoKSksDQorICogdGhlbiB0aGUgYWxsb2NhdGVkIG1lbW9yeSBpcyBmcmVlZC4NCisgKg0KKyAqIEEgc3RyZWFtIGJ1ZmZlciBoYW5kbGUgbXVzdCBub3QgYmUgdXNlZCBhZnRlciB0aGUgc3RyZWFtIGJ1ZmZlciBoYXMgYmVlbg0KKyAqIGRlbGV0ZWQuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIHRvIGJlIGRlbGV0ZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgdlN0cmVhbUJ1ZmZlckRlbGV0ZSB2U3RyZWFtQnVmZmVyRGVsZXRlDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3ZvaWQgdlN0cmVhbUJ1ZmZlckRlbGV0ZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlcklzRnVsbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KKzwvcHJlPg0KKyAqDQorICogUXVlcmllcyBhIHN0cmVhbSBidWZmZXIgdG8gc2VlIGlmIGl0IGlzIGZ1bGwuICBBIHN0cmVhbSBidWZmZXIgaXMgZnVsbCBpZiBpdA0KKyAqIGRvZXMgbm90IGhhdmUgYW55IGZyZWUgc3BhY2UsIGFuZCB0aGVyZWZvcmUgY2Fubm90IGFjY2VwdCBhbnkgbW9yZSBkYXRhLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBiZWluZyBxdWVyaWVkLg0KKyAqDQorICogQHJldHVybiBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBmdWxsIHRoZW4gcGRUUlVFIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlDQorICogcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVySXNGdWxsIHhTdHJlYW1CdWZmZXJJc0Z1bGwNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVySXNGdWxsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVySXNFbXB0eSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KKzwvcHJlPg0KKyAqDQorICogUXVlcmllcyBhIHN0cmVhbSBidWZmZXIgdG8gc2VlIGlmIGl0IGlzIGVtcHR5LiAgQSBzdHJlYW0gYnVmZmVyIGlzIGVtcHR5IGlmDQorICogaXQgZG9lcyBub3QgY29udGFpbiBhbnkgZGF0YS4NCisgKg0KKyAqIEBwYXJhbSB4U3RyZWFtQnVmZmVyIFRoZSBoYW5kbGUgb2YgdGhlIHN0cmVhbSBidWZmZXIgYmVpbmcgcXVlcmllZC4NCisgKg0KKyAqIEByZXR1cm4gSWYgdGhlIHN0cmVhbSBidWZmZXIgaXMgZW1wdHkgdGhlbiBwZFRSVUUgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UNCisgKiBwZEZBTFNFIGlzIHJldHVybmVkLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJJc0VtcHR5IHhTdHJlYW1CdWZmZXJJc0VtcHR5DQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlcklzRW1wdHkoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJSZXNldCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApOw0KKzwvcHJlPg0KKyAqDQorICogUmVzZXRzIGEgc3RyZWFtIGJ1ZmZlciB0byBpdHMgaW5pdGlhbCwgZW1wdHksIHN0YXRlLiAgQW55IGRhdGEgdGhhdCB3YXMgaW4NCisgKiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBkaXNjYXJkZWQuICBBIHN0cmVhbSBidWZmZXIgY2FuIG9ubHkgYmUgcmVzZXQgaWYgdGhlcmUNCisgKiBhcmUgbm8gdGFza3MgYmxvY2tlZCB3YWl0aW5nIHRvIGVpdGhlciBzZW5kIHRvIG9yIHJlY2VpdmUgZnJvbSB0aGUgc3RyZWFtDQorICogYnVmZmVyLg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBiZWluZyByZXNldC4NCisgKg0KKyAqIEByZXR1cm4gSWYgdGhlIHN0cmVhbSBidWZmZXIgaXMgcmVzZXQgdGhlbiBwZFBBU1MgaXMgcmV0dXJuZWQuICBJZiB0aGVyZSB3YXMNCisgKiBhIHRhc2sgYmxvY2tlZCB3YWl0aW5nIHRvIHNlbmQgdG8gb3IgcmVhZCBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyIHRoZW4gdGhlDQorICogc3RyZWFtIGJ1ZmZlciBpcyBub3QgcmVzZXQgYW5kIHBkRkFJTCBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyUmVzZXQgeFN0cmVhbUJ1ZmZlclJlc2V0DQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclJlc2V0KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKioNCisgKiBzdHJlYW1fYnVmZmVyLmgNCisgKg0KKzxwcmU+DQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCis8L3ByZT4NCisgKg0KKyAqIFF1ZXJpZXMgYSBzdHJlYW0gYnVmZmVyIHRvIHNlZSBob3cgbXVjaCBmcmVlIHNwYWNlIGl0IGNvbnRhaW5zLCB3aGljaCBpcw0KKyAqIGVxdWFsIHRvIHRoZSBhbW91bnQgb2YgZGF0YSB0aGF0IGNhbiBiZSBzZW50IHRvIHRoZSBzdHJlYW0gYnVmZmVyIGJlZm9yZSBpdA0KKyAqIGlzIGZ1bGwuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGJlaW5nIHF1ZXJpZWQuDQorICoNCisgKiBAcmV0dXJuIFRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgd3JpdHRlbiB0byB0aGUgc3RyZWFtIGJ1ZmZlciBiZWZvcmUNCisgKiB0aGUgc3RyZWFtIGJ1ZmZlciB3b3VsZCBiZSBmdWxsLg0KKyAqDQorICogXGRlZmdyb3VwIHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUgeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZQ0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitzaXplX3QgeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK3NpemVfdCB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKTsNCis8L3ByZT4NCisgKg0KKyAqIFF1ZXJpZXMgYSBzdHJlYW0gYnVmZmVyIHRvIHNlZSBob3cgbXVjaCBkYXRhIGl0IGNvbnRhaW5zLCB3aGljaCBpcyBlcXVhbCB0bw0KKyAqIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgcmVhZCBmcm9tIHRoZSBzdHJlYW0gYnVmZmVyIGJlZm9yZSB0aGUgc3RyZWFtDQorICogYnVmZmVyIHdvdWxkIGJlIGVtcHR5Lg0KKyAqDQorICogQHBhcmFtIHhTdHJlYW1CdWZmZXIgVGhlIGhhbmRsZSBvZiB0aGUgc3RyZWFtIGJ1ZmZlciBiZWluZyBxdWVyaWVkLg0KKyAqDQorICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHJlYWQgZnJvbSB0aGUgc3RyZWFtIGJ1ZmZlciBiZWZvcmUNCisgKiB0aGUgc3RyZWFtIGJ1ZmZlciB3b3VsZCBiZSBlbXB0eS4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUgeFN0cmVhbUJ1ZmZlckJ5dGVzQXZhaWxhYmxlDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qKg0KKyAqIHN0cmVhbV9idWZmZXIuaA0KKyAqDQorPHByZT4NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHNpemVfdCB4VHJpZ2dlckxldmVsICk7DQorPC9wcmU+DQorICoNCisgKiBBIHN0cmVhbSBidWZmZXIncyB0cmlnZ2VyIGxldmVsIGlzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBtdXN0IGJlIGluIHRoZQ0KKyAqIHN0cmVhbSBidWZmZXIgYmVmb3JlIGEgdGFzayB0aGF0IGlzIGJsb2NrZWQgb24gdGhlIHN0cmVhbSBidWZmZXIgdG8NCisgKiB3YWl0IGZvciBkYXRhIGlzIG1vdmVkIG91dCBvZiB0aGUgYmxvY2tlZCBzdGF0ZS4gIEZvciBleGFtcGxlLCBpZiBhIHRhc2sgaXMNCisgKiBibG9ja2VkIG9uIGEgcmVhZCBvZiBhbiBlbXB0eSBzdHJlYW0gYnVmZmVyIHRoYXQgaGFzIGEgdHJpZ2dlciBsZXZlbCBvZiAxDQorICogdGhlbiB0aGUgdGFzayB3aWxsIGJlIHVuYmxvY2tlZCB3aGVuIGEgc2luZ2xlIGJ5dGUgaXMgd3JpdHRlbiB0byB0aGUgYnVmZmVyDQorICogb3IgdGhlIHRhc2sncyBibG9jayB0aW1lIGV4cGlyZXMuICBBcyBhbm90aGVyIGV4YW1wbGUsIGlmIGEgdGFzayBpcyBibG9ja2VkDQorICogb24gYSByZWFkIG9mIGFuIGVtcHR5IHN0cmVhbSBidWZmZXIgdGhhdCBoYXMgYSB0cmlnZ2VyIGxldmVsIG9mIDEwIHRoZW4gdGhlDQorICogdGFzayB3aWxsIG5vdCBiZSB1bmJsb2NrZWQgdW50aWwgdGhlIHN0cmVhbSBidWZmZXIgY29udGFpbnMgYXQgbGVhc3QgMTAgYnl0ZXMNCisgKiBvciB0aGUgdGFzaydzIGJsb2NrIHRpbWUgZXhwaXJlcy4gIElmIGEgcmVhZGluZyB0YXNrJ3MgYmxvY2sgdGltZSBleHBpcmVzDQorICogYmVmb3JlIHRoZSB0cmlnZ2VyIGxldmVsIGlzIHJlYWNoZWQgdGhlbiB0aGUgdGFzayB3aWxsIHN0aWxsIHJlY2VpdmUgaG93ZXZlcg0KKyAqIG1hbnkgYnl0ZXMgYXJlIGFjdHVhbGx5IGF2YWlsYWJsZS4gIFNldHRpbmcgYSB0cmlnZ2VyIGxldmVsIG9mIDAgd2lsbCByZXN1bHQNCisgKiBpbiBhIHRyaWdnZXIgbGV2ZWwgb2YgMSBiZWluZyB1c2VkLiAgSXQgaXMgbm90IHZhbGlkIHRvIHNwZWNpZnkgYSB0cmlnZ2VyDQorICogbGV2ZWwgdGhhdCBpcyBncmVhdGVyIHRoYW4gdGhlIGJ1ZmZlciBzaXplLg0KKyAqDQorICogQSB0cmlnZ2VyIGxldmVsIGlzIHNldCB3aGVuIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGNyZWF0ZWQsIGFuZCBjYW4gYmUgbW9kaWZpZWQNCisgKiB1c2luZyB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsKCkuDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGJlaW5nIHVwZGF0ZWQuDQorICoNCisgKiBAcGFyYW0geFRyaWdnZXJMZXZlbCBUaGUgbmV3IHRyaWdnZXIgbGV2ZWwgZm9yIHRoZSBzdHJlYW0gYnVmZmVyLg0KKyAqDQorICogQHJldHVybiBJZiB4VHJpZ2dlckxldmVsIHdhcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHN0cmVhbSBidWZmZXIncyBsZW5ndGgNCisgKiB0aGVuIHRoZSB0cmlnZ2VyIGxldmVsIHdpbGwgYmUgdXBkYXRlZCBhbmQgcGRUUlVFIGlzIHJldHVybmVkLiAgT3RoZXJ3aXNlDQorICogcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsIHhTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwNCisgKiBcaW5ncm91cCBTdHJlYW1CdWZmZXJNYW5hZ2VtZW50DQorICovDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBzaXplX3QgeFRyaWdnZXJMZXZlbCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPC9wcmU+DQorICoNCisgKiBGb3IgYWR2YW5jZWQgdXNlcnMgb25seS4NCisgKg0KKyAqIFRoZSBzYlNFTkRfQ09NUExFVEVEKCkgbWFjcm8gaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBGcmVlUlRPUyBBUElzIHdoZW4NCisgKiBkYXRhIGlzIHNlbnQgdG8gYSBtZXNzYWdlIGJ1ZmZlciBvciBzdHJlYW0gYnVmZmVyLiAgSWYgdGhlcmUgd2FzIGEgdGFzayB0aGF0DQorICogd2FzIGJsb2NrZWQgb24gdGhlIG1lc3NhZ2Ugb3Igc3RyZWFtIGJ1ZmZlciB3YWl0aW5nIGZvciBkYXRhIHRvIGFycml2ZSB0aGVuDQorICogdGhlIHNiU0VORF9DT01QTEVURUQoKSBtYWNybyBzZW5kcyBhIG5vdGlmaWNhdGlvbiB0byB0aGUgdGFzayB0byByZW1vdmUgaXQNCisgKiBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLiAgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCkgZG9lcyB0aGUgc2FtZQ0KKyAqIHRoaW5nLiAgSXQgaXMgcHJvdmlkZWQgdG8gZW5hYmxlIGFwcGxpY2F0aW9uIHdyaXRlcnMgdG8gaW1wbGVtZW50IHRoZWlyIG93bg0KKyAqIHZlcnNpb24gb2Ygc2JTRU5EX0NPTVBMRVRFRCgpLCBhbmQgTVVTVCBOT1QgQkUgVVNFRCBBVCBBTlkgT1RIRVIgVElNRS4NCisgKg0KKyAqIFNlZSB0aGUgZXhhbXBsZSBpbXBsZW1lbnRlZCBpbiBGcmVlUlRPUy9EZW1vL01pbmltYWwvTWVzc2FnZUJ1ZmZlckFNUC5jIGZvcg0KKyAqIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIHRvIHdoaWNoIGRhdGEgd2FzDQorICogd3JpdHRlbi4NCisgKg0KKyAqIEBwYXJhbSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuIHNob3VsZCBiZQ0KKyAqIGluaXRpYWxpc2VkIHRvIHBkRkFMU0UgYmVmb3JlIGl0IGlzIHBhc3NlZCBpbnRvDQorICogeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCkuICBJZiBjYWxsaW5nDQorICogeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCkgcmVtb3ZlcyBhIHRhc2sgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSwNCisgKiBhbmQgdGhlIHRhc2sgaGFzIGEgcHJpb3JpdHkgYWJvdmUgdGhlIHByaW9yaXR5IG9mIHRoZSBjdXJyZW50bHkgcnVubmluZyB0YXNrLA0KKyAqIHRoZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gd2lsbCBnZXQgc2V0IHRvIHBkVFJVRSBpbmRpY2F0aW5nIHRoYXQgYQ0KKyAqIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQgYmVmb3JlIGV4aXRpbmcgdGhlIElTUi4NCisgKg0KKyAqIEByZXR1cm4gSWYgYSB0YXNrIHdhcyByZW1vdmVkIGZyb20gdGhlIEJsb2NrZWQgc3RhdGUgdGhlbiBwZFRSVUUgaXMgcmV0dXJuZWQuDQorICogT3RoZXJ3aXNlIHBkRkFMU0UgaXMgcmV0dXJuZWQuDQorICoNCisgKiBcZGVmZ3JvdXAgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSIHhTdHJlYW1CdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUg0KKyAqIFxpbmdyb3VwIFN0cmVhbUJ1ZmZlck1hbmFnZW1lbnQNCisgKi8NCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJTZW5kQ29tcGxldGVkRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoqDQorICogc3RyZWFtX2J1ZmZlci5oDQorICoNCis8cHJlPg0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorPC9wcmU+DQorICoNCisgKiBGb3IgYWR2YW5jZWQgdXNlcnMgb25seS4NCisgKg0KKyAqIFRoZSBzYlJFQ0VJVkVfQ09NUExFVEVEKCkgbWFjcm8gaXMgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBGcmVlUlRPUyBBUElzIHdoZW4NCisgKiBkYXRhIGlzIHJlYWQgb3V0IG9mIGEgbWVzc2FnZSBidWZmZXIgb3Igc3RyZWFtIGJ1ZmZlci4gIElmIHRoZXJlIHdhcyBhIHRhc2sNCisgKiB0aGF0IHdhcyBibG9ja2VkIG9uIHRoZSBtZXNzYWdlIG9yIHN0cmVhbSBidWZmZXIgd2FpdGluZyBmb3IgZGF0YSB0byBhcnJpdmUNCisgKiB0aGVuIHRoZSBzYlJFQ0VJVkVfQ09NUExFVEVEKCkgbWFjcm8gc2VuZHMgYSBub3RpZmljYXRpb24gdG8gdGhlIHRhc2sgdG8NCisgKiByZW1vdmUgaXQgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZS4gIHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUigpDQorICogZG9lcyB0aGUgc2FtZSB0aGluZy4gIEl0IGlzIHByb3ZpZGVkIHRvIGVuYWJsZSBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvDQorICogaW1wbGVtZW50IHRoZWlyIG93biB2ZXJzaW9uIG9mIHNiUkVDRUlWRV9DT01QTEVURUQoKSwgYW5kIE1VU1QgTk9UIEJFIFVTRUQgQVQNCisgKiBBTlkgT1RIRVIgVElNRS4NCisgKg0KKyAqIFNlZSB0aGUgZXhhbXBsZSBpbXBsZW1lbnRlZCBpbiBGcmVlUlRPUy9EZW1vL01pbmltYWwvTWVzc2FnZUJ1ZmZlckFNUC5jIGZvcg0KKyAqIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uDQorICoNCisgKiBAcGFyYW0geFN0cmVhbUJ1ZmZlciBUaGUgaGFuZGxlIG9mIHRoZSBzdHJlYW0gYnVmZmVyIGZyb20gd2hpY2ggZGF0YSB3YXMNCisgKiByZWFkLg0KKyAqDQorICogQHBhcmFtIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKnB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gc2hvdWxkIGJlDQorICogaW5pdGlhbGlzZWQgdG8gcGRGQUxTRSBiZWZvcmUgaXQgaXMgcGFzc2VkIGludG8NCisgKiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoKS4gIElmIGNhbGxpbmcNCisgKiB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IoKSByZW1vdmVzIGEgdGFzayBmcm9tIHRoZSBCbG9ja2VkIHN0YXRlLA0KKyAqIGFuZCB0aGUgdGFzayBoYXMgYSBwcmlvcml0eSBhYm92ZSB0aGUgcHJpb3JpdHkgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIHRhc2ssDQorICogdGhlbiAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiB3aWxsIGdldCBzZXQgdG8gcGRUUlVFIGluZGljYXRpbmcgdGhhdCBhDQorICogY29udGV4dCBzd2l0Y2ggc2hvdWxkIGJlIHBlcmZvcm1lZCBiZWZvcmUgZXhpdGluZyB0aGUgSVNSLg0KKyAqDQorICogQHJldHVybiBJZiBhIHRhc2sgd2FzIHJlbW92ZWQgZnJvbSB0aGUgQmxvY2tlZCBzdGF0ZSB0aGVuIHBkVFJVRSBpcyByZXR1cm5lZC4NCisgKiBPdGhlcndpc2UgcGRGQUxTRSBpcyByZXR1cm5lZC4NCisgKg0KKyAqIFxkZWZncm91cCB4U3RyZWFtQnVmZmVyUmVjZWl2ZUNvbXBsZXRlZEZyb21JU1IgeFN0cmVhbUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSDQorICogXGluZ3JvdXAgU3RyZWFtQnVmZmVyTWFuYWdlbWVudA0KKyAqLw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmVDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKiBGdW5jdGlvbnMgYmVsb3cgaGVyZSBhcmUgbm90IHBhcnQgb2YgdGhlIHB1YmxpYyBBUEkuICovDQorU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLA0KKwkJCQkJCQkJCQkJCSBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkJCSBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KK1N0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJCQkJICAgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywNCisJCQkJCQkJCQkJCQkJICAgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyLA0KKwkJCQkJCQkJCQkJCQkgICB1aW50OF90ICogY29uc3QgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsDQorCQkJCQkJCQkJCQkJCSAgIFN0YXRpY1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKyNpZiggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwl2b2lkIHZTdHJlYW1CdWZmZXJTZXRTdHJlYW1CdWZmZXJOdW1iZXIoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIFVCYXNlVHlwZV90IHV4U3RyZWFtQnVmZmVyTnVtYmVyICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisJVUJhc2VUeXBlX3QgdXhTdHJlYW1CdWZmZXJHZXRTdHJlYW1CdWZmZXJOdW1iZXIoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKwl1aW50OF90IHVjU3RyZWFtQnVmZmVyR2V0U3RyZWFtQnVmZmVyVHlwZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorI2VuZGlmDQorDQorI2lmIGRlZmluZWQoIF9fY3BsdXNwbHVzICkNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisjZW5kaWYJLyogIWRlZmluZWQoIFNUUkVBTV9CVUZGRVJfSCApICovDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGFzay5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGFzay5oCmluZGV4IDBmOTc5ZjguLmYyZGIzOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3Rhc2suaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvaW5jbHVkZS90YXNrLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgSU5DX1RBU0tfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9pbmNsdWRlL3RpbWVycy5oIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGltZXJzLmgKaW5kZXggZTJhMDRmNy4uODE5YWQ3NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGltZXJzLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL2luY2x1ZGUvdGltZXJzLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgVElNRVJTX0gNCkBAIC0xMzA1LDYgKzEyNjQsMTEgQEAKIEJhc2VUeXBlX3QgeFRpbWVyQ3JlYXRlVGltZXJUYXNrKCB2b2lkICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCiBCYXNlVHlwZV90IHhUaW1lckdlbmVyaWNDb21tYW5kKCBUaW1lckhhbmRsZV90IHhUaW1lciwgY29uc3QgQmFzZVR5cGVfdCB4Q29tbWFuZElELCBjb25zdCBUaWNrVHlwZV90IHhPcHRpb25hbFZhbHVlLCBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiwgY29uc3QgVGlja1R5cGVfdCB4VGlja3NUb1dhaXQgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KIA0KKyNpZiggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwl2b2lkIHZUaW1lclNldFRpbWVyTnVtYmVyKCBUaW1lckhhbmRsZV90IHhUaW1lciwgVUJhc2VUeXBlX3QgdXhUaW1lck51bWJlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorCVVCYXNlVHlwZV90IHV4VGltZXJHZXRUaW1lck51bWJlciggVGltZXJIYW5kbGVfdCB4VGltZXIgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKyNlbmRpZg0KKw0KICNpZmRlZiBfX2NwbHVzcGx1cw0KIH0NCiAjZW5kaWYNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvbGlzdC5jIGIvRnJlZVJUT1MvU291cmNlL2xpc3QuYwppbmRleCA1MTFjYWFmLi5jZDMyOWM5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvbGlzdC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9saXN0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYwppbmRleCBmOTIzNjJjLi5jNDg2MDk2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL0Zsc2gxODYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvRmxzaDE4Ni9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjAwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvRmxzaDE4Ni9wcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BydG1hY3JvLmgKaW5kZXggNWU5MjkzNy4uNDVkYzJlMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9GbHNoMTg2L3BydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9QQy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BvcnQuYwppbmRleCA4NzJjZWZkLi4zNmYwYzAwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjIuNi4xDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9QQy9wcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9QQy9wcnRtYWNyby5oCmluZGV4IDA0ZmY1YjUuLjIxMGRmMjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvUEMvcHJ0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL1BDL3BydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGFzbS5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGFzbS5oCmluZGV4IDExNDM2NzAuLjFiY2E4YzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvY29tbW9uL3BvcnRhc20uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVF9BU01fSA0KICNkZWZpbmUgUE9SVF9BU01fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQkNDLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jCmluZGV4IDI3NjUyZTYuLjIwYzMzMzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9CQ0MvMTZCaXRET1MvY29tbW9uL3BvcnRjb21uLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0JDQy8xNkJpdERPUy9jb21tb24vcG9ydGNvbW4uYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMDA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0LmMKaW5kZXggMGZjMWE2Mi4uNjliMWQwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpAQCAtMjAzLDcgKzE2Miw5IEBACiAvKg0KICAqIFNlZSBoZWFkZXIgZmlsZSBmb3IgZGVzY3JpcHRpb24uDQogICovDQotU3RhY2tUeXBlX3QgKnB4UG9ydEluaXRpYWxpc2VTdGFjayggU3RhY2tUeXBlX3QgKnB4VG9wT2ZTdGFjaywgVGFza0Z1bmN0aW9uX3QgcHhDb2RlLCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KK1N0YWNrVHlwZV90ICogcHhQb3J0SW5pdGlhbGlzZVN0YWNrKCBTdGFja1R5cGVfdCAqIHB4VG9wT2ZTdGFjaywNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGFza0Z1bmN0aW9uX3QgcHhDb2RlLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICogcHZQYXJhbWV0ZXJzICkNCiB7DQogCS8qIFNpbXVsYXRlIHRoZSBzdGFjayBmcmFtZSBhcyBpdCB3b3VsZCBiZSBjcmVhdGVkIGJ5IGEgY29udGV4dCBzd2l0Y2gNCiAJaW50ZXJydXB0LiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0YXNtLmFzbSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0YXNtLmFzbQppbmRleCA4NzFkOTZkLi5iMTA5YjZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydGFzbS5hc20KKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRhc20uYXNtCkBAIC0xLDcxICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOyAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi07ICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLTsgICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotOyAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLTsgICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLTsgICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi07ICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi07ICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotOyAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLTsgICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLTsgICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi07ICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotOyAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi07ICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi07ICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLTsgICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotOyAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLTsgICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLTsgICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotOyAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLTsgICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotOyAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotOyAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi07ICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi07ICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi07ICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS50aHVtYg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNMy9wb3J0bWFjcm8uaAppbmRleCA0OWRmMGZmLi5jNTczN2EzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ00zL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpAQCAtMTE1LDYgKzc0LDEyIEBACiAjZGVmaW5lIHBvcnRTVEFDS19HUk9XVEgJCQkoIC0xICkNCiAjZGVmaW5lIHBvcnRUSUNLX1BFUklPRF9NUwkJCSggKCBUaWNrVHlwZV90ICkgMTAwMCAvIGNvbmZpZ1RJQ0tfUkFURV9IWiApDQogI2RlZmluZSBwb3J0QllURV9BTElHTk1FTlQJCQk4DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogQ29tcGlsZXIgZGlyZWN0aXZlcy4gKi8NCisjZGVmaW5lIHBvcnRXRUFLX1NZTUJPTAkJCQlfX2F0dHJpYnV0ZV9fKCh3ZWFrKSkNCisNCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCiAvKiBTY2hlZHVsZXIgdXRpbGl0aWVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0LmMKaW5kZXggNTcxYWRiMy4uYWU0MzA0NyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRhc20uYXNtIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0YXNtLmFzbQppbmRleCBhMGNhMjQ1Li5mYmRkYjQzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRhc20uYXNtCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydGFzbS5hc20KQEAgLTEsNzEgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07ICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLTsgICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotOyAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi07ICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotOyAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotOyAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLTsgICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLTsgICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi07ICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotOyAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotOyAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLTsgICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi07ICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLTsgICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLTsgICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotOyAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi07ICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotOyAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotOyAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi07ICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotOyAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi07ICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi07ICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLTsgICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLTsgICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLTsgICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLnRodW1iDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggNDlkZjBmZi4uMDI1MDNlNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ000Ri9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0LmMKaW5kZXggMDA2MTIwMS4uZmNhMzA2YiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBGcmVlUlRPUyBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydEFTTS5hc20gYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydEFTTS5hc20KaW5kZXggYmI3ZTVjOC4uMGRmNTY4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnRBU00uYXNtCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0QVNNLmFzbQpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KICAgICAgICAgLnRleHQNCiAgICAgICAgIC5hcm0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL0FSTV9Db3J0ZXgtUjQvcG9ydG1hY3JvLmgKaW5kZXggM2E0OTRhYS4uN2Q0YmE5ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9BUk1fQ29ydGV4LVI0L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvQVJNX0NvcnRleC1SNC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBfX1BPUlRNQUNST19IX18NCiAjZGVmaW5lIF9fUE9SVE1BQ1JPX0hfXw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9kYXRhX21vZGVsLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvZGF0YV9tb2RlbC5oCmluZGV4IGMyODFkZDYuLjEwZjg5NjkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9kYXRhX21vZGVsLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL2RhdGFfbW9kZWwuaApAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJLmlmICRERUZJTkVEKCBfX0xBUkdFX0RBVEFfTU9ERUxfXyApDQogCQkuZGVmaW5lICJwdXNobS5hIiwgcHVzaG1feA0KQEAgLTY1LDcgKzM5LDcgQEAKIAkJLmRlZmluZSAicG9wLnciLCBwb3BfeA0KIAkJLmRlZmluZSAibW92LnciLCBtb3ZfeA0KIAkuZW5kaWYNCi0JDQorDQogCS5pZiAkREVGSU5FRCggX19MQVJHRV9DT0RFX01PREVMX18gKQ0KIAkJLmRlZmluZSAiY2FsbGEiLCBjYWxsX3gNCiAJCS5kZWZpbmUgInJldGEiLCByZXRfeA0KQEAgLTczLDcgKzQ3LDcgQEAKIAkJLmRlZmluZSAiY2FsbCIsIGNhbGxfeA0KIAkJLmRlZmluZSAicmV0IiwgcmV0X3gNCiAJLmVuZGlmDQotCQ0KKw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydC5jCmluZGV4IGI4NDc0ZTkuLjZiN2UzYTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0ZXh0LmFzbSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0ZXh0LmFzbQppbmRleCA0MjkzYjRkLi5lZjQzZmYwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydGV4dC5hc20KKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnRleHQuYXNtCkBAIC0xLDU3ICsxLDMwIEBACi07DQogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIDsgKiBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgInJlZ2lzdGVyIHRlc3QiIHRhc2tzLCBhcyBkZXNjcmliZWQgYXQgdGhlIHRvcCBvZg0KIDsgKiBtYWluLmMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ0NTL01TUDQzMFgvcG9ydG1hY3JvLmgKaW5kZXggZWFhMDY2Ny4uMzY4OWJjMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NDUy9NU1A0MzBYL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9DQ1MvTVNQNDMwWC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnQuYwppbmRleCA4ZWNhNjNhLi45YjYyZDg3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnRhc20uUwppbmRleCA1Nzc5OTVmLi43OThlYjNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogUHVycG9zZTogTG93ZXN0IGxldmVsIHJvdXRpbmVzIGZvciBhbGwgQ29sZEZpcmUgcHJvY2Vzc29ycy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjEvcG9ydG1hY3JvLmgKaW5kZXggZTNmMjM0Yy4uNTAyMDk1YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YxL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnQuYwppbmRleCBmYzFhZDY1Li45YzE2ODUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnRhc20uUwppbmRleCAyNDJmNGVlLi4xNDUwZjM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogICogUHVycG9zZTogTG93ZXN0IGxldmVsIHJvdXRpbmVzIGZvciBhbGwgQ29sZEZpcmUgcHJvY2Vzc29ycy4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmgKaW5kZXggZWY1ZmNjZC4uNGZhOTUzNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0NvbGRGaXJlX1YyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0hDUzEyL3BvcnQuYwppbmRleCA3NDIxNDFjLi5lOWFlZDlhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29kZVdhcnJpb3IvSENTMTIvcG9ydG1hY3JvLmgKaW5kZXggNDFjMjU1Yy4uNDFlYTljYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvZGVXYXJyaW9yL0hDUzEyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db2RlV2Fycmlvci9IQ1MxMi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db21tb24vbXB1X3dyYXBwZXJzLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvQ29tbW9uL21wdV93cmFwcGVycy5jCmluZGV4IGViMDg0OGEuLjAwM2UzYTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Db21tb24vbXB1X3dyYXBwZXJzLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0NvbW1vbi9tcHVfd3JhcHBlcnMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgd3JhcHBlciBmdW5jdGlvbnMgdXNlZCB0byByYWlzZSB0aGUgcHJvY2Vzc29yIHByaXZpbGVnZQ0KQEAgLTgzLDYgKzQyLDcgQEAKICNpbmNsdWRlICJxdWV1ZS5oIg0KICNpbmNsdWRlICJ0aW1lcnMuaCINCiAjaW5jbHVkZSAiZXZlbnRfZ3JvdXBzLmgiDQorI2luY2x1ZGUgInN0cmVhbV9idWZmZXIuaCINCiAjaW5jbHVkZSAibXB1X3Byb3RvdHlwZXMuaCINCiANCiAjdW5kZWYgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUNCkBAIC0xMTUzLDggKzExMTMsMTYyIEBACiB9DQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyU2VuZCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgY29uc3Qgdm9pZCAqcHZUeERhdGEsIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApDQorew0KK3NpemVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KIA0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclNlbmQoIHhTdHJlYW1CdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCB4VGlja3NUb1dhaXQgKTsNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQogDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgTVBVX3hTdHJlYW1CdWZmZXJTZW5kRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgY29uc3Qgdm9pZCAqcHZUeERhdGEsIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLCBCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorew0KK3NpemVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclNlbmRGcm9tSVNSKCB4U3RyZWFtQnVmZmVyLCBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcywgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlclJlY2VpdmUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHZvaWQgKnB2UnhEYXRhLCBzaXplX3QgeEJ1ZmZlckxlbmd0aEJ5dGVzLCBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApDQorew0KK3NpemVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclJlY2VpdmUoIHhTdHJlYW1CdWZmZXIsIHB2UnhEYXRhLCB4QnVmZmVyTGVuZ3RoQnl0ZXMsIHhUaWNrc1RvV2FpdCApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCBNUFVfeFN0cmVhbUJ1ZmZlclJlY2VpdmVGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCB2b2lkICpwdlJ4RGF0YSwgc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywgQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQ0KK3sNCitzaXplX3QgeFJldHVybjsNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJSZWNlaXZlRnJvbUlTUiggeFN0cmVhbUJ1ZmZlciwgcHZSeERhdGEsIHhCdWZmZXJMZW5ndGhCeXRlcywgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgTVBVX3ZTdHJlYW1CdWZmZXJEZWxldGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJdlN0cmVhbUJ1ZmZlckRlbGV0ZSggeFN0cmVhbUJ1ZmZlciApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCBNUFVfeFN0cmVhbUJ1ZmZlcklzRnVsbCggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK0Jhc2VUeXBlX3QgeFJldHVybjsNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJJc0Z1bGwoIHhTdHJlYW1CdWZmZXIgKTsNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IE1QVV94U3RyZWFtQnVmZmVySXNFbXB0eSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK0Jhc2VUeXBlX3QgeFJldHVybjsNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJJc0VtcHR5KCB4U3RyZWFtQnVmZmVyICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCBNUFVfeFN0cmVhbUJ1ZmZlclJlc2V0KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclJlc2V0KCB4U3RyZWFtQnVmZmVyICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorc2l6ZV90IHhSZXR1cm47DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXhSZXR1cm4gPSB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICk7DQorCXZQb3J0UmVzZXRQcml2aWxlZ2UoIHhSdW5uaW5nUHJpdmlsZWdlZCApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IE1QVV94U3RyZWFtQnVmZmVyQnl0ZXNBdmFpbGFibGUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitzaXplX3QgeFJldHVybjsNCitCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCA9IHhQb3J0UmFpc2VQcml2aWxlZ2UoKTsNCisNCisJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggeFN0cmVhbUJ1ZmZlciApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgTVBVX3hTdHJlYW1CdWZmZXJTZXRUcmlnZ2VyTGV2ZWwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIHNpemVfdCB4VHJpZ2dlckxldmVsICkNCit7DQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK0Jhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlclNldFRyaWdnZXJMZXZlbCggeFN0cmVhbUJ1ZmZlciwgeFRyaWdnZXJMZXZlbCApOw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9EWU5BTUlDX0FMTE9DQVRJT04gPT0gMSApDQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90IE1QVV94U3RyZWFtQnVmZmVyR2VuZXJpY0NyZWF0ZSggc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciApDQorCXsNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeFJldHVybjsNCisJQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCQl4UmV0dXJuID0geFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUoIHhCdWZmZXJTaXplQnl0ZXMsIHhUcmlnZ2VyTGV2ZWxCeXRlcywgeElzTWVzc2FnZUJ1ZmZlciApOw0KKwkJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCQlyZXR1cm4geFJldHVybjsNCisJfQ0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgTVBVX3hTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywgQmFzZVR5cGVfdCB4SXNNZXNzYWdlQnVmZmVyLCB1aW50OF90ICogY29uc3QgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsIFN0YXRpY1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdGF0aWNTdHJlYW1CdWZmZXIgKQ0KKwl7DQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90IHhSZXR1cm47DQorCUJhc2VUeXBlX3QgeFJ1bm5pbmdQcml2aWxlZ2VkID0geFBvcnRSYWlzZVByaXZpbGVnZSgpOw0KKw0KKwkJeFJldHVybiA9IHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljKCB4QnVmZmVyU2l6ZUJ5dGVzLCB4VHJpZ2dlckxldmVsQnl0ZXMsIHhJc01lc3NhZ2VCdWZmZXIsIHB1Y1N0cmVhbUJ1ZmZlclN0b3JhZ2VBcmVhLCBweFN0YXRpY1N0cmVhbUJ1ZmZlciApOw0KKwkJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCQlyZXR1cm4geFJldHVybjsNCisJfQ0KKyNlbmRpZiAvKiBjb25maWdTVVBQT1JUX1NUQVRJQ19BTExPQ0FUSU9OICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogDQogDQogLyogRnVuY3Rpb25zIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdyaXRlciB3YW50cyB0byBleGVjdXRlIGluIHByaXZpbGVnZWQgbW9kZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydC5jCmluZGV4IDc4MjQzMmEuLjllM2VkZjcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0SVNSLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydElTUi5jCmluZGV4IDc5ZmVkY2YuLmY4M2YwNGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0SVNSLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRJU1IuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxRlI0MDAwOC9wb3J0bWFjcm8uaAppbmRleCA4ZjJjNDgzLi41YjFiNDA1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MUZSNDAwMDgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFGUjQwMDA4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjMuMi4zDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnQuYwppbmRleCBjZjM4ZWRkLi43N2Y0MGM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydElTUi5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0SVNSLmMKaW5kZXggMzU1YjUzZi4uNmFkYTU0MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0SVNSLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0SVNSLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0FUOTFTQU03Uy9wb3J0bWFjcm8uaAppbmRleCBmN2E0NzBiLi5kOGJmMDQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfQVQ5MVNBTTdTL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19BVDkxU0FNN1MvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogCUNoYW5nZXMgZnJvbSBWMy4yLjMNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0LmMKaW5kZXggYmIwYzNkZi4uZWYxMzQ1YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRJU1IuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyMDAwL3BvcnRJU1IuYwppbmRleCA1NDI1MTYzLi4wNzZiMDRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0SVNSLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIwMDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0bWFjcm8uaAppbmRleCBiODdhYjdmLi45OTE3YmRhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjAwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0LmMKaW5kZXggOGViMWFlOC4uMDBhYjE1MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRJU1IuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNN19MUEMyM3h4L3BvcnRJU1IuYwppbmRleCBhMGVhZDNiLi4xMTE2ODdlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0SVNSLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk03X0xQQzIzeHgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0bWFjcm8uaAppbmRleCBjOTA2YjQzLi44MzZkMzBkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTTdfTFBDMjN4eC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFYzLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnQuYwppbmRleCAxYmFjZDNmLi41MzEwNTI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydEFTTS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydEFTTS5TCmluZGV4IGQ3YzZjNjQuLmRhYmY4YzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnRBU00uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTUzXzY0X0JJVC9wb3J0QVNNLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIAkudGV4dA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBNTNfNjRfQklUL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydG1hY3JvLmgKaW5kZXggNzhhZWQxZS4uMTk3MzM5NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E1M182NF9CSVQvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0LmMKaW5kZXggOTBlNjI2ZS4uMDgxYWIwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRBU00uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0QVNNLlMKaW5kZXggYTYyYTAzMi4uMGE5YzZkYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRBU00uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydEFTTS5TCkBAIC0xLDU2ICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0gICAgY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLnRleHQNCiAJLmFybQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NBOS9wb3J0bWFjcm8uaAppbmRleCAzNmI2NTYyLi5jMDAyNTc5IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DQTkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ0E5L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTAvcG9ydC5jCmluZGV4IDkzMDA0OWUuLjUwOWNlNjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00wIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00wL3BvcnRtYWNyby5oCmluZGV4IDgxNTM3NzguLjFjNGU0MTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zL3BvcnQuYwppbmRleCBjZjJkNjM2Li43NGQyYjI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNMyBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNMy9wb3J0bWFjcm8uaAppbmRleCA3ZDljZWRiLi4zNDViMzliIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zX01QVS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnQuYwppbmRleCBlOTVlOGM5Li42NDdkYWJlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpAQCAtNzksMTAgKzM4LDYgQEAKIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KLSNpbmNsdWRlICJxdWV1ZS5oIg0KLSNpbmNsdWRlICJ0aW1lcnMuaCINCi0jaW5jbHVkZSAiZXZlbnRfZ3JvdXBzLmgiDQotI2luY2x1ZGUgIm1wdV9wcm90b3R5cGVzLmgiDQogDQogI3VuZGVmIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zX01QVS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNM19NUFUvcG9ydG1hY3JvLmgKaW5kZXggMTgxM2U0ZS4uYjI2NTcxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ00zX01QVS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTNfTVBVL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000Ri9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnQuYwppbmRleCBkMWIwYmQ4Li45M2NkM2VhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRGL3BvcnRtYWNyby5oCmluZGV4IDhhY2EyMjIuLjUxZWE0NWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000Ri9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNF9NUFUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmMKaW5kZXggNWMzM2M3My4uZDkxMWFhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNMyBwb3J0Lg0KQEAgLTc4LDkgKzM3LDcgQEAKIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAicXVldWUuaCINCi0jaW5jbHVkZSAiZXZlbnRfZ3JvdXBzLmgiDQotI2luY2x1ZGUgIm1wdV9wcm90b3R5cGVzLmgiDQorI2luY2x1ZGUgInRhc2suaCINCiANCiAjaWZuZGVmIF9fVkZQX0ZQX18NCiAJI2Vycm9yIFRoaXMgcG9ydCBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIHByb2plY3Qgb3B0aW9ucyBhcmUgY29uZmlndXJlZCB0byBlbmFibGUgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4NCkBAIC01MDIsNiArNDU5LDcgQEAKIAlfX2FzbSB2b2xhdGlsZQ0KIAkoDQogCQkiCW1ycyByMCwgcHNwCQkJCQkJCVxuIg0KKwkJIglpc2IJCQkJCQkJCQlcbiINCiAJCSIJCQkJCQkJCQkJXG4iDQogCQkiCWxkcglyMywgcHhDdXJyZW50VENCQ29uc3QJCQlcbiIgLyogR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgY3VycmVudCBUQ0IuICovDQogCQkiCWxkcglyMiwgW3IzXQkJCQkJCVxuIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oCmluZGV4IDE4MTNlNGUuLmIyNjU3MWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNF9NUFUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ000X01QVS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxL3BvcnQuYwppbmRleCA0Y2I3NTljLi42YzU2ZWFlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ003L3IwcDEvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaAppbmRleCAzYjlhOWU0Li5iNzNkYmZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydC5jCmluZGV4IDM1MWQ0MjIuLmYxMjJlOTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0QVNNLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydEFTTS5TCmluZGV4IGExMGI2MGYuLjg0ZmQ0ZTcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0QVNNLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnRBU00uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCS50ZXh0DQogCS5hcm0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUjUvcG9ydG1hY3JvLmgKaW5kZXggMDhhYzQwNy4uNWYwZWQ0ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1I1L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSNS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydC5jCmluZGV4IDAxYmNlNDQuLjdhMjEyNDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0QVNNLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRBU00uUwppbmRleCA3NjhiY2I0Li40ZGFhYzNjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRBU00uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRBU00uUwpAQCAtMSw1NiArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLSAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi0gICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi0gICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi0gICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi0gICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi0gICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLSAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotICAgIGNvbnRhY3QgZGV0YWlscy4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi0gICAgY3JpdGljYWwgc3lzdGVtcy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLSAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCS50ZXh0DQogCS5hcm0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BUk1fQ1J4X05vX0dJQy9wb3J0bWFjcm8uaAppbmRleCAxODAxZjMzLi5kNWJhODg3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FSTV9DUnhfTm9fR0lDL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydC5jCmluZGV4IDFlNjM1YzIuLjNlNGRkZjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVRNZWdhMzIzL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FUTWVnYTMyMy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVRNZWdhMzIzL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKaW5kZXggMjUwYzQxMC4uNjJlYzlhNiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnQuYwppbmRleCAwMjhjZGI4Li41MTFlNDkzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FWUjMyX1VDMy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9BVlIzMl9VQzMvcG9ydC5jCkBAIC0xMyw3MyArMTMsMzIgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0FWUjMyX1VDMy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnRtYWNyby5oCmluZGV4IDMzZjcyMWMuLjA0ZTVmNTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQVZSMzJfVUMzL3BvcnRtYWNyby5oCkBAIC0xMyw3MyArMTMsMzIgQEAKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCiANCiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9DT1JUVVNfQVBTMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnQuYwppbmRleCBiZjZmOTkxLi4yMGE5NjZjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NPUlRVU19BUFMzL3BvcnRtYWNyby5oCmluZGV4IDQ5YWYyZGUuLjIxZjVkZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ09SVFVTX0FQUzMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9DT1JUVVNfQVBTMy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydC5jCmluZGV4IDkwNjA3YTYuLjI3ODU3MzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBLZXJuZWwgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRhc20uUwppbmRleCBmMjY0MzEwLi4yZmYzMjdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRhc20uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBQdXJwb3NlOiBMb3dlc3QgbGV2ZWwgcm91dGluZXMgZm9yIGFsbCBDb2xkRmlyZSBwcm9jZXNzb3JzLg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0NvbGRGaXJlX1YyL3BvcnRtYWNyby5oCmluZGV4IGI1OTViNzguLjhjYTExMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvQ29sZEZpcmVfVjIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9Db2xkRmlyZV9WMi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IOFMyMzI5L3BvcnQuYwppbmRleCBkOWMzNjY5Li5jODcyZTFiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0g4UzIzMjkvcG9ydG1hY3JvLmgKaW5kZXggYTdkMjUxNS4uYmQ0YjZmYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IOFMyMzI5L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSDhTMjMyOS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSENTMTIvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0LmMKaW5kZXggYjU5NTEwMy4uMWJmZGZmZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEdDQy9IQ1MxMiBwb3J0IGJ5IEplZmZlcnNvbiBMIFNtaXRoLCAyMDA1ICovDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSENTMTIvcG9ydG1hY3JvLmgKaW5kZXggYzJkNmJmNi4uM2FjYjRiNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9IQ1MxMi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0hDUzEyL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L0lTUl9TdXBwb3J0LmgKaW5kZXggODlhOGFkYi4uZjQ5ZDU4OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvSVNSX1N1cHBvcnQuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9JU1JfU3VwcG9ydC5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJLmV4dGVybiB1bFRvcE9mU3lzdGVtU3RhY2sNCiAJLmV4dGVybiB1bEludGVycnVwdE5lc3RpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0LmMKaW5kZXggZTYwNjExNC4uYTdkNjM4ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPGxpbWl0cy5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnRBU00uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnRBU00uUwppbmRleCAwYWFkMjk4Li40MzI1MTNhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL0lBMzJfZmxhdC9wb3J0QVNNLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydEFTTS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAuZmlsZSAicG9ydEFTTS5TIg0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvSUEzMl9mbGF0L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydG1hY3JvLmgKaW5kZXggOWM1NWFjMS4uZjVlN2FhYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9JQTMyX2ZsYXQvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTVNQNDMwRjQ0OS9wb3J0LmMKaW5kZXggNWM2Y2Q2MS4uODI3NTc1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIAlDaGFuZ2VzIGZyb20gVjIuNS4yDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oCmluZGV4IDM0ZGJlYmEuLmI4OGY2YjYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTVNQNDMwRjQ0OS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01TUDQzMEY0NDkvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0LmMKaW5kZXggMjc2NDBiZS4uMTJjNDllOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIE1pY3JvQmxhemUgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydGFzbS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnRhc20ucwppbmRleCA1Y2ZmY2E2Li5kMjQ1ZDVkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydGFzbS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0YXNtLnMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIAkuZXh0ZXJuIHB4Q3VycmVudFRDQg0KIAkuZXh0ZXJuIHZUYXNrSVNSSGFuZGxlcg0KIAkuZXh0ZXJuIHZUYXNrU3dpdGNoQ29udGV4dA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZS9wb3J0bWFjcm8uaAppbmRleCAzMzZlNTk2Li4wMGRhZTVhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnQuYwppbmRleCBlNmYxMzM5Li4wMmU5YTBkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIE1pY3JvQmxhemUgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0X2V4Y2VwdGlvbnMuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRfZXhjZXB0aW9ucy5jCmluZGV4IDBhZGYzNmYuLjhiMDFkMjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRfZXhjZXB0aW9ucy5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRfZXhjZXB0aW9ucy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTY2hlZHVsZXIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydGFzbS5TCmluZGV4IGI1MGZhYmYuLmZiNThjODIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRhc20uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOC9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY4L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydG1hY3JvLmgKaW5kZXggMWJmYmFiMy4uYjdiMGM4MCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjgvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydC5jCmluZGV4IGMyMzBmZmYuLmM5MDJkMmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgTWljcm9CbGF6ZSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRfZXhjZXB0aW9ucy5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydF9leGNlcHRpb25zLmMKaW5kZXggMGFkZjM2Zi4uOGIwMWQyMyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydF9leGNlcHRpb25zLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydF9leGNlcHRpb25zLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0YXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0YXNtLlMKaW5kZXggYjUwZmFiZi4uZmI1OGM4MiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTWljcm9CbGF6ZVY5L3BvcnRhc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogRnJlZVJUT1MgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9NaWNyb0JsYXplVjkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0bWFjcm8uaAppbmRleCAxYmZiYWIzLi5iN2IwYzgwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL01pY3JvQmxhemVWOS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0LmMKaW5kZXggODQwODA0MC4uMDY3YWE5ZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBOSU9TMiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnRfYXNtLlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL05pb3NJSS9wb3J0X2FzbS5TCmluZGV4IDM0ZjBjMWMuLmI0YTgwMmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnRfYXNtLlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydF9hc20uUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLmV4dGVybgkJdlRhc2tTd2l0Y2hDb250ZXh0DQogCQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvTmlvc0lJL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydG1hY3JvLmgKaW5kZXggZWQ0NWU0ZC4uNjE5OTU0ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9OaW9zSUkvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L0ZQVV9NYWNyb3MuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9GUFVfTWFjcm9zLmgKaW5kZXggMmM5YmUxMi4uYmI0YmQ0YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L0ZQVV9NYWNyb3MuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvRlBVX01hY3Jvcy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBXaGVuIHN3aXRjaGluZyBvdXQgYSB0YXNrLCBpZiB0aGUgdGFzayB0YWcgY29udGFpbnMgYSBidWZmZXIgYWRkcmVzcyB0aGVuDQogc2F2ZSB0aGUgZmxvcCBjb250ZXh0IGludG8gdGhlIGJ1ZmZlci4gKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnQuYwppbmRleCAyODcwMjg0Li42OTIyYzNkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUFBDNDA1IHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnRhc20uUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0YXNtLlMKaW5kZXggYzFhYTNhYS4uNTIwMmM3YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnRhc20uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydGFzbS5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQwNV9YaWxpbngvcG9ydG1hY3JvLmgKaW5kZXggY2U4NmVlNi4uMWE4ZGU4ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0MDVfWGlsaW54L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDA1X1hpbGlueC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvRlBVX01hY3Jvcy5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L0ZQVV9NYWNyb3MuaAppbmRleCAyYzliZTEyLi5iYjRiZDRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvRlBVX01hY3Jvcy5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9GUFVfTWFjcm9zLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFdoZW4gc3dpdGNoaW5nIG91dCBhIHRhc2ssIGlmIHRoZSB0YXNrIHRhZyBjb250YWlucyBhIGJ1ZmZlciBhZGRyZXNzIHRoZW4NCiBzYXZlIHRoZSBmbG9wIGNvbnRleHQgaW50byB0aGUgYnVmZmVyLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydC5jCmluZGV4IDA1ODRjNDQuLjk3YWM1ZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBQUEM0NDAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnRhc20uUwppbmRleCBjMWFhM2FhLi41MjAyYzdjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUFBDNDQwX1hpbGlueC9wb3J0bWFjcm8uaAppbmRleCBjZTg2ZWU2Li4xYThkZThmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1BQQzQ0MF9YaWxpbngvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9QUEM0NDBfWGlsaW54L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9pc3Jfc3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L2lzcl9zdXBwb3J0LmgKaW5kZXggNTJiMzdiZS4uODY3MmRhOSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L2lzcl9zdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L2lzcl9zdXBwb3J0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFZhcmlhYmxlcyB1c2VkIGJ5IHNjaGVkdWxlciAqLw0KIAkuZXh0ZXJuICAgIF9weEN1cnJlbnRUQ0INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnQuYwppbmRleCBiYzRjZWZkLi44M2M2MzAyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydGFzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnRhc20uUwppbmRleCBlYjEyZDVkLi42M2YwNDY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydGFzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0YXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KICNpbmNsdWRlICJJU1JfU3VwcG9ydC5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUkw3OC9wb3J0bWFjcm8uaAppbmRleCBjYjI3YzljLi40ZTMxY2UyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JMNzgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9STDc4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlgxMDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0LmMKaW5kZXggNmVhMmIyMy4uOWIxYzFkYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU0gyQSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlgxMDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYMTAwL3BvcnRtYWNyby5oCmluZGV4IDI3M2Q1NjguLjg4NDU5ZTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlgxMDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDEwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0LmMKaW5kZXggZDQ0NzA0Yi4uNzY5YWQ1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU0gyQSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwL3BvcnRtYWNyby5oCmluZGV4IDVkZmQ5YzMuLmY1YjA5NTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDB2Mi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwdjIvcG9ydC5jCmluZGV4IDgxYmQ3NTIuLjA3NGRjMzAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDB2Mi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9SWDYwMHYyL3BvcnRtYWNyby5oCmluZGV4IDVkZmQ5YzMuLmY1YjA5NTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvUlg2MDB2Mi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1JYNjAwdjIvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0LmMKaW5kZXggMzFlMzZlOS4uNjBiMjdhNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTVCBTVFI3NXggQVJNNw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRJU1IuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvU1RSNzV4L3BvcnRJU1IuYwppbmRleCA5MjczYzgyLi45MzM2MjBhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0SVNSLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydElTUi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9TVFI3NXgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0bWFjcm8uaAppbmRleCA5MTdlZDA4Li5jYzI4YzZmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1NUUjc1eC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnQuYwppbmRleCA4MGZkNThhLi4xNDdiZWJjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0bWFjcm8uaAppbmRleCBmNGMzZjYwLi4yZDg4YWI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0dHJhcC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0dDQy9UcmlDb3JlXzE3ODIvcG9ydHRyYXAuYwppbmRleCA4MzBkMmQ0Li4xYjA0YTRmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvR0NDL1RyaUNvcmVfMTc4Mi9wb3J0dHJhcC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9HQ0MvVHJpQ29yZV8xNzgyL3BvcnR0cmFwLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEtlcm5lbCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL0lTUl9TdXBwb3J0LmgKaW5kZXggNzI4MTBhNC4uMmY2MjA4ZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvSVNSX1N1cHBvcnQuaApAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiANCkBAIC02MSw3ICszNSw3IEBACiANCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogOyAgIHBvcnRTQVZFX0NPTlRFWFQgTUFDUk8NCi07ICAgU2F2ZXMgdGhlIGNvbnRleHQgb2YgdGhlIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMsIENTIGFuZCBFUyAob25seSBpbiBmYXIgDQorOyAgIFNhdmVzIHRoZSBjb250ZXh0IG9mIHRoZSBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLCBDUyBhbmQgRVMgKG9ubHkgaW4gZmFyDQogOwltZW1vcnkgbW9kZSkgcmVnaXN0ZXJzIHRoZSB1c0NyaXRpY2FsTmVzdGluZyBWYWx1ZSBhbmQgdGhlIFN0YWNrIFBvaW50ZXINCiA7ICAgb2YgdGhlIGFjdGl2ZSBUYXNrIG9udG8gdGhlIHRhc2sgc3RhY2sNCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpAQCAtNzYsMTEgKzUwLDExIEBACiAJUFVTSCAgICAgIERFICAgICAgICAgICAgICAgICAgICA7IFNhdmUgdGhlIHJlbWFpbmluZyBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLg0KIAlQVVNIICAgICAgQkMNCiAJTU9WVyAgICAgIEFYLCB1c0NyaXRpY2FsTmVzdGluZyA7IFNhdmUgdGhlIHVzQ3JpdGljYWxOZXN0aW5nIHZhbHVlLg0KLQlQVVNIICAgICAgQVgJDQorCVBVU0ggICAgICBBWA0KIAlNT1ZXICAgICAgQVgsIHB4Q3VycmVudFRDQiAJICAgIDsgU2F2ZSB0aGUgU3RhY2sgcG9pbnRlci4NCi0JTU9WVyAgICAgIEhMLCBBWAkJCQkJDQotCU1PVlcgICAgICBBWCwgU1AJCQkJCQ0KLQlNT1ZXICAgICAgW0hMXSwgQVgJCQkJCQ0KKwlNT1ZXICAgICAgSEwsIEFYDQorCU1PVlcgICAgICBBWCwgU1ANCisJTU9WVyAgICAgIFtITF0sIEFYDQogCUVORE0NCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnQuYwppbmRleCBhMjkzYTAxLi5kYzZkMDJhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydGFzbS5zMjYgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnRhc20uczI2CmluZGV4IGM5ZDAxYzQuLjE4ZjY1M2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydGFzbS5zMjYKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0YXNtLnMyNgpAQCAtMSw1NiArMSwzMSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCisNCiAjaW5jbHVkZSAiSVNSX1N1cHBvcnQuaCINCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQpAQCAtMTAyLDcgKzc3LDcgQEAKIAlwb3J0UkVTVE9SRV9DT05URVhUCQkgICAgICAgIDsgUmVzdG9yZSB0aGUgY29udGV4dCBvZiB0aGUgbmV4dCB0YXNrIHRvIHJ1bi4NCiAJcmV0Yg0KIA0KLQkNCisNCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogOyAgIFJlc3RvcmUgdGhlIGNvbnRleHQgb2YgdGhlIGZpcnN0IHRhc2sgdGhhdCBpcyBnb2luZyB0byBydW4uDQogOw0KQEAgLTExMiw3ICs4Nyw3IEBACiA7DQogOyAgIE91dHB1dDogTk9ORQ0KIDsNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgUlNFRyBDT0RFOkNPREUNCiB2UG9ydFN0YXJ0Og0KIAlwb3J0UkVTVE9SRV9DT05URVhUCSAgICAgICAgICAgIDsgUmVzdG9yZSB0aGUgY29udGV4dCBvZiB3aGljaGV2ZXIgdGFzayB0aGUgLi4uDQpAQCAtMTI5LDcgKzEwNCw3IEBACiA7DQogOyAgIE91dHB1dDogTk9ORQ0KIDsNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCiBNRF9JTlRUTTA1Og0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSLzc4SzBSL3BvcnRtYWNyby5oCmluZGV4IDcxMmNlY2EuLjUyZWU1ODggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvNzhLMFIvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi83OEswUi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydC5jCmluZGV4IDY5NTNiZWMuLjdiMmVmYzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBJQVIgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPGludHJpbnNpY3MuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRBU00uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydEFTTS5oCmluZGV4IDZkZGI4MTQuLjkzNWQ2NDUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydEFTTS5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydEFTTS5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCUVYVEVSTgl2VGFza1N3aXRjaENvbnRleHQNCiAJRVhURVJOICB1bENyaXRpY2FsTmVzdGluZw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydEFTTS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLnMKaW5kZXggNjliNmIyZi4uZTk3ZmUzMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0QVNNLnMKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJSU5DTFVERSBGcmVlUlRPU0NvbmZpZy5oDQogCUlOQ0xVREUgcG9ydG1hY3JvLmgNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E1X05vX0dJQy9wb3J0bWFjcm8uaAppbmRleCA1NTY1MzhlLi4wYWY1YTRlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTVfTm9fR0lDL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBNV9Ob19HSUMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpAQCAtMTMyLDcgKzkxLDcgQEAKIAl9DQogDQogCSNkZWZpbmUgcG9ydFlJRUxEX0ZST01fSVNSKCB4ICkgcG9ydEVORF9TV0lUQ0hJTkdfSVNSKCB4ICkNCi0JI2RlZmluZSBwb3J0WUlFTEQoKSBfX2FzbSggIlNXSSAwIiApOyBfX0lTQigpDQorCSNkZWZpbmUgcG9ydFlJRUxEKCkgX19hc20gdm9sYXRpbGUgKCAiU1dJIDAiICk7IF9fSVNCKCkNCiANCiANCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydC5jCmluZGV4IDMzZTU4NDcuLmE0YzQ5NDMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydEFTTS5oCmluZGV4IGIwZGQ1ZTQuLmQyNDQ5YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRBU00uaApAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlFWFRFUk4JdlRhc2tTd2l0Y2hDb250ZXh0DQogCUVYVEVSTiAgdWxDcml0aWNhbE5lc3RpbmcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydEFTTS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRBU00ucwppbmRleCBiN2Q5NTU3Li42ZmZiMWJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydEFTTS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0QVNNLnMKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJSU5DTFVERSBGcmVlUlRPU0NvbmZpZy5oDQogCUlOQ0xVREUgcG9ydG1hY3JvLmgNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DQTkvcG9ydG1hY3JvLmgKaW5kZXggMzFkMTM5Zi4uZjg4ZDQ2MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ0E5L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NBOS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnQuYwppbmRleCA0ZWU0MzVlLi45ODE5MTQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNMCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0YXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydGFzbS5zCmluZGV4IGExN2Q5NDYuLmQ0NzI3ZjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0YXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRhc20ucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00wL3BvcnRtYWNyby5oCmluZGV4IGU2MDNhNmQuLmQ4MDlhZGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnQuYwppbmRleCAyNzI3MDY1Li4zNmM4ODljIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNMyBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0YXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydGFzbS5zCmluZGV4IDE4MTAzODIuLjQ1NTFmMzkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0YXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRhc20ucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ00zL3BvcnRtYWNyby5oCmluZGV4IGUyYzNiMmYuLjE4ZjA0NDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydC5jCmluZGV4IDY3MDI5NzAuLjNiOGQyMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0YXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRhc20ucwppbmRleCBlOGMyMWU1Li4wNDAzZjM2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRhc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRhc20ucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEYvcG9ydG1hY3JvLmgKaW5kZXggYTE0YTdjZC4uNjA1OTgyNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Ri9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEZfTVBVL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNEZfTVBVL3BvcnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZmMTI0Ci0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydC5jCkBAIC0wLDAgKzEsNzU1IEBACisvKg0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIElBUiBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8aW50cmluc2ljcy5oPg0KKw0KKy8qIERlZmluaW5nIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFIHByZXZlbnRzIHRhc2suaCBmcm9tIHJlZGVmaW5pbmcNCithbGwgdGhlIEFQSSBmdW5jdGlvbnMgdG8gdXNlIHRoZSBNUFUgd3JhcHBlcnMuICBUaGF0IHNob3VsZCBvbmx5IGJlIGRvbmUgd2hlbg0KK3Rhc2suaCBpcyBpbmNsdWRlZCBmcm9tIGFuIGFwcGxpY2F0aW9uIGZpbGUuICovDQorI2RlZmluZSBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRQ0KKw0KKy8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSAiRnJlZVJUT1MuaCINCisjaW5jbHVkZSAidGFzay5oIg0KKw0KKyN1bmRlZiBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRQ0KKw0KKyN3YXJuaW5nIFRoaXMgaXMgbm90IHlldCBhIGRvY3VtZW50ZWQgcG9ydCBhcyBpdCBoYXMgbm90IGJlZW4gZnVsbHkgdGVzdGVkLCBzbyBubyBkZW1vIHByb2plY3RzIHRoYXQgdXNlIHRoaXMgcG9ydCBhcmUgcHJvdmlkZWQuDQorDQorI2lmbmRlZiBfX0FSTVZGUF9fDQorCSNlcnJvciBUaGlzIHBvcnQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHRoZSBwcm9qZWN0IG9wdGlvbnMgYXJlIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIGhhcmR3YXJlIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQuDQorI2VuZGlmDQorDQorI2lmKCBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgPT0gMCApDQorCSNlcnJvciBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgbXVzdCBub3QgYmUgc2V0IHRvIDAuICBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvUlRPUy1Db3J0ZXgtTTMtTTQuaHRtbA0KKyNlbmRpZg0KKw0KKyNpZm5kZWYgY29uZmlnU1lTVElDS19DTE9DS19IWg0KKwkjZGVmaW5lIGNvbmZpZ1NZU1RJQ0tfQ0xPQ0tfSFogY29uZmlnQ1BVX0NMT0NLX0haDQorCS8qIEVuc3VyZSB0aGUgU3lzVGljayBpcyBjbG9ja2VkIGF0IHRoZSBzYW1lIGZyZXF1ZW5jeSBhcyB0aGUgY29yZS4gKi8NCisJI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0NMS19CSVQJKCAxVUwgPDwgMlVMICkNCisjZWxzZQ0KKwkvKiBUaGUgd2F5IHRoZSBTeXNUaWNrIGlzIGNsb2NrZWQgaXMgbm90IG1vZGlmaWVkIGluIGNhc2UgaXQgaXMgbm90IHRoZSBzYW1lDQorCWFzIHRoZSBjb3JlLiAqLw0KKwkjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfQ0xLX0JJVAkoIDAgKQ0KKyNlbmRpZg0KKw0KKy8qIENvbnN0YW50cyByZXF1aXJlZCB0byBtYW5pcHVsYXRlIHRoZSBjb3JlLiAgUmVnaXN0ZXJzIGZpcnN0Li4uICovDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0NUUkxfUkVHCQkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGUwMTAgKSApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0xPQURfUkVHCQkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGUwMTQgKSApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0NVUlJFTlRfVkFMVUVfUkVHCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlMDE4ICkgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfU1lTUFJJMl9SRUcJCQkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGVkMjAgKSApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNQUkkxX1JFRwkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWQxYyApICkNCisjZGVmaW5lIHBvcnROVklDX1NZU19DVFJMX1NUQVRFX1JFRwkJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDI0ICkgKQ0KKyNkZWZpbmUgcG9ydE5WSUNfTUVNX0ZBVUxUX0VOQUJMRQkJCQkoIDFVTCA8PCAxNlVMICkNCisNCisvKiBDb25zdGFudHMgcmVxdWlyZWQgdG8gYWNjZXNzIGFuZCBtYW5pcHVsYXRlIHRoZSBNUFUuICovDQorI2RlZmluZSBwb3J0TVBVX1RZUEVfUkVHCQkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWQ5MCApICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX0JBU0VfQUREUkVTU19SRUcJCQkoICogKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZDlDICkgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fQVRUUklCVVRFX1JFRwkJCSggKiAoICggdm9sYXRpbGUgdWludDMyX3QgKiApIDB4ZTAwMGVkQTAgKSApDQorI2RlZmluZSBwb3J0TVBVX0NUUkxfUkVHCQkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWQ5NCApICkNCisjZGVmaW5lIHBvcnRFWFBFQ1RFRF9NUFVfVFlQRV9WQUxVRQkJCQkoIDhVTCA8PCA4VUwgKSAvKiA4IHJlZ2lvbnMsIHVuaWZpZWQuICovDQorI2RlZmluZSBwb3J0TVBVX0VOQUJMRQkJCQkJCQkoIDB4MDFVTCApDQorI2RlZmluZSBwb3J0TVBVX0JBQ0tHUk9VTkRfRU5BQkxFCQkJCSggMVVMIDw8IDJVTCApDQorI2RlZmluZSBwb3J0UFJJVklMRUdFRF9FWEVDVVRJT05fU1RBUlRfQUREUkVTUwkoIDBVTCApDQorI2RlZmluZSBwb3J0TVBVX1JFR0lPTl9WQUxJRAkJCQkJKCAweDEwVUwgKQ0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fRU5BQkxFCQkJCQkoIDB4MDFVTCApDQorI2RlZmluZSBwb3J0UEVSSVBIRVJBTFNfU1RBUlRfQUREUkVTUwkJCTB4NDAwMDAwMDBVTA0KKyNkZWZpbmUgcG9ydFBFUklQSEVSQUxTX0VORF9BRERSRVNTCQkJCTB4NUZGRkZGRkZVTA0KKw0KKy8qIC4uLnRoZW4gYml0cyBpbiB0aGUgcmVnaXN0ZXJzLiAqLw0KKyNkZWZpbmUgcG9ydE5WSUNfU1lTVElDS19JTlRfQklUCQkJKCAxVUwgPDwgMVVMICkNCisjZGVmaW5lIHBvcnROVklDX1NZU1RJQ0tfRU5BQkxFX0JJVAkJCSggMVVMIDw8IDBVTCApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX0NPVU5UX0ZMQUdfQklUCQkoIDFVTCA8PCAxNlVMICkNCisjZGVmaW5lIHBvcnROVklDX1BFTkRTVkNMRUFSX0JJVCAJCQkoIDFVTCA8PCAyN1VMICkNCisjZGVmaW5lIHBvcnROVklDX1BFTkRfU1lTVElDS19DTEVBUl9CSVQJCSggMVVMIDw8IDI1VUwgKQ0KKw0KKy8qIENvbnN0YW50cyB1c2VkIHRvIGRldGVjdCBhIENvcnRleC1NNyByMHAxIGNvcmUsIHdoaWNoIHNob3VsZCB1c2UgdGhlIEFSTV9DTTcNCityMHAxIHBvcnQuICovDQorI2RlZmluZSBwb3J0Q1BVSUQJCQkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhFMDAwZWQwMCApICkNCisjZGVmaW5lIHBvcnRDT1JURVhfTTdfcjBwMV9JRAkJCQkoIDB4NDEwRkMyNzFVTCApDQorI2RlZmluZSBwb3J0Q09SVEVYX003X3IwcDBfSUQJCQkJKCAweDQxMEZDMjcwVUwgKQ0KKw0KKyNkZWZpbmUgcG9ydE5WSUNfUEVORFNWX1BSSQkJCQkJKCAoICggdWludDMyX3QgKSBjb25maWdLRVJORUxfSU5URVJSVVBUX1BSSU9SSVRZICkgPDwgMTZVTCApDQorI2RlZmluZSBwb3J0TlZJQ19TWVNUSUNLX1BSSQkJCQkoICggKCB1aW50MzJfdCApIGNvbmZpZ0tFUk5FTF9JTlRFUlJVUFRfUFJJT1JJVFkgKSA8PCAyNFVMICkNCisjZGVmaW5lIHBvcnROVklDX1NWQ19QUkkJCQkJCSggKCAoIHVpbnQzMl90ICkgY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZIC0gMVVMICkgPDwgMjRVTCApDQorDQorLyogQ29uc3RhbnRzIHJlcXVpcmVkIHRvIGNoZWNrIHRoZSB2YWxpZGl0eSBvZiBhbiBpbnRlcnJ1cHQgcHJpb3JpdHkuICovDQorI2RlZmluZSBwb3J0RklSU1RfVVNFUl9JTlRFUlJVUFRfTlVNQkVSCQkoIDE2ICkNCisjZGVmaW5lIHBvcnROVklDX0lQX1JFR0lTVEVSU19PRkZTRVRfMTYgCSggMHhFMDAwRTNGMCApDQorI2RlZmluZSBwb3J0QUlSQ1JfUkVHCQkJCQkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhFMDAwRUQwQyApICkNCisjZGVmaW5lIHBvcnRNQVhfOF9CSVRfVkFMVUUJCQkJCSggKCB1aW50OF90ICkgMHhmZiApDQorI2RlZmluZSBwb3J0VE9QX0JJVF9PRl9CWVRFCQkJCQkoICggdWludDhfdCApIDB4ODAgKQ0KKyNkZWZpbmUgcG9ydE1BWF9QUklHUk9VUF9CSVRTCQkJCSggKCB1aW50OF90ICkgNyApDQorI2RlZmluZSBwb3J0UFJJT1JJVFlfR1JPVVBfTUFTSwkJCQkoIDB4MDdVTCA8PCA4VUwgKQ0KKyNkZWZpbmUgcG9ydFBSSUdST1VQX1NISUZUCQkJCQkoIDhVTCApDQorDQorLyogTWFza3Mgb2ZmIGFsbCBiaXRzIGJ1dCB0aGUgVkVDVEFDVElWRSBiaXRzIGluIHRoZSBJQ1NSIHJlZ2lzdGVyLiAqLw0KKyNkZWZpbmUgcG9ydFZFQ1RBQ1RJVkVfTUFTSwkJCQkJKCAweEZGVUwgKQ0KKw0KKy8qIENvbnN0YW50cyByZXF1aXJlZCB0byBtYW5pcHVsYXRlIHRoZSBWRlAuICovDQorI2RlZmluZSBwb3J0RlBDQ1IJCQkJCQkJKCAoIHZvbGF0aWxlIHVpbnQzMl90ICogKSAweGUwMDBlZjM0ICkgLyogRmxvYXRpbmcgcG9pbnQgY29udGV4dCBjb250cm9sIHJlZ2lzdGVyLiAqLw0KKyNkZWZpbmUgcG9ydEFTUEVOX0FORF9MU1BFTl9CSVRTCQkJKCAweDNVTCA8PCAzMFVMICkNCisNCisvKiBDb25zdGFudHMgcmVxdWlyZWQgdG8gc2V0IHVwIHRoZSBpbml0aWFsIHN0YWNrLiAqLw0KKyNkZWZpbmUgcG9ydElOSVRJQUxfWFBTUgkJCQkJKCAweDAxMDAwMDAwICkNCisjZGVmaW5lIHBvcnRJTklUSUFMX0VYQ19SRVRVUk4JCQkJKCAweGZmZmZmZmZkICkNCisjZGVmaW5lIHBvcnRJTklUSUFMX0NPTlRST0xfSUZfVU5QUklWSUxFR0VECSggMHgwMyApDQorI2RlZmluZSBwb3J0SU5JVElBTF9DT05UUk9MX0lGX1BSSVZJTEVHRUQJKCAweDAyICkNCisNCisvKiBPZmZzZXRzIGluIHRoZSBzdGFjayB0byB0aGUgcGFyYW1ldGVycyB3aGVuIGluc2lkZSB0aGUgU1ZDIGhhbmRsZXIuICovDQorI2RlZmluZSBwb3J0T0ZGU0VUX1RPX1BDCQkJCQkJKCA2ICkNCisNCisvKiBUaGUgc3lzdGljayBpcyBhIDI0LWJpdCBjb3VudGVyLiAqLw0KKyNkZWZpbmUgcG9ydE1BWF8yNF9CSVRfTlVNQkVSCQkJCSggMHhmZmZmZmZVTCApDQorDQorLyogQSBmaWRkbGUgZmFjdG9yIHRvIGVzdGltYXRlIHRoZSBudW1iZXIgb2YgU3lzVGljayBjb3VudHMgdGhhdCB3b3VsZCBoYXZlDQorb2NjdXJyZWQgd2hpbGUgdGhlIFN5c1RpY2sgY291bnRlciBpcyBzdG9wcGVkIGR1cmluZyB0aWNrbGVzcyBpZGxlDQorY2FsY3VsYXRpb25zLiAqLw0KKyNkZWZpbmUgcG9ydE1JU1NFRF9DT1VOVFNfRkFDVE9SCQkJKCA0NVVMICkNCisNCisvKiBGb3Igc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUgQ29ydGV4LU0gc3BlYyB0aGUgdGFzayBzdGFydCBhZGRyZXNzIHNob3VsZA0KK2hhdmUgYml0LTAgY2xlYXIsIGFzIGl0IGlzIGxvYWRlZCBpbnRvIHRoZSBQQyBvbiBleGl0IGZyb20gYW4gSVNSLiAqLw0KKyNkZWZpbmUgcG9ydFNUQVJUX0FERFJFU1NfTUFTSwkJCQkoICggU3RhY2tUeXBlX3QgKSAweGZmZmZmZmZlVUwgKQ0KKw0KKy8qDQorICogQ29uZmlndXJlIGEgbnVtYmVyIG9mIHN0YW5kYXJkIE1QVSByZWdpb25zIHRoYXQgYXJlIHVzZWQgYnkgYWxsIHRhc2tzLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydlNldHVwTVBVKCB2b2lkICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIFJldHVybiB0aGUgc21hbGxlc3QgTVBVIHJlZ2lvbiBzaXplIHRoYXQgYSBnaXZlbiBudW1iZXIgb2YgYnl0ZXMgd2lsbCBmaXQNCisgKiBpbnRvLiAgVGhlIHJlZ2lvbiBzaXplIGlzIHJldHVybmVkIGFzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSBwcm9ncmFtbWVkDQorICogaW50byB0aGUgcmVnaW9uIGF0dHJpYnV0ZSByZWdpc3RlciBmb3IgdGhhdCByZWdpb24uDQorICovDQorc3RhdGljIHVpbnQzMl90IHBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCB1aW50MzJfdCB1bEFjdHVhbFNpemVJbkJ5dGVzICkgUFJJVklMRUdFRF9GVU5DVElPTjsNCisNCisvKg0KKyAqIENoZWNrcyB0byBzZWUgaWYgYmVpbmcgY2FsbGVkIGZyb20gdGhlIGNvbnRleHQgb2YgYW4gdW5wcml2aWxlZ2VkIHRhc2ssIGFuZA0KKyAqIGlmIHNvIHJhaXNlcyB0aGUgcHJpdmlsZWdlIGxldmVsIGFuZCByZXR1cm5zIGZhbHNlIC0gb3RoZXJ3aXNlIGRvZXMgbm90aGluZw0KKyAqIG90aGVyIHRoYW4gcmV0dXJuIHRydWUuDQorICovDQorZXh0ZXJuIEJhc2VUeXBlX3QgeFBvcnRSYWlzZVByaXZpbGVnZSggdm9pZCApOw0KKw0KKy8qDQorICogU2V0dXAgdGhlIHRpbWVyIHRvIGdlbmVyYXRlIHRoZSB0aWNrIGludGVycnVwdHMuICBUaGUgaW1wbGVtZW50YXRpb24gaW4gdGhpcw0KKyAqIGZpbGUgaXMgd2VhayB0byBhbGxvdyBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvIGNoYW5nZSB0aGUgdGltZXIgdXNlZCB0bw0KKyAqIGdlbmVyYXRlIHRoZSB0aWNrIGludGVycnVwdC4NCisgKi8NCit2b2lkIHZQb3J0U2V0dXBUaW1lckludGVycnVwdCggdm9pZCApOw0KKw0KKy8qDQorICogRXhjZXB0aW9uIGhhbmRsZXJzLg0KKyAqLw0KK3ZvaWQgeFBvcnRTeXNUaWNrSGFuZGxlciggdm9pZCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBTdGFydCBmaXJzdCB0YXNrIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gc28gaXQgY2FuIGJlIHRlc3RlZCBpbiBpc29sYXRpb24uDQorICovDQorZXh0ZXJuIHZvaWQgdlBvcnRTdGFydEZpcnN0VGFzayggdm9pZCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBUdXJuIHRoZSBWRlAgb24uDQorICovDQorZXh0ZXJuIHZvaWQgdlBvcnRFbmFibGVWRlAoIHZvaWQgKTsNCisNCisvKg0KKyAqIFRoZSBDIHBvcnRpb24gb2YgdGhlIFNWQyBoYW5kbGVyLg0KKyAqLw0KK3ZvaWQgdlBvcnRTVkNIYW5kbGVyX0MoIHVpbnQzMl90ICpwdWxQYXJhbSApOw0KKw0KKy8qDQorICogQ2FsbGVkIGZyb20gdGhlIFNWQyBoYW5kbGVyIHVzZWQgdG8gc3RhcnQgdGhlIHNjaGVkdWxlci4NCisgKi8NCitleHRlcm4gdm9pZCB2UG9ydFJlc3RvcmVDb250ZXh0T2ZGaXJzdFRhc2soIHZvaWQgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIEVhY2ggdGFzayBtYWludGFpbnMgaXRzIG93biBpbnRlcnJ1cHQgc3RhdHVzIGluIHRoZSBjcml0aWNhbCBuZXN0aW5nDQordmFyaWFibGUuICovDQorc3RhdGljIFVCYXNlVHlwZV90IHV4Q3JpdGljYWxOZXN0aW5nID0gMHhhYWFhYWFhYTsNCisNCisvKg0KKyAqIFVzZWQgYnkgdGhlIHBvcnRBU1NFUlRfSUZfSU5URVJSVVBUX1BSSU9SSVRZX0lOVkFMSUQoKSBtYWNybyB0byBlbnN1cmUNCisgKiBGcmVlUlRPUyBBUEkgZnVuY3Rpb25zIGFyZSBub3QgY2FsbGVkIGZyb20gaW50ZXJydXB0cyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZA0KKyAqIGEgcHJpb3JpdHkgYWJvdmUgY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZLg0KKyAqLw0KKyNpZiggY29uZmlnQVNTRVJUX0RFRklORUQgPT0gMSApDQorCSBzdGF0aWMgdWludDhfdCB1Y01heFN5c0NhbGxQcmlvcml0eSA9IDA7DQorCSBzdGF0aWMgdWludDMyX3QgdWxNYXhQUklHUk9VUFZhbHVlID0gMDsNCisJIHN0YXRpYyBjb25zdCB2b2xhdGlsZSB1aW50OF90ICogY29uc3QgcGNJbnRlcnJ1cHRQcmlvcml0eVJlZ2lzdGVycyA9ICggY29uc3Qgdm9sYXRpbGUgdWludDhfdCAqIGNvbnN0ICkgcG9ydE5WSUNfSVBfUkVHSVNURVJTX09GRlNFVF8xNjsNCisjZW5kaWYgLyogY29uZmlnQVNTRVJUX0RFRklORUQgKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFNlZSBoZWFkZXIgZmlsZSBmb3IgZGVzY3JpcHRpb24uDQorICovDQorU3RhY2tUeXBlX3QgKnB4UG9ydEluaXRpYWxpc2VTdGFjayggU3RhY2tUeXBlX3QgKnB4VG9wT2ZTdGFjaywgVGFza0Z1bmN0aW9uX3QgcHhDb2RlLCB2b2lkICpwdlBhcmFtZXRlcnMsIEJhc2VUeXBlX3QgeFJ1blByaXZpbGVnZWQgKQ0KK3sNCisJLyogU2ltdWxhdGUgdGhlIHN0YWNrIGZyYW1lIGFzIGl0IHdvdWxkIGJlIGNyZWF0ZWQgYnkgYSBjb250ZXh0IHN3aXRjaA0KKwlpbnRlcnJ1cHQuICovDQorDQorCS8qIE9mZnNldCBhZGRlZCB0byBhY2NvdW50IGZvciB0aGUgd2F5IHRoZSBNQ1UgdXNlcyB0aGUgc3RhY2sgb24gZW50cnkvZXhpdA0KKwlvZiBpbnRlcnJ1cHRzLCBhbmQgdG8gZW5zdXJlIGFsaWdubWVudC4gKi8NCisJcHhUb3BPZlN0YWNrLS07DQorDQorCSpweFRvcE9mU3RhY2sgPSBwb3J0SU5JVElBTF9YUFNSOwkvKiB4UFNSICovDQorCXB4VG9wT2ZTdGFjay0tOw0KKwkqcHhUb3BPZlN0YWNrID0gKCAoIFN0YWNrVHlwZV90ICkgcHhDb2RlICkgJiBwb3J0U1RBUlRfQUREUkVTU19NQVNLOwkvKiBQQyAqLw0KKwlweFRvcE9mU3RhY2stLTsNCisJKnB4VG9wT2ZTdGFjayA9ICggU3RhY2tUeXBlX3QgKSAwOwkvKiBMUiAqLw0KKw0KKwkvKiBTYXZlIGNvZGUgc3BhY2UgYnkgc2tpcHBpbmcgcmVnaXN0ZXIgaW5pdGlhbGlzYXRpb24uICovDQorCXB4VG9wT2ZTdGFjayAtPSA1OwkvKiBSMTIsIFIzLCBSMiBhbmQgUjEuICovDQorCSpweFRvcE9mU3RhY2sgPSAoIFN0YWNrVHlwZV90ICkgcHZQYXJhbWV0ZXJzOwkvKiBSMCAqLw0KKw0KKwkvKiBBIHNhdmUgbWV0aG9kIGlzIGJlaW5nIHVzZWQgdGhhdCByZXF1aXJlcyBlYWNoIHRhc2sgdG8gbWFpbnRhaW4gaXRzDQorCW93biBleGVjIHJldHVybiB2YWx1ZS4gKi8NCisJcHhUb3BPZlN0YWNrLS07DQorCSpweFRvcE9mU3RhY2sgPSBwb3J0SU5JVElBTF9FWENfUkVUVVJOOw0KKw0KKwlweFRvcE9mU3RhY2sgLT0gOTsJLyogUjExLCBSMTAsIFI5LCBSOCwgUjcsIFI2LCBSNSBhbmQgUjQuICovDQorDQorCWlmKCB4UnVuUHJpdmlsZWdlZCA9PSBwZFRSVUUgKQ0KKwl7DQorCQkqcHhUb3BPZlN0YWNrID0gcG9ydElOSVRJQUxfQ09OVFJPTF9JRl9QUklWSUxFR0VEOw0KKwl9DQorCWVsc2UNCisJew0KKwkJKnB4VG9wT2ZTdGFjayA9IHBvcnRJTklUSUFMX0NPTlRST0xfSUZfVU5QUklWSUxFR0VEOw0KKwl9DQorDQorCXJldHVybiBweFRvcE9mU3RhY2s7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgdlBvcnRTVkNIYW5kbGVyX0MoIHVpbnQzMl90ICpwdWxQYXJhbSApDQorew0KK3VpbnQ4X3QgdWNTVkNOdW1iZXI7DQorDQorCS8qIFRoZSBzdGFjayBjb250YWluczogcjAsIHIxLCByMiwgcjMsIHIxMiwgcjE0LCB0aGUgcmV0dXJuIGFkZHJlc3MgYW5kDQorCXhQU1IuICBUaGUgZmlyc3QgYXJndW1lbnQgKHIwKSBpcyBwdWxQYXJhbVsgMCBdLiAqLw0KKwl1Y1NWQ051bWJlciA9ICggKCB1aW50OF90ICogKSBwdWxQYXJhbVsgcG9ydE9GRlNFVF9UT19QQyBdIClbIC0yIF07DQorCXN3aXRjaCggdWNTVkNOdW1iZXIgKQ0KKwl7DQorCQljYXNlIHBvcnRTVkNfU1RBUlRfU0NIRURVTEVSCToJcG9ydE5WSUNfU1lTUFJJMV9SRUcgfD0gcG9ydE5WSUNfU1ZDX1BSSTsNCisJCQkJCQkJCQkJCXZQb3J0UmVzdG9yZUNvbnRleHRPZkZpcnN0VGFzaygpOw0KKwkJCQkJCQkJCQkJYnJlYWs7DQorDQorCQljYXNlIHBvcnRTVkNfWUlFTEQJCQkJOglwb3J0TlZJQ19JTlRfQ1RSTF9SRUcgPSBwb3J0TlZJQ19QRU5EU1ZTRVRfQklUOw0KKwkJCQkJCQkJCQkJLyogQmFycmllcnMgYXJlIG5vcm1hbGx5IG5vdCByZXF1aXJlZA0KKwkJCQkJCQkJCQkJYnV0IGRvIGVuc3VyZSB0aGUgY29kZSBpcyBjb21wbGV0ZWx5DQorCQkJCQkJCQkJCQl3aXRoaW4gdGhlIHNwZWNpZmllZCBiZWhhdmlvdXIgZm9yIHRoZQ0KKwkJCQkJCQkJCQkJYXJjaGl0ZWN0dXJlLiAqLw0KKwkJCQkJCQkJCQkJX19hc20gdm9sYXRpbGUoICJkc2IiIDo6OiAibWVtb3J5IiApOw0KKwkJCQkJCQkJCQkJX19hc20gdm9sYXRpbGUoICJpc2IiICk7DQorDQorCQkJCQkJCQkJCQlicmVhazsNCisNCisJCWNhc2UgcG9ydFNWQ19SQUlTRV9QUklWSUxFR0UJOglfX2FzbSB2b2xhdGlsZQ0KKwkJCQkJCQkJCQkJKA0KKwkJCQkJCQkJCQkJCSIJbXJzIHIxLCBjb250cm9sCQlcbiIgLyogT2J0YWluIGN1cnJlbnQgY29udHJvbCB2YWx1ZS4gKi8NCisJCQkJCQkJCQkJCQkiCWJpYyByMSwgcjEsICMxCQlcbiIgLyogU2V0IHByaXZpbGVnZSBiaXQuICovDQorCQkJCQkJCQkJCQkJIgltc3IgY29udHJvbCwgcjEJCVxuIiAvKiBXcml0ZSBiYWNrIG5ldyBjb250cm9sIHZhbHVlLiAqLw0KKwkJCQkJCQkJCQkJCTo6OiAicjEiLCAibWVtb3J5Ig0KKwkJCQkJCQkJCQkJKTsNCisJCQkJCQkJCQkJCWJyZWFrOw0KKw0KKwkJZGVmYXVsdAkJCQkJCQk6CS8qIFVua25vd24gU1ZDIGNhbGwuICovDQorCQkJCQkJCQkJCQlicmVhazsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFNlZSBoZWFkZXIgZmlsZSBmb3IgZGVzY3JpcHRpb24uDQorICovDQorQmFzZVR5cGVfdCB4UG9ydFN0YXJ0U2NoZWR1bGVyKCB2b2lkICkNCit7DQorCS8qIGNvbmZpZ01BWF9TWVNDQUxMX0lOVEVSUlVQVF9QUklPUklUWSBtdXN0IG5vdCBiZSBzZXQgdG8gMC4NCisJU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL1JUT1MtQ29ydGV4LU0zLU00Lmh0bWwgKi8NCisJY29uZmlnQVNTRVJUKCBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgKTsNCisNCisJLyogVGhpcyBwb3J0IGNhbiBiZSB1c2VkIG9uIGFsbCByZXZpc2lvbnMgb2YgdGhlIENvcnRleC1NNyBjb3JlIG90aGVyIHRoYW4NCisJdGhlIHIwcDEgcGFydHMuICByMHAxIHBhcnRzIHNob3VsZCB1c2UgdGhlIHBvcnQgZnJvbSB0aGUNCisJL3NvdXJjZS9wb3J0YWJsZS9HQ0MvQVJNX0NNNy9yMHAxIGRpcmVjdG9yeS4gKi8NCisJY29uZmlnQVNTRVJUKCBwb3J0Q1BVSUQgIT0gcG9ydENPUlRFWF9NN19yMHAxX0lEICk7DQorCWNvbmZpZ0FTU0VSVCggcG9ydENQVUlEICE9IHBvcnRDT1JURVhfTTdfcjBwMF9JRCApOw0KKw0KKwkjaWYoIGNvbmZpZ0FTU0VSVF9ERUZJTkVEID09IDEgKQ0KKwl7DQorCQl2b2xhdGlsZSB1aW50MzJfdCB1bE9yaWdpbmFsUHJpb3JpdHk7DQorCQl2b2xhdGlsZSB1aW50OF90ICogY29uc3QgcHVjRmlyc3RVc2VyUHJpb3JpdHlSZWdpc3RlciA9ICggdm9sYXRpbGUgdWludDhfdCAqIGNvbnN0ICkgKCBwb3J0TlZJQ19JUF9SRUdJU1RFUlNfT0ZGU0VUXzE2ICsgcG9ydEZJUlNUX1VTRVJfSU5URVJSVVBUX05VTUJFUiApOw0KKwkJdm9sYXRpbGUgdWludDhfdCB1Y01heFByaW9yaXR5VmFsdWU7DQorDQorCQkvKiBEZXRlcm1pbmUgdGhlIG1heGltdW0gcHJpb3JpdHkgZnJvbSB3aGljaCBJU1Igc2FmZSBGcmVlUlRPUyBBUEkNCisJCWZ1bmN0aW9ucyBjYW4gYmUgY2FsbGVkLiAgSVNSIHNhZmUgZnVuY3Rpb25zIGFyZSB0aG9zZSB0aGF0IGVuZCBpbg0KKwkJIkZyb21JU1IiLiAgRnJlZVJUT1MgbWFpbnRhaW5zIHNlcGFyYXRlIHRocmVhZCBhbmQgSVNSIEFQSSBmdW5jdGlvbnMgdG8NCisJCWVuc3VyZSBpbnRlcnJ1cHQgZW50cnkgaXMgYXMgZmFzdCBhbmQgc2ltcGxlIGFzIHBvc3NpYmxlLg0KKw0KKwkJU2F2ZSB0aGUgaW50ZXJydXB0IHByaW9yaXR5IHZhbHVlIHRoYXQgaXMgYWJvdXQgdG8gYmUgY2xvYmJlcmVkLiAqLw0KKwkJdWxPcmlnaW5hbFByaW9yaXR5ID0gKnB1Y0ZpcnN0VXNlclByaW9yaXR5UmVnaXN0ZXI7DQorDQorCQkvKiBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBwcmlvcml0eSBiaXRzIGF2YWlsYWJsZS4gIEZpcnN0IHdyaXRlIHRvIGFsbA0KKwkJcG9zc2libGUgYml0cy4gKi8NCisJCSpwdWNGaXJzdFVzZXJQcmlvcml0eVJlZ2lzdGVyID0gcG9ydE1BWF84X0JJVF9WQUxVRTsNCisNCisJCS8qIFJlYWQgdGhlIHZhbHVlIGJhY2sgdG8gc2VlIGhvdyBtYW55IGJpdHMgc3R1Y2suICovDQorCQl1Y01heFByaW9yaXR5VmFsdWUgPSAqcHVjRmlyc3RVc2VyUHJpb3JpdHlSZWdpc3RlcjsNCisNCisJCS8qIFVzZSB0aGUgc2FtZSBtYXNrIG9uIHRoZSBtYXhpbXVtIHN5c3RlbSBjYWxsIHByaW9yaXR5LiAqLw0KKwkJdWNNYXhTeXNDYWxsUHJpb3JpdHkgPSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgJiB1Y01heFByaW9yaXR5VmFsdWU7DQorDQorCQkvKiBDYWxjdWxhdGUgdGhlIG1heGltdW0gYWNjZXB0YWJsZSBwcmlvcml0eSBncm91cCB2YWx1ZSBmb3IgdGhlIG51bWJlcg0KKwkJb2YgYml0cyByZWFkIGJhY2suICovDQorCQl1bE1heFBSSUdST1VQVmFsdWUgPSBwb3J0TUFYX1BSSUdST1VQX0JJVFM7DQorCQl3aGlsZSggKCB1Y01heFByaW9yaXR5VmFsdWUgJiBwb3J0VE9QX0JJVF9PRl9CWVRFICkgPT0gcG9ydFRPUF9CSVRfT0ZfQllURSApDQorCQl7DQorCQkJdWxNYXhQUklHUk9VUFZhbHVlLS07DQorCQkJdWNNYXhQcmlvcml0eVZhbHVlIDw8PSAoIHVpbnQ4X3QgKSAweDAxOw0KKwkJfQ0KKw0KKwkJI2lmZGVmIF9fTlZJQ19QUklPX0JJVFMNCisJCXsNCisJCQkvKiBDaGVjayB0aGUgQ01TSVMgY29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgdGhlIG51bWJlciBvZg0KKwkJCXByaW9yaXR5IGJpdHMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHByaW9yaXR5IGJpdHMgYWN0dWFsbHkgcXVlcmllZA0KKwkJCWZyb20gdGhlIGhhcmR3YXJlLiAqLw0KKwkJCWNvbmZpZ0FTU0VSVCggKCBwb3J0TUFYX1BSSUdST1VQX0JJVFMgLSB1bE1heFBSSUdST1VQVmFsdWUgKSA9PSBfX05WSUNfUFJJT19CSVRTICk7DQorCQl9DQorCQkjZW5kaWYNCisNCisJCSNpZmRlZiBjb25maWdQUklPX0JJVFMNCisJCXsNCisJCQkvKiBDaGVjayB0aGUgRnJlZVJUT1MgY29uZmlndXJhdGlvbiB0aGF0IGRlZmluZXMgdGhlIG51bWJlciBvZg0KKwkJCXByaW9yaXR5IGJpdHMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mIHByaW9yaXR5IGJpdHMgYWN0dWFsbHkgcXVlcmllZA0KKwkJCWZyb20gdGhlIGhhcmR3YXJlLiAqLw0KKwkJCWNvbmZpZ0FTU0VSVCggKCBwb3J0TUFYX1BSSUdST1VQX0JJVFMgLSB1bE1heFBSSUdST1VQVmFsdWUgKSA9PSBjb25maWdQUklPX0JJVFMgKTsNCisJCX0NCisJCSNlbmRpZg0KKw0KKwkJLyogU2hpZnQgdGhlIHByaW9yaXR5IGdyb3VwIHZhbHVlIGJhY2sgdG8gaXRzIHBvc2l0aW9uIHdpdGhpbiB0aGUgQUlSQ1INCisJCXJlZ2lzdGVyLiAqLw0KKwkJdWxNYXhQUklHUk9VUFZhbHVlIDw8PSBwb3J0UFJJR1JPVVBfU0hJRlQ7DQorCQl1bE1heFBSSUdST1VQVmFsdWUgJj0gcG9ydFBSSU9SSVRZX0dST1VQX01BU0s7DQorDQorCQkvKiBSZXN0b3JlIHRoZSBjbG9iYmVyZWQgaW50ZXJydXB0IHByaW9yaXR5IHJlZ2lzdGVyIHRvIGl0cyBvcmlnaW5hbA0KKwkJdmFsdWUuICovDQorCQkqcHVjRmlyc3RVc2VyUHJpb3JpdHlSZWdpc3RlciA9IHVsT3JpZ2luYWxQcmlvcml0eTsNCisJfQ0KKwkjZW5kaWYgLyogY29uaWZnQVNTRVJUX0RFRklORUQgKi8NCisNCisJLyogTWFrZSBQZW5kU1YgYW5kIFN5c1RpY2sgdGhlIGxvd2VzdCBwcmlvcml0eSBpbnRlcnJ1cHRzLiAqLw0KKwlwb3J0TlZJQ19TWVNQUkkyX1JFRyB8PSBwb3J0TlZJQ19QRU5EU1ZfUFJJOw0KKwlwb3J0TlZJQ19TWVNQUkkyX1JFRyB8PSBwb3J0TlZJQ19TWVNUSUNLX1BSSTsNCisNCisJLyogQ29uZmlndXJlIHRoZSByZWdpb25zIGluIHRoZSBNUFUgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCB0YXNrcy4gKi8NCisJcHJ2U2V0dXBNUFUoKTsNCisNCisJLyogU3RhcnQgdGhlIHRpbWVyIHRoYXQgZ2VuZXJhdGVzIHRoZSB0aWNrIElTUi4gIEludGVycnVwdHMgYXJlIGRpc2FibGVkDQorCWhlcmUgYWxyZWFkeS4gKi8NCisJdlBvcnRTZXR1cFRpbWVySW50ZXJydXB0KCk7DQorDQorCS8qIEluaXRpYWxpc2UgdGhlIGNyaXRpY2FsIG5lc3RpbmcgY291bnQgcmVhZHkgZm9yIHRoZSBmaXJzdCB0YXNrLiAqLw0KKwl1eENyaXRpY2FsTmVzdGluZyA9IDA7DQorDQorCS8qIEVuc3VyZSB0aGUgVkZQIGlzIGVuYWJsZWQgLSBpdCBzaG91bGQgYmUgYW55d2F5LiAqLw0KKwl2UG9ydEVuYWJsZVZGUCgpOw0KKw0KKwkvKiBMYXp5IHNhdmUgYWx3YXlzLiAqLw0KKwkqKCBwb3J0RlBDQ1IgKSB8PSBwb3J0QVNQRU5fQU5EX0xTUEVOX0JJVFM7DQorDQorCS8qIFN0YXJ0IHRoZSBmaXJzdCB0YXNrLiAqLw0KKwl2UG9ydFN0YXJ0Rmlyc3RUYXNrKCk7DQorDQorCS8qIFNob3VsZCBub3QgZ2V0IGhlcmUhICovDQorCXJldHVybiAwOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQb3J0RW5kU2NoZWR1bGVyKCB2b2lkICkNCit7DQorCS8qIE5vdCBpbXBsZW1lbnRlZCBpbiBwb3J0cyB3aGVyZSB0aGVyZSBpcyBub3RoaW5nIHRvIHJldHVybiB0by4NCisJQXJ0aWZpY2lhbGx5IGZvcmNlIGFuIGFzc2VydC4gKi8NCisJY29uZmlnQVNTRVJUKCB1eENyaXRpY2FsTmVzdGluZyA9PSAxMDAwVUwgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UG9ydEVudGVyQ3JpdGljYWwoIHZvaWQgKQ0KK3sNCisgQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCXBvcnRESVNBQkxFX0lOVEVSUlVQVFMoKTsNCisJdXhDcml0aWNhbE5lc3RpbmcrKzsNCisNCisJdlBvcnRSZXNldFByaXZpbGVnZSggeFJ1bm5pbmdQcml2aWxlZ2VkICk7DQorDQorCS8qIFRoaXMgaXMgbm90IHRoZSBpbnRlcnJ1cHQgc2FmZSB2ZXJzaW9uIG9mIHRoZSBlbnRlciBjcml0aWNhbCBmdW5jdGlvbiBzbw0KKwlhc3NlcnQoKSBpZiBpdCBpcyBiZWluZyBjYWxsZWQgZnJvbSBhbiBpbnRlcnJ1cHQgY29udGV4dC4gIE9ubHkgQVBJDQorCWZ1bmN0aW9ucyB0aGF0IGVuZCBpbiAiRnJvbUlTUiIgY2FuIGJlIHVzZWQgaW4gYW4gaW50ZXJydXB0LiAgT25seSBhc3NlcnQgaWYNCisJdGhlIGNyaXRpY2FsIG5lc3RpbmcgY291bnQgaXMgMSB0byBwcm90ZWN0IGFnYWluc3QgcmVjdXJzaXZlIGNhbGxzIGlmIHRoZQ0KKwlhc3NlcnQgZnVuY3Rpb24gYWxzbyB1c2VzIGEgY3JpdGljYWwgc2VjdGlvbi4gKi8NCisJaWYoIHV4Q3JpdGljYWxOZXN0aW5nID09IDEgKQ0KKwl7DQorCQljb25maWdBU1NFUlQoICggcG9ydE5WSUNfSU5UX0NUUkxfUkVHICYgcG9ydFZFQ1RBQ1RJVkVfTUFTSyApID09IDAgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQb3J0RXhpdENyaXRpY2FsKCB2b2lkICkNCit7DQorQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgPSB4UG9ydFJhaXNlUHJpdmlsZWdlKCk7DQorDQorCWNvbmZpZ0FTU0VSVCggdXhDcml0aWNhbE5lc3RpbmcgKTsNCisNCisJdXhDcml0aWNhbE5lc3RpbmctLTsNCisJaWYoIHV4Q3JpdGljYWxOZXN0aW5nID09IDAgKQ0KKwl7DQorCQlwb3J0RU5BQkxFX0lOVEVSUlVQVFMoKTsNCisJfQ0KKw0KKwl2UG9ydFJlc2V0UHJpdmlsZWdlKCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB4UG9ydFN5c1RpY2tIYW5kbGVyKCB2b2lkICkNCit7DQorCS8qIFRoZSBTeXNUaWNrIHJ1bnMgYXQgdGhlIGxvd2VzdCBpbnRlcnJ1cHQgcHJpb3JpdHksIHNvIHdoZW4gdGhpcyBpbnRlcnJ1cHQNCisJZXhlY3V0ZXMgYWxsIGludGVycnVwdHMgbXVzdCBiZSB1bm1hc2tlZC4gIFRoZXJlIGlzIHRoZXJlZm9yZSBubyBuZWVkIHRvDQorCXNhdmUgYW5kIHRoZW4gcmVzdG9yZSB0aGUgaW50ZXJydXB0IG1hc2sgdmFsdWUgYXMgaXRzIHZhbHVlIGlzIGFscmVhZHkNCisJa25vd24uICovDQorCXBvcnRESVNBQkxFX0lOVEVSUlVQVFMoKTsNCisJew0KKwkJLyogSW5jcmVtZW50IHRoZSBSVE9TIHRpY2suICovDQorCQlpZiggeFRhc2tJbmNyZW1lbnRUaWNrKCkgIT0gcGRGQUxTRSApDQorCQl7DQorCQkJLyogQSBjb250ZXh0IHN3aXRjaCBpcyByZXF1aXJlZC4gIENvbnRleHQgc3dpdGNoaW5nIGlzIHBlcmZvcm1lZCBpbg0KKwkJCXRoZSBQZW5kU1YgaW50ZXJydXB0LiAgUGVuZCB0aGUgUGVuZFNWIGludGVycnVwdC4gKi8NCisJCQlwb3J0TlZJQ19JTlRfQ1RSTF9SRUcgPSBwb3J0TlZJQ19QRU5EU1ZTRVRfQklUOw0KKwkJfQ0KKwl9DQorCXBvcnRFTkFCTEVfSU5URVJSVVBUUygpOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKg0KKyAqIFNldHVwIHRoZSBzeXN0aWNrIHRpbWVyIHRvIGdlbmVyYXRlIHRoZSB0aWNrIGludGVycnVwdHMgYXQgdGhlIHJlcXVpcmVkDQorICogZnJlcXVlbmN5Lg0KKyAqLw0KK19fd2VhayB2b2lkIHZQb3J0U2V0dXBUaW1lckludGVycnVwdCggdm9pZCApDQorew0KKwkvKiBTdG9wIGFuZCBjbGVhciB0aGUgU3lzVGljay4gKi8NCisJcG9ydE5WSUNfU1lTVElDS19DVFJMX1JFRyA9IDBVTDsNCisJcG9ydE5WSUNfU1lTVElDS19DVVJSRU5UX1ZBTFVFX1JFRyA9IDBVTDsNCisNCisJLyogQ29uZmlndXJlIFN5c1RpY2sgdG8gaW50ZXJydXB0IGF0IHRoZSByZXF1ZXN0ZWQgcmF0ZS4gKi8NCisJcG9ydE5WSUNfU1lTVElDS19MT0FEX1JFRyA9ICggY29uZmlnU1lTVElDS19DTE9DS19IWiAvIGNvbmZpZ1RJQ0tfUkFURV9IWiApIC0gMVVMOw0KKwlwb3J0TlZJQ19TWVNUSUNLX0NUUkxfUkVHID0gKCBwb3J0TlZJQ19TWVNUSUNLX0NMS19CSVQgfCBwb3J0TlZJQ19TWVNUSUNLX0lOVF9CSVQgfCBwb3J0TlZJQ19TWVNUSUNLX0VOQUJMRV9CSVQgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHZvaWQgcHJ2U2V0dXBNUFUoIHZvaWQgKQ0KK3sNCitleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2Z1bmN0aW9uc19lbmRfX1tdOw0KK2V4dGVybiB1aW50MzJfdCBfX0ZMQVNIX3NlZ21lbnRfc3RhcnRfX1tdOw0KK2V4dGVybiB1aW50MzJfdCBfX0ZMQVNIX3NlZ21lbnRfZW5kX19bXTsNCitleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2RhdGFfc3RhcnRfX1tdOw0KK2V4dGVybiB1aW50MzJfdCBfX3ByaXZpbGVnZWRfZGF0YV9lbmRfX1tdOw0KKw0KKwkvKiBDaGVjayB0aGUgZXhwZWN0ZWQgTVBVIGlzIHByZXNlbnQuICovDQorCWlmKCBwb3J0TVBVX1RZUEVfUkVHID09IHBvcnRFWFBFQ1RFRF9NUFVfVFlQRV9WQUxVRSApDQorCXsNCisJCS8qIEZpcnN0IHNldHVwIHRoZSBlbnRpcmUgZmxhc2ggZm9yIHVucHJpdmlsZWdlZCByZWFkIG9ubHkgYWNjZXNzLiAqLw0KKwkJcG9ydE1QVV9SRUdJT05fQkFTRV9BRERSRVNTX1JFRyA9CSggKCB1aW50MzJfdCApIF9fRkxBU0hfc2VnbWVudF9zdGFydF9fICkgfCAvKiBCYXNlIGFkZHJlc3MuICovDQorCQkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX1ZBTElEICkgfA0KKwkJCQkJCQkJCQkJKCBwb3J0VU5QUklWSUxFR0VEX0ZMQVNIX1JFR0lPTiApOw0KKw0KKwkJcG9ydE1QVV9SRUdJT05fQVRUUklCVVRFX1JFRyA9CSggcG9ydE1QVV9SRUdJT05fUkVBRF9PTkxZICkgfA0KKwkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX0NBQ0hFQUJMRV9CVUZGRVJBQkxFICkgfA0KKwkJCQkJCQkJCQkoIHBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCAoIHVpbnQzMl90ICkgX19GTEFTSF9zZWdtZW50X2VuZF9fIC0gKCB1aW50MzJfdCApIF9fRkxBU0hfc2VnbWVudF9zdGFydF9fICkgKSB8DQorCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorDQorCQkvKiBTZXR1cCB0aGUgZmlyc3QgMTZLIGZvciBwcml2aWxlZ2VkIG9ubHkgYWNjZXNzIChldmVuIHRob3VnaCBsZXNzDQorCQl0aGFuIDEwSyBpcyBhY3R1YWxseSBiZWluZyB1c2VkKS4gIFRoaXMgaXMgd2hlcmUgdGhlIGtlcm5lbCBjb2RlIGlzDQorCQlwbGFjZWQuICovDQorCQlwb3J0TVBVX1JFR0lPTl9CQVNFX0FERFJFU1NfUkVHID0JKCAoIHVpbnQzMl90ICkgX19GTEFTSF9zZWdtZW50X3N0YXJ0X18gKSB8IC8qIEJhc2UgYWRkcmVzcy4gKi8NCisJCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCQkJCQkJCQkoIHBvcnRQUklWSUxFR0VEX0ZMQVNIX1JFR0lPTiApOw0KKw0KKwkJcG9ydE1QVV9SRUdJT05fQVRUUklCVVRFX1JFRyA9CSggcG9ydE1QVV9SRUdJT05fUFJJVklMRUdFRF9SRUFEX09OTFkgKSB8DQorCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fQ0FDSEVBQkxFX0JVRkZFUkFCTEUgKSB8DQorCQkJCQkJCQkJCSggcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoICggdWludDMyX3QgKSBfX3ByaXZpbGVnZWRfZnVuY3Rpb25zX2VuZF9fIC0gKCB1aW50MzJfdCApIF9fRkxBU0hfc2VnbWVudF9zdGFydF9fICkgKSB8DQorCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorDQorCQkvKiBTZXR1cCB0aGUgcHJpdmlsZWdlZCBkYXRhIFJBTSByZWdpb24uICBUaGlzIGlzIHdoZXJlIHRoZSBrZXJuZWwgZGF0YQ0KKwkJaXMgcGxhY2VkLiAqLw0KKwkJcG9ydE1QVV9SRUdJT05fQkFTRV9BRERSRVNTX1JFRyA9CSggKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9kYXRhX3N0YXJ0X18gKSB8IC8qIEJhc2UgYWRkcmVzcy4gKi8NCisJCQkJCQkJCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCQkJCQkJCQkoIHBvcnRQUklWSUxFR0VEX1JBTV9SRUdJT04gKTsNCisNCisJCXBvcnRNUFVfUkVHSU9OX0FUVFJJQlVURV9SRUcgPQkoIHBvcnRNUFVfUkVHSU9OX1BSSVZJTEVHRURfUkVBRF9XUklURSApIHwNCisJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9DQUNIRUFCTEVfQlVGRkVSQUJMRSApIHwNCisJCQkJCQkJCQkJcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoICggdWludDMyX3QgKSBfX3ByaXZpbGVnZWRfZGF0YV9lbmRfXyAtICggdWludDMyX3QgKSBfX3ByaXZpbGVnZWRfZGF0YV9zdGFydF9fICkgfA0KKwkJCQkJCQkJCQkoIHBvcnRNUFVfUkVHSU9OX0VOQUJMRSApOw0KKw0KKwkJLyogQnkgZGVmYXVsdCBhbGxvdyBldmVyeXRoaW5nIHRvIGFjY2VzcyB0aGUgZ2VuZXJhbCBwZXJpcGhlcmFscy4gIFRoZQ0KKwkJc3lzdGVtIHBlcmlwaGVyYWxzIGFuZCByZWdpc3RlcnMgYXJlIHByb3RlY3RlZC4gKi8NCisJCXBvcnRNUFVfUkVHSU9OX0JBU0VfQUREUkVTU19SRUcgPQkoIHBvcnRQRVJJUEhFUkFMU19TVEFSVF9BRERSRVNTICkgfA0KKwkJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9WQUxJRCApIHwNCisJCQkJCQkJCQkJCSggcG9ydEdFTkVSQUxfUEVSSVBIRVJBTFNfUkVHSU9OICk7DQorDQorCQlwb3J0TVBVX1JFR0lPTl9BVFRSSUJVVEVfUkVHID0JKCBwb3J0TVBVX1JFR0lPTl9SRUFEX1dSSVRFIHwgcG9ydE1QVV9SRUdJT05fRVhFQ1VURV9ORVZFUiApIHwNCisJCQkJCQkJCQkJKCBwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggcG9ydFBFUklQSEVSQUxTX0VORF9BRERSRVNTIC0gcG9ydFBFUklQSEVSQUxTX1NUQVJUX0FERFJFU1MgKSApIHwNCisJCQkJCQkJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisNCisJCS8qIEVuYWJsZSB0aGUgbWVtb3J5IGZhdWx0IGV4Y2VwdGlvbi4gKi8NCisJCXBvcnROVklDX1NZU19DVFJMX1NUQVRFX1JFRyB8PSBwb3J0TlZJQ19NRU1fRkFVTFRfRU5BQkxFOw0KKw0KKwkJLyogRW5hYmxlIHRoZSBNUFUgd2l0aCB0aGUgYmFja2dyb3VuZCByZWdpb24gY29uZmlndXJlZC4gKi8NCisJCXBvcnRNUFVfQ1RSTF9SRUcgfD0gKCBwb3J0TVBVX0VOQUJMRSB8IHBvcnRNUFVfQkFDS0dST1VORF9FTkFCTEUgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdWludDMyX3QgcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoIHVpbnQzMl90IHVsQWN0dWFsU2l6ZUluQnl0ZXMgKQ0KK3sNCit1aW50MzJfdCB1bFJlZ2lvblNpemUsIHVsUmV0dXJuVmFsdWUgPSA0Ow0KKw0KKwkvKiAzMiBpcyB0aGUgc21hbGxlc3QgcmVnaW9uIHNpemUsIDMxIGlzIHRoZSBsYXJnZXN0IHZhbGlkIHZhbHVlIGZvcg0KKwl1bFJldHVyblZhbHVlLiAqLw0KKwlmb3IoIHVsUmVnaW9uU2l6ZSA9IDMyVUw7IHVsUmV0dXJuVmFsdWUgPCAzMVVMOyAoIHVsUmVnaW9uU2l6ZSA8PD0gMVVMICkgKQ0KKwl7DQorCQlpZiggdWxBY3R1YWxTaXplSW5CeXRlcyA8PSB1bFJlZ2lvblNpemUgKQ0KKwkJew0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXVsUmV0dXJuVmFsdWUrKzsNCisJCX0NCisJfQ0KKw0KKwkvKiBTaGlmdCB0aGUgY29kZSBieSBvbmUgYmVmb3JlIHJldHVybmluZyBzbyBpdCBjYW4gYmUgd3JpdHRlbiBkaXJlY3RseQ0KKwlpbnRvIHRoZSB0aGUgY29ycmVjdCBiaXQgcG9zaXRpb24gb2YgdGhlIGF0dHJpYnV0ZSByZWdpc3Rlci4gKi8NCisJcmV0dXJuICggdWxSZXR1cm5WYWx1ZSA8PCAxVUwgKTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2UG9ydFJlc2V0UHJpdmlsZWdlKCBCYXNlVHlwZV90IHhSdW5uaW5nUHJpdmlsZWdlZCApDQorew0KKwlpZiggeFJ1bm5pbmdQcml2aWxlZ2VkICE9IHBkVFJVRSApDQorCXsNCisJCV9fYXNtIHZvbGF0aWxlICggIiBtcnMgcjAsIGNvbnRyb2wgCVxuIiBcDQorCQkJCQkJICIgb3JyIHIwLCByMCwgIzEJXG4iIFwNCisJCQkJCQkgIiBtc3IgY29udHJvbCwgcjAJXG4iCVwNCisJCQkJCQkgOjo6InIwIiwgIm1lbW9yeSIgKTsNCisJfQ0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIHZQb3J0U3RvcmVUYXNrTVBVU2V0dGluZ3MoIHhNUFVfU0VUVElOR1MgKnhNUFVTZXR0aW5ncywgY29uc3Qgc3RydWN0IHhNRU1PUllfUkVHSU9OICogY29uc3QgeFJlZ2lvbnMsIFN0YWNrVHlwZV90ICpweEJvdHRvbU9mU3RhY2ssIHVpbnQzMl90IHVsU3RhY2tEZXB0aCApDQorew0KK2V4dGVybiB1aW50MzJfdCBfX1NSQU1fc2VnbWVudF9zdGFydF9fW107DQorZXh0ZXJuIHVpbnQzMl90IF9fU1JBTV9zZWdtZW50X2VuZF9fW107DQorZXh0ZXJuIHVpbnQzMl90IF9fcHJpdmlsZWdlZF9kYXRhX3N0YXJ0X19bXTsNCitleHRlcm4gdWludDMyX3QgX19wcml2aWxlZ2VkX2RhdGFfZW5kX19bXTsNCitpbnQzMl90IGxJbmRleDsNCit1aW50MzJfdCB1bDsNCisNCisJaWYoIHhSZWdpb25zID09IE5VTEwgKQ0KKwl7DQorCQkvKiBObyBNUFUgcmVnaW9ucyBhcmUgc3BlY2lmaWVkIHNvIGFsbG93IGFjY2VzcyB0byBhbGwgUkFNLiAqLw0KKwkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyAwIF0udWxSZWdpb25CYXNlQWRkcmVzcyA9DQorCQkJCSggKCB1aW50MzJfdCApIF9fU1JBTV9zZWdtZW50X3N0YXJ0X18gKSB8IC8qIEJhc2UgYWRkcmVzcy4gKi8NCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9WQUxJRCApIHwNCisJCQkJKCBwb3J0U1RBQ0tfUkVHSU9OICk7DQorDQorCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDAgXS51bFJlZ2lvbkF0dHJpYnV0ZSA9DQorCQkJCSggcG9ydE1QVV9SRUdJT05fUkVBRF9XUklURSApIHwNCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9DQUNIRUFCTEVfQlVGRkVSQUJMRSApIHwNCisJCQkJKCBwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggKCB1aW50MzJfdCApIF9fU1JBTV9zZWdtZW50X2VuZF9fIC0gKCB1aW50MzJfdCApIF9fU1JBTV9zZWdtZW50X3N0YXJ0X18gKSApIHwNCisJCQkJKCBwb3J0TVBVX1JFR0lPTl9FTkFCTEUgKTsNCisNCisJCS8qIFJlLWluc3RhdGUgdGhlIHByaXZpbGVnZWQgb25seSBSQU0gcmVnaW9uIGFzIHhSZWdpb25bIDAgXSB3aWxsIGhhdmUNCisJCWp1c3QgcmVtb3ZlZCB0aGUgcHJpdmlsZWdlZCBvbmx5IHBhcmFtZXRlcnMuICovDQorCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDEgXS51bFJlZ2lvbkJhc2VBZGRyZXNzID0NCisJCQkJKCAoIHVpbnQzMl90ICkgX19wcml2aWxlZ2VkX2RhdGFfc3RhcnRfXyApIHwgLyogQmFzZSBhZGRyZXNzLiAqLw0KKwkJCQkoIHBvcnRNUFVfUkVHSU9OX1ZBTElEICkgfA0KKwkJCQkoIHBvcnRTVEFDS19SRUdJT04gKyAxICk7DQorDQorCQl4TVBVU2V0dGluZ3MtPnhSZWdpb25bIDEgXS51bFJlZ2lvbkF0dHJpYnV0ZSA9DQorCQkJCSggcG9ydE1QVV9SRUdJT05fUFJJVklMRUdFRF9SRUFEX1dSSVRFICkgfA0KKwkJCQkoIHBvcnRNUFVfUkVHSU9OX0NBQ0hFQUJMRV9CVUZGRVJBQkxFICkgfA0KKwkJCQlwcnZHZXRNUFVSZWdpb25TaXplU2V0dGluZyggKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9kYXRhX2VuZF9fIC0gKCB1aW50MzJfdCApIF9fcHJpdmlsZWdlZF9kYXRhX3N0YXJ0X18gKSB8DQorCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorDQorCQkvKiBJbnZhbGlkYXRlIGFsbCBvdGhlciByZWdpb25zLiAqLw0KKwkJZm9yKCB1bCA9IDI7IHVsIDw9IHBvcnROVU1fQ09ORklHVVJBQkxFX1JFR0lPTlM7IHVsKysgKQ0KKwkJew0KKwkJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgdWwgXS51bFJlZ2lvbkJhc2VBZGRyZXNzID0gKCBwb3J0U1RBQ0tfUkVHSU9OICsgdWwgKSB8IHBvcnRNUFVfUkVHSU9OX1ZBTElEOw0KKwkJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgdWwgXS51bFJlZ2lvbkF0dHJpYnV0ZSA9IDBVTDsNCisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCS8qIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgdGFzayBpcyBjcmVhdGVkIC0gaW4NCisJCXdoaWNoIGNhc2UgdGhlIHN0YWNrIHJlZ2lvbiBwYXJhbWV0ZXJzIHdpbGwgYmUgdmFsaWQuICBBdCBhbGwgb3RoZXINCisJCXRpbWVzIHRoZSBzdGFjayBwYXJhbWV0ZXJzIHdpbGwgbm90IGJlIHZhbGlkIGFuZCBpdCBpcyBhc3N1bWVkIHRoYXQgdGhlDQorCQlzdGFjayByZWdpb24gaGFzIGFscmVhZHkgYmVlbiBjb25maWd1cmVkLiAqLw0KKwkJaWYoIHVsU3RhY2tEZXB0aCA+IDAgKQ0KKwkJew0KKwkJCS8qIERlZmluZSB0aGUgcmVnaW9uIHRoYXQgYWxsb3dzIGFjY2VzcyB0byB0aGUgc3RhY2suICovDQorCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyAwIF0udWxSZWdpb25CYXNlQWRkcmVzcyA9DQorCQkJCQkoICggdWludDMyX3QgKSBweEJvdHRvbU9mU3RhY2sgKSB8DQorCQkJCQkoIHBvcnRNUFVfUkVHSU9OX1ZBTElEICkgfA0KKwkJCQkJKCBwb3J0U1RBQ0tfUkVHSU9OICk7IC8qIFJlZ2lvbiBudW1iZXIuICovDQorDQorCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyAwIF0udWxSZWdpb25BdHRyaWJ1dGUgPQ0KKwkJCQkJKCBwb3J0TVBVX1JFR0lPTl9SRUFEX1dSSVRFICkgfCAvKiBSZWFkIGFuZCB3cml0ZS4gKi8NCisJCQkJCSggcHJ2R2V0TVBVUmVnaW9uU2l6ZVNldHRpbmcoIHVsU3RhY2tEZXB0aCAqICggdWludDMyX3QgKSBzaXplb2YoIFN0YWNrVHlwZV90ICkgKSApIHwNCisJCQkJCSggcG9ydE1QVV9SRUdJT05fQ0FDSEVBQkxFX0JVRkZFUkFCTEUgKSB8DQorCQkJCQkoIHBvcnRNUFVfUkVHSU9OX0VOQUJMRSApOw0KKwkJfQ0KKw0KKwkJbEluZGV4ID0gMDsNCisNCisJCWZvciggdWwgPSAxOyB1bCA8PSBwb3J0TlVNX0NPTkZJR1VSQUJMRV9SRUdJT05TOyB1bCsrICkNCisJCXsNCisJCQlpZiggKCB4UmVnaW9uc1sgbEluZGV4IF0gKS51bExlbmd0aEluQnl0ZXMgPiAwVUwgKQ0KKwkJCXsNCisJCQkJLyogVHJhbnNsYXRlIHRoZSBnZW5lcmljIHJlZ2lvbiBkZWZpbml0aW9uIGNvbnRhaW5lZCBpbg0KKwkJCQl4UmVnaW9ucyBpbnRvIHRoZSBDTTMgc3BlY2lmaWMgTVBVIHNldHRpbmdzIHRoYXQgYXJlIHRoZW4NCisJCQkJc3RvcmVkIGluIHhNUFVTZXR0aW5ncy4gKi8NCisJCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQmFzZUFkZHJlc3MgPQ0KKwkJCQkJCSggKCB1aW50MzJfdCApIHhSZWdpb25zWyBsSW5kZXggXS5wdkJhc2VBZGRyZXNzICkgfA0KKwkJCQkJCSggcG9ydE1QVV9SRUdJT05fVkFMSUQgKSB8DQorCQkJCQkJKCBwb3J0U1RBQ0tfUkVHSU9OICsgdWwgKTsgLyogUmVnaW9uIG51bWJlci4gKi8NCisNCisJCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQXR0cmlidXRlID0NCisJCQkJCQkoIHBydkdldE1QVVJlZ2lvblNpemVTZXR0aW5nKCB4UmVnaW9uc1sgbEluZGV4IF0udWxMZW5ndGhJbkJ5dGVzICkgKSB8DQorCQkJCQkJKCB4UmVnaW9uc1sgbEluZGV4IF0udWxQYXJhbWV0ZXJzICkgfA0KKwkJCQkJCSggcG9ydE1QVV9SRUdJT05fRU5BQkxFICk7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCS8qIEludmFsaWRhdGUgdGhlIHJlZ2lvbi4gKi8NCisJCQkJeE1QVVNldHRpbmdzLT54UmVnaW9uWyB1bCBdLnVsUmVnaW9uQmFzZUFkZHJlc3MgPSAoIHBvcnRTVEFDS19SRUdJT04gKyB1bCApIHwgcG9ydE1QVV9SRUdJT05fVkFMSUQ7DQorCQkJCXhNUFVTZXR0aW5ncy0+eFJlZ2lvblsgdWwgXS51bFJlZ2lvbkF0dHJpYnV0ZSA9IDBVTDsNCisJCQl9DQorDQorCQkJbEluZGV4Kys7DQorCQl9DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdBU1NFUlRfREVGSU5FRCA9PSAxICkNCisNCisJdm9pZCB2UG9ydFZhbGlkYXRlSW50ZXJydXB0UHJpb3JpdHkoIHZvaWQgKQ0KKwl7DQorCXVpbnQzMl90IHVsQ3VycmVudEludGVycnVwdDsNCisJdWludDhfdCB1Y0N1cnJlbnRQcmlvcml0eTsNCisNCisJCS8qIE9idGFpbiB0aGUgbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgZXhlY3V0aW5nIGludGVycnVwdC4gKi8NCisJCV9fYXNtIHZvbGF0aWxlKCAibXJzICUwLCBpcHNyIiA6ICI9ciIoIHVsQ3VycmVudEludGVycnVwdCApIDo6ICJtZW1vcnkiICk7DQorDQorCQkvKiBJcyB0aGUgaW50ZXJydXB0IG51bWJlciBhIHVzZXIgZGVmaW5lZCBpbnRlcnJ1cHQ/ICovDQorCQlpZiggdWxDdXJyZW50SW50ZXJydXB0ID49IHBvcnRGSVJTVF9VU0VSX0lOVEVSUlVQVF9OVU1CRVIgKQ0KKwkJew0KKwkJCS8qIExvb2sgdXAgdGhlIGludGVycnVwdCdzIHByaW9yaXR5LiAqLw0KKwkJCXVjQ3VycmVudFByaW9yaXR5ID0gcGNJbnRlcnJ1cHRQcmlvcml0eVJlZ2lzdGVyc1sgdWxDdXJyZW50SW50ZXJydXB0IF07DQorDQorCQkJLyogVGhlIGZvbGxvd2luZyBhc3NlcnRpb24gd2lsbCBmYWlsIGlmIGEgc2VydmljZSByb3V0aW5lIChJU1IpIGZvcg0KKwkJCWFuIGludGVycnVwdCB0aGF0IGhhcyBiZWVuIGFzc2lnbmVkIGEgcHJpb3JpdHkgYWJvdmUNCisJCQljb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFkgY2FsbHMgYW4gSVNSIHNhZmUgRnJlZVJUT1MgQVBJDQorCQkJZnVuY3Rpb24uICBJU1Igc2FmZSBGcmVlUlRPUyBBUEkgZnVuY3Rpb25zIG11c3QgKm9ubHkqIGJlIGNhbGxlZA0KKwkJCWZyb20gaW50ZXJydXB0cyB0aGF0IGhhdmUgYmVlbiBhc3NpZ25lZCBhIHByaW9yaXR5IGF0IG9yIGJlbG93DQorCQkJY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZLg0KKw0KKwkJCU51bWVyaWNhbGx5IGxvdyBpbnRlcnJ1cHQgcHJpb3JpdHkgbnVtYmVycyByZXByZXNlbnQgbG9naWNhbGx5IGhpZ2gNCisJCQlpbnRlcnJ1cHQgcHJpb3JpdGllcywgdGhlcmVmb3JlIHRoZSBwcmlvcml0eSBvZiB0aGUgaW50ZXJydXB0IG11c3QNCisJCQliZSBzZXQgdG8gYSB2YWx1ZSBlcXVhbCB0byBvciBudW1lcmljYWxseSAqaGlnaGVyKiB0aGFuDQorCQkJY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZLg0KKw0KKwkJCUludGVycnVwdHMgdGhhdAl1c2UgdGhlIEZyZWVSVE9TIEFQSSBtdXN0IG5vdCBiZSBsZWZ0IGF0IHRoZWlyDQorCQkJZGVmYXVsdCBwcmlvcml0eSBvZgl6ZXJvIGFzIHRoYXQgaXMgdGhlIGhpZ2hlc3QgcG9zc2libGUgcHJpb3JpdHksDQorCQkJd2hpY2ggaXMgZ3VhcmFudGVlZCB0byBiZSBhYm92ZSBjb25maWdNQVhfU1lTQ0FMTF9JTlRFUlJVUFRfUFJJT1JJVFksDQorCQkJYW5kCXRoZXJlZm9yZSBhbHNvIGd1YXJhbnRlZWQgdG8gYmUgaW52YWxpZC4NCisNCisJCQlGcmVlUlRPUyBtYWludGFpbnMgc2VwYXJhdGUgdGhyZWFkIGFuZCBJU1IgQVBJIGZ1bmN0aW9ucyB0byBlbnN1cmUNCisJCQlpbnRlcnJ1cHQgZW50cnkgaXMgYXMgZmFzdCBhbmQgc2ltcGxlIGFzIHBvc3NpYmxlLg0KKw0KKwkJCVRoZSBmb2xsb3dpbmcgbGlua3MgcHJvdmlkZSBkZXRhaWxlZCBpbmZvcm1hdGlvbjoNCisJCQlodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9SVE9TLUNvcnRleC1NMy1NNC5odG1sDQorCQkJaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvRkFRSGVscC5odG1sICovDQorCQkJY29uZmlnQVNTRVJUKCB1Y0N1cnJlbnRQcmlvcml0eSA+PSB1Y01heFN5c0NhbGxQcmlvcml0eSApOw0KKwkJfQ0KKw0KKwkJLyogUHJpb3JpdHkgZ3JvdXBpbmc6ICBUaGUgaW50ZXJydXB0IGNvbnRyb2xsZXIgKE5WSUMpIGFsbG93cyB0aGUgYml0cw0KKwkJdGhhdCBkZWZpbmUgZWFjaCBpbnRlcnJ1cHQncyBwcmlvcml0eSB0byBiZSBzcGxpdCBiZXR3ZWVuIGJpdHMgdGhhdA0KKwkJZGVmaW5lIHRoZSBpbnRlcnJ1cHQncyBwcmUtZW1wdGlvbiBwcmlvcml0eSBiaXRzIGFuZCBiaXRzIHRoYXQgZGVmaW5lDQorCQl0aGUgaW50ZXJydXB0J3Mgc3ViLXByaW9yaXR5LiAgRm9yIHNpbXBsaWNpdHkgYWxsIGJpdHMgbXVzdCBiZSBkZWZpbmVkDQorCQl0byBiZSBwcmUtZW1wdGlvbiBwcmlvcml0eSBiaXRzLiAgVGhlIGZvbGxvd2luZyBhc3NlcnRpb24gd2lsbCBmYWlsIGlmDQorCQl0aGlzIGlzIG5vdCB0aGUgY2FzZSAoaWYgc29tZSBiaXRzIHJlcHJlc2VudCBhIHN1Yi1wcmlvcml0eSkuDQorDQorCQlJZiB0aGUgYXBwbGljYXRpb24gb25seSB1c2VzIENNU0lTIGxpYnJhcmllcyBmb3IgaW50ZXJydXB0DQorCQljb25maWd1cmF0aW9uIHRoZW4gdGhlIGNvcnJlY3Qgc2V0dGluZyBjYW4gYmUgYWNoaWV2ZWQgb24gYWxsIENvcnRleC1NDQorCQlkZXZpY2VzIGJ5IGNhbGxpbmcgTlZJQ19TZXRQcmlvcml0eUdyb3VwaW5nKCAwICk7IGJlZm9yZSBzdGFydGluZyB0aGUNCisJCXNjaGVkdWxlci4gIE5vdGUgaG93ZXZlciB0aGF0IHNvbWUgdmVuZG9yIHNwZWNpZmljIHBlcmlwaGVyYWwgbGlicmFyaWVzDQorCQlhc3N1bWUgYSBub24temVybyBwcmlvcml0eSBncm91cCBzZXR0aW5nLCBpbiB3aGljaCBjYXNlcyB1c2luZyBhIHZhbHVlDQorCQlvZiB6ZXJvIHdpbGwgcmVzdWx0IGluIHVucHJlZGljdGFibGUgYmVoYXZpb3VyLiAqLw0KKwkJY29uZmlnQVNTRVJUKCAoIHBvcnRBSVJDUl9SRUcgJiBwb3J0UFJJT1JJVFlfR1JPVVBfTUFTSyApIDw9IHVsTWF4UFJJR1JPVVBWYWx1ZSApOw0KKwl9DQorDQorI2VuZGlmIC8qIGNvbmZpZ0FTU0VSVF9ERUZJTkVEICovDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydGFzbS5zIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydGFzbS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNjQyYTEKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0YXNtLnMKQEAgLTAsMCArMSwxOTggQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorI2luY2x1ZGUgPEZyZWVSVE9TQ29uZmlnLmg+DQorDQorCVJTRUcgICAgQ09ERTpDT0RFKDIpDQorCXRodW1iDQorDQorCUVYVEVSTiBweEN1cnJlbnRUQ0INCisJRVhURVJOIHZUYXNrU3dpdGNoQ29udGV4dA0KKwlFWFRFUk4gdlBvcnRTVkNIYW5kbGVyX0MNCisNCisJUFVCTElDIHhQb3J0UGVuZFNWSGFuZGxlcg0KKwlQVUJMSUMgdlBvcnRTVkNIYW5kbGVyDQorCVBVQkxJQyB2UG9ydFN0YXJ0Rmlyc3RUYXNrDQorCVBVQkxJQyB2UG9ydEVuYWJsZVZGUA0KKwlQVUJMSUMgdlBvcnRSZXN0b3JlQ29udGV4dE9mRmlyc3RUYXNrDQorCVBVQkxJQyB4UG9ydFJhaXNlUHJpdmlsZWdlDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQoreFBvcnRQZW5kU1ZIYW5kbGVyOg0KKwltcnMgcjAsIHBzcA0KKwlpc2INCisJLyogR2V0IHRoZSBsb2NhdGlvbiBvZiB0aGUgY3VycmVudCBUQ0IuICovDQorCWxkcglyMywgPXB4Q3VycmVudFRDQg0KKwlsZHIJcjIsIFtyM10NCisNCisJLyogSXMgdGhlIHRhc2sgdXNpbmcgdGhlIEZQVSBjb250ZXh0PyAgSWYgc28sIHB1c2ggaGlnaCB2ZnAgcmVnaXN0ZXJzLiAqLw0KKwl0c3QgcjE0LCAjMHgxMA0KKwlpdCBlcQ0KKwl2c3RtZGJlcSByMCEsIHtzMTYtczMxfQ0KKw0KKwkvKiBTYXZlIHRoZSBjb3JlIHJlZ2lzdGVycy4gKi8NCisJbXJzIHIxLCBjb250cm9sDQorCXN0bWRiIHIwISwge3IxLCByNC1yMTEsIHIxNH0NCisNCisJLyogU2F2ZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBpbnRvIHRoZSBmaXJzdCBtZW1iZXIgb2YgdGhlIFRDQi4gKi8NCisJc3RyIHIwLCBbcjJdDQorDQorCXN0bWRiIHNwISwge3IwLCByM30NCisJbW92IHIwLCAjY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZDQorCW1zciBiYXNlcHJpLCByMA0KKwlkc2INCisJaXNiDQorCWJsIHZUYXNrU3dpdGNoQ29udGV4dA0KKwltb3YgcjAsICMwDQorCW1zciBiYXNlcHJpLCByMA0KKwlsZG1pYSBzcCEsIHtyMCwgcjN9DQorDQorCS8qIFRoZSBmaXJzdCBpdGVtIGluIHB4Q3VycmVudFRDQiBpcyB0aGUgdGFzayB0b3Agb2Ygc3RhY2suICovDQorCWxkciByMSwgW3IzXQ0KKwlsZHIgcjAsIFtyMV0NCisJLyogTW92ZSBvbnRvIHRoZSBzZWNvbmQgaXRlbSBpbiB0aGUgVENCLi4uICovDQorCWFkZCByMSwgcjEsICM0DQorCS8qIFJlZ2lvbiBCYXNlIEFkZHJlc3MgcmVnaXN0ZXIuICovDQorCWxkciByMiwgPTB4ZTAwMGVkOWMNCisJLyogUmVhZCA0IHNldHMgb2YgTVBVIHJlZ2lzdGVycy4gKi8NCisJbGRtaWEgcjEhLCB7cjQtcjExfQ0KKwkvKiBXcml0ZSA0IHNldHMgb2YgTVBVIHJlZ2lzdGVycy4gKi8NCisJc3RtaWEgcjIhLCB7cjQtcjExfQ0KKwkvKiBQb3AgdGhlIHJlZ2lzdGVycyB0aGF0IGFyZSBub3QgYXV0b21hdGljYWxseSBzYXZlZCBvbiBleGNlcHRpb24gZW50cnkuICovDQorCWxkbWlhIHIwISwge3IzLXIxMSwgcjE0fQ0KKwltc3IgY29udHJvbCwgcjMNCisNCisJLyogSXMgdGhlIHRhc2sgdXNpbmcgdGhlIEZQVSBjb250ZXh0PyAgSWYgc28sIHBvcCB0aGUgaGlnaCB2ZnAgcmVnaXN0ZXJzDQorCXRvby4gKi8NCisJdHN0IHIxNCwgIzB4MTANCisJaXQgZXENCisJdmxkbWlhZXEgcjAhLCB7czE2LXMzMX0NCisNCisJbXNyIHBzcCwgcjANCisJaXNiDQorDQorCWJ4IHIxNA0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZQb3J0U1ZDSGFuZGxlcjoNCisJI2lmbmRlZiBVU0VfUFJPQ0VTU19TVEFDSwkvKiBDb2RlIHNob3VsZCBub3QgYmUgcmVxdWlyZWQgaWYgYSBtYWluKCkgaXMgdXNpbmcgdGhlIHByb2Nlc3Mgc3RhY2suICovDQorCQl0c3QgbHIsICM0DQorCQlpdGUgZXENCisJCW1yc2VxIHIwLCBtc3ANCisJCW1yc25lIHIwLCBwc3ANCisJI2Vsc2UNCisJCW1ycyByMCwgcHNwDQorCSNlbmRpZg0KKwkJYiB2UG9ydFNWQ0hhbmRsZXJfQw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZQb3J0U3RhcnRGaXJzdFRhc2sNCisJLyogVXNlIHRoZSBOVklDIG9mZnNldCByZWdpc3RlciB0byBsb2NhdGUgdGhlIHN0YWNrLiAqLw0KKwlsZHIgcjAsID0weEUwMDBFRDA4DQorCWxkciByMCwgW3IwXQ0KKwlsZHIgcjAsIFtyMF0NCisJLyogU2V0IHRoZSBtc3AgYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIHN0YWNrLiAqLw0KKwltc3IgbXNwLCByMA0KKwkvKiBDbGVhciB0aGUgYml0IHRoYXQgaW5kaWNhdGVzIHRoZSBGUFUgaXMgaW4gdXNlIGluIGNhc2UgdGhlIEZQVSB3YXMgdXNlZA0KKwliZWZvcmUgdGhlIHNjaGVkdWxlciB3YXMgc3RhcnRlZCAtIHdoaWNoIHdvdWxkIG90aGVyd2lzZSByZXN1bHQgaW4gdGhlDQorCXVubmVjZXNzYXJ5IGxlYXZpbmcgb2Ygc3BhY2UgaW4gdGhlIFNWQyBzdGFjayBmb3IgbGF6eSBzYXZpbmcgb2YgRlBVDQorCXJlZ2lzdGVycy4gKi8NCisJbW92IHIwLCAjMA0KKwltc3IgY29udHJvbCwgcjANCisJLyogQ2FsbCBTVkMgdG8gc3RhcnQgdGhlIGZpcnN0IHRhc2suICovDQorCWNwc2llIGkNCisJY3BzaWUgZg0KKwlkc2INCisJaXNiDQorCXN2YyAwDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordlBvcnRSZXN0b3JlQ29udGV4dE9mRmlyc3RUYXNrDQorCS8qIFVzZSB0aGUgTlZJQyBvZmZzZXQgcmVnaXN0ZXIgdG8gbG9jYXRlIHRoZSBzdGFjay4gKi8NCisJbGRyIHIwLCA9MHhFMDAwRUQwOA0KKwlsZHIgcjAsIFtyMF0NCisJbGRyIHIwLCBbcjBdDQorCS8qIFNldCB0aGUgbXNwIGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdGFjay4gKi8NCisJbXNyIG1zcCwgcjANCisJLyogUmVzdG9yZSB0aGUgY29udGV4dC4gKi8NCisJbGRyCXIzLCA9cHhDdXJyZW50VENCDQorCWxkciByMSwgW3IzXQ0KKwkvKiBUaGUgZmlyc3QgaXRlbSBpbiB0aGUgVENCIGlzIHRoZSB0YXNrIHRvcCBvZiBzdGFjay4gKi8NCisJbGRyIHIwLCBbcjFdDQorCS8qIE1vdmUgb250byB0aGUgc2Vjb25kIGl0ZW0gaW4gdGhlIFRDQi4uLiAqLw0KKwlhZGQgcjEsIHIxLCAjNA0KKwkvKiBSZWdpb24gQmFzZSBBZGRyZXNzIHJlZ2lzdGVyLiAqLw0KKwlsZHIgcjIsID0weGUwMDBlZDljDQorCS8qIFJlYWQgNCBzZXRzIG9mIE1QVSByZWdpc3RlcnMuICovDQorCWxkbWlhIHIxISwge3I0LXIxMX0NCisJLyogV3JpdGUgNCBzZXRzIG9mIE1QVSByZWdpc3RlcnMuICovDQorCXN0bWlhIHIyISwge3I0LXIxMX0NCisJLyogUG9wIHRoZSByZWdpc3RlcnMgdGhhdCBhcmUgbm90IGF1dG9tYXRpY2FsbHkgc2F2ZWQgb24gZXhjZXB0aW9uIGVudHJ5LiAqLw0KKwlsZG1pYSByMCEsIHtyMy1yMTEsIHIxNH0NCisJbXNyIGNvbnRyb2wsIHIzDQorCS8qIFJlc3RvcmUgdGhlIHRhc2sgc3RhY2sgcG9pbnRlci4gKi8NCisJbXNyIHBzcCwgcjANCisJbW92IHIwLCAjMA0KKwltc3IJYmFzZXByaSwgcjANCisJYnggcjE0DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordlBvcnRFbmFibGVWRlANCisJLyogVGhlIEZQVSBlbmFibGUgYml0cyBhcmUgaW4gdGhlIENQQUNSLiAqLw0KKwlsZHIudyByMCwgPTB4RTAwMEVEODgNCisJbGRyCXIxLCBbcjBdDQorDQorCS8qIEVuYWJsZSBDUDEwIGFuZCBDUDExIGNvcHJvY2Vzc29ycywgdGhlbiBzYXZlIGJhY2suICovDQorCW9ycglyMSwgcjEsICMoIDB4ZiA8PCAyMCApDQorCXN0ciByMSwgW3IwXQ0KKwlieAlyMTQNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit4UG9ydFJhaXNlUHJpdmlsZWdlDQorCW1ycyByMCwgY29udHJvbA0KKwkvKiBJcyB0aGUgdGFzayBydW5uaW5nIHByaXZpbGVnZWQ/ICovDQorCXRzdCByMCwgIzENCisJaXR0ZSBuZQ0KKwkvKiBDT05UUk9MWzBdIT0wLCByZXR1cm4gZmFsc2UuICovDQorCW1vdm5lIHIwLCAjMA0KKwkvKiBTd2l0Y2ggdG8gcHJpdmlsZWdlZC4gKi8NCisJc3ZjbmUgMgkvKiAyID09IHBvcnRTVkNfUkFJU0VfUFJJVklMRUdFICovDQorCS8qIENPTlRST0xbMF09PTAsIHJldHVybiB0cnVlLiAqLw0KKwltb3ZlcSByMCwgIzENCisJYnggbHINCisNCisNCisJRU5EDQorDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTRGX01QVS9wb3J0bWFjcm8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2I3ZGY0Ci0tLSAvZGV2L251bGwKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ000Rl9NUFUvcG9ydG1hY3JvLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQorDQorI2lmbmRlZiBQT1JUTUFDUk9fSA0KKyNkZWZpbmUgUE9SVE1BQ1JPX0gNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorICogUG9ydCBzcGVjaWZpYyBkZWZpbml0aW9ucy4NCisgKg0KKyAqIFRoZSBzZXR0aW5ncyBpbiB0aGlzIGZpbGUgY29uZmlndXJlIEZyZWVSVE9TIGNvcnJlY3RseSBmb3IgdGhlDQorICogZ2l2ZW4gaGFyZHdhcmUgYW5kIGNvbXBpbGVyLg0KKyAqDQorICogVGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIG5vdCBiZSBhbHRlcmVkLg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgKi8NCisNCisvKiBJQVIgaW5jbHVkZXMuICovDQorI2luY2x1ZGUgPGludHJpbnNpY3MuaD4NCisNCisvKiBUeXBlIGRlZmluaXRpb25zLiAqLw0KKyNkZWZpbmUgcG9ydENIQVIJCWNoYXINCisjZGVmaW5lIHBvcnRGTE9BVAkJZmxvYXQNCisjZGVmaW5lIHBvcnRET1VCTEUJCWRvdWJsZQ0KKyNkZWZpbmUgcG9ydExPTkcJCWxvbmcNCisjZGVmaW5lIHBvcnRTSE9SVAkJc2hvcnQNCisjZGVmaW5lIHBvcnRTVEFDS19UWVBFCXVpbnQzMl90DQorI2RlZmluZSBwb3J0QkFTRV9UWVBFCWxvbmcNCisNCit0eXBlZGVmIHBvcnRTVEFDS19UWVBFIFN0YWNrVHlwZV90Ow0KK3R5cGVkZWYgbG9uZyBCYXNlVHlwZV90Ow0KK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBVQmFzZVR5cGVfdDsNCisNCisjaWYoIGNvbmZpZ1VTRV8xNl9CSVRfVElDS1MgPT0gMSApDQorCXR5cGVkZWYgdWludDE2X3QgVGlja1R5cGVfdDsNCisJI2RlZmluZSBwb3J0TUFYX0RFTEFZICggVGlja1R5cGVfdCApIDB4ZmZmZg0KKyNlbHNlDQorCXR5cGVkZWYgdWludDMyX3QgVGlja1R5cGVfdDsNCisJI2RlZmluZSBwb3J0TUFYX0RFTEFZICggVGlja1R5cGVfdCApIDB4ZmZmZmZmZmZVTA0KKw0KKwkvKiAzMi1iaXQgdGljayB0eXBlIG9uIGEgMzItYml0IGFyY2hpdGVjdHVyZSwgc28gcmVhZHMgb2YgdGhlIHRpY2sgY291bnQgZG8NCisJbm90IG5lZWQgdG8gYmUgZ3VhcmRlZCB3aXRoIGEgY3JpdGljYWwgc2VjdGlvbi4gKi8NCisJI2RlZmluZSBwb3J0VElDS19UWVBFX0lTX0FUT01JQyAxDQorI2VuZGlmDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogTVBVIHNwZWNpZmljIGNvbnN0YW50cy4gKi8NCisjZGVmaW5lIHBvcnRVU0lOR19NUFVfV1JBUFBFUlMJCTENCisjZGVmaW5lIHBvcnRQUklWSUxFR0VfQklUCQkJKCAweDgwMDAwMDAwVUwgKQ0KKw0KKyNkZWZpbmUgcG9ydE1QVV9SRUdJT05fUkVBRF9XUklURQkJCQkoIDB4MDNVTCA8PCAyNFVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX1BSSVZJTEVHRURfUkVBRF9PTkxZCQkoIDB4MDVVTCA8PCAyNFVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX1JFQURfT05MWQkJCQkoIDB4MDZVTCA8PCAyNFVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX1BSSVZJTEVHRURfUkVBRF9XUklURQkoIDB4MDFVTCA8PCAyNFVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX0NBQ0hFQUJMRV9CVUZGRVJBQkxFCQkoIDB4MDdVTCA8PCAxNlVMICkNCisjZGVmaW5lIHBvcnRNUFVfUkVHSU9OX0VYRUNVVEVfTkVWRVIJCQkoIDB4MDFVTCA8PCAyOFVMICkNCisNCisjZGVmaW5lIHBvcnRVTlBSSVZJTEVHRURfRkxBU0hfUkVHSU9OCQkJKCAwVUwgKQ0KKyNkZWZpbmUgcG9ydFBSSVZJTEVHRURfRkxBU0hfUkVHSU9OCQkJCSggMVVMICkNCisjZGVmaW5lIHBvcnRQUklWSUxFR0VEX1JBTV9SRUdJT04JCQkJKCAyVUwgKQ0KKyNkZWZpbmUgcG9ydEdFTkVSQUxfUEVSSVBIRVJBTFNfUkVHSU9OCQkJKCAzVUwgKQ0KKyNkZWZpbmUgcG9ydFNUQUNLX1JFR0lPTgkJCQkJCSggNFVMICkNCisjZGVmaW5lIHBvcnRGSVJTVF9DT05GSUdVUkFCTEVfUkVHSU9OCQkJKCA1VUwgKQ0KKyNkZWZpbmUgcG9ydExBU1RfQ09ORklHVVJBQkxFX1JFR0lPTgkJCSggN1VMICkNCisjZGVmaW5lIHBvcnROVU1fQ09ORklHVVJBQkxFX1JFR0lPTlMJCQkoICggcG9ydExBU1RfQ09ORklHVVJBQkxFX1JFR0lPTiAtIHBvcnRGSVJTVF9DT05GSUdVUkFCTEVfUkVHSU9OICkgKyAxICkNCisjZGVmaW5lIHBvcnRUT1RBTF9OVU1fUkVHSU9OUwkJCQkJKCBwb3J0TlVNX0NPTkZJR1VSQUJMRV9SRUdJT05TICsgMSApIC8qIFBsdXMgb25lIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSBzdGFjayByZWdpb24uICovDQorDQorI2RlZmluZSBwb3J0U1dJVENIX1RPX1VTRVJfTU9ERSgpIF9fYXNtIHZvbGF0aWxlICggIiBtcnMgcjAsIGNvbnRyb2wgXG4gb3JyIHIwLCByMCwgIzEgXG4gbXNyIGNvbnRyb2wsIHIwICIgOjo6ICJyMCIsICJtZW1vcnkiICkNCisNCit0eXBlZGVmIHN0cnVjdCBNUFVfUkVHSU9OX1JFR0lTVEVSUw0KK3sNCisJdWludDMyX3QgdWxSZWdpb25CYXNlQWRkcmVzczsNCisJdWludDMyX3QgdWxSZWdpb25BdHRyaWJ1dGU7DQorfSB4TVBVX1JFR0lPTl9SRUdJU1RFUlM7DQorDQorLyogUGx1cyAxIHRvIGNyZWF0ZSBzcGFjZSBmb3IgdGhlIHN0YWNrIHJlZ2lvbi4gKi8NCit0eXBlZGVmIHN0cnVjdCBNUFVfU0VUVElOR1MNCit7DQorCXhNUFVfUkVHSU9OX1JFR0lTVEVSUyB4UmVnaW9uWyBwb3J0VE9UQUxfTlVNX1JFR0lPTlMgXTsNCit9IHhNUFVfU0VUVElOR1M7DQorDQorDQorLyogQXJjaGl0ZWN0dXJlIHNwZWNpZmljcy4gKi8NCisjZGVmaW5lIHBvcnRTVEFDS19HUk9XVEgJCQkoIC0xICkNCisjZGVmaW5lIHBvcnRUSUNLX1BFUklPRF9NUwkJCSggKCBUaWNrVHlwZV90ICkgMTAwMCAvIGNvbmZpZ1RJQ0tfUkFURV9IWiApDQorI2RlZmluZSBwb3J0QllURV9BTElHTk1FTlQJCQk4DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogU1ZDIG51bWJlcnMgZm9yIHZhcmlvdXMgc2VydmljZXMuICovDQorI2RlZmluZSBwb3J0U1ZDX1NUQVJUX1NDSEVEVUxFUgkJCQkwDQorI2RlZmluZSBwb3J0U1ZDX1lJRUxECQkJCQkJMQ0KKyNkZWZpbmUgcG9ydFNWQ19SQUlTRV9QUklWSUxFR0UJCQkJMg0KKw0KKy8qIFNjaGVkdWxlciB1dGlsaXRpZXMuICovDQorI2RlZmluZSBwb3J0WUlFTEQoKQkJCQlfX2FzbSB2b2xhdGlsZSAoICIJU1ZDCSUwCVxuIiA6OiAiaSIgKHBvcnRTVkNfWUlFTEQpIDogIm1lbW9yeSIgKQ0KKyNkZWZpbmUgcG9ydFlJRUxEX1dJVEhJTl9BUEkoKQkJCQkJCQkJXA0KK3sJCQkJCQkJCQkJCQkJCQlcDQorCS8qIFNldCBhIFBlbmRTViB0byByZXF1ZXN0IGEgY29udGV4dCBzd2l0Y2guICovCQkJXA0KKwlwb3J0TlZJQ19JTlRfQ1RSTF9SRUcgPSBwb3J0TlZJQ19QRU5EU1ZTRVRfQklUOwkJCVwNCisJX19EU0IoKTsJCQkJCQkJCQkJCQlcDQorCV9fSVNCKCk7CQkJCQkJCQkJCQkJXA0KK30NCisNCisjZGVmaW5lIHBvcnROVklDX0lOVF9DVFJMX1JFRwkJKCAqICggKCB2b2xhdGlsZSB1aW50MzJfdCAqICkgMHhlMDAwZWQwNCApICkNCisjZGVmaW5lIHBvcnROVklDX1BFTkRTVlNFVF9CSVQJCSggMVVMIDw8IDI4VUwgKQ0KKyNkZWZpbmUgcG9ydEVORF9TV0lUQ0hJTkdfSVNSKCB4U3dpdGNoUmVxdWlyZWQgKSBpZiggeFN3aXRjaFJlcXVpcmVkICE9IHBkRkFMU0UgKSBwb3J0WUlFTERfV0lUSElOX0FQSSgpDQorI2RlZmluZSBwb3J0WUlFTERfRlJPTV9JU1IoIHggKSBwb3J0RU5EX1NXSVRDSElOR19JU1IoIHggKQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIEFyY2hpdGVjdHVyZSBzcGVjaWZpYyBvcHRpbWlzYXRpb25zLiAqLw0KKyNpZm5kZWYgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9ODQorCSNkZWZpbmUgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OIDENCisjZW5kaWYNCisNCisjaWYoIGNvbmZpZ1VTRV9QT1JUX09QVElNSVNFRF9UQVNLX1NFTEVDVElPTiA9PSAxICkNCisNCisJLyogQ2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24uICovDQorCSNpZiggY29uZmlnTUFYX1BSSU9SSVRJRVMgPiAzMiApDQorCQkjZXJyb3IgY29uZmlnVVNFX1BPUlRfT1BUSU1JU0VEX1RBU0tfU0VMRUNUSU9OIGNhbiBvbmx5IGJlIHNldCB0byAxIHdoZW4gY29uZmlnTUFYX1BSSU9SSVRJRVMgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDMyLiAgSXQgaXMgdmVyeSByYXJlIHRoYXQgYSBzeXN0ZW0gcmVxdWlyZXMgbW9yZSB0aGFuIDEwIHRvIDE1IGRpZmZlcmVuY2UgcHJpb3JpdGllcyBhcyB0YXNrcyB0aGF0IHNoYXJlIGEgcHJpb3JpdHkgd2lsbCB0aW1lIHNsaWNlLg0KKwkjZW5kaWYNCisNCisJLyogU3RvcmUvY2xlYXIgdGhlIHJlYWR5IHByaW9yaXRpZXMgaW4gYSBiaXQgbWFwLiAqLw0KKwkjZGVmaW5lIHBvcnRSRUNPUkRfUkVBRFlfUFJJT1JJVFkoIHV4UHJpb3JpdHksIHV4UmVhZHlQcmlvcml0aWVzICkgKCB1eFJlYWR5UHJpb3JpdGllcyApIHw9ICggMVVMIDw8ICggdXhQcmlvcml0eSApICkNCisJI2RlZmluZSBwb3J0UkVTRVRfUkVBRFlfUFJJT1JJVFkoIHV4UHJpb3JpdHksIHV4UmVhZHlQcmlvcml0aWVzICkgKCB1eFJlYWR5UHJpb3JpdGllcyApICY9IH4oIDFVTCA8PCAoIHV4UHJpb3JpdHkgKSApDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkjZGVmaW5lIHBvcnRHRVRfSElHSEVTVF9QUklPUklUWSggdXhUb3BQcmlvcml0eSwgdXhSZWFkeVByaW9yaXRpZXMgKSB1eFRvcFByaW9yaXR5ID0gKCAzMVVMIC0gKCAoIHVpbnQzMl90ICkgX19DTFooICggdXhSZWFkeVByaW9yaXRpZXMgKSApICkgKQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfUE9SVF9PUFRJTUlTRURfVEFTS19TRUxFQ1RJT04gKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBDcml0aWNhbCBzZWN0aW9uIG1hbmFnZW1lbnQuICovDQorZXh0ZXJuIHZvaWQgdlBvcnRFbnRlckNyaXRpY2FsKCB2b2lkICk7DQorZXh0ZXJuIHZvaWQgdlBvcnRFeGl0Q3JpdGljYWwoIHZvaWQgKTsNCisNCisjZGVmaW5lIHBvcnRESVNBQkxFX0lOVEVSUlVQVFMoKQkJCQkJCQlcDQorewkJCQkJCQkJCQkJCQkJCVwNCisJX19zZXRfQkFTRVBSSSggY29uZmlnTUFYX1NZU0NBTExfSU5URVJSVVBUX1BSSU9SSVRZICk7CVwNCisJX19EU0IoKTsJCQkJCQkJCQkJCQlcDQorCV9fSVNCKCk7CQkJCQkJCQkJCQkJXA0KK30NCisNCisjZGVmaW5lIHBvcnRFTkFCTEVfSU5URVJSVVBUUygpCQkJCQlfX3NldF9CQVNFUFJJKCAwICkNCisjZGVmaW5lIHBvcnRFTlRFUl9DUklUSUNBTCgpCQkJCQl2UG9ydEVudGVyQ3JpdGljYWwoKQ0KKyNkZWZpbmUgcG9ydEVYSVRfQ1JJVElDQUwoKQkJCQkJCXZQb3J0RXhpdENyaXRpY2FsKCkNCisjZGVmaW5lIHBvcnRTRVRfSU5URVJSVVBUX01BU0tfRlJPTV9JU1IoKQkJX19nZXRfQkFTRVBSSSgpOyBwb3J0RElTQUJMRV9JTlRFUlJVUFRTKCkNCisjZGVmaW5lIHBvcnRDTEVBUl9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUih4KQlfX3NldF9CQVNFUFJJKCB4ICkNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBUYXNrIGZ1bmN0aW9uIG1hY3JvcyBhcyBkZXNjcmliZWQgb24gdGhlIEZyZWVSVE9TLm9yZyBXRUIgc2l0ZS4gIFRoZXNlIGFyZQ0KK25vdCBuZWNlc3NhcnkgZm9yIHRvIHVzZSB0aGlzIHBvcnQuICBUaGV5IGFyZSBkZWZpbmVkIHNvIHRoZSBjb21tb24gZGVtbyBmaWxlcw0KKyh3aGljaCBidWlsZCB3aXRoIGFsbCB0aGUgcG9ydHMpIHdpbGwgYnVpbGQuICovDQorI2RlZmluZSBwb3J0VEFTS19GVU5DVElPTl9QUk9UTyggdkZ1bmN0aW9uLCBwdlBhcmFtZXRlcnMgKSB2b2lkIHZGdW5jdGlvbiggdm9pZCAqcHZQYXJhbWV0ZXJzICkNCisjZGVmaW5lIHBvcnRUQVNLX0ZVTkNUSU9OKCB2RnVuY3Rpb24sIHB2UGFyYW1ldGVycyApIHZvaWQgdkZ1bmN0aW9uKCB2b2lkICpwdlBhcmFtZXRlcnMgKQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZmRlZiBjb25maWdBU1NFUlQNCisJdm9pZCB2UG9ydFZhbGlkYXRlSW50ZXJydXB0UHJpb3JpdHkoIHZvaWQgKTsNCisJI2RlZmluZSBwb3J0QVNTRVJUX0lGX0lOVEVSUlVQVF9QUklPUklUWV9JTlZBTElEKCkgCXZQb3J0VmFsaWRhdGVJbnRlcnJ1cHRQcmlvcml0eSgpDQorI2VuZGlmDQorDQorLyogcG9ydE5PUCgpIGlzIG5vdCByZXF1aXJlZCBieSB0aGlzIHBvcnQuICovDQorI2RlZmluZSBwb3J0Tk9QKCkNCisNCisNCisvKiBTZXQgdGhlIHByaXZpbGVnZSBsZXZlbCB0byB1c2VyIG1vZGUgaWYgeFJ1bm5pbmdQcml2aWxlZ2VkIGlzIGZhbHNlLiAqLw0KK3ZvaWQgdlBvcnRSZXNldFByaXZpbGVnZSggQmFzZVR5cGVfdCB4UnVubmluZ1ByaXZpbGVnZWQgKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKiBTdXBwcmVzcyB3YXJuaW5ncyB0aGF0IGFyZSBnZW5lcmF0ZWQgYnkgdGhlIElBUiB0b29scywgYnV0IGNhbm5vdCBiZSBmaXhlZCBpbg0KK3RoZSBzb3VyY2UgY29kZSBiZWNhdXNlIHRvIGRvIHNvIHdvdWxkIGNhdXNlIG90aGVyIGNvbXBpbGVycyB0byBnZW5lcmF0ZQ0KK3dhcm5pbmdzLiAqLw0KKyNwcmFnbWEgZGlhZ19zdXBwcmVzcz1QZTE5MQ0KKyNwcmFnbWEgZGlhZ19zdXBwcmVzcz1QYTA4Mg0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYgLyogUE9SVE1BQ1JPX0ggKi8NCisNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0LmMKaW5kZXggZjhiOWZjNy4uOTU5NjljZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRhc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRhc20ucwppbmRleCBlOTUyZGY4Li4zY2E1M2VjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0YXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ003L3IwcDEvcG9ydGFzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8RnJlZVJUT1NDb25maWcuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCmluZGV4IGJmOGQxOTguLmIyMTJkMWEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKaW5kZXggMTc4ZjdmZC4uN2JjZjIzYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnRBU00ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5zCmluZGV4IDcwNGQ5OWIuLjZlNmFhMzYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5zCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydEFTTS5zCkBAIC0xLDU2ICsxLDMwIEBACi0vKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi0gICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLSAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLSAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi0gICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi0gICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi0gICAgY29udGFjdCBkZXRhaWxzLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLSAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotKi8NCis7LyoNCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FSTV9DUnhfTm9fR0lDL3BvcnRtYWNyby5oCmluZGV4IGJkMTYzYWMuLjg4MDkxYWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVJNX0NSeF9Ob19HSUMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BUk1fQ1J4X05vX0dJQy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0LmMKaW5kZXggMDZlNGI3Yy4uOWJhNTU4OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKaW5kZXggY2JmNjZjYy4uNTVhNTcyOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qDQogQ2hhbmdlcyBmcm9tIFYxLjIuMw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnRtYWNyby5zOTAgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FUTWVnYTMyMy9wb3J0bWFjcm8uczkwCmluZGV4IDljM2I4YzUuLjE5ZWM2NjEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVRNZWdhMzIzL3BvcnRtYWNyby5zOTAKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVE1lZ2EzMjMvcG9ydG1hY3JvLnM5MApAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KICNpbmNsdWRlIDxpb20zMjMuaD4NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0FWUjMyX1VDMy9wb3J0LmMKaW5kZXggMGU3NTY5YS4uNzVjMDIzMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVZSMzJfVUMzL3BvcnQuYwpAQCAtMTMsNzMgKzEzLDMyIEBACiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQogDQogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQVZSMzJfVUMzL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKaW5kZXggNDVlZjg4MS4uZTRhYTQ5OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BVlIzMl9VQzMvcG9ydG1hY3JvLmgKQEAgLTEzLDczICsxMywzMiBAQAogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KIA0KIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9JU1JfU3VwcG9ydC5oCmluZGV4IGJiNTk1M2EuLmQ0YWM1YmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvSVNSX1N1cHBvcnQuaApAQCAtMSw1NiArMSwzMSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KIAlFWFRFUk4gcHhDdXJyZW50VENCDQogCUVYVEVSTiB1bENyaXRpY2FsTmVzdGluZw0KIA0KQEAgLTYwLDM4ICszNSwzOCBAQAogDQogcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuIAkJCQkJDQorCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4NCiAJU1RNREIJU1AhLCB7UjB9DQogDQotCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuIAkJCQkJDQorCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuDQogCVNUTURCCVNQLCB7U1B9Xg0KIAlOT1ANCiAJU1VCCQlTUCwgU1AsICM0DQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLiAJCQkJCQkNCisJOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4NCiAJU1RNREIJUjAhLCB7TFJ9DQogDQotCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLiAJCQkJDQorCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLg0KIAlNT1YJCUxSLCBSMA0KIA0KLQk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4gCQkJDQorCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLg0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJDQorCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlTVE1EQglMUiwge1IwLUxSfV4NCiAJTk9QDQogCVNVQgkJTFIsIExSLCAjNjANCiANCi0JOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkNCisJOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCU1SUwkJUjAsIFNQU1INCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZyANCisJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxEUgkJUjAsIFtSMF0NCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLiAJCQkJCQkNCisJOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlTVFIJCUxSLCBbUjBdDQpAQCAtMTAxLDMwICs3NiwzMCBAQAogDQogcG9ydFJFU1RPUkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlMRFIJCUxSLCBbUjBdDQogDQotCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLiAJDQotCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4gCQkJCQkNCisJOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suDQorCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4NCiAJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxETUZECUxSISwge1IxfQ0KIAlTVFIJCVIxLCBbUjBdDQogDQotCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suDQogCUxETUZECUxSISwge1IwfQ0KIAlNU1IJCVNQU1JfY3hzZiwgUjANCiANCi0JOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLiAJCQkJDQorCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4NCiAJTERNRkQJTFIsIHtSMC1SMTR9Xg0KIAlOT1ANCiANCi0JOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4gCQkJCQkJCQkJDQorCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuDQogCUxEUgkJTFIsIFtMUiwgIys2MF0NCiANCi0JOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlIAkNCi0JOyBjb3JyZWN0IGFkZHJlc3MuIAkJCQkJCQkJCQkJCQ0KKwk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUNCisJOyBjb3JyZWN0IGFkZHJlc3MuDQogCVNVQlMJUEMsIExSLCAjNA0KIA0KIAlFTkRNDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydC5jCmluZGV4IGM4YzQ2N2EuLjZhZjE1NTEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQXRtZWwgQVJNNyBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU03UzY0L3BvcnRhc20uczc5IGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydGFzbS5zNzkKaW5kZXggNzM4ZWQ1NS4uMGI2NGY5YyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydGFzbS5zNzkKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydGFzbS5zNzkKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiAJCVJTRUcgSUNPREU6Q09ERQ0KIAkJQ09ERTMyDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTdTNjQvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0bWFjcm8uaAppbmRleCAzMWFjNDEyLi4wZDNlMzRjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNN1M2NC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU05WEUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0LmMKaW5kZXggNDk1MjE1MC4uNjA5YTFlOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQXRtZWwgQVJNNyBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU05WEUvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0F0bWVsU0FNOVhFL3BvcnRtYWNyby5oCmluZGV4IDdhOTI1YzAuLjkyNmI0YzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvQXRtZWxTQU05WEUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9BdG1lbFNBTTlYRS9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9JU1JfU3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL0lTUl9TdXBwb3J0LmgKaW5kZXggYmI1OTUzYS4uZDRhYzViZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL0lTUl9TdXBwb3J0LmgKQEAgLTEsNTYgKzEsMzEgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCisNCiAJRVhURVJOIHB4Q3VycmVudFRDQg0KIAlFWFRFUk4gdWxDcml0aWNhbE5lc3RpbmcNCiANCkBAIC02MCwzOCArMzUsMzggQEAKIA0KIHBvcnRTQVZFX0NPTlRFWFQgTUFDUk8NCiANCi0JOyBQdXNoIFIwIGFzIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHJlZ2lzdGVyLiAJCQkJCQ0KKwk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuDQogCVNUTURCCVNQISwge1IwfQ0KIA0KLQk7IFNldCBSMCB0byBwb2ludCB0byB0aGUgdGFzayBzdGFjayBwb2ludGVyLiAJCQkJCQ0KKwk7IFNldCBSMCB0byBwb2ludCB0byB0aGUgdGFzayBzdGFjayBwb2ludGVyLg0KIAlTVE1EQglTUCwge1NQfV4NCiAJTk9QDQogCVNVQgkJU1AsIFNQLCAjNA0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4gCQkJCQkJDQorCTsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2suDQogCVNUTURCCVIwISwge0xSfQ0KIA0KLQk7IE5vdyB3ZSBoYXZlIHNhdmVkIExSIHdlIGNhbiB1c2UgaXQgaW5zdGVhZCBvZiBSMC4gCQkJCQ0KKwk7IE5vdyB3ZSBoYXZlIHNhdmVkIExSIHdlIGNhbiB1c2UgaXQgaW5zdGVhZCBvZiBSMC4NCiAJTU9WCQlMUiwgUjANCiANCi0JOyBQb3AgUjAgc28gd2UgY2FuIHNhdmUgaXQgb250byB0aGUgc3lzdGVtIG1vZGUgc3RhY2suIAkJCQ0KKwk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4NCiAJTERNSUEJU1AhLCB7UjB9DQogDQotCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLiAJCQ0KKwk7IFB1c2ggYWxsIHRoZSBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgb250byB0aGUgdGFzayBzdGFjay4NCiAJU1RNREIJTFIsIHtSMC1MUn1eDQogCU5PUA0KIAlTVUIJCUxSLCBMUiwgIzYwDQogDQotCTsgUHVzaCB0aGUgU1BTUiBvbnRvIHRoZSB0YXNrIHN0YWNrLiAJCQkJCQkJDQorCTsgUHVzaCB0aGUgU1BTUiBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlNUlMJCVIwLCBTUFNSDQogCVNUTURCCUxSISwge1IwfQ0KIA0KLQlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcgDQorCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZw0KIAlMRFIJCVIwLCBbUjBdDQogCVNUTURCCUxSISwge1IwfQ0KIA0KLQk7IFN0b3JlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGZvciB0aGUgdGFzay4gCQkJCQkJDQorCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLg0KIAlMRFIJCVIxLCA9cHhDdXJyZW50VENCDQogCUxEUgkJUjAsIFtSMV0NCiAJU1RSCQlMUiwgW1IwXQ0KQEAgLTEwMSwzMCArNzYsMzAgQEAKIA0KIHBvcnRSRVNUT1JFX0NPTlRFWFQgTUFDUk8NCiANCi0JOyBTZXQgdGhlIExSIHRvIHRoZSB0YXNrIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBTZXQgdGhlIExSIHRvIHRoZSB0YXNrIHN0YWNrLg0KIAlMRFIJCVIxLCA9cHhDdXJyZW50VENCDQogCUxEUgkJUjAsIFtSMV0NCiAJTERSCQlMUiwgW1IwXQ0KIA0KLQk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uIHRoZSBzdGFjay4gCQ0KLQk7IExvYWQgaXQgaW50byB0aGUgdWxDcml0aWNhbE5lc3RpbmcgdmFyaWFibGUuIAkJCQkJDQorCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLg0KKwk7IExvYWQgaXQgaW50byB0aGUgdWxDcml0aWNhbE5lc3RpbmcgdmFyaWFibGUuDQogCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZw0KIAlMRE1GRAlMUiEsIHtSMX0NCiAJU1RSCQlSMSwgW1IwXQ0KIA0KLQk7IEdldCB0aGUgU1BTUiBmcm9tIHRoZSBzdGFjay4gCQkJCQkJCQkJDQorCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLg0KIAlMRE1GRAlMUiEsIHtSMH0NCiAJTVNSCQlTUFNSX2N4c2YsIFIwDQogDQotCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4gCQkJCQ0KKwk7IFJlc3RvcmUgYWxsIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBmb3IgdGhlIHRhc2suDQogCUxETUZECUxSLCB7UjAtUjE0fV4NCiAJTk9QDQogDQotCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuIAkJCQkJCQkJCQ0KKwk7IFJlc3RvcmUgdGhlIHJldHVybiBhZGRyZXNzLg0KIAlMRFIJCUxSLCBbTFIsICMrNjBdDQogDQotCTsgQW5kIHJldHVybiAtIGNvcnJlY3RpbmcgdGhlIG9mZnNldCBpbiB0aGUgTFIgdG8gb2J0YWluIHRoZSAJDQotCTsgY29ycmVjdCBhZGRyZXNzLiAJCQkJCQkJCQkJCQkNCisJOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlDQorCTsgY29ycmVjdCBhZGRyZXNzLg0KIAlTVUJTCVBDLCBMUiwgIzQNCiANCiAJRU5ETQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydC5jCmluZGV4IDk5NjMyMzYuLjk3OTA4N2UgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBQaGlsaXBzIEFSTTcgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydGFzbS5zNzkgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydGFzbS5zNzkKaW5kZXggNDY3YTdhNy4uZDZmZjI5OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnRhc20uczc5CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0YXNtLnM3OQpAQCAtMSw2MiArMSwzNyBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KIAkJUlNFRyBJQ09ERTpDT0RFDQogCQlDT0RFMzINCiANCiAJRVhURVJOIHZUYXNrU3dpdGNoQ29udGV4dA0KIAlFWFRFUk4gdlBvcnRQcmVlbXB0aXZlVGljaw0KLQkNCisNCiAJUFVCTElDIHZQb3J0UHJlZW1wdGl2ZVRpY2tFbnRyeQ0KIAlQVUJMSUMgdlBvcnRZaWVsZFByb2Nlc3Nvcg0KIAlQVUJMSUMgdlBvcnRTdGFydEZpcnN0VGFzaw0KQEAgLTc4LDcgKzUzLDcgQEAKIAlBREQJCUxSLCBMUiwgIzQJCQk7IEFkZCA0IHRvIHRoZSBMUiB0byBtYWtlIHRoZSBMUiBhcHBlYXIgZXhhY3RseQ0KIAkJCQkJCQkJOyBhcyBpZiB0aGUgY29udGV4dCB3YXMgc2F2ZWQgZHVyaW5nIGFuZCBJUlENCiAJCQkJCQkJCTsgaGFuZGxlci4NCi0JCQkJCQkJCQ0KKw0KIAlwb3J0U0FWRV9DT05URVhUCQkJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRhc2suLi4NCiAJTERSIFIwLCA9dlRhc2tTd2l0Y2hDb250ZXh0CTsgYmVmb3JlIHNlbGVjdGluZyB0aGUgbmV4dCB0YXNrIHRvIGV4ZWN1dGUuDQogCW1vdiAgICAgbHIsIHBjDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9MUEMyMDAwL3BvcnRtYWNyby5oCmluZGV4IDk2OTE4ZTEuLmQ0MTA2ZTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTFBDMjAwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL0xQQzIwMDAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0LmMKaW5kZXggYWVmMTY2MS4uMjIxNDA3NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRhc20uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRhc20uaAppbmRleCAzM2E1ZmUwLi5mZTcwMDczIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0YXNtLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydGFzbS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRBU01fSA0KICNkZWZpbmUgUE9SVEFTTV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzAvcG9ydGV4dC5zNDMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0ZXh0LnM0MwppbmRleCBlOWI0Nzk1Li5mZjIwNWQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0ZXh0LnM0MworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0ZXh0LnM0MwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgInBvcnRhc20uaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRtYWNyby5oCmluZGV4IDNjMmNlZTcuLmNjNjMyMjMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9kYXRhX21vZGVsLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvZGF0YV9tb2RlbC5oCmluZGV4IDM1OWU2ZGIuLmM0ODYwZTggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9kYXRhX21vZGVsLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL2RhdGFfbW9kZWwuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBEQVRBX01PREVMX0gNCiAjZGVmaW5lIERBVEFfTU9ERUxfSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydC5jCmluZGV4IDIzMTEwNmEuLjNlN2M3MmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU2NoZWR1bGVyIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPUy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0ZXh0LnM0MyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0ZXh0LnM0MwppbmRleCA1YWFiM2MwLi42OTk5YjA0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydGV4dC5zNDMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnRleHQuczQzCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiAjaW5jbHVkZSAibXNwNDMwLmgiDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogI2luY2x1ZGUgImRhdGFfbW9kZWwuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL01TUDQzMFgvcG9ydG1hY3JvLmgKaW5kZXggMmI0ZjJkMy4uMTczZjZhNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9NU1A0MzBYL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvTVNQNDMwWC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvSVNSX1N1cHBvcnQuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9JU1JfU3VwcG9ydC5oCmluZGV4IGUxNzhkYWEuLjdjZTZkZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9JU1JfU3VwcG9ydC5oCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KQEAgLTYyLDcgKzM2LDcgQEAKIA0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiA7ICAgcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KLTsgICBTYXZlcyB0aGUgY29udGV4dCBvZiB0aGUgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycywgQ1MgYW5kIEVTIChvbmx5IGluIGZhciANCis7ICAgU2F2ZXMgdGhlIGNvbnRleHQgb2YgdGhlIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMsIENTIGFuZCBFUyAob25seSBpbiBmYXINCiA7CW1lbW9yeSBtb2RlKSByZWdpc3RlcnMgdGhlIHVzQ3JpdGljYWxOZXN0aW5nIFZhbHVlIGFuZCB0aGUgU3RhY2sgUG9pbnRlcg0KIDsgICBvZiB0aGUgYWN0aXZlIFRhc2sgb250byB0aGUgdGFzayBzdGFjaw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCkBAIC03NywxMSArNTEsMTEgQEAKIAlQVVNIICAgICAgREUgICAgICAgICAgICAgICAgICAgIDsgU2F2ZSB0aGUgcmVtYWluaW5nIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuDQogCVBVU0ggICAgICBCQw0KIAlNT1ZXICAgICAgQVgsIHVzQ3JpdGljYWxOZXN0aW5nIDsgU2F2ZSB0aGUgdXNDcml0aWNhbE5lc3RpbmcgdmFsdWUuDQotCVBVU0ggICAgICBBWAkNCisJUFVTSCAgICAgIEFYDQogCU1PVlcgICAgICBBWCwgcHhDdXJyZW50VENCIAkgICAgOyBTYXZlIHRoZSBTdGFjayBwb2ludGVyLg0KLQlNT1ZXICAgICAgSEwsIEFYCQkJCQkNCi0JTU9WVyAgICAgIEFYLCBTUAkJCQkJDQotCU1PVlcgICAgICBbSExdLCBBWAkJCQkJDQorCU1PVlcgICAgICBITCwgQVgNCisJTU9WVyAgICAgIEFYLCBTUA0KKwlNT1ZXICAgICAgW0hMXSwgQVgNCiAJRU5ETQ0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnQuYwppbmRleCBiOTY3ZGM3Li4yNGU1YjI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydGFzbS5zODcgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydGFzbS5zODcKaW5kZXggZDMwZWYzYS4uZjc0ZDM4OSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnRhc20uczg3CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0YXNtLnM4NwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KICNpbmNsdWRlICJJU1JfU3VwcG9ydC5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUkw3OC9wb3J0bWFjcm8uaAppbmRleCA1NjMyYmQ0Li5hNTY2ZGI0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JMNzgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9STDc4L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0LmMKaW5kZXggNDU5MzlhZS4uOGY5ZjRhNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU0gyQSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydF9hc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydF9hc20ucwppbmRleCA5ODAzZjk3Li4yYjY2YTgxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnRfYXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0X2FzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiUHJpb3JpdHlEZWZpbml0aW9ucy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYMTAwL3BvcnRtYWNyby5oCmluZGV4IDNkODIzMDcuLjBkNDcwMjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlgxMDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDEwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0LmMKaW5kZXggYjY2NTIzZi4uNTIzOWMxZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU0gyQSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydF9hc20ucyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydF9hc20ucwppbmRleCA5MTcwY2FmLi44ZGZlNDQwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnRfYXNtLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0X2FzbS5zCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiUHJpb3JpdHlEZWZpbml0aW9ucy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYNjAwL3BvcnRtYWNyby5oCmluZGV4IDk3NTJhYzIuLmJiNDBmY2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlg2MDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWDYwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydC5jCmluZGV4IDJlYTc5ZjcuLmFiZmUwN2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBTSDJBIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnRfYXNtLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydF9hc20ucwppbmRleCAwM2FmYzJmLi5mYWFkNWNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydF9hc20ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydF9hc20ucwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIlByaW9yaXR5RGVmaW5pdGlvbnMuaCINCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1JYdjIvcG9ydG1hY3JvLmgKaW5kZXggNWM3ZDcyYS4uNDZlMWMzYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9SWHYyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvUlh2Mi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9JU1JfU3VwcG9ydC5oCmluZGV4IGJiNTk1M2EuLmQ0YWM1YmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvSVNSX1N1cHBvcnQuaApAQCAtMSw1NiArMSwzMSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KKw0KIAlFWFRFUk4gcHhDdXJyZW50VENCDQogCUVYVEVSTiB1bENyaXRpY2FsTmVzdGluZw0KIA0KQEAgLTYwLDM4ICszNSwzOCBAQAogDQogcG9ydFNBVkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuIAkJCQkJDQorCTsgUHVzaCBSMCBhcyB3ZSBhcmUgZ29pbmcgdG8gdXNlIHRoZSByZWdpc3Rlci4NCiAJU1RNREIJU1AhLCB7UjB9DQogDQotCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuIAkJCQkJDQorCTsgU2V0IFIwIHRvIHBvaW50IHRvIHRoZSB0YXNrIHN0YWNrIHBvaW50ZXIuDQogCVNUTURCCVNQLCB7U1B9Xg0KIAlOT1ANCiAJU1VCCQlTUCwgU1AsICM0DQogCUxETUlBCVNQISwge1IwfQ0KIA0KLQk7IFB1c2ggdGhlIHJldHVybiBhZGRyZXNzIG9udG8gdGhlIHN0YWNrLiAJCQkJCQkNCisJOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4NCiAJU1RNREIJUjAhLCB7TFJ9DQogDQotCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLiAJCQkJDQorCTsgTm93IHdlIGhhdmUgc2F2ZWQgTFIgd2UgY2FuIHVzZSBpdCBpbnN0ZWFkIG9mIFIwLg0KIAlNT1YJCUxSLCBSMA0KIA0KLQk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4gCQkJDQorCTsgUG9wIFIwIHNvIHdlIGNhbiBzYXZlIGl0IG9udG8gdGhlIHN5c3RlbSBtb2RlIHN0YWNrLg0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIGFsbCB0aGUgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJDQorCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlTVE1EQglMUiwge1IwLUxSfV4NCiAJTk9QDQogCVNVQgkJTFIsIExSLCAjNjANCiANCi0JOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkNCisJOyBQdXNoIHRoZSBTUFNSIG9udG8gdGhlIHRhc2sgc3RhY2suDQogCU1SUwkJUjAsIFNQU1INCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZyANCisJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxEUgkJUjAsIFtSMF0NCiAJU1RNREIJTFIhLCB7UjB9DQogDQotCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLiAJCQkJCQkNCisJOyBTdG9yZSB0aGUgbmV3IHRvcCBvZiBzdGFjayBmb3IgdGhlIHRhc2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlTVFIJCUxSLCBbUjBdDQpAQCAtMTAxLDMwICs3NiwzMCBAQAogDQogcG9ydFJFU1RPUkVfQ09OVEVYVCBNQUNSTw0KIA0KLQk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suIAkJCQkJCQkJCQ0KKwk7IFNldCB0aGUgTFIgdG8gdGhlIHRhc2sgc3RhY2suDQogCUxEUgkJUjEsID1weEN1cnJlbnRUQ0INCiAJTERSCQlSMCwgW1IxXQ0KIAlMRFIJCUxSLCBbUjBdDQogDQotCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLiAJDQotCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4gCQkJCQkNCisJOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbiB0aGUgc3RhY2suDQorCTsgTG9hZCBpdCBpbnRvIHRoZSB1bENyaXRpY2FsTmVzdGluZyB2YXJpYWJsZS4NCiAJTERSCQlSMCwgPXVsQ3JpdGljYWxOZXN0aW5nDQogCUxETUZECUxSISwge1IxfQ0KIAlTVFIJCVIxLCBbUjBdDQogDQotCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBHZXQgdGhlIFNQU1IgZnJvbSB0aGUgc3RhY2suDQogCUxETUZECUxSISwge1IwfQ0KIAlNU1IJCVNQU1JfY3hzZiwgUjANCiANCi0JOyBSZXN0b3JlIGFsbCBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgZm9yIHRoZSB0YXNrLiAJCQkJDQorCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4NCiAJTERNRkQJTFIsIHtSMC1SMTR9Xg0KIAlOT1ANCiANCi0JOyBSZXN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcy4gCQkJCQkJCQkJDQorCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuDQogCUxEUgkJTFIsIFtMUiwgIys2MF0NCiANCi0JOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlIAkNCi0JOyBjb3JyZWN0IGFkZHJlc3MuIAkJCQkJCQkJCQkJCQ0KKwk7IEFuZCByZXR1cm4gLSBjb3JyZWN0aW5nIHRoZSBvZmZzZXQgaW4gdGhlIExSIHRvIG9idGFpbiB0aGUNCisJOyBjb3JyZWN0IGFkZHJlc3MuDQogCVNVQlMJUEMsIExSLCAjNA0KIA0KIAlFTkRNDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydC5jCmluZGV4IGJmM2U0MzMuLmFiNTIwNmEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU1QgU1RSNzF4IEFSTTcNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0YXNtLnM3OSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRhc20uczc5CmluZGV4IDcwYTgwZGQuLjBlMmFmZDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRhc20uczc5CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzF4L3BvcnRhc20uczc5CkBAIC0xLDU2ICsxLDMxIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQorDQogCQlSU0VHIElDT0RFOkNPREUNCiAJCUNPREUzMg0KIA0KQEAgLTc3LDcgKzUyLDcgQEAKIAlBREQJCUxSLCBMUiwgIzQJCQk7IEFkZCA0IHRvIHRoZSBMUiB0byBtYWtlIHRoZSBMUiBhcHBlYXIgZXhhY3RseQ0KIAkJCQkJCQkJOyBhcyBpZiB0aGUgY29udGV4dCB3YXMgc2F2ZWQgZHVyaW5nIGFuZCBJUlENCiAJCQkJCQkJCTsgaGFuZGxlci4NCi0JCQkJCQkJCQ0KKw0KIAlwb3J0U0FWRV9DT05URVhUCQkJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRhc2suLi4NCiAJTERSIFIwLCA9dlRhc2tTd2l0Y2hDb250ZXh0CTsgYmVmb3JlIHNlbGVjdGluZyB0aGUgbmV4dCB0YXNrIHRvIGV4ZWN1dGUuDQogCW1vdiAgICAgbHIsIHBjDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3MXgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0bWFjcm8uaAppbmRleCAzZDMzZDRhLi40NDg3MGEwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjcxeC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9JU1JfU3VwcG9ydC5oCmluZGV4IDJiODc3NGEuLmQ0YWM1YmYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvSVNSX1N1cHBvcnQuaApAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJRVhURVJOIHB4Q3VycmVudFRDQg0KIAlFWFRFUk4gdWxDcml0aWNhbE5lc3RpbmcNCkBAIC02MSwzOCArMzUsMzggQEAKIA0KIHBvcnRTQVZFX0NPTlRFWFQgTUFDUk8NCiANCi0JOyBQdXNoIFIwIGFzIHdlIGFyZSBnb2luZyB0byB1c2UgdGhlIHJlZ2lzdGVyLiAJCQkJCQ0KKwk7IFB1c2ggUjAgYXMgd2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgcmVnaXN0ZXIuDQogCVNUTURCCVNQISwge1IwfQ0KIA0KLQk7IFNldCBSMCB0byBwb2ludCB0byB0aGUgdGFzayBzdGFjayBwb2ludGVyLiAJCQkJCQ0KKwk7IFNldCBSMCB0byBwb2ludCB0byB0aGUgdGFzayBzdGFjayBwb2ludGVyLg0KIAlTVE1EQglTUCwge1NQfV4NCiAJTk9QDQogCVNVQgkJU1AsIFNQLCAjNA0KIAlMRE1JQQlTUCEsIHtSMH0NCiANCi0JOyBQdXNoIHRoZSByZXR1cm4gYWRkcmVzcyBvbnRvIHRoZSBzdGFjay4gCQkJCQkJDQorCTsgUHVzaCB0aGUgcmV0dXJuIGFkZHJlc3Mgb250byB0aGUgc3RhY2suDQogCVNUTURCCVIwISwge0xSfQ0KIA0KLQk7IE5vdyB3ZSBoYXZlIHNhdmVkIExSIHdlIGNhbiB1c2UgaXQgaW5zdGVhZCBvZiBSMC4gCQkJCQ0KKwk7IE5vdyB3ZSBoYXZlIHNhdmVkIExSIHdlIGNhbiB1c2UgaXQgaW5zdGVhZCBvZiBSMC4NCiAJTU9WCQlMUiwgUjANCiANCi0JOyBQb3AgUjAgc28gd2UgY2FuIHNhdmUgaXQgb250byB0aGUgc3lzdGVtIG1vZGUgc3RhY2suIAkJCQ0KKwk7IFBvcCBSMCBzbyB3ZSBjYW4gc2F2ZSBpdCBvbnRvIHRoZSBzeXN0ZW0gbW9kZSBzdGFjay4NCiAJTERNSUEJU1AhLCB7UjB9DQogDQotCTsgUHVzaCBhbGwgdGhlIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBvbnRvIHRoZSB0YXNrIHN0YWNrLiAJCQ0KKwk7IFB1c2ggYWxsIHRoZSBzeXN0ZW0gbW9kZSByZWdpc3RlcnMgb250byB0aGUgdGFzayBzdGFjay4NCiAJU1RNREIJTFIsIHtSMC1MUn1eDQogCU5PUA0KIAlTVUIJCUxSLCBMUiwgIzYwDQogDQotCTsgUHVzaCB0aGUgU1BTUiBvbnRvIHRoZSB0YXNrIHN0YWNrLiAJCQkJCQkJDQorCTsgUHVzaCB0aGUgU1BTUiBvbnRvIHRoZSB0YXNrIHN0YWNrLg0KIAlNUlMJCVIwLCBTUFNSDQogCVNUTURCCUxSISwge1IwfQ0KIA0KLQlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcgDQorCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZw0KIAlMRFIJCVIwLCBbUjBdDQogCVNUTURCCUxSISwge1IwfQ0KIA0KLQk7IFN0b3JlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGZvciB0aGUgdGFzay4gCQkJCQkJDQorCTsgU3RvcmUgdGhlIG5ldyB0b3Agb2Ygc3RhY2sgZm9yIHRoZSB0YXNrLg0KIAlMRFIJCVIxLCA9cHhDdXJyZW50VENCDQogCUxEUgkJUjAsIFtSMV0NCiAJU1RSCQlMUiwgW1IwXQ0KQEAgLTEwMiwzMCArNzYsMzAgQEAKIA0KIHBvcnRSRVNUT1JFX0NPTlRFWFQgTUFDUk8NCiANCi0JOyBTZXQgdGhlIExSIHRvIHRoZSB0YXNrIHN0YWNrLiAJCQkJCQkJCQkNCisJOyBTZXQgdGhlIExSIHRvIHRoZSB0YXNrIHN0YWNrLg0KIAlMRFIJCVIxLCA9cHhDdXJyZW50VENCDQogCUxEUgkJUjAsIFtSMV0NCiAJTERSCQlMUiwgW1IwXQ0KIA0KLQk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uIHRoZSBzdGFjay4gCQ0KLQk7IExvYWQgaXQgaW50byB0aGUgdWxDcml0aWNhbE5lc3RpbmcgdmFyaWFibGUuIAkJCQkJDQorCTsgVGhlIGNyaXRpY2FsIG5lc3RpbmcgZGVwdGggaXMgdGhlIGZpcnN0IGl0ZW0gb24gdGhlIHN0YWNrLg0KKwk7IExvYWQgaXQgaW50byB0aGUgdWxDcml0aWNhbE5lc3RpbmcgdmFyaWFibGUuDQogCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZw0KIAlMRE1GRAlMUiEsIHtSMX0NCiAJU1RSCQlSMSwgW1IwXQ0KIA0KLQk7IEdldCB0aGUgU1BTUiBmcm9tIHRoZSBzdGFjay4gCQkJCQkJCQkJDQorCTsgR2V0IHRoZSBTUFNSIGZyb20gdGhlIHN0YWNrLg0KIAlMRE1GRAlMUiEsIHtSMH0NCiAJTVNSCQlTUFNSX2N4c2YsIFIwDQogDQotCTsgUmVzdG9yZSBhbGwgc3lzdGVtIG1vZGUgcmVnaXN0ZXJzIGZvciB0aGUgdGFzay4gCQkJCQ0KKwk7IFJlc3RvcmUgYWxsIHN5c3RlbSBtb2RlIHJlZ2lzdGVycyBmb3IgdGhlIHRhc2suDQogCUxETUZECUxSLCB7UjAtUjE0fV4NCiAJTk9QDQogDQotCTsgUmVzdG9yZSB0aGUgcmV0dXJuIGFkZHJlc3MuIAkJCQkJCQkJCQ0KKwk7IFJlc3RvcmUgdGhlIHJldHVybiBhZGRyZXNzLg0KIAlMRFIJCUxSLCBbTFIsICMrNjBdDQogDQotCTsgQW5kIHJldHVybiAtIGNvcnJlY3RpbmcgdGhlIG9mZnNldCBpbiB0aGUgTFIgdG8gb2J0YWluIHRoZSAJDQotCTsgY29ycmVjdCBhZGRyZXNzLiAJCQkJCQkJCQkJCQkNCisJOyBBbmQgcmV0dXJuIC0gY29ycmVjdGluZyB0aGUgb2Zmc2V0IGluIHRoZSBMUiB0byBvYnRhaW4gdGhlDQorCTsgY29ycmVjdCBhZGRyZXNzLg0KIAlTVUJTCVBDLCBMUiwgIzQNCiANCiAJRU5ETQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSNzV4L3BvcnQuYwppbmRleCBjZGY5YzRmLi5mNDRkNTY4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFNUIFNUUjc1eCBBUk03DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvcG9ydGFzbS5zNzkgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0YXNtLnM3OQppbmRleCAxYmIxMjgzLi5lM2IxOWJmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0YXNtLnM3OQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0YXNtLnM3OQpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJUlNFRyBJQ09ERTpDT0RFDQogCUNPREUzMg0KQEAgLTc3LDcgKzUxLDcgQEAKIAlBREQJCUxSLCBMUiwgIzQJCQk7IEFkZCA0IHRvIHRoZSBMUiB0byBtYWtlIHRoZSBMUiBhcHBlYXIgZXhhY3RseQ0KIAkJCQkJCQkJOyBhcyBpZiB0aGUgY29udGV4dCB3YXMgc2F2ZWQgZHVyaW5nIGFuZCBJUlENCiAJCQkJCQkJCTsgaGFuZGxlci4NCi0JCQkJCQkJCQ0KKw0KIAlwb3J0U0FWRV9DT05URVhUCQkJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRhc2suLi4NCiAJTERSIFIwLCA9dlRhc2tTd2l0Y2hDb250ZXh0CTsgYmVmb3JlIHNlbGVjdGluZyB0aGUgbmV4dCB0YXNrIHRvIGV4ZWN1dGUuDQogCW1vdiAgICAgbHIsIHBjDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI3NXgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0bWFjcm8uaAppbmRleCA1ZjhiNjljLi43NDJhZWNmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjc1eC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9JU1JfU3VwcG9ydC5oCmluZGV4IGFmNWY0N2IuLmJhNjhjYzggMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvSVNSX1N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCUVYVEVSTiBweEN1cnJlbnRUQ0INCiAJRVhURVJOIHVsQ3JpdGljYWxOZXN0aW5nDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydC5jCmluZGV4IDdlNTlhNzYuLmVkZjhmMDIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU1QgU1RSOTF4IEFSTTkNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0YXNtLnM3OSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRhc20uczc5CmluZGV4IGJlMTQwMjAuLjFhMmY4N2IgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRhc20uczc5CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvU1RSOTF4L3BvcnRhc20uczc5CkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAJCVJTRUcgSUNPREU6Q09ERQ0KIAkJQ09ERTMyDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9TVFI5MXgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0bWFjcm8uaAppbmRleCAyOGRkMWNiLi44OTZkODgyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1NUUjkxeC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9JU1JfU3VwcG9ydC5oCmluZGV4IDJkMDRlMTYuLmI0OWMxMDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL0lTUl9TdXBwb3J0LmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvSVNSX1N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogCUVYVEVSTiBweEN1cnJlbnRUQ0INCiAJRVhURVJOIHVzQ3JpdGljYWxOZXN0aW5nDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydC5jCmluZGV4IDM3MmEwN2YuLjE3Yzg3ZTQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlIDxzdGRsaWIuaD4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0YXNtLnM4NSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc20uczg1CmluZGV4IDQ2OWM3MmIuLjYyNDFkM2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc20uczg1CisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc20uczg1CkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIDsgTm90ZTogU2VsZWN0IHRoZSBjb3JyZWN0IGluY2x1ZGUgZmlsZXMgZm9yIHRoZSBkZXZpY2UgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIwOSw3ICsxODMsNyBAQAogOyAgIENhbGw6ICAgQ0FMTCAgICB2UG9ydFN0YXJ0DQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgUlNFRyBDT0RFOkNPREUNCiB2UG9ydFN0YXJ0Og0KICAgICBwb3J0UkVTVE9SRV9DT05URVhUCSAgICAgICAgICAgICAgICAgICAgOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHdoaWNoZXZlciB0YXNrIHRoZSAuLi4NCkBAIC0yNjcsNyArMjQxLDcgQEAKIDsgICBDYWxsOiAgIElTUg0KIDsNCiA7ICAgT3V0cHV0OiBOT05FDQotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogI2lmIGNvbmZpZ1VTRV9QUkVFTVBUSU9OID09IDEgICAgICAgICAgICAgICA7IHVzZSBwcmVlbXB0aXZlIGtlcm5lbCBtb2RlDQogDQogTURfSU5UVE0wRVEwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fRngzLnM4NSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fRngzLnM4NQppbmRleCAxYjQwNjM2Li5mZDZlZWQ0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0YXNtX0Z4My5zODUKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9GeDMuczg1CkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIDsgTm90ZTogU2VsZWN0IHRoZSBjb3JyZWN0IGluY2x1ZGUgZmlsZXMgZm9yIHRoZSBkZXZpY2UgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIxOCw3ICsxOTIsNyBAQAogOyAgIENhbGw6ICAgQ0FMTCAgICB2UG9ydFN0YXJ0DQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgUlNFRyBDT0RFOkNPREUNCiB2UG9ydFN0YXJ0Og0KICAgICBwb3J0UkVTVE9SRV9DT05URVhUCSAgICAgICAgICAgICAgICAgICAgOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHdoaWNoZXZlciB0YXNrIHRoZSAuLi4NCkBAIC0yNzYsNyArMjUwLDcgQEAKIDsgICBDYWxsOiAgIElTUg0KIDsNCiA7ICAgT3V0cHV0OiBOT05FDQotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogI2lmIGNvbmZpZ1VTRV9QUkVFTVBUSU9OID09IDEgICAgICAgICAgICAgICA7IHVzZSBwcmVlbXB0aXZlIGtlcm5lbCBtb2RlDQogDQogTURfSU5UVE0wRVEwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fSHgyLnM4NSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRhc21fSHgyLnM4NQppbmRleCAxNTQwMzg1Li5hOGQxMzU4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvSUFSL1Y4NTBFUy9wb3J0YXNtX0h4Mi5zODUKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydGFzbV9IeDIuczg1CkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIDsgTm90ZTogU2VsZWN0IHRoZSBjb3JyZWN0IGluY2x1ZGUgZmlsZXMgZm9yIHRoZSBkZXZpY2UgdXNlZCBieSB0aGUgYXBwbGljYXRpb24uDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KQEAgLTIwOSw3ICsxODMsNyBAQAogOyAgIENhbGw6ICAgQ0FMTCAgICB2UG9ydFN0YXJ0DQogOw0KIDsgICBPdXRwdXQ6IE5PTkUNCi07LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCQ0KKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgICAgUlNFRyBDT0RFOkNPREUNCiB2UG9ydFN0YXJ0Og0KICAgICBwb3J0UkVTVE9SRV9DT05URVhUCSAgICAgICAgICAgICAgICAgICAgOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHdoaWNoZXZlciB0YXNrIHRoZSAuLi4NCkBAIC0yNjcsNyArMjQxLDcgQEAKIDsgICBDYWxsOiAgIElTUg0KIDsNCiA7ICAgT3V0cHV0OiBOT05FDQotOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQkNCis7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogI2lmIGNvbmZpZ1VTRV9QUkVFTVBUSU9OID09IDEgICAgICAgICAgICAgICA7IHVzZSBwcmVlbXB0aXZlIGtlcm5lbCBtb2RlDQogDQogTURfSU5UVE0wRVEwOg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9JQVIvVjg1MEVTL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydG1hY3JvLmgKaW5kZXggYjgzODczMS4uZDYzZTJkYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL0lBUi9WODUwRVMvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzE4Ri9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnQuYwppbmRleCBlMDJiOGI2Li45NWZmYzIwIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogDQogQ2hhbmdlcyBiZXR3ZWVuIFYxLjIuNCBhbmQgVjEuMi41DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzE4Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMxOEYvcG9ydG1hY3JvLmgKaW5kZXggNWI5NjhiOS4uODEyNDRlNCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzE4Ri9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMThGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydC5jCmluZGV4IGYzZjc0N2UuLmMwNTQxNWUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAJQ2hhbmdlcyBmcm9tIFY0LjIuMQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0YXNtX1BJQzI0LlMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydGFzbV9QSUMyNC5TCmluZGV4IDEwYWIwNzEuLjZkMTdjOTUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0YXNtX1BJQzI0LlMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fUElDMjQuUwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmIGRlZmluZWQoIF9fUElDMjRFX18gKSB8fCBkZWZpbmVkICggX19QSUMyNEZfXyApIHx8IGRlZmluZWQoIF9fUElDMjRGS19fICkgfHwgZGVmaW5lZCggX19QSUMyNEhfXyApDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fZHNQSUMuUyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0YXNtX2RzUElDLlMKaW5kZXggODkxN2EwOC4uZjhmYTI0YSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRhc21fZHNQSUMuUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydGFzbV9kc1BJQy5TCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWYgZGVmaW5lZCggX19kc1BJQzMwRl9fICkgfHwgZGVmaW5lZCggX19kc1BJQzMzRl9fICkNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMjRfZHNQSUMvcG9ydG1hY3JvLmgKaW5kZXggNmU2Y2RmMC4uMDE2ZWRmMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzI0X2RzUElDL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMyNF9kc1BJQy9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L0lTUl9TdXBwb3J0LmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L0lTUl9TdXBwb3J0LmgKaW5kZXggMmY3YjEyZi4uYTBhN2E1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvSVNSX1N1cHBvcnQuaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2luY2x1ZGUgIkZyZWVSVE9TQ29uZmlnLmgiDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnQuYwppbmRleCA1ZjgyM2Y5Li4yZTBjNGFhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBQSUMzMk1FQzE0eHggIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0X2FzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0X2FzbS5TCmluZGV4IDg1YjZmNDEuLjNlNmJlZDEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydF9hc20uUworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnRfYXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNRUMxNHh4L3BvcnRtYWNyby5oCmluZGV4IDZhZDJiMzYuLjNmNmIxOTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1FQzE0eHgvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTUVDMTR4eC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9JU1JfU3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvSVNSX1N1cHBvcnQuaAppbmRleCAyYjkxM2ZjLi43N2MzZGUyIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL0lTUl9TdXBwb3J0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnQuYwppbmRleCA5MTNkZjQwLi41N2I5MTI2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFBJQzMyTVggcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0X2FzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydF9hc20uUwppbmRleCA3ZjQ3OWI4Li5lMWMyNTdhIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0X2FzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1YL3BvcnRfYXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0bWFjcm8uaAppbmRleCA4MDFlZDg3Li45MDc0ZDBlIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9JU1JfU3VwcG9ydC5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovSVNSX1N1cHBvcnQuaAppbmRleCBmZTlmNzQ4Li5jODJmZjU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9JU1JfU3VwcG9ydC5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL0lTUl9TdXBwb3J0LmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlICJGcmVlUlRPU0NvbmZpZy5oIg0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnQuYwppbmRleCA2OWFiN2JlLi4wYWFkZDJjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFBJQzMyTVogcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0X2FzbS5TIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydF9hc20uUwppbmRleCBjY2IwOTM2Li4yYTY2MWM1IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0X2FzbS5TCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NUExBQi9QSUMzMk1aL3BvcnRfYXNtLlMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpbmNsdWRlIDx4Yy5oPg0KICNpbmNsdWRlIDxzeXMvYXNtLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01QTEFCL1BJQzMyTVovcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0bWFjcm8uaAppbmRleCAyNmU3OWIxLi5lN2I2Y2ZkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVBMQUIvUElDMzJNWi9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTVNWQy1NaW5nVy9wb3J0LmMKaW5kZXggNTQyOTIyOC4uN2IyNmE2NiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NU1ZDLU1pbmdXL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGlvLmg+DQpAQCAtMjQ1LDcgKzIwNCw3IEBACiAJCXRpbWVFbmRQZXJpb2QoIHhUaW1lQ2Fwcy53UGVyaW9kTWluICk7DQogCX0NCiANCi0JcmV0dXJuIHBkUEFTUzsNCisJcmV0dXJuIHBkRkFMU0U7DQogfQ0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NU1ZDLU1pbmdXL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydG1hY3JvLmgKaW5kZXggM2IzYmQwMS4uOWVmMzNiZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01TVkMtTWluZ1cvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpAQCAtMTE4LDcgKzc3LDcgQEAKIA0KIC8qIFNpbXVsYXRlZCBpbnRlcnJ1cHRzIHJldHVybiBwZEZBTFNFIGlmIG5vIGNvbnRleHQgc3dpdGNoIHNob3VsZCBiZSBwZXJmb3JtZWQsDQogb3IgYSBub24temVybyBudW1iZXIgaWYgYSBjb250ZXh0IHN3aXRjaCBzaG91bGQgYmUgcGVyZm9ybWVkLiAqLw0KLSNkZWZpbmUgcG9ydFlJRUxEX0ZST01fSVNSKCB4ICkgcmV0dXJuIHgNCisjZGVmaW5lIHBvcnRZSUVMRF9GUk9NX0lTUiggeCApICggdm9pZCApIHgNCiAjZGVmaW5lIHBvcnRFTkRfU1dJVENISU5HX0lTUiggeCApIHBvcnRZSUVMRF9GUk9NX0lTUiggKCB4ICkgKQ0KIA0KIHZvaWQgdlBvcnRDbG9zZVJ1bm5pbmdUaHJlYWQoIHZvaWQgKnB2VGFza1RvRGVsZXRlLCB2b2xhdGlsZSBCYXNlVHlwZV90ICpweFBlbmRZaWVsZCApOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfMS5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8xLmMKaW5kZXggOWRiZGUwZi4uY2JhMDQ1ZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8xLmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8xLmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8yLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzIuYwppbmRleCA0NTQ5ZTc2Li5iYjg4YmMxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzIuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzIuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBBIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBwdlBvcnRNYWxsb2MoKSBhbmQgdlBvcnRGcmVlKCkgdGhhdCBwZXJtaXRzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF8zLmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzMuYwppbmRleCA3MTM0NzM1Li4yMTYzNTY2IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzMuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jCmluZGV4IDI4OGE0MjcuLmU1OTg3ZTAgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NZW1NYW5nL2hlYXBfNC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KICAqIEEgc2FtcGxlIGltcGxlbWVudGF0aW9uIG9mIHB2UG9ydE1hbGxvYygpIGFuZCB2UG9ydEZyZWUoKSB0aGF0IGNvbWJpbmVzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01lbU1hbmcvaGVhcF81LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzUuYwppbmRleCA2NGM4NmY1Li4xMjU5NzI4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzUuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWVtTWFuZy9oZWFwXzUuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiAgKiBBIHNhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBwdlBvcnRNYWxsb2MoKSB0aGF0IGFsbG93cyB0aGUgaGVhcCB0byBiZSBkZWZpbmVkDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01pa3JvQy9BUk1fQ000Ri9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnQuYwppbmRleCBiYjRkNzA0Li43NTk0Y2U4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ000RiBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvTWlrcm9DL0FSTV9DTTRGL3BvcnRtYWNyby5oCmluZGV4IDEzNzlhMDcuLjk1NjJjYzQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9NaWtyb0MvQVJNX0NNNEYvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL01pa3JvQy9BUk1fQ000Ri9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0LmMKaW5kZXggOTliNjI1OC4uNjJlY2MwMiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnRhc20uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnRhc20uaAppbmRleCBjNDQ2NzcwLi4wY2MwMmNiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9sYXJnZV91bnRlc3RlZC9wb3J0YXNtLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydGFzbS5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiB0eXBlZGVmIHZvaWQgVENCX3Q7DQogZXh0ZXJuIHZvbGF0aWxlIFRDQl90ICogdm9sYXRpbGUgcHhDdXJyZW50VENCOw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL2xhcmdlX3VudGVzdGVkL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydG1hY3JvLmgKaW5kZXggYTk0YTNiMC4uNjY5NGZhMCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvbGFyZ2VfdW50ZXN0ZWQvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydC5jCmluZGV4IDI3OTNkNDguLjU2NTI1NDQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0YXNtLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0YXNtLmgKaW5kZXggODZiOWExMC4uNDFkYTMwYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydGFzbS5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9QYXJhZGlnbS9UZXJuX0VFL3NtYWxsL3BvcnRhc20uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUX0FTTV9IDQogI2RlZmluZSBQT1JUX0FTTV9IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1BhcmFkaWdtL1Rlcm5fRUUvc21hbGwvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0bWFjcm8uaAppbmRleCBkZjA0NGY4Li5kZTJlNzRiIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUGFyYWRpZ20vVGVybl9FRS9zbWFsbC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnQuYwppbmRleCBlOGY3OGMwLi42NzIzZmQ3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KIC8qIFN0YW5kYXJkIGluY2x1ZGVzLiAqLw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0QVNNLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydEFTTS5zCmluZGV4IDgyN2RhZDkuLjc5YmRhYTIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0QVNNLnMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRBU00ucwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOwkNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiAJSU5DTFVERSBwb3J0bWFjcm8uaW5jDQogDQpAQCAtNzMsNyArNDcsNyBAQAogDQogDQogOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KLTsgU3RhcnRpbmcgdGhlIGZpcnN0IHRhc2sgaXMgZG9uZSBieSBqdXN0IHJlc3RvcmluZyB0aGUgY29udGV4dCANCis7IFN0YXJ0aW5nIHRoZSBmaXJzdCB0YXNrIGlzIGRvbmUgYnkganVzdCByZXN0b3JpbmcgdGhlIGNvbnRleHQNCiA7IHNldHVwIGJ5IHB4UG9ydEluaXRpYWxpc2VTdGFjaw0KIDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCiB2UG9ydFN0YXJ0Rmlyc3RUYXNrDQpAQCAtMTAxLDE3ICs3NSwxNyBAQAogDQogCVBSRVNFUlZFOA0KIA0KLQk7IFdpdGhpbiBhbiBJUlEgSVNSIHRoZSBsaW5rIHJlZ2lzdGVyIGhhcyBhbiBvZmZzZXQgZnJvbSB0aGUgdHJ1ZSByZXR1cm4gDQotCTsgYWRkcmVzcywgYnV0IGFuIFNXSSBJU1IgZG9lcyBub3QuICBBZGQgdGhlIG9mZnNldCBtYW51YWxseSBzbyB0aGUgc2FtZSANCisJOyBXaXRoaW4gYW4gSVJRIElTUiB0aGUgbGluayByZWdpc3RlciBoYXMgYW4gb2Zmc2V0IGZyb20gdGhlIHRydWUgcmV0dXJuDQorCTsgYWRkcmVzcywgYnV0IGFuIFNXSSBJU1IgZG9lcyBub3QuICBBZGQgdGhlIG9mZnNldCBtYW51YWxseSBzbyB0aGUgc2FtZQ0KIAk7IElTUiByZXR1cm4gY29kZSBjYW4gYmUgdXNlZCBpbiBib3RoIGNhc2VzLg0KIAlBREQJTFIsIExSLCAjNA0KIA0KIAk7IFBlcmZvcm0gdGhlIGNvbnRleHQgc3dpdGNoLg0KLQlwb3J0U0FWRV9DT05URVhUCQkJCQk7IFNhdmUgY3VycmVudCB0YXNrIGNvbnRleHQJCQkJDQorCXBvcnRTQVZFX0NPTlRFWFQJCQkJCTsgU2F2ZSBjdXJyZW50IHRhc2sgY29udGV4dA0KIAlMRFIgUjAsID12VGFza1N3aXRjaENvbnRleHQJCQk7IEdldCB0aGUgYWRkcmVzcyBvZiB0aGUgY29udGV4dCBzd2l0Y2ggZnVuY3Rpb24NCiAJTU9WIExSLCBQQwkJCQkJCQk7IFN0b3JlIHRoZSByZXR1cm4gYWRkcmVzcw0KIAlCWAlSMAkJCQkJCQkJOyBDYWxsIHRoZSBjb250ZWR4dCBzd2l0Y2ggZnVuY3Rpb24NCi0JcG9ydFJFU1RPUkVfQ09OVEVYVAkJCQkJOyByZXN0b3JlIHRoZSBjb250ZXh0IG9mIHRoZSBzZWxlY3RlZCB0YXNrCQ0KKwlwb3J0UkVTVE9SRV9DT05URVhUCQkJCQk7IHJlc3RvcmUgdGhlIGNvbnRleHQgb2YgdGhlIHNlbGVjdGVkIHRhc2sNCiANCiANCiANCkBAIC0xMjAsMzIgKzk0LDMyIEBACiA7IE9ubHkgdXNlZCBpZiBwb3J0VVNFX1BSRUVNUFRJT04gaXMgc2V0IHRvIDEgaW4gcG9ydG1hY3JvLmgNCiA7DQogOyBVc2VzIHRpbWVyIDAgb2YgTFBDMjFYWCBGYW1pbHkNCi07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7CQ0KKzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsNCiANCiB2UHJlZW1wdGl2ZVRpY2sNCiANCiAJUFJFU0VSVkU4DQogDQotCXBvcnRTQVZFX0NPTlRFWFQJCQkJCTsgU2F2ZSB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudCB0YXNrLgkNCisJcG9ydFNBVkVfQ09OVEVYVAkJCQkJOyBTYXZlIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IHRhc2suDQogDQotCUxEUiBSMCwgPXhUYXNrSW5jcmVtZW50VGljawkJCTsgSW5jcmVtZW50IHRoZSB0aWNrIGNvdW50LiAgDQorCUxEUiBSMCwgPXhUYXNrSW5jcmVtZW50VGljawkJCTsgSW5jcmVtZW50IHRoZSB0aWNrIGNvdW50Lg0KIAlNT1YgTFIsIFBDCQkJCQkJCTsgVGhpcyBtYXkgbWFrZSBhIGRlbGF5ZWQgdGFzayByZWFkeQ0KIAlCWCBSMAkJCQkJCQkJOyB0byBydW4uDQogDQogCUNNUCBSMCwgIzANCiAJQkVRIFNraXBDb250ZXh0U3dpdGNoDQotCUxEUiBSMCwgPXZUYXNrU3dpdGNoQ29udGV4dAkJCTsgRmluZCB0aGUgaGlnaGVzdCBwcmlvcml0eSB0YXNrIHRoYXQgDQorCUxEUiBSMCwgPXZUYXNrU3dpdGNoQ29udGV4dAkJCTsgRmluZCB0aGUgaGlnaGVzdCBwcmlvcml0eSB0YXNrIHRoYXQNCiAJTU9WIExSLCBQQwkJCQkJCQk7IGlzIHJlYWR5IHRvIHJ1bi4NCiAJQlggUjANCiBTa2lwQ29udGV4dFN3aXRjaA0KIAlNT1YgUjAsICNUME1BVENIQklUCQkJCQk7IENsZWFyIHRoZSB0aW1lciBldmVudA0KIAlMRFIgUjEsID1UMElSDQotCVNUUiBSMCwgW1IxXSANCisJU1RSIFIwLCBbUjFdDQogDQotCUxEUglSMCwgPVZJQ1ZFQ1RBRERSCQkJCTsgQWNrbm93bGVkZ2UgdGhlIGludGVycnVwdAkNCisJTERSCVIwLCA9VklDVkVDVEFERFIJCQkJOyBBY2tub3dsZWRnZSB0aGUgaW50ZXJydXB0DQogCVNUUglSMCxbUjBdDQogDQotCXBvcnRSRVNUT1JFX0NPTlRFWFQJCQkJCTsgUmVzdG9yZSB0aGUgY29udGV4dCBvZiB0aGUgaGlnaGVzdCANCisJcG9ydFJFU1RPUkVfQ09OVEVYVAkJCQkJOyBSZXN0b3JlIHRoZSBjb250ZXh0IG9mIHRoZSBoaWdoZXN0DQogCQkJCQkJCQkJCTsgcHJpb3JpdHkgdGFzayB0aGF0IGlzIHJlYWR5IHRvIHJ1bi4NCiAJRU5EDQogDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNN19MUEMyMXh4L3BvcnRtYWNyby5oCmluZGV4IGE2YWRlZTEuLjhlZTIyYzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk03X0xQQzIxeHgvcG9ydG1hY3JvLmluYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaW5jCmluZGV4IGY0ZjVmOTEuLjAzZDVjNWYgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaW5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTTdfTFBDMjF4eC9wb3J0bWFjcm8uaW5jCkBAIC0xLDU2ICsxLDMwIEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07CQ0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlJTVBPUlQgIHVsQ3JpdGljYWxOZXN0aW5nCQk7DQogCUlNUE9SVAlweEN1cnJlbnRUQ0IJCQk7DQpAQCAtNjQsNyArMzgsNyBAQAogCUxEUgkJUjAsIFtSMF0JCQkJOyAuLi4gc3RvcmVkIGluIHB4Q3VycmVudFRDQg0KIAlMRFIJCUxSLCBbUjBdDQogDQotCUxEUgkJUjAsID11bENyaXRpY2FsTmVzdGluZwk7IFRoZSBjcml0aWNhbCBuZXN0aW5nIGRlcHRoIGlzIHRoZSBmaXJzdCBpdGVtIG9uLi4uIA0KKwlMRFIJCVIwLCA9dWxDcml0aWNhbE5lc3RpbmcJOyBUaGUgY3JpdGljYWwgbmVzdGluZyBkZXB0aCBpcyB0aGUgZmlyc3QgaXRlbSBvbi4uLg0KIAlMRE1GRAlMUiEsIHtSMX0JCQkJOyAuLi50aGUgc3RhY2suICBMb2FkIGl0IGludG8gdGhlIHVsQ3JpdGljYWxOZXN0aW5nIHZhci4NCiAJU1RSCQlSMSwgW1IwXQkJCQk7DQogDQpAQCAtMTEwLDkgKzg0LDkgQEAKIAlTVE1EQglMUiEsIHtSMH0JCQkJOw0KIA0KIAlMRFIJCVIwLCA9cHhDdXJyZW50VENCCQk7IFN0b3JlIHRoZSBuZXcgdG9wIG9mIHN0YWNrIGZvciB0aGUgdGFzay4NCi0JTERSCQlSMSwgW1IwXQkJCQk7IAkJIA0KKwlMRFIJCVIxLCBbUjBdCQkJCTsNCiAJU1RSCQlMUiwgW1IxXQkJCQk7DQotCQ0KKw0KIAlNRU5EDQotCQ0KKw0KIAlFTkQNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydC5jCmluZGV4IDhhY2FlOGUuLmU3N2VlMjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0QVNNLnMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRBU00ucwppbmRleCBiNDIyMDdjLi4xYWRjODYzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRBU00ucworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRBU00ucwpAQCAtMSw1NiArMSwzMCBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIA0KIAlJTkNMVURFIHBvcnRtYWNyby5pbmMNCiANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0bWFjcm8uaAppbmRleCA4OWVkN2I0Li42ZTYyNTUxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCiAjZGVmaW5lIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0bWFjcm8uaW5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NBOS9wb3J0bWFjcm8uaW5jCmluZGV4IDEwN2IxYWMuLjdmNDJmNmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DQTkvcG9ydG1hY3JvLmluYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ0E5L3BvcnRtYWNyby5pbmMKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiBTWVNfTU9ERQkJCUVRVQkJMHgxZg0KIFNWQ19NT0RFCQkJRVFVCQkweDEzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnQuYwppbmRleCAyOGNhMDNjLi5hODBmMWExIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00wIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTAvcG9ydG1hY3JvLmgKaW5kZXggZTdlZTM2ZC4uNTA2NzUwMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00wL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMy9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnQuYwppbmRleCA1ZmQxMDkxLi42ZjYxYThkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBBUk0gQ00zIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTMvcG9ydG1hY3JvLmgKaW5kZXggMGYyMjM4NS4uZjY1NjMzZCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNMy9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ00zL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNEYvcG9ydC5jCmluZGV4IGY1MTIwNzguLmFhMjNmNWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000Ri9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNNEYgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnRtYWNyby5oCmluZGV4IDBmMjIzODUuLmY2NTYzM2QgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNF9NUFUvcG9ydC5jCmluZGV4IDllZTc2M2IuLjRiZWMzMzMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000X01QVS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgQVJNIENNMyBwb3J0Lg0KQEAgLTc4LDkgKzM3LDcgQEAKIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCi0jaW5jbHVkZSAicXVldWUuaCINCi0jaW5jbHVkZSAiZXZlbnRfZ3JvdXBzLmgiDQotI2luY2x1ZGUgIm1wdV9wcm90b3R5cGVzLmgiDQorI2luY2x1ZGUgInRhc2suaCINCiANCiAjaWZuZGVmIF9fVEFSR0VUX0ZQVV9WRlANCiAJI2Vycm9yIFRoaXMgcG9ydCBjYW4gb25seSBiZSB1c2VkIHdoZW4gdGhlIHByb2plY3Qgb3B0aW9ucyBhcmUgY29uZmlndXJlZCB0byBlbmFibGUgaGFyZHdhcmUgZmxvYXRpbmcgcG9pbnQgc3VwcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ000X01QVS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oCmluZGV4IDI0NWNlODguLjRiMDM1M2YgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTRfTVBVL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTcvcjBwMS9wb3J0LmMKaW5kZXggNWM1YzA5Ni4uNjY1YzE3MyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JWRFMvQVJNX0NNNy9yMHAxL3BvcnRtYWNyby5oCmluZGV4IGQyNTlmZDAuLjU3ZjFhMzUgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SVkRTL0FSTV9DTTcvcjBwMS9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUlZEUy9BUk1fQ003L3IwcDEvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0LmMKaW5kZXggZDVjMDAwYy4uODcyM2IzZSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBSWDEwMCBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRfYXNtLnNyYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMTAwL3BvcnRfYXNtLnNyYwppbmRleCBhY2VmMmIxLi5lZTYwYjM3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0X2FzbS5zcmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydF9hc20uc3JjCkBAIC0xLDYxICsxLDM1IEBACiA7LyoNCi07ICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi07ICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi07DQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogCQkuR0xCCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCiAgICAgICAgICAgICAgICAgLkdMQiAgICBfdlNvZnR3YXJlSW50ZXJydXB0RW50cnkNCiANCiAJCS5TRUNUSU9OICAgUCxDT0RFDQotCQkNCisNCiBfdlNvZnR3YXJlSW50ZXJydXB0RW50cnk6DQogDQogCUJSQQlfdlNvZnR3YXJlSW50ZXJydXB0SVNSDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgxMDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0bWFjcm8uaAppbmRleCA5MTQ4ODIwLi5iY2RhOTFjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDEwMC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnQuYwppbmRleCBhOTAxMWNiLi43YmY0MWVmIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFJYMjAwIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydF9hc20uc3JjIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlgyMDAvcG9ydF9hc20uc3JjCmluZGV4IGFjZWYyYjEuLmVlNjBiMzcgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRfYXNtLnNyYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0X2FzbS5zcmMKQEAgLTEsNjEgKzEsMzUgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiAJCS5HTEIJX3ZTb2Z0d2FyZUludGVycnVwdElTUg0KICAgICAgICAgICAgICAgICAuR0xCICAgIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeQ0KIA0KIAkJLlNFQ1RJT04gICBQLENPREUNCi0JCQ0KKw0KIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeToNCiANCiAJQlJBCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDIwMC9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRtYWNyby5oCmluZGV4IGRhNjVhZjcuLjNiZjFhODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYMjAwL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydC5jCmluZGV4IDk5YTI2MjEuLmIwMWM1YTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgUlg2MDAgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0X2FzbS5zcmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMC9wb3J0X2FzbS5zcmMKaW5kZXggYWNlZjJiMS4uZWU2MGIzNyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydF9hc20uc3JjCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnRfYXNtLnNyYwpAQCAtMSw2MSArMSwzNSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIAkJLkdMQglfdlNvZnR3YXJlSW50ZXJydXB0SVNSDQogICAgICAgICAgICAgICAgIC5HTEIgICAgX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5DQogDQogCQkuU0VDVElPTiAgIFAsQ09ERQ0KLQkJDQorDQogX3ZTb2Z0d2FyZUludGVycnVwdEVudHJ5Og0KIA0KIAlCUkEJX3ZTb2Z0d2FyZUludGVycnVwdElTUg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydG1hY3JvLmgKaW5kZXggNDAwZmEzZS4uZmNlZTIxYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDAvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydC5jCmluZGV4IDc5ZDBiZmEuLjhlMWVhZGIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIFJYNjAwIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0X2FzbS5zcmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRfYXNtLnNyYwppbmRleCA0MmFkNjIwLi4zNjlkMGE3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRfYXNtLnNyYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRfYXNtLnNyYwpAQCAtMSw2MSArMSwzNSBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIAkJLkdMQglfdlNvZnR3YXJlSW50ZXJydXB0SVNSDQogCQkuR0xCICAgIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeQ0KIA0KIAkJLlNFQ1RJT04gICBQLENPREUNCi0JCQ0KKw0KIF92U29mdHdhcmVJbnRlcnJ1cHRFbnRyeToNCiANCiAJQlJBCV92U29mdHdhcmVJbnRlcnJ1cHRJU1INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvUlg2MDB2Mi9wb3J0bWFjcm8uaAppbmRleCBkMWE0ODlkLi5jYzQ1ZjU3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9SWDYwMHYyL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1JYNjAwdjIvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9JU1JfU3VwcG9ydC5pbmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9JU1JfU3VwcG9ydC5pbmMKaW5kZXggYzEyMGU2MC4uYmQ4NDBjMSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvSVNSX1N1cHBvcnQuaW5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL0lTUl9TdXBwb3J0LmluYwpAQCAtMSw3MiArMSw0NiBAQAogOy8qDQotOyAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotOyAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotOw0KLTsNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIEZyZWVSVE9TIHR1dG9yaWFsIGJvb2tzIGFyZSBhdmFpbGFibGUgaW4gcGRmIGFuZCBwYXBlcmJhY2suICAgICAgICAqDQotOyAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLTsgICAgICogICAgYXZhaWxhYmxlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLTsgICAgICogICAgZW5zdXJpbmcgeW91IGdldCBydW5uaW5nIGFzIHF1aWNrbHkgYXMgcG9zc2libGUgYW5kIHdpdGggYW4gICAgICAgICoNCi07ICAgICAqICAgIGluLWRlcHRoIGtub3dsZWRnZSBvZiBob3cgdG8gdXNlIEZyZWVSVE9TLCBpdCB3aWxsIGFsc28gaGVscCAgICAgICAqDQotOyAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLTsgICAgICogICAgcHJvZmVzc2lvbmFsIGdyYWRlLCBjcm9zcyBwbGF0Zm9ybSwgZGUgZmFjdG8gc3RhbmRhcmQgc29sdXRpb25zICAgICoNCi07ICAgICAqICAgIGZvciBtaWNyb2NvbnRyb2xsZXJzIC0gY29tcGxldGVseSBmcmVlIG9mIGNoYXJnZSEgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgPj4+IFNlZSBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLiA8PDwgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLTsNCi07DQotOyAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLTsNCi07ICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi07ICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLTsgICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIEFORCBNT0RJRklFRCBCWSB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLTsgICAgPj4+Tk9URTw8PCBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvDQotOyAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLTsgICAgcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1MNCi07ICAgIGtlcm5lbC4gIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dA0KLTsgICAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkNCi07ICAgIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3INCi07ICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotOyAgICBMaWNlbnNlIGFuZCB0aGUgRnJlZVJUT1MgbGljZW5zZSBleGNlcHRpb24gYWxvbmcgd2l0aCBGcmVlUlRPUzsgaWYgbm90IGl0DQotOyAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotOyAgICBieSB3cml0aW5nIHRvIFJpY2hhcmQgQmFycnksIGNvbnRhY3QgZGV0YWlscyBmb3Igd2hvbSBhcmUgYXZhaWxhYmxlIG9uIHRoZQ0KLTsgICAgRnJlZVJUT1MgV0VCIHNpdGUuDQotOw0KLTsgICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotOw0KLTsgICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotOyAgICBjb250YWN0IGRldGFpbHMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi07ICAgIGNyaXRpY2FsIHN5c3RlbXMuDQotOw0KLTsgICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLTsgICAgbGljZW5zaW5nIGFuZCB0cmFpbmluZyBzZXJ2aWNlcy4NCi07Ki8NCis7ICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCis7ICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKzsgKg0KKzsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorOyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorOyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCis7ICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCis7ICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKzsgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCis7ICoNCis7ICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorOyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorOyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCis7ICoNCis7ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCis7ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCis7ICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorOyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKzsgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKzsgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKzsgKg0KKzsgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKzsgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCis7ICoNCis7ICogMSB0YWIgPT0gNCBzcGFjZXMhDQorOyAqLw0KIAkubWFjcm8gcG9ydFNBVkVfQ09OVEVYVA0KIA0KIAk7IFNhdmUgcjAgdG8gcjE0IGFuZCBwci4NCiAJbW92bWwubCByMTUsIEAtcjE1DQotCQ0KKw0KIAk7IFNhdmUgbWFjMSwgbWFjaCBhbmQgZ2JyDQogCXN0cy5sCW1hY2wsIEAtcjE1DQogCXN0cy5sCW1hY2gsIEAtcjE1DQogCXN0Yy5sCWdiciwgQC1yMTUNCi0JDQorDQogCTsgR2V0IHRoZSBhZGRyZXNzIG9mIHB4Q3VycmVudFRDQg0KIAltb3YubAkjX3B4Q3VycmVudFRDQiwgcjANCi0JDQorDQogCTsgR2V0IHRoZSBhZGRyZXNzIG9mIHB4VG9wT2ZTdGFjayBmcm9tIHRoZSBUQ0IuDQogCW1vdi5sCUByMCwgcjANCi0JDQorDQogCTsgU2F2ZSB0aGUgc3RhY2sgcG9pbnRlciBpbiBweFRvcE9mU3RhY2suDQogCW1vdi5sCXIxNSwgQHIwDQogDQpAQCAtODIsOCArNTYsOCBAQAogCTsgR2V0IHRoZSBhZGRyZXNzIG9mIHRoZSB0YXNrIHN0YWNrIGZyb20gcHhDdXJyZW50VENCLg0KIAltb3YubAlAcjAsIHIwDQogDQotCTsgR2V0IHRoZSB0YXNrIHN0YWNrIGl0c2VsZiBpbnRvIHRoZSBzdGFjayBwb2ludGVyLiANCi0JbW92LmwJQHIwLCByMTUJCQ0KKwk7IEdldCB0aGUgdGFzayBzdGFjayBpdHNlbGYgaW50byB0aGUgc3RhY2sgcG9pbnRlci4NCisJbW92LmwJQHIwLCByMTUNCiANCiAJOyBSZXN0b3JlIHN5c3RlbSByZWdpc3RlcnMuDQogCWxkYy5sCUByMTUrLCBnYnINCkBAIC05Miw3ICs2Niw3IEBACiANCiAJOyBSZXN0b3JlIHIwIHRvIHIxNCBhbmQgUFINCiAJbW92bWwubAlAcjE1KywgcjE1DQotCQ0KKw0KIAk7IFBvcCB0aGUgU1IgYW5kIFBDIHRvIGp1bXAgdG8gdGhlIHN0YXJ0IG9mIHRoZSB0YXNrLg0KIAlydGUNCiAJbm9wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydC5jCmluZGV4IDk2MTVkYjIuLmQ4ZDgxNDkgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUmVuZXNhcy9TSDJBX0ZQVS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBwb3J0YWJsZS5oIGZvciB0aGUgU0gyQSBwb3J0Lg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL3BvcnRhc20uc3JjIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydGFzbS5zcmMKaW5kZXggMDcyZmQ0OC4uZDE0MjYwNSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydGFzbS5zcmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydGFzbS5zcmMKQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsJDQotOw0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgRnJlZVJUT1MgdHV0b3JpYWwgYm9va3MgYXJlIGF2YWlsYWJsZSBpbiBwZGYgYW5kIHBhcGVyYmFjay4gICAgICAgICoNCi07ICAgICAqICAgIENvbXBsZXRlLCByZXZpc2VkLCBhbmQgZWRpdGVkIHBkZiByZWZlcmVuY2UgbWFudWFscyBhcmUgYWxzbyAgICAgICAqDQotOyAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFB1cmNoYXNpbmcgRnJlZVJUT1MgZG9jdW1lbnRhdGlvbiB3aWxsIG5vdCBvbmx5IGhlbHAgeW91LCBieSAgICAgICAqDQotOyAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLTsgICAgICogICAgaW4tZGVwdGgga25vd2xlZGdlIG9mIGhvdyB0byB1c2UgRnJlZVJUT1MsIGl0IHdpbGwgYWxzbyBoZWxwICAgICAgICoNCi07ICAgICAqICAgIHRoZSBGcmVlUlRPUyBwcm9qZWN0IHRvIGNvbnRpbnVlIHdpdGggaXRzIG1pc3Npb24gb2YgcHJvdmlkaW5nICAgICAqDQotOyAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLTsgICAgICogICAgZm9yIG1pY3JvY29udHJvbGxlcnMgLSBjb21wbGV0ZWx5IGZyZWUgb2YgY2hhcmdlISAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgIFRoYW5rIHlvdSBmb3IgdXNpbmcgRnJlZVJUT1MsIGFuZCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotOw0KLTsNCi07ICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotOw0KLTsgICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLTsgICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotOyAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotOyAgICA+Pj5OT1RFPDw8IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8NCi07ICAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyBvYmxpZ2VkIHRvDQotOyAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLTsgICAga2VybmVsLiAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0DQotOyAgICBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLTsgICAgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcg0KLTsgICAgbW9yZSBkZXRhaWxzLiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMNCi07ICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TOyBpZiBub3QgaXQNCi07ICAgIGNhbiBiZSB2aWV3ZWQgaGVyZTogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwgYW5kIGFsc28gb2J0YWluZWQNCi07ICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotOyAgICBGcmVlUlRPUyBXRUIgc2l0ZS4NCi07DQotOyAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi07DQotOyAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyAtIERvY3VtZW50YXRpb24sIGxhdGVzdCBpbmZvcm1hdGlvbiwgbGljZW5zZSBhbmQNCi07ICAgIGNvbnRhY3QgZGV0YWlscy4NCi07DQotOyAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEEgdmVyc2lvbiB0aGF0IGlzIGNlcnRpZmllZCBmb3IgdXNlIGluIHNhZmV0eQ0KLTsgICAgY3JpdGljYWwgc3lzdGVtcy4NCi07DQotOyAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIENvbW1lcmNpYWwgc3VwcG9ydCwgZGV2ZWxvcG1lbnQsIHBvcnRpbmcsDQotOyAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLTsqLw0KKzsgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKzsgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorOyAqDQorOyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCis7ICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCis7ICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKzsgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKzsgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorOyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKzsgKg0KKzsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCis7ICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCis7ICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKzsgKg0KKzsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKzsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKzsgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCis7ICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorOyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorOyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorOyAqDQorOyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorOyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKzsgKg0KKzsgKiAxIHRhYiA9PSA0IHNwYWNlcyENCis7ICovDQogDQogCS5pbXBvcnQgX3B4Q3VycmVudFRDQg0KIAkuaW1wb3J0IF92VGFza1N3aXRjaENvbnRleHQNCkBAIC02NywxMSArNDEsMTEgQEAKICAgICAuc2VjdGlvbiAgICBQDQogDQogCS5JTkNMVURFICJJU1JfU3VwcG9ydC5pbmMiDQotCQ0KKw0KIF92UG9ydFN0YXJ0Rmlyc3RUYXNrOg0KLQkJDQorDQogCXBvcnRSRVNUT1JFX0NPTlRFWFQNCi0JDQorDQogOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogDQogX3ZQb3J0WWllbGRIYW5kbGVyOg0KQEAgLTgzLDEzICs1NywxMyBAQAogCW5vcA0KIA0KIAlwb3J0UkVTVE9SRV9DT05URVhUDQotCQ0KKw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIF92UG9ydFByZWVtcHRpdmVUaWNrDQogDQogCXBvcnRTQVZFX0NPTlRFWFQNCi0JDQorDQogCW1vdi5sCSNfeFRhc2tJbmNyZW1lbnRUaWNrLCByMA0KIAlqc3IJCUByMA0KIAlub3ANCkBAIC05OSwxOSArNzMsMTkgQEAKIAlub3ANCiANCiAJcG9ydFJFU1RPUkVfQ09OVEVYVA0KLQkNCisNCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiANCiBfdlBvcnRDb29wZXJhdGl2ZVRpY2sNCiANCiAJcG9ydFNBVkVfQ09OVEVYVA0KLQkNCisNCiAJbW92LmwJI194VGFza0luY3JlbWVudFRpY2ssIHIwDQogCWpzcgkJQHIwDQogCW5vcA0KIA0KIAlwb3J0UkVTVE9SRV9DT05URVhUDQotCQ0KKw0KIDstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIA0KIF91bFBvcnRHZXRHQlI6DQpAQCAtMTM5LDIwICsxMTMsMjAgQEAKIAlmbW92LnMJZnIxMiwgQC1yNA0KIAlmbW92LnMJZnIxMywgQC1yNA0KIAlmbW92LnMJZnIxNCwgQC1yNA0KLQlmbW92LnMJZnIxNSwgQC1yNAkNCisJZm1vdi5zCWZyMTUsIEAtcjQNCiAJc3RzLmwgICBmcHVsLCBALXI0DQogCXN0cy5sICAgZnBzY3IsIEAtcjQNCi0JDQorDQogCXJ0cw0KIAlub3ANCiANCiA7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0JDQorDQogX3ZQb3J0UmVzdG9yZUZsb3BSZWdpc3RlcnM6DQogDQogCWFkZC5sICAjLTcyLCByNA0KIAlsZHMubCAgQHI0KywgZnBzY3INCi0JbGRzLmwgIEByNCssIGZwdWwJDQorCWxkcy5sICBAcjQrLCBmcHVsDQogCWZtb3YucyBAcjQrLCBmcjE1DQogCWZtb3YucyBAcjQrLCBmcjE0DQogCWZtb3YucyBAcjQrLCBmcjEzDQpAQCAtMTY5LDkgKzE0Myw5IEBACiAJZm1vdi5zIEByNCssIGZyMg0KIAlmbW92LnMgQHI0KywgZnIxDQogCWZtb3YucyBAcjQrLCBmcjANCi0JDQorDQogCXJ0cw0KIAlub3ANCi0JDQorDQogCS5lbmQNCi0JCQ0KKw0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9SZW5lc2FzL1NIMkFfRlBVL3BvcnRtYWNyby5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydG1hY3JvLmgKaW5kZXggZjUyOGFmNy4uOWQ5MDRkYyAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1JlbmVzYXMvU0gyQV9GUFUvcG9ydG1hY3JvLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIA0KICNpZm5kZWYgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydC5jIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnQuYwppbmRleCAwYmE2NDk3Li43YmE0Mjk4IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0LmMKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KIC8qIFNjaGVkdWxlciBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydGFzbS5oIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRhc20uaAppbmRleCA2OThmYTNjLi5iYjdiMmVjIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydGFzbS5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0YXNtLmgKQEAgLTEsNzEgKzEsMzAgQEAKIC8qDQotICAgIEZyZWVSVE9TIFY5LjAuMSAtIENvcHlyaWdodCAoQykgMjAxNyBSZWFsIFRpbWUgRW5naW5lZXJzIEx0ZC4NCi0gICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLQ0KLSAgICBWSVNJVCBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZyBUTyBFTlNVUkUgWU9VIEFSRSBVU0lORyBUSEUgTEFURVNUIFZFUlNJT04uDQotDQotICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlUlRPUyBkaXN0cmlidXRpb24uDQotDQotICAgIEZyZWVSVE9TIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXINCi0gICAgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAodmVyc2lvbiAyKSBhcyBwdWJsaXNoZWQgYnkgdGhlDQotICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiA+Pj4+IEFORCBNT0RJRklFRCBCWSA8PDw8IHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICA+PiEgICBOT1RFOiBUaGUgbW9kaWZpY2F0aW9uIHRvIHRoZSBHUEwgaXMgaW5jbHVkZWQgdG8gYWxsb3cgeW91IHRvICAgICAhPDwNCi0gICAgPj4hICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nICAgITw8DQotICAgID4+ISAgIG9ibGlnZWQgdG8gcHJvdmlkZSB0aGUgc291cmNlIGNvZGUgZm9yIHByb3ByaWV0YXJ5IGNvbXBvbmVudHMgICAgICE8PA0KLSAgICA+PiEgICBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUyBrZXJuZWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPDwNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIEZyZWVSVE9TIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWQ0KLSAgICBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTDQotICAgIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIEZ1bGwgbGljZW5zZSB0ZXh0IGlzIGF2YWlsYWJsZSBvbiB0aGUgZm9sbG93aW5nDQotICAgIGxpbms6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sDQotDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBGcmVlUlRPUyBwcm92aWRlcyBjb21wbGV0ZWx5IGZyZWUgeWV0IHByb2Zlc3Npb25hbGx5IGRldmVsb3BlZCwgICAgKg0KLSAgICAgKiAgICByb2J1c3QsIHN0cmljdGx5IHF1YWxpdHkgY29udHJvbGxlZCwgc3VwcG9ydGVkLCBhbmQgY3Jvc3MgICAgICAgICAgKg0KLSAgICAgKiAgICBwbGF0Zm9ybSBzb2Z0d2FyZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IHRoZSBtYXJrZXQgbGVhZGVyLCBpdCAgICAgKg0KLSAgICAgKiAgICBpcyB0aGUgaW5kdXN0cnkncyBkZSBmYWN0byBzdGFuZGFyZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBIZWxwIHlvdXJzZWxmIGdldCBzdGFydGVkIHF1aWNrbHkgd2hpbGUgc2ltdWx0YW5lb3VzbHkgaGVscGluZyAgICAgKg0KLSAgICAgKiAgICB0byBzdXBwb3J0IHRoZSBGcmVlUlRPUyBwcm9qZWN0IGJ5IHB1cmNoYXNpbmcgYSBGcmVlUlRPUyAgICAgICAgICAgKg0KLSAgICAgKiAgICB0dXRvcmlhbCBib29rLCByZWZlcmVuY2UgbWFudWFsLCBvciBib3RoOiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9Eb2N1bWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRkFRSGVscC5odG1sIC0gSGF2aW5nIGEgcHJvYmxlbT8gIFN0YXJ0IGJ5IHJlYWRpbmcNCi0gICAgdGhlIEZBUSBwYWdlICJNeSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBydW4sIHdoYXQgY291bGQgYmUgd3Jvbmc/Ii4gIEhhdmUgeW91DQotICAgIGRlZmluZWQgY29uZmlnQVNTRVJUKCk/DQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3N1cHBvcnQgLSBJbiByZXR1cm4gZm9yIHJlY2VpdmluZyB0aGlzIHRvcCBxdWFsaXR5DQotICAgIGVtYmVkZGVkIHNvZnR3YXJlIGZvciBmcmVlIHdlIHJlcXVlc3QgeW91IGFzc2lzdCBvdXIgZ2xvYmFsIGNvbW11bml0eSBieQ0KLSAgICBwYXJ0aWNpcGF0aW5nIGluIHRoZSBzdXBwb3J0IGZvcnVtLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy90cmFpbmluZyAtIEludmVzdGluZyBpbiB0cmFpbmluZyBhbGxvd3MgeW91ciB0ZWFtIHRvDQotICAgIGJlIGFzIHByb2R1Y3RpdmUgYXMgcG9zc2libGUgYXMgZWFybHkgYXMgcG9zc2libGUuICBOb3cgeW91IGNhbiByZWNlaXZlDQotICAgIEZyZWVSVE9TIHRyYWluaW5nIGRpcmVjdGx5IGZyb20gUmljaGFyZCBCYXJyeSwgQ0VPIG9mIFJlYWwgVGltZSBFbmdpbmVlcnMNCi0gICAgTHRkLCBhbmQgdGhlIHdvcmxkJ3MgbGVhZGluZyBhdXRob3JpdHkgb24gdGhlIHdvcmxkJ3MgbGVhZGluZyBSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9wbHVzIC0gQSBzZWxlY3Rpb24gb2YgRnJlZVJUT1MgZWNvc3lzdGVtIHByb2R1Y3RzLA0KLSAgICBpbmNsdWRpbmcgRnJlZVJUT1MrVHJhY2UgLSBhbiBpbmRpc3BlbnNhYmxlIHByb2R1Y3Rpdml0eSB0b29sLCBhIERPUw0KLSAgICBjb21wYXRpYmxlIEZBVCBmaWxlIHN5c3RlbSwgYW5kIG91ciB0aW55IHRocmVhZCBhd2FyZSBVRFAvSVAgc3RhY2suDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL2xhYnMgLSBXaGVyZSBuZXcgRnJlZVJUT1MgcHJvZHVjdHMgZ28gdG8gaW5jdWJhdGUuDQotICAgIENvbWUgYW5kIHRyeSBGcmVlUlRPUytUQ1AsIG91ciBuZXcgb3BlbiBzb3VyY2UgVENQL0lQIHN0YWNrIGZvciBGcmVlUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBSZWFsIFRpbWUgRW5naW5lZXJzIGx0ZC4gbGljZW5zZSBGcmVlUlRPUyB0byBIaWdoDQotICAgIEludGVncml0eSBTeXN0ZW1zIGx0ZC4gdG8gc2VsbCB1bmRlciB0aGUgT3BlblJUT1MgYnJhbmQuICBMb3cgY29zdCBPcGVuUlRPUw0KLSAgICBsaWNlbnNlcyBvZmZlciB0aWNrZXRlZCBzdXBwb3J0LCBpbmRlbW5pZmljYXRpb24gYW5kIGNvbW1lcmNpYWwgbWlkZGxld2FyZS4NCi0NCi0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBIaWdoIEludGVncml0eSBTeXN0ZW1zIGFsc28gcHJvdmlkZSBhIHNhZmV0eQ0KLSAgICBlbmdpbmVlcmVkIGFuZCBpbmRlcGVuZGVudGx5IFNJTDMgY2VydGlmaWVkIHZlcnNpb24gZm9yIHVzZSBpbiBzYWZldHkgYW5kDQotICAgIG1pc3Npb24gY3JpdGljYWwgYXBwbGljYXRpb25zIHRoYXQgcmVxdWlyZSBwcm92YWJsZSBkZXBlbmRhYmlsaXR5Lg0KLQ0KLSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi0qLw0KKyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorICogQ29weXJpZ2h0IChDKSAyMDE3IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyAqDQorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKyAqIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluDQorICogdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0bw0KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorICogdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLA0KKyAqIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKyAqDQorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsDQorICogY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4gSWYgeW91IHdpc2ggdG8gdXNlIG91ciBBbWF6b24NCisgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorICoNCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorICogRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SDQorICogQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSDQorICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCisgKiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KKyAqDQorICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCisgKiBodHRwOi8vYXdzLmFtYXpvbi5jb20vZnJlZXJ0b3MNCisgKg0KKyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKyAqLw0KIA0KICNpZm5kZWYgUE9SVF9BU01fSA0KICNkZWZpbmUgUE9SVF9BU01fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0ZXh0LmFzbSBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0ZXh0LmFzbQppbmRleCBmMjI4NDUxLi4zMjlmYjY0IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydGV4dC5hc20KKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRleHQuYXNtCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1NDb25maWcuaCINCiAjaW5jbHVkZSAicG9ydGFzbS5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Sb3dsZXkvTVNQNDMwRjQ0OS9wb3J0bWFjcm8uaAppbmRleCA1ZDk0OTU0Li44MzdmNmY3IDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvUm93bGV5L01TUDQzMEY0NDkvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Jvd2xleS9NU1A0MzBGNDQ5L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU0RDQy9DeWduYWwvcG9ydC5jCmluZGV4IDFhMzg1ZWIuLmY3NDNhOGMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NEQ0MvQ3lnbmFsL3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAqIEltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHBvcnRhYmxlLmggZm9yIHRoZSBDeWduYWwgcG9ydC4NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU0RDQy9DeWduYWwvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU0RDQy9DeWduYWwvcG9ydG1hY3JvLmgKaW5kZXggMjIwYzI4OC4uNmYyODgwYiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NEQ0MvQ3lnbmFsL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9TRENDL0N5Z25hbC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjkxNDYwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydC5jCmluZGV4IGNjMjgwMGMuLjAzZmNlYzEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjkxNDYwL3BvcnRtYWNyby5oCmluZGV4IDM4OTkzODEuLmRhYWIxM2EgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTE0NjAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5MTQ2MC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KICNkZWZpbmUgUE9SVE1BQ1JPX0gNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjk2MzQwL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydC5jCmluZGV4IGYzNTg1MWMuLjdmOWNhNWMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSAiRnJlZVJUT1MuaCINCiAjaW5jbHVkZSAidGFzay5oIg0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvU29mdHVuZS9NQjk2MzQwL3BvcnRtYWNyby5oCmluZGV4IGY1ZWE4ZDcuLjAzY2E4NjQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9Tb2Z0dW5lL01COTYzNDAvcG9ydG1hY3JvLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1NvZnR1bmUvTUI5NjM0MC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogDQogI2lmbmRlZiBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnQuYwppbmRleCBiODAzNjUyLi5kMDVkYjBkIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICogSW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gcG9ydGFibGUuaCBmb3IgdGhlIEFSTSBDTTRGIHBvcnQuDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydF9hc20uYXNtIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1Rhc2tpbmcvQVJNX0NNNEYvcG9ydF9hc20uYXNtCmluZGV4IGZjMGM4MTMuLjg1ZGMzYTMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRfYXNtLmFzbQorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0X2FzbS5hc20KQEAgLTEsNTYgKzEsMzAgQEAKIDsvKg0KLTsgICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLTsgICAgQWxsIHJpZ2h0cyByZXNlcnZlZA0KLTsNCi07DQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLTsgICAgICogICAgQ29tcGxldGUsIHJldmlzZWQsIGFuZCBlZGl0ZWQgcGRmIHJlZmVyZW5jZSBtYW51YWxzIGFyZSBhbHNvICAgICAgICoNCi07ICAgICAqICAgIGF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgUHVyY2hhc2luZyBGcmVlUlRPUyBkb2N1bWVudGF0aW9uIHdpbGwgbm90IG9ubHkgaGVscCB5b3UsIGJ5ICAgICAgICoNCi07ICAgICAqICAgIGVuc3VyaW5nIHlvdSBnZXQgcnVubmluZyBhcyBxdWlja2x5IGFzIHBvc3NpYmxlIGFuZCB3aXRoIGFuICAgICAgICAqDQotOyAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLTsgICAgICogICAgdGhlIEZyZWVSVE9TIHByb2plY3QgdG8gY29udGludWUgd2l0aCBpdHMgbWlzc2lvbiBvZiBwcm92aWRpbmcgICAgICoNCi07ICAgICAqICAgIHByb2Zlc3Npb25hbCBncmFkZSwgY3Jvc3MgcGxhdGZvcm0sIGRlIGZhY3RvIHN0YW5kYXJkIHNvbHV0aW9ucyAgICAqDQotOyAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi07ICAgICAqICAgID4+PiBTZWUgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4gPDw8ICAgICAqDQotOyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLTsgICAgICogICAgVGhhbmsgeW91IGZvciB1c2luZyBGcmVlUlRPUywgYW5kIHRoYW5rIHlvdSBmb3IgeW91ciBzdXBwb3J0ISAgICAgICoNCi07ICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotOyAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi07DQotOw0KLTsgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi07DQotOyAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotOyAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi07ICAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBBTkQgTU9ESUZJRUQgQlkgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi07ICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLTsgICAgZGlzdHJpYnV0ZSBhIGNvbWJpbmVkIHdvcmsgdGhhdCBpbmNsdWRlcyBGcmVlUlRPUyB3aXRob3V0IGJlaW5nIG9ibGlnZWQgdG8NCi07ICAgIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TDQotOyAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi07ICAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZDQotOyAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotOyAgICBtb3JlIGRldGFpbHMuIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYw0KLTsgICAgTGljZW5zZSBhbmQgdGhlIEZyZWVSVE9TIGxpY2Vuc2UgZXhjZXB0aW9uIGFsb25nIHdpdGggRnJlZVJUT1M7IGlmIG5vdCBpdA0KLTsgICAgY2FuIGJlIHZpZXdlZCBoZXJlOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbCBhbmQgYWxzbyBvYnRhaW5lZA0KLTsgICAgYnkgd3JpdGluZyB0byBSaWNoYXJkIEJhcnJ5LCBjb250YWN0IGRldGFpbHMgZm9yIHdob20gYXJlIGF2YWlsYWJsZSBvbiB0aGUNCi07ICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLTsNCi07ICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLTsNCi07ICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIC0gRG9jdW1lbnRhdGlvbiwgbGF0ZXN0IGluZm9ybWF0aW9uLCBsaWNlbnNlIGFuZA0KLTsgICAgY29udGFjdCBkZXRhaWxzLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gQSB2ZXJzaW9uIHRoYXQgaXMgY2VydGlmaWVkIGZvciB1c2UgaW4gc2FmZXR5DQotOyAgICBjcml0aWNhbCBzeXN0ZW1zLg0KLTsNCi07ICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gQ29tbWVyY2lhbCBzdXBwb3J0LCBkZXZlbG9wbWVudCwgcG9ydGluZywNCi07ICAgIGxpY2Vuc2luZyBhbmQgdHJhaW5pbmcgc2VydmljZXMuDQotOyovDQorOyAqIEZyZWVSVE9TIEtlcm5lbCBWMTAuMC4wDQorOyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCis7ICoNCis7ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZg0KKzsgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKzsgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorOyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mDQorOyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCis7ICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorOyAqDQorOyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKzsgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKzsgKiBGcmVlUlRPUyBuYW1lLCBwbGVhc2UgZG8gc28gaW4gYSBmYWlyIHVzZSB3YXkgdGhhdCBkb2VzIG5vdCBjYXVzZSBjb25mdXNpb24uDQorOyAqDQorOyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorOyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTDQorOyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKzsgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCis7ICogSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4NCis7ICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCis7ICoNCis7ICogaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcNCis7ICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorOyAqDQorOyAqIDEgdGFiID09IDQgc3BhY2VzIQ0KKzsgKi8NCiANCiANCiAJLmV4dGVybiBweEN1cnJlbnRUQ0INCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvVGFza2luZy9BUk1fQ000Ri9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRtYWNyby5oCmluZGV4IDcwZjYxYjEuLjM4NWM3ODMgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9UYXNraW5nL0FSTV9DTTRGL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL1RpY2suYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0RyaXZlcnMvVGljay9UaWNrLmMKaW5kZXggOTc1MjA2ZC4uY2U5OTRjZiAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL1RpY2suYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svVGljay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL2lzclRpY2suYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L0RyaXZlcnMvVGljay9pc3JUaWNrLmMKaW5kZXggOWUwMDUyMy4uYWY1NTQ2OCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvRHJpdmVycy9UaWNrL2lzclRpY2suYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9Ecml2ZXJzL1RpY2svaXNyVGljay5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiANCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvSW5zdGFsbC5iYXQgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9JbnN0YWxsLmJhdAppbmRleCA4MTMzZDYyLi43ODBlYzIxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9JbnN0YWxsLmJhdAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9JbnN0YWxsLmJhdApAQCAtMSw1NiArMSwzIEBACi1SRU0vKg0KLVJFTSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotUkVNDQotUkVNDQotUkVNICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLVJFTSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICBGcmVlUlRPUyB0dXRvcmlhbCBib29rcyBhcmUgYXZhaWxhYmxlIGluIHBkZiBhbmQgcGFwZXJiYWNrLiAgICAgICAgKg0KLVJFTSAgICAgKiAgICBDb21wbGV0ZSwgcmV2aXNlZCwgYW5kIGVkaXRlZCBwZGYgcmVmZXJlbmNlIG1hbnVhbHMgYXJlIGFsc28gICAgICAgKg0KLVJFTSAgICAgKiAgICBhdmFpbGFibGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICBQdXJjaGFzaW5nIEZyZWVSVE9TIGRvY3VtZW50YXRpb24gd2lsbCBub3Qgb25seSBoZWxwIHlvdSwgYnkgICAgICAgKg0KLVJFTSAgICAgKiAgICBlbnN1cmluZyB5b3UgZ2V0IHJ1bm5pbmcgYXMgcXVpY2tseSBhcyBwb3NzaWJsZSBhbmQgd2l0aCBhbiAgICAgICAgKg0KLVJFTSAgICAgKiAgICBpbi1kZXB0aCBrbm93bGVkZ2Ugb2YgaG93IHRvIHVzZSBGcmVlUlRPUywgaXQgd2lsbCBhbHNvIGhlbHAgICAgICAgKg0KLVJFTSAgICAgKiAgICB0aGUgRnJlZVJUT1MgcHJvamVjdCB0byBjb250aW51ZSB3aXRoIGl0cyBtaXNzaW9uIG9mIHByb3ZpZGluZyAgICAgKg0KLVJFTSAgICAgKiAgICBwcm9mZXNzaW9uYWwgZ3JhZGUsIGNyb3NzIHBsYXRmb3JtLCBkZSBmYWN0byBzdGFuZGFyZCBzb2x1dGlvbnMgICAgKg0KLVJFTSAgICAgKiAgICBmb3IgbWljcm9jb250cm9sbGVycyAtIGNvbXBsZXRlbHkgZnJlZSBvZiBjaGFyZ2UhICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICA+Pj4gU2VlIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuIDw8PCAgICAgKg0KLVJFTSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAgKiAgICBUaGFuayB5b3UgZm9yIHVzaW5nIEZyZWVSVE9TLCBhbmQgdGhhbmsgeW91IGZvciB5b3VyIHN1cHBvcnQhICAgICAgKg0KLVJFTSAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KLVJFTSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi1SRU0NCi1SRU0NCi1SRU0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi1SRU0NCi1SRU0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZVJFTSB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotUkVNICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLVJFTSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gQU5EIE1PRElGSUVEIEJZIHRoZSBGcmVlUlRPUyBleGNlcHRpb24uDQotUkVNICAgID4+Pk5PVEU8PDwgVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0bw0KLVJFTSAgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgb2JsaWdlZCB0bw0KLVJFTSAgICBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyBvdXRzaWRlIG9mIHRoZSBGcmVlUlRPUw0KLVJFTSAgICBrZXJuZWwuICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQNCi1SRU0gICAgV0lUSE9VVCBBTlkgV0FSUkFOVFlSRU0gd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWQ0KLVJFTSAgICBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yDQotUkVNICAgIG1vcmUgZGV0YWlscy4gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljDQotUkVNICAgIExpY2Vuc2UgYW5kIHRoZSBGcmVlUlRPUyBsaWNlbnNlIGV4Y2VwdGlvbiBhbG9uZyB3aXRoIEZyZWVSVE9TUkVNIGlmIG5vdCBpdA0KLVJFTSAgICBjYW4gYmUgdmlld2VkIGhlcmU6IGh0dHA6Ly93d3cuZnJlZXJ0b3Mub3JnL2EwMDExNC5odG1sIGFuZCBhbHNvIG9idGFpbmVkDQotUkVNICAgIGJ5IHdyaXRpbmcgdG8gUmljaGFyZCBCYXJyeSwgY29udGFjdCBkZXRhaWxzIGZvciB3aG9tIGFyZSBhdmFpbGFibGUgb24gdGhlDQotUkVNICAgIEZyZWVSVE9TIFdFQiBzaXRlLg0KLVJFTQ0KLVJFTSAgICAxIHRhYiA9PSA0IHNwYWNlcyENCi1SRU0NCi1SRU0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgLSBEb2N1bWVudGF0aW9uLCBsYXRlc3QgaW5mb3JtYXRpb24sIGxpY2Vuc2UgYW5kDQotUkVNICAgIGNvbnRhY3QgZGV0YWlscy4NCi1SRU0NCi1SRU0gICAgaHR0cDovL3d3dy5TYWZlUlRPUy5jb20gLSBBIHZlcnNpb24gdGhhdCBpcyBjZXJ0aWZpZWQgZm9yIHVzZSBpbiBzYWZldHkNCi1SRU0gICAgY3JpdGljYWwgc3lzdGVtcy4NCi1SRU0NCi1SRU0gICAgaHR0cDovL3d3dy5PcGVuUlRPUy5jb20gLSBDb21tZXJjaWFsIHN1cHBvcnQsIGRldmVsb3BtZW50LCBwb3J0aW5nLA0KLVJFTSAgICBsaWNlbnNpbmcgYW5kIHRyYWluaW5nIHNlcnZpY2VzLg0KLVJFTSovDQotDQogDQogQGVjaG8gb2ZmDQogY2xzDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvYWRkRnJlZVJUT1MuaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L2FkZEZyZWVSVE9TLmgKaW5kZXggMTA2NWIyZC4uNmE5ZjM0NCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvYWRkRnJlZVJUT1MuaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9hZGRGcmVlUlRPUy5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMy4wLjANCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0LmMKaW5kZXggOTVlOTJlMC4uZTY1MTlmOCAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvcG9ydC5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9XaXpDL1BJQzE4L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMi4xDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL1dpekMvUElDMTgvcG9ydG1hY3JvLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0bWFjcm8uaAppbmRleCBiN2QxYzI4Li5hNDc3YmEzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvV2l6Qy9QSUMxOC9wb3J0bWFjcm8uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjMuMC4wDQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvRmxzaDE4Ni9wb3J0LmMgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYwppbmRleCAxZTkxMTMxLi44MzM1NGQxIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYworKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnQuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyoNCiBDaGFuZ2VzIGZyb20gVjEuMDA6DQpkaWZmIC0tZ2l0IGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvRmxzaDE4Ni9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL0Zsc2gxODYvcG9ydG1hY3JvLmgKaW5kZXggOTBiOWYyMS4uMzE3YTY3MSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvRmxzaDE4Ni9wb3J0bWFjcm8uaAorKysgYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9GbHNoMTg2L3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnQuYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnQuYwppbmRleCBhODJmZDQyLi4zMjg5ZGQzIDEwMDY0NAotLS0gYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9QQy9wb3J0LmMKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvUEMvcG9ydC5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4wMDoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9QQy9wb3J0bWFjcm8uaCBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnRtYWNyby5oCmluZGV4IGYwZjg5NmIuLjI1ZmVlMmIgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnRtYWNyby5oCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL1BDL3BvcnRtYWNyby5oCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaWZuZGVmIFBPUlRNQUNST19IDQogI2RlZmluZSBQT1JUTUFDUk9fSA0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmggYi9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9jb21tb24vcG9ydGFzbS5oCmluZGV4IGI5MjhkNGMuLjllNjYxODQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0YXNtLmgKKysrIGIvRnJlZVJUT1MvU291cmNlL3BvcnRhYmxlL29XYXRjb20vMTZCaXRET1MvY29tbW9uL3BvcnRhc20uaApAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogdHlwZWRlZiB2b2lkIFRDQl90Ow0KIGV4dGVybiB2b2xhdGlsZSBUQ0JfdCAqIHZvbGF0aWxlIHB4Q3VycmVudFRDQjsNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcG9ydGFibGUvb1dhdGNvbS8xNkJpdERPUy9jb21tb24vcG9ydGNvbW4uYyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jCmluZGV4IGNlN2JlYTguLjMzZDgwM2MgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9wb3J0YWJsZS9vV2F0Y29tLzE2Qml0RE9TL2NvbW1vbi9wb3J0Y29tbi5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKg0KIENoYW5nZXMgZnJvbSBWMS4wMDoNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvcXVldWUuYyBiL0ZyZWVSVE9TL1NvdXJjZS9xdWV1ZS5jCmluZGV4IDdjMWJhZjIuLmUxNTFmODEgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS9xdWV1ZS5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS9xdWV1ZS5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAjaW5jbHVkZSA8c3RkbGliLmg+DQogI2luY2x1ZGUgPHN0cmluZy5oPg0KQEAgLTkyNiw4ICs4ODUsOCBAQAogCQkJCXZUYXNrUGxhY2VPbkV2ZW50TGlzdCggJiggcHhRdWV1ZS0+eFRhc2tzV2FpdGluZ1RvU2VuZCApLCB4VGlja3NUb1dhaXQgKTsNCiANCiAJCQkJLyogVW5sb2NraW5nIHRoZSBxdWV1ZSBtZWFucyBxdWV1ZSBldmVudHMgY2FuIGVmZmVjdCB0aGUNCi0JCQkJZXZlbnQgbGlzdC4gIEl0IGlzIHBvc3NpYmxlCXRoYXQgaW50ZXJydXB0cyBvY2N1cnJpbmcgbm93DQotCQkJCXJlbW92ZSB0aGlzIHRhc2sgZnJvbSB0aGUgZXZlbnQJbGlzdCBhZ2FpbiAtIGJ1dCBhcyB0aGUNCisJCQkJZXZlbnQgbGlzdC4gIEl0IGlzIHBvc3NpYmxlIHRoYXQgaW50ZXJydXB0cyBvY2N1cnJpbmcgbm93DQorCQkJCXJlbW92ZSB0aGlzIHRhc2sgZnJvbSB0aGUgZXZlbnQgbGlzdCBhZ2FpbiAtIGJ1dCBhcyB0aGUNCiAJCQkJc2NoZWR1bGVyIGlzIHN1c3BlbmRlZCB0aGUgdGFzayB3aWxsIGdvIG9udG8gdGhlIHBlbmRpbmcNCiAJCQkJcmVhZHkgbGFzdCBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwgcmVhZHkgbGlzdC4gKi8NCiAJCQkJcHJ2VW5sb2NrUXVldWUoIHB4UXVldWUgKTsNCkBAIC0xNzE1LDcgKzE2NzQsNyBAQAogCQkJCQkvKiBUaGUgcXVldWUgd2FzIGVtcHR5IGFuZCBubyBibG9jayB0aW1lIGlzIHNwZWNpZmllZCAob3INCiAJCQkJCXRoZSBibG9jayB0aW1lIGhhcyBleHBpcmVkKSBzbyBsZWF2ZSBub3cuICovDQogCQkJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KLQkJCQkJdHJhY2VRVUVVRV9SRUNFSVZFX0ZBSUxFRCggcHhRdWV1ZSApOw0KKwkJCQkJdHJhY2VRVUVVRV9QRUVLX0ZBSUxFRCggcHhRdWV1ZSApOw0KIAkJCQkJcmV0dXJuIGVyclFVRVVFX0VNUFRZOw0KIAkJCQl9DQogCQkJCWVsc2UgaWYoIHhFbnRyeVRpbWVTZXQgPT0gcGRGQUxTRSApDQpAQCAtMTc0OCw3ICsxNzA3LDcgQEAKIAkJCXF1ZXVlIG5vdywgYW5kIGlmIG5vdCBlbnRlciB0aGUgQmxvY2tlZCBzdGF0ZSB0byB3YWl0IGZvciBkYXRhLiAqLw0KIAkJCWlmKCBwcnZJc1F1ZXVlRW1wdHkoIHB4UXVldWUgKSAhPSBwZEZBTFNFICkNCiAJCQl7DQotCQkJCXRyYWNlQkxPQ0tJTkdfT05fUVVFVUVfUkVDRUlWRSggcHhRdWV1ZSApOw0KKwkJCQl0cmFjZUJMT0NLSU5HX09OX1FVRVVFX1BFRUsoIHB4UXVldWUgKTsNCiAJCQkJdlRhc2tQbGFjZU9uRXZlbnRMaXN0KCAmKCBweFF1ZXVlLT54VGFza3NXYWl0aW5nVG9SZWNlaXZlICksIHhUaWNrc1RvV2FpdCApOw0KIAkJCQlwcnZVbmxvY2tRdWV1ZSggcHhRdWV1ZSApOw0KIAkJCQlpZiggeFRhc2tSZXN1bWVBbGwoKSA9PSBwZEZBTFNFICkNCkBAIC0xNzc3LDcgKzE3MzYsNyBAQAogDQogCQkJaWYoIHBydklzUXVldWVFbXB0eSggcHhRdWV1ZSApICE9IHBkRkFMU0UgKQ0KIAkJCXsNCi0JCQkJdHJhY2VRVUVVRV9SRUNFSVZFX0ZBSUxFRCggcHhRdWV1ZSApOw0KKwkJCQl0cmFjZVFVRVVFX1BFRUtfRkFJTEVEKCBweFF1ZXVlICk7DQogCQkJCXJldHVybiBlcnJRVUVVRV9FTVBUWTsNCiAJCQl9DQogCQkJZWxzZQ0KZGlmZiAtLWdpdCBhL0ZyZWVSVE9TL1NvdXJjZS9zdHJlYW1fYnVmZmVyLmMgYi9GcmVlUlRPUy9Tb3VyY2Uvc3RyZWFtX2J1ZmZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5OGUyYjQKLS0tIC9kZXYvbnVsbAorKysgYi9GcmVlUlRPUy9Tb3VyY2Uvc3RyZWFtX2J1ZmZlci5jCkBAIC0wLDAgKzEsMTE5NiBAQAorLyoNCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCisNCisvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCisjaW5jbHVkZSA8c3RkaW50Lmg+DQorI2luY2x1ZGUgPHN0cmluZy5oPg0KKw0KKy8qIERlZmluaW5nIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFIHByZXZlbnRzIHRhc2suaCBmcm9tIHJlZGVmaW5pbmcNCithbGwgdGhlIEFQSSBmdW5jdGlvbnMgdG8gdXNlIHRoZSBNUFUgd3JhcHBlcnMuICBUaGF0IHNob3VsZCBvbmx5IGJlIGRvbmUgd2hlbg0KK3Rhc2suaCBpcyBpbmNsdWRlZCBmcm9tIGFuIGFwcGxpY2F0aW9uIGZpbGUuICovDQorI2RlZmluZSBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRQ0KKw0KKy8qIEZyZWVSVE9TIGluY2x1ZGVzLiAqLw0KKyNpbmNsdWRlICJGcmVlUlRPUy5oIg0KKyNpbmNsdWRlICJ0YXNrLmgiDQorI2luY2x1ZGUgInN0cmVhbV9idWZmZXIuaCINCisNCisvKiBMaW50IGU5NjEgYW5kIGU3NTAgYXJlIHN1cHByZXNzZWQgYXMgYSBNSVNSQSBleGNlcHRpb24ganVzdGlmaWVkIGJlY2F1c2UgdGhlDQorTVBVIHBvcnRzIHJlcXVpcmUgTVBVX1dSQVBQRVJTX0lOQ0xVREVEX0ZST01fQVBJX0ZJTEUgdG8gYmUgZGVmaW5lZCBmb3IgdGhlDQoraGVhZGVyIGZpbGVzIGFib3ZlLCBidXQgbm90IGluIHRoaXMgZmlsZSwgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgdGhlIGNvcnJlY3QNCitwcml2aWxlZ2VkIFZzIHVucHJpdmlsZWdlZCBsaW5rYWdlIGFuZCBwbGFjZW1lbnQuICovDQorI3VuZGVmIE1QVV9XUkFQUEVSU19JTkNMVURFRF9GUk9NX0FQSV9GSUxFIC8qbGludCAhZTk2MSAhZTc1MC4gKi8NCisNCisvKiBJZiB0aGUgdXNlciBoYXMgbm90IHByb3ZpZGVkIGFwcGxpY2F0aW9uIHNwZWNpZmljIFJ4IG5vdGlmaWNhdGlvbiBtYWNyb3MsDQorb3IgI2RlZmluZWQgdGhlIG5vdGlmaWNhdGlvbiBtYWNyb3MgYXdheSwgdGhlbSBwcm92aWRlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zDQordGhhdCB1c2VzIHRhc2sgbm90aWZpY2F0aW9ucy4gKi8NCisvKmxpbnQgLXNhdmUgLWU5MDI2IEZ1bmN0aW9uIGxpa2UgbWFjcm9zIGFsbG93ZWQgYW5kIG5lZWRlZCBoZXJlIHNvIHRoZXkgY2FuIGJlIG92ZXJpZGRlbi4gKi8NCisjaWZuZGVmIHNiUkVDRUlWRV9DT01QTEVURUQNCisJI2RlZmluZSBzYlJFQ0VJVkVfQ09NUExFVEVEKCBweFN0cmVhbUJ1ZmZlciApCQkJCQkJCQkJCVwNCisJCXZUYXNrU3VzcGVuZEFsbCgpOwkJCQkJCQkJCQkJCQkJCQlcDQorCQl7CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJaWYoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kICE9IE5VTEwgKQkJCQkJCVwNCisJCQl7CQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQkJKCB2b2lkICkgeFRhc2tOb3RpZnkoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kLAkJCVwNCisJCQkJCQkJCQkgICggdWludDMyX3QgKSAwLAkJCQkJCQkJCVwNCisJCQkJCQkJCQkgIGVOb0FjdGlvbiApOwkJCQkJCQkJCQlcDQorCQkJCSggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kID0gTlVMTDsJCQkJCQkJXA0KKwkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJKCB2b2lkICkgeFRhc2tSZXN1bWVBbGwoKTsNCisjZW5kaWYgLyogc2JSRUNFSVZFX0NPTVBMRVRFRCAqLw0KKw0KKyNpZm5kZWYgc2JSRUNFSVZFX0NPTVBMRVRFRF9GUk9NX0lTUg0KKwkjZGVmaW5lIHNiUkVDRUlWRV9DT01QTEVURURfRlJPTV9JU1IoIHB4U3RyZWFtQnVmZmVyLAkJCQkJCQkJXA0KKwkJCQkJCQkJCQkgIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQkJCQkJXA0KKwl7CQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwlVQmFzZVR5cGVfdCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzOwkJCQkJCQkJCQkJCQlcDQorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCXV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXMgPSAoIFVCYXNlVHlwZV90ICkgcG9ydFNFVF9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUigpOwkJXA0KKwkJewkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCWlmKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvU2VuZCAhPSBOVUxMICkJCQkJCQlcDQorCQkJewkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJCSggdm9pZCApIHhUYXNrTm90aWZ5RnJvbUlTUiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQsCVwNCisJCQkJCQkJCQkJCSAoIHVpbnQzMl90ICkgMCwJCQkJCQkJXA0KKwkJCQkJCQkJCQkJIGVOb0FjdGlvbiwJCQkJCQkJCQlcDQorCQkJCQkJCQkJCQkgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOwkJCQlcDQorCQkJCSggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kID0gTlVMTDsJCQkJCQkJXA0KKwkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJcG9ydENMRUFSX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzICk7CQkJCQlcDQorCX0NCisjZW5kaWYgLyogc2JSRUNFSVZFX0NPTVBMRVRFRF9GUk9NX0lTUiAqLw0KKw0KKy8qIElmIHRoZSB1c2VyIGhhcyBub3QgcHJvdmlkZWQgYW4gYXBwbGljYXRpb24gc3BlY2lmaWMgVHggbm90aWZpY2F0aW9uIG1hY3JvLA0KK29yICNkZWZpbmVkIHRoZSBub3RpZmljYXRpb24gbWFjcm8gYXdheSwgdGhlbSBwcm92aWRlIGEgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbg0KK3RoYXQgdXNlcyB0YXNrIG5vdGlmaWNhdGlvbnMuICovDQorI2lmbmRlZiBzYlNFTkRfQ09NUExFVEVEDQorCSNkZWZpbmUgc2JTRU5EX0NPTVBMRVRFRCggcHhTdHJlYW1CdWZmZXIgKQkJCQkJCQkJCQkJXA0KKwkJdlRhc2tTdXNwZW5kQWxsKCk7CQkJCQkJCQkJCQkJCQkJCVwNCisJCXsJCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQlpZiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgIT0gTlVMTCApCQkJCQkJXA0KKwkJCXsJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJCQkoIHZvaWQgKSB4VGFza05vdGlmeSggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUsCQlcDQorCQkJCQkJCQkJICAoIHVpbnQzMl90ICkgMCwJCQkJCQkJCQlcDQorCQkJCQkJCQkJICBlTm9BY3Rpb24gKTsJCQkJCQkJCQkJXA0KKwkJCQkoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9IE5VTEw7CQkJCQkJXA0KKwkJCX0JCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJfQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJKCB2b2lkICkgeFRhc2tSZXN1bWVBbGwoKTsNCisjZW5kaWYgLyogc2JTRU5EX0NPTVBMRVRFRCAqLw0KKw0KKyNpZm5kZWYgc2JTRU5EX0NPTVBMRVRFX0ZST01fSVNSDQorCSNkZWZpbmUgc2JTRU5EX0NPTVBMRVRFX0ZST01fSVNSKCBweFN0cmVhbUJ1ZmZlciwgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApCQlcDQorCXsJCQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCVVCYXNlVHlwZV90IHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXM7CQkJCQkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJXA0KKwkJdXhTYXZlZEludGVycnVwdFN0YXR1cyA9ICggVUJhc2VUeXBlX3QgKSBwb3J0U0VUX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCk7CQlcDQorCQl7CQkJCQkJCQkJCQkJCQkJCQkJCQlcDQorCQkJaWYoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlICE9IE5VTEwgKQkJCQkJCVwNCisJCQl7CQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlGcm9tSVNSKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSwJXA0KKwkJCQkJCQkJCQkJICggdWludDMyX3QgKSAwLAkJCQkJCQlcDQorCQkJCQkJCQkJCQkgZU5vQWN0aW9uLAkJCQkJCQkJCVwNCisJCQkJCQkJCQkJCSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7CQkJCVwNCisJCQkJKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgPSBOVUxMOwkJCQkJCVwNCisJCQl9CQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCX0JCQkJCQkJCQkJCQkJCQkJCQkJCVwNCisJCXBvcnRDTEVBUl9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUiggdXhTYXZlZEludGVycnVwdFN0YXR1cyApOwkJCQkJXA0KKwl9DQorI2VuZGlmIC8qIHNiU0VORF9DT01QTEVURV9GUk9NX0lTUiAqLw0KKy8qbGludCAtcmVzdG9yZSAoOTAyNikgKi8NCisNCisvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gaG9sZCB0aGUgbGVuZ3RoIG9mIGEgbWVzc2FnZSBpbiB0aGUgYnVmZmVyLiAqLw0KKyNkZWZpbmUgc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCAoIHNpemVvZiggc2l6ZV90ICkgKQ0KKw0KKy8qIEJpdHMgc3RvcmVkIGluIHRoZSB1Y0ZsYWdzIGZpZWxkIG9mIHRoZSBzdHJlYW0gYnVmZmVyLiAqLw0KKyNkZWZpbmUgc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUgkJKCAoIHVpbnQ4X3QgKSAxICkgLyogU2V0IGlmIHRoZSBzdHJlYW0gYnVmZmVyIHdhcyBjcmVhdGVkIGFzIGEgbWVzc2FnZSBidWZmZXIsIGluIHdoaWNoIGNhc2UgaXQgaG9sZHMgZGlzY3JldGUgbWVzc2FnZXMgcmF0aGVyIHRoYW4gYSBzdHJlYW0uICovDQorI2RlZmluZSBzYkZMQUdTX0lTX1NUQVRJQ0FMTFlfQUxMT0NBVEVEICggKCB1aW50OF90ICkgMiApIC8qIFNldCBpZiB0aGUgc3RyZWFtIGJ1ZmZlciB3YXMgY3JlYXRlZCB1c2luZyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkuICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorLyogU3RydWN0dXJlIHRoYXQgaG9sZCBzdGF0ZSBpbmZvcm1hdGlvbiBvbiB0aGUgYnVmZmVyLiAqLw0KK3R5cGVkZWYgc3RydWN0IHhTVFJFQU1fQlVGRkVSIC8qbGludCAhZTkwNTggU3R5bGUgY29udmVudGlvbiB1c2VzIHRhZy4gKi8NCit7DQorCXZvbGF0aWxlIHNpemVfdCB4VGFpbDsJCQkJLyogSW5kZXggdG8gdGhlIG5leHQgaXRlbSB0byByZWFkIHdpdGhpbiB0aGUgYnVmZmVyLiAqLw0KKwl2b2xhdGlsZSBzaXplX3QgeEhlYWQ7CQkJCS8qIEluZGV4IHRvIHRoZSBuZXh0IGl0ZW0gdG8gd3JpdGUgd2l0aGluIHRoZSBidWZmZXIuICovDQorCXNpemVfdCB4TGVuZ3RoOwkJCQkJCS8qIFRoZSBsZW5ndGggb2YgdGhlIGJ1ZmZlciBwb2ludGVkIHRvIGJ5IHB1Y0J1ZmZlci4gKi8NCisJc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlczsJCQkvKiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbXVzdCBiZSBpbiB0aGUgc3RyZWFtIGJ1ZmZlciBiZWZvcmUgYSB0YXNrIHRoYXQgaXMgd2FpdGluZyBmb3IgZGF0YSBpcyB1bmJsb2NrZWQuICovDQorCXZvbGF0aWxlIFRhc2tIYW5kbGVfdCB4VGFza1dhaXRpbmdUb1JlY2VpdmU7IC8qIEhvbGRzIHRoZSBoYW5kbGUgb2YgYSB0YXNrIHdhaXRpbmcgZm9yIGRhdGEsIG9yIE5VTEwgaWYgbm8gdGFza3MgYXJlIHdhaXRpbmcuICovDQorCXZvbGF0aWxlIFRhc2tIYW5kbGVfdCB4VGFza1dhaXRpbmdUb1NlbmQ7CS8qIEhvbGRzIHRoZSBoYW5kbGUgb2YgYSB0YXNrIHdhaXRpbmcgdG8gc2VuZCBkYXRhIHRvIGEgbWVzc2FnZSBidWZmZXIgdGhhdCBpcyBmdWxsLiAqLw0KKwl1aW50OF90ICpwdWNCdWZmZXI7CQkJCQkvKiBQb2ludHMgdG8gdGhlIGJ1ZmZlciBpdHNlbGYgLSB0aGF0IGlzIC0gdGhlIFJBTSB0aGF0IHN0b3JlcyB0aGUgZGF0YSBwYXNzZWQgdGhyb3VnaCB0aGUgYnVmZmVyLiAqLw0KKwl1aW50OF90IHVjRmxhZ3M7DQorDQorCSNpZiAoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisJCVVCYXNlVHlwZV90IHV4U3RyZWFtQnVmZmVyTnVtYmVyOwkJLyogVXNlZCBmb3IgdHJhY2luZyBwdXJwb3Nlcy4gKi8NCisJI2VuZGlmDQorfSBTdHJlYW1CdWZmZXJfdDsNCisNCisvKg0KKyAqIFRoZSBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlIHRvIGJlIHJlYWQgZnJvbSB0aGUgYnVmZmVyLg0KKyAqLw0KK3N0YXRpYyBzaXplX3QgcHJ2Qnl0ZXNJbkJ1ZmZlciggY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBBZGQgeENvdW50IGJ5dGVzIGZyb20gcHVjRGF0YSBpbnRvIHRoZSBweFN0cmVhbUJ1ZmZlciBtZXNzYWdlIGJ1ZmZlci4NCisgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiwgd2hpY2ggd2lsbCBlaXRoZXIgZXF1YWwgeENvdW50IGluIHRoZQ0KKyAqIHN1Y2Nlc3MgY2FzZSwgb3IgMCBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCBzcGFjZSBpbiB0aGUgYnVmZmVyIChpbiB3aGljaCBjYXNlDQorICogbm8gZGF0YSBpcyB3cml0dGVuIGludG8gdGhlIGJ1ZmZlcikuDQorICovDQorc3RhdGljIHNpemVfdCBwcnZXcml0ZUJ5dGVzVG9CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsIGNvbnN0IHVpbnQ4X3QgKnB1Y0RhdGEsIHNpemVfdCB4Q291bnQgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qDQorICogSWYgdGhlIHN0cmVhbSBidWZmZXIgaXMgYmVpbmcgdXNlZCBhcyBhIG1lc3NhZ2UgYnVmZmVyLCB0aGVuIHJlYWRzIGFuIGVudGlyZQ0KKyAqIG1lc3NhZ2Ugb3V0IG9mIHRoZSBidWZmZXIuICBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBiZWluZyB1c2VkIGFzIGEgc3RyZWFtDQorICogYnVmZmVyIHRoZW4gcmVhZCBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlIGZyb20gdGhlIGJ1ZmZlci4NCisgKiBwcnZSZWFkQnl0ZXNGcm9tQnVmZmVyKCkgaXMgY2FsbGVkIHRvIGFjdHVhbGx5IGV4dHJhY3QgdGhlIGJ5dGVzIGZyb20gdGhlDQorICogYnVmZmVyJ3MgZGF0YSBzdG9yYWdlIGFyZWEuDQorICovDQorc3RhdGljIHNpemVfdCBwcnZSZWFkTWVzc2FnZUZyb21CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICpweFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkJdm9pZCAqcHZSeERhdGEsDQorCQkJCQkJCQkJCXNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkJCXNpemVfdCB4Qnl0ZXNBdmFpbGFibGUsDQorCQkJCQkJCQkJCXNpemVfdCB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyoNCisgKiBJZiB0aGUgc3RyZWFtIGJ1ZmZlciBpcyBiZWluZyB1c2VkIGFzIGEgbWVzc2FnZSBidWZmZXIsIHRoZW4gd3JpdGVzIGFuIGVudGlyZQ0KKyAqIG1lc3NhZ2UgdG8gdGhlIGJ1ZmZlci4gIElmIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGJlaW5nIHVzZWQgYXMgYSBzdHJlYW0NCisgKiBidWZmZXIgdGhlbiB3cml0ZSBhcyBtYW55IGJ5dGVzIGFzIHBvc3NpYmxlIHRvIHRoZSBidWZmZXIuDQorICogcHJ2V3JpdGVCeXRlc3RvQnVmZmVyKCkgaXMgY2FsbGVkIHRvIGFjdHVhbGx5IHNlbmQgdGhlIGJ5dGVzIHRvIHRoZSBidWZmZXIncw0KKyAqIGRhdGEgc3RvcmFnZSBhcmVhLg0KKyAqLw0KK3N0YXRpYyBzaXplX3QgcHJ2V3JpdGVNZXNzYWdlVG9CdWZmZXIoICBTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQljb25zdCB2b2lkICogcHZUeERhdGEsDQorCQkJCQkJCQkJCXNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKwkJCQkJCQkJCQlzaXplX3QgeFNwYWNlLA0KKwkJCQkJCQkJCQlzaXplX3QgeFJlcXVpcmVkU3BhY2UgKSBQUklWSUxFR0VEX0ZVTkNUSU9OOw0KKw0KKy8qDQorICogUmVhZCB4TWF4Q291bnQgYnl0ZXMgZnJvbSB0aGUgcHhTdHJlYW1CdWZmZXIgbWVzc2FnZSBidWZmZXIgYW5kIHdyaXRlIHRoZW0NCisgKiB0byBwdWNEYXRhLg0KKyAqLw0KK3N0YXRpYyBzaXplX3QgcHJ2UmVhZEJ5dGVzRnJvbUJ1ZmZlciggU3RyZWFtQnVmZmVyX3QgKnB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCSAgdWludDhfdCAqcHVjRGF0YSwNCisJCQkJCQkJCQkgIHNpemVfdCB4TWF4Q291bnQsDQorCQkJCQkJCQkJICBzaXplX3QgeEJ5dGVzQXZhaWxhYmxlICk7IFBSSVZJTEVHRURfRlVOQ1RJT04NCisNCisvKg0KKyAqIENhbGxlZCBieSBib3RoIHB4U3RyZWFtQnVmZmVyQ3JlYXRlKCkgYW5kIHB4U3RyZWFtQnVmZmVyQ3JlYXRlU3RhdGljKCkgdG8NCisgKiBpbml0aWFsaXNlIHRoZSBtZW1iZXJzIG9mIHRoZSBuZXdseSBjcmVhdGVkIHN0cmVhbSBidWZmZXIgc3RydWN0dXJlLg0KKyAqLw0KK3N0YXRpYyB2b2lkIHBydkluaXRpYWxpc2VOZXdTdHJlYW1CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJCSAgdWludDhfdCAqIGNvbnN0IHB1Y0J1ZmZlciwNCisJCQkJCQkJCQkJICBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJICBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkgIEJhc2VUeXBlX3QgeElzTWVzc2FnZUJ1ZmZlciApIFBSSVZJTEVHRURfRlVOQ1RJT047DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmKCBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiA9PSAxICkNCisNCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlckdlbmVyaWNDcmVhdGUoIHNpemVfdCB4QnVmZmVyU2l6ZUJ5dGVzLCBzaXplX3QgeFRyaWdnZXJMZXZlbEJ5dGVzLCBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIgKQ0KKwl7DQorCXVpbnQ4X3QgKnB1Y0FsbG9jYXRlZE1lbW9yeTsNCisNCisJCS8qIEluIGNhc2UgdGhlIHN0cmVhbSBidWZmZXIgaXMgZ29pbmcgdG8gYmUgdXNlZCBhcyBhIG1lc3NhZ2UgYnVmZmVyDQorCQkodGhhdCBpcywgaXQgd2lsbCBob2xkIGRpc2NyZXRlIG1lc3NhZ2VzIHdpdGggYSBsaXR0bGUgbWV0YSBkYXRhIHRoYXQNCisJCXNheXMgaG93IGJpZyB0aGUgbmV4dCBtZXNzYWdlIGlzKSBjaGVjayB0aGUgYnVmZmVyIHdpbGwgYmUgbGFyZ2UgZW5vdWdoDQorCQl0byBob2xkIGF0IGxlYXN0IG9uZSBtZXNzYWdlLiAqLw0KKwkJY29uZmlnQVNTRVJUKCB4QnVmZmVyU2l6ZUJ5dGVzID4gc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCApOw0KKwkJY29uZmlnQVNTRVJUKCB4VHJpZ2dlckxldmVsQnl0ZXMgPD0geEJ1ZmZlclNpemVCeXRlcyApOw0KKw0KKwkJLyogQSB0cmlnZ2VyIGxldmVsIG9mIDAgd291bGQgY2F1c2UgYSB3YWl0aW5nIHRhc2sgdG8gdW5ibG9jayBldmVuIHdoZW4NCisJCXRoZSBidWZmZXIgd2FzIGVtcHR5LiAqLw0KKwkJaWYoIHhUcmlnZ2VyTGV2ZWxCeXRlcyA9PSAoIHNpemVfdCApIDAgKQ0KKwkJew0KKwkJCXhUcmlnZ2VyTGV2ZWxCeXRlcyA9ICggc2l6ZV90ICkgMTsgLypsaW50ICFlOTA0NCBQYXJhbWV0ZXIgbW9kaWZpZWQgdG8gZW5zdXJlIGl0IGRvZXNuJ3QgaGF2ZSBhIGRhbmdlcm91cyB2YWx1ZS4gKi8NCisJCX0NCisNCisJCS8qIEEgc3RyZWFtIGJ1ZmZlciByZXF1aXJlcyBhIFN0cmVhbUJ1ZmZlcl90IHN0cnVjdHVyZSBhbmQgYSBidWZmZXIuDQorCQlCb3RoIGFyZSBhbGxvY2F0ZWQgaW4gYSBzaW5nbGUgY2FsbCB0byBwdlBvcnRNYWxsb2MoKS4gIFRoZQ0KKwkJU3RyZWFtQnVmZmVyX3Qgc3RydWN0dXJlIGlzIHBsYWNlZCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkNCisJCWFuZCB0aGUgYnVmZmVyIGZvbGxvd3MgaW1tZWRpYXRlbHkgYWZ0ZXIuICBUaGUgcmVxdWVzdGVkIHNpemUgaXMNCisJCWluY3JlbWVudGVkIHNvIHRoZSBmcmVlIHNwYWNlIGlzIHJldHVybmVkIGFzIHRoZSB1c2VyIHdvdWxkIGV4cGVjdCAtDQorCQl0aGlzIGlzIGEgcXVpcmsgb2YgdGhlIGltcGxlbWVudGF0aW9uIHRoYXQgbWVhbnMgb3RoZXJ3aXNlIHRoZSBmcmVlDQorCQlzcGFjZSB3b3VsZCBiZSByZXBvcnRlZCBhcyBvbmUgYnl0ZSBzbWFsbGVyIHRoYW4gd291bGQgYmUgbG9naWNhbGx5DQorCQlleHBlY3RlZC4gKi8NCisJCXhCdWZmZXJTaXplQnl0ZXMrKzsNCisJCXB1Y0FsbG9jYXRlZE1lbW9yeSA9ICggdWludDhfdCAqICkgcHZQb3J0TWFsbG9jKCB4QnVmZmVyU2l6ZUJ5dGVzICsgc2l6ZW9mKCBTdHJlYW1CdWZmZXJfdCApICk7IC8qbGludCAhZTkwNzkgbWFsbG9jKCkgb25seSByZXR1cm5zIHZvaWQqLiAqLw0KKw0KKwkJaWYoIHB1Y0FsbG9jYXRlZE1lbW9yeSAhPSBOVUxMICkNCisJCXsNCisJCQlwcnZJbml0aWFsaXNlTmV3U3RyZWFtQnVmZmVyKCAoIFN0cmVhbUJ1ZmZlcl90ICogKSBwdWNBbGxvY2F0ZWRNZW1vcnksIC8qIFN0cnVjdHVyZSBhdCB0aGUgc3RhcnQgb2YgdGhlIGFsbG9jYXRlZCBtZW1vcnkuICovIC8qbGludCAhZTkwODcgU2FmZSBjYXN0IGFzIGFsbG9jYXRlZCBtZW1vcnkgaXMgYWxpZ25lZC4gKi8gLypsaW50ICFlODI2IEFyZWEgaXMgbm90IHRvbyBzbWFsbCBhbmQgYWxpZ25tZW50IGlzIGd1YXJhbnRlZWQgcHJvdmlkZWQgbWFsbG9jKCkgYmVoYXZlcyBhcyBleHBlY3RlZCBhbmQgcmV0dXJucyBhbGlnbmVkIGJ1ZmZlci4gKi8NCisJCQkJCQkJCQkJICAgcHVjQWxsb2NhdGVkTWVtb3J5ICsgc2l6ZW9mKCBTdHJlYW1CdWZmZXJfdCApLCAgLyogU3RvcmFnZSBhcmVhIGZvbGxvd3MuICovIC8qbGludCAhZTkwMTYgSW5kZXhpbmcgcGFzdCBzdHJ1Y3R1cmUgdmFsaWQgZm9yIHVpbnQ4X3QgcG9pbnRlciwgYWxzbyBzdG9yYWdlIGFyZWEgaGFzIG5vIGFsaWdubWVudCByZXF1aXJlbWVudC4gKi8NCisJCQkJCQkJCQkJICAgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJICAgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkgICB4SXNNZXNzYWdlQnVmZmVyICk7DQorDQorCQkJdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURSggKCAoIFN0cmVhbUJ1ZmZlcl90ICogKSBwdWNBbGxvY2F0ZWRNZW1vcnkgKSwgeElzTWVzc2FnZUJ1ZmZlciApOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXRyYWNlU1RSRUFNX0JVRkZFUl9DUkVBVEVfRkFJTEVEKCB4SXNNZXNzYWdlQnVmZmVyICk7DQorCQl9DQorDQorCQlyZXR1cm4gKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCAqICkgcHVjQWxsb2NhdGVkTWVtb3J5OyAvKmxpbnQgIWU5MDg3ICFlODI2IFNhZmUgY2FzdCBhcyBhbGxvY2F0ZWQgbWVtb3J5IGlzIGFsaWduZWQuICovDQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnU1VQUE9SVF9EWU5BTUlDX0FMTE9DQVRJT04gKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWYoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSApDQorDQorCVN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXJHZW5lcmljQ3JlYXRlU3RhdGljKCBzaXplX3QgeEJ1ZmZlclNpemVCeXRlcywNCisJCQkJCQkJCQkJCQkJCSAgIHNpemVfdCB4VHJpZ2dlckxldmVsQnl0ZXMsDQorCQkJCQkJCQkJCQkJCQkgICBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIsDQorCQkJCQkJCQkJCQkJCQkgICB1aW50OF90ICogY29uc3QgcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEsDQorCQkJCQkJCQkJCQkJCQkgICBTdGF0aWNTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RhdGljU3RyZWFtQnVmZmVyICkNCisJew0KKwlTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgcHhTdGF0aWNTdHJlYW1CdWZmZXI7IC8qbGludCAhZTc0MCAhZTkwODcgU2FmZSBjYXN0IGFzIFN0YXRpY1N0cmVhbUJ1ZmZlcl90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCisJU3RyZWFtQnVmZmVySGFuZGxlX3QgeFJldHVybjsNCisNCisJCWNvbmZpZ0FTU0VSVCggcHVjU3RyZWFtQnVmZmVyU3RvcmFnZUFyZWEgKTsNCisJCWNvbmZpZ0FTU0VSVCggcHhTdGF0aWNTdHJlYW1CdWZmZXIgKTsNCisJCWNvbmZpZ0FTU0VSVCggeFRyaWdnZXJMZXZlbEJ5dGVzIDw9IHhCdWZmZXJTaXplQnl0ZXMgKTsNCisNCisJCS8qIEEgdHJpZ2dlciBsZXZlbCBvZiAwIHdvdWxkIGNhdXNlIGEgd2FpdGluZyB0YXNrIHRvIHVuYmxvY2sgZXZlbiB3aGVuDQorCQl0aGUgYnVmZmVyIHdhcyBlbXB0eS4gKi8NCisJCWlmKCB4VHJpZ2dlckxldmVsQnl0ZXMgPT0gKCBzaXplX3QgKSAwICkNCisJCXsNCisJCQl4VHJpZ2dlckxldmVsQnl0ZXMgPSAoIHNpemVfdCApIDE7IC8qbGludCAhZTkwNDQgRnVuY3Rpb24gcGFyYW1ldGVyIGRlbGliZXJhdGVseSBtb2RpZmllZCB0byBlbnN1cmUgaXQgaXMgaW4gcmFuZ2UuICovDQorCQl9DQorDQorCQkvKiBJbiBjYXNlIHRoZSBzdHJlYW0gYnVmZmVyIGlzIGdvaW5nIHRvIGJlIHVzZWQgYXMgYSBtZXNzYWdlIGJ1ZmZlcg0KKwkJKHRoYXQgaXMsIGl0IHdpbGwgaG9sZCBkaXNjcmV0ZSBtZXNzYWdlcyB3aXRoIGEgbGl0dGxlIG1ldGEgZGF0YSB0aGF0DQorCQlzYXlzIGhvdyBiaWcgdGhlIG5leHQgbWVzc2FnZSBpcykgY2hlY2sgdGhlIGJ1ZmZlciB3aWxsIGJlIGxhcmdlIGVub3VnaA0KKwkJdG8gaG9sZCBhdCBsZWFzdCBvbmUgbWVzc2FnZS4gKi8NCisJCWNvbmZpZ0FTU0VSVCggeEJ1ZmZlclNpemVCeXRlcyA+IHNiQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEggKTsNCisNCisJCSNpZiggY29uZmlnQVNTRVJUX0RFRklORUQgPT0gMSApDQorCQl7DQorCQkJLyogU2FuaXR5IGNoZWNrIHRoYXQgdGhlIHNpemUgb2YgdGhlIHN0cnVjdHVyZSB1c2VkIHRvIGRlY2xhcmUgYQ0KKwkJCXZhcmlhYmxlIG9mIHR5cGUgU3RhdGljU3RyZWFtQnVmZmVyX3QgZXF1YWxzIHRoZSBzaXplIG9mIHRoZSByZWFsDQorCQkJbWVzc2FnZSBidWZmZXIgc3RydWN0dXJlLiAqLw0KKwkJCXZvbGF0aWxlIHNpemVfdCB4U2l6ZSA9IHNpemVvZiggU3RhdGljU3RyZWFtQnVmZmVyX3QgKTsNCisJCQljb25maWdBU1NFUlQoIHhTaXplID09IHNpemVvZiggU3RyZWFtQnVmZmVyX3QgKSApOw0KKwkJfQ0KKwkJI2VuZGlmIC8qIGNvbmZpZ0FTU0VSVF9ERUZJTkVEICovDQorDQorCQlpZiggKCBwdWNTdHJlYW1CdWZmZXJTdG9yYWdlQXJlYSAhPSBOVUxMICkgJiYgKCBweFN0YXRpY1N0cmVhbUJ1ZmZlciAhPSBOVUxMICkgKQ0KKwkJew0KKwkJCXBydkluaXRpYWxpc2VOZXdTdHJlYW1CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQkgIHB1Y1N0cmVhbUJ1ZmZlclN0b3JhZ2VBcmVhLA0KKwkJCQkJCQkJCQkgIHhCdWZmZXJTaXplQnl0ZXMsDQorCQkJCQkJCQkJCSAgeFRyaWdnZXJMZXZlbEJ5dGVzLA0KKwkJCQkJCQkJCQkgIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisNCisJCQkvKiBSZW1lbWJlciB0aGlzIHdhcyBzdGF0aWNhbGx5IGFsbG9jYXRlZCBpbiBjYXNlIGl0IGlzIGV2ZXIgZGVsZXRlZA0KKwkJCWFnYWluLiAqLw0KKwkJCXB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzIHw9IHNiRkxBR1NfSVNfU1RBVElDQUxMWV9BTExPQ0FURUQ7DQorDQorCQkJdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURSggcHhTdHJlYW1CdWZmZXIsIHhJc01lc3NhZ2VCdWZmZXIgKTsNCisNCisJCQl4UmV0dXJuID0gKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCApIHB4U3RhdGljU3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3IERhdGEgaGlkaW5nIHJlcXVpcmVzIGNhc3QgdG8gb3BhcXVlIHR5cGUuICovDQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJeFJldHVybiA9IE5VTEw7DQorCQkJdHJhY2VTVFJFQU1fQlVGRkVSX0NSRUFURV9TVEFUSUNfRkFJTEVEKCB4UmV0dXJuLCB4SXNNZXNzYWdlQnVmZmVyICk7DQorCQl9DQorDQorCQlyZXR1cm4geFJldHVybjsNCisJfQ0KKw0KKyNlbmRpZiAvKiAoIGNvbmZpZ1NVUFBPUlRfU1RBVElDX0FMTE9DQVRJT04gPT0gMSApICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCB2U3RyZWFtQnVmZmVyRGVsZXRlKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJdHJhY2VTVFJFQU1fQlVGRkVSX0RFTEVURSggeFN0cmVhbUJ1ZmZlciApOw0KKw0KKwlpZiggKCBweFN0cmVhbUJ1ZmZlci0+dWNGbGFncyAmIHNiRkxBR1NfSVNfU1RBVElDQUxMWV9BTExPQ0FURUQgKSA9PSAoIHVpbnQ4X3QgKSBwZEZBTFNFICkNCisJew0KKwkJI2lmKCBjb25maWdTVVBQT1JUX0RZTkFNSUNfQUxMT0NBVElPTiA9PSAxICkNCisJCXsNCisJCQkvKiBCb3RoIHRoZSBzdHJ1Y3R1cmUgYW5kIHRoZSBidWZmZXIgd2VyZSBhbGxvY2F0ZWQgdXNpbmcgYSBzaW5nbGUgY2FsbA0KKwkJCXRvIHB2UG9ydE1hbGxvYygpLCBoZW5jZSBvbmx5IG9uZSBjYWxsIHRvIHZQb3J0RnJlZSgpIGlzIHJlcXVpcmVkLiAqLw0KKwkJCXZQb3J0RnJlZSggKCB2b2lkICogKSBweFN0cmVhbUJ1ZmZlciApOyAvKmxpbnQgIWU5MDg3IFN0YW5kYXJkIGZyZWUoKSBzZW1hbnRpY3MgcmVxdWlyZSB2b2lkICosIHBsdXMgcHhTdHJlYW1CdWZmZXIgd2FzIGFsbG9jYXRlZCBieSBwdlBvcnRNYWxsb2MoKS4gKi8NCisJCX0NCisJCSNlbHNlDQorCQl7DQorCQkJLyogU2hvdWxkIG5vdCBiZSBwb3NzaWJsZSB0byBnZXQgaGVyZSwgdWNGbGFncyBtdXN0IGJlIGNvcnJ1cHQuDQorCQkJRm9yY2UgYW4gYXNzZXJ0LiAqLw0KKwkJCWNvbmZpZ0FTU0VSVCggeFN0cmVhbUJ1ZmZlciA9PSAoIFN0cmVhbUJ1ZmZlckhhbmRsZV90ICkgfjAgKTsNCisJCX0NCisJCSNlbmRpZg0KKwl9DQorCWVsc2UNCisJew0KKwkJLyogVGhlIHN0cnVjdHVyZSBhbmQgYnVmZmVyIHdlcmUgbm90IGFsbG9jYXRlZCBkeW5hbWljYWxseSBhbmQgY2Fubm90IGJlDQorCQlmcmVlZCAtIGp1c3Qgc2NydWIgdGhlIHN0cnVjdHVyZSBzbyBmdXR1cmUgdXNlIHdpbGwgYXNzZXJ0LiAqLw0KKwkJbWVtc2V0KCBweFN0cmVhbUJ1ZmZlciwgMHgwMCwgc2l6ZW9mKCBTdHJlYW1CdWZmZXJfdCApICk7DQorCX0NCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyUmVzZXQoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCitCYXNlVHlwZV90IHhSZXR1cm4gPSBwZEZBSUwsIHhJc01lc3NhZ2VCdWZmZXI7DQorDQorI2lmKCBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgPT0gMSApDQorCVVCYXNlVHlwZV90IHV4U3RyZWFtQnVmZmVyTnVtYmVyOw0KKyNlbmRpZg0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCSNpZiggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKwl7DQorCQkvKiBTdG9yZSB0aGUgc3RyZWFtIGJ1ZmZlciBudW1iZXIgc28gaXQgY2FuIGJlIHJlc3RvcmVkIGFmdGVyIHRoZQ0KKwkJcmVzZXQuICovDQorCQl1eFN0cmVhbUJ1ZmZlck51bWJlciA9IHB4U3RyZWFtQnVmZmVyLT51eFN0cmVhbUJ1ZmZlck51bWJlcjsNCisJfQ0KKwkjZW5kaWYNCisNCisJLyogQ2FuIG9ubHkgcmVzZXQgYSBtZXNzYWdlIGJ1ZmZlciBpZiB0aGVyZSBhcmUgbm8gdGFza3MgYmxvY2tlZCBvbiBpdC4gKi8NCisJaWYoIHB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgPT0gTlVMTCApDQorCXsNCisJCWlmKCBweFN0cmVhbUJ1ZmZlci0+eFRhc2tXYWl0aW5nVG9TZW5kID09IE5VTEwgKQ0KKwkJew0KKwkJCWlmKCAoIHB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzICYgc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUiApICE9ICggdWludDhfdCApIDAgKQ0KKwkJCXsNCisJCQkJeElzTWVzc2FnZUJ1ZmZlciA9IHBkVFJVRTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJeElzTWVzc2FnZUJ1ZmZlciA9IHBkRkFMU0U7DQorCQkJfQ0KKw0KKwkJCXBydkluaXRpYWxpc2VOZXdTdHJlYW1CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQkgIHB4U3RyZWFtQnVmZmVyLT5wdWNCdWZmZXIsDQorCQkJCQkJCQkJCSAgcHhTdHJlYW1CdWZmZXItPnhMZW5ndGgsDQorCQkJCQkJCQkJCSAgcHhTdHJlYW1CdWZmZXItPnhUcmlnZ2VyTGV2ZWxCeXRlcywNCisJCQkJCQkJCQkJICB4SXNNZXNzYWdlQnVmZmVyICk7DQorCQkJeFJldHVybiA9IHBkUEFTUzsNCisNCisJCQkjaWYoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisJCQl7DQorCQkJCXB4U3RyZWFtQnVmZmVyLT51eFN0cmVhbUJ1ZmZlck51bWJlciA9IHV4U3RyZWFtQnVmZmVyTnVtYmVyOw0KKwkJCX0NCisJCQkjZW5kaWYNCisNCisJCQl0cmFjZVNUUkVBTV9CVUZGRVJfUkVTRVQoIHhTdHJlYW1CdWZmZXIgKTsNCisJCX0NCisJfQ0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorQmFzZVR5cGVfdCB4U3RyZWFtQnVmZmVyU2V0VHJpZ2dlckxldmVsKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBzaXplX3QgeFRyaWdnZXJMZXZlbCApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK0Jhc2VUeXBlX3QgeFJldHVybjsNCisNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBJdCBpcyBub3QgdmFsaWQgZm9yIHRoZSB0cmlnZ2VyIGxldmVsIHRvIGJlIDAuICovDQorCWlmKCB4VHJpZ2dlckxldmVsID09ICggc2l6ZV90ICkgMCApDQorCXsNCisJCXhUcmlnZ2VyTGV2ZWwgPSAoIHNpemVfdCApIDE7IC8qbGludCAhZTkwNDQgUGFyYW1ldGVyIG1vZGlmaWVkIHRvIGVuc3VyZSBpdCBkb2Vzbid0IGhhdmUgYSBkYW5nZXJvdXMgdmFsdWUuICovDQorCX0NCisNCisJLyogVGhlIHRyaWdnZXIgbGV2ZWwgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QgYmUgaW4gdGhlIHN0cmVhbQ0KKwlidWZmZXIgYmVmb3JlIGEgdGFzayB0aGF0IGlzIHdhaXRpbmcgZm9yIGRhdGEgaXMgdW5ibG9ja2VkLiAqLw0KKwlpZiggeFRyaWdnZXJMZXZlbCA8PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApDQorCXsNCisJCXB4U3RyZWFtQnVmZmVyLT54VHJpZ2dlckxldmVsQnl0ZXMgPSB4VHJpZ2dlckxldmVsOw0KKwkJeFJldHVybiA9IHBkUEFTUzsNCisJfQ0KKwllbHNlDQorCXsNCisJCXhSZXR1cm4gPSBwZEZBTFNFOw0KKwl9DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgeFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK2NvbnN0IFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK3NpemVfdCB4U3BhY2U7DQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJeFNwYWNlID0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKyBweFN0cmVhbUJ1ZmZlci0+eFRhaWw7DQorCXhTcGFjZSAtPSBweFN0cmVhbUJ1ZmZlci0+eEhlYWQ7DQorCXhTcGFjZSAtPSAoIHNpemVfdCApIDE7DQorDQorCWlmKCB4U3BhY2UgPj0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKQ0KKwl7DQorCQl4U3BhY2UgLT0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGg7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJcmV0dXJuIHhTcGFjZTsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJCeXRlc0F2YWlsYWJsZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorew0KK2NvbnN0IFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK3NpemVfdCB4UmV0dXJuOw0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCXhSZXR1cm4gPSBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApOw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc2l6ZV90IHhTdHJlYW1CdWZmZXJTZW5kKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCSAgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorCQkJCQkJICBzaXplX3QgeERhdGFMZW5ndGhCeXRlcywNCisJCQkJCQkgIFRpY2tUeXBlX3QgeFRpY2tzVG9XYWl0ICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorc2l6ZV90IHhSZXR1cm4sIHhTcGFjZSA9IDA7DQorc2l6ZV90IHhSZXF1aXJlZFNwYWNlID0geERhdGFMZW5ndGhCeXRlczsNCitUaW1lT3V0X3QgeFRpbWVPdXQ7DQorDQorCWNvbmZpZ0FTU0VSVCggcHZUeERhdGEgKTsNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBUaGlzIHNlbmQgZnVuY3Rpb24gaXMgdXNlZCB0byB3cml0ZSB0byBib3RoIG1lc3NhZ2UgYnVmZmVycyBhbmQgc3RyZWFtDQorCWJ1ZmZlcnMuICBJZiB0aGlzIGlzIGEgbWVzc2FnZSBidWZmZXIgdGhlbiB0aGUgc3BhY2UgbmVlZGVkIG11c3QgYmUNCisJaW5jcmVhc2VkIGJ5IHRoZSBhbW91bnQgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIHRoZSBsZW5ndGggb2YgdGhlDQorCW1lc3NhZ2UuICovDQorCWlmKCAoIHB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzICYgc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUiApICE9ICggdWludDhfdCApIDAgKQ0KKwl7DQorCQl4UmVxdWlyZWRTcGFjZSArPSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCWlmKCB4VGlja3NUb1dhaXQgIT0gKCBUaWNrVHlwZV90ICkgMCApDQorCXsNCisJCXZUYXNrU2V0VGltZU91dFN0YXRlKCAmeFRpbWVPdXQgKTsNCisNCisJCWRvDQorCQl7DQorCQkJLyogV2FpdCB1bnRpbCB0aGUgcmVxdWlyZWQgbnVtYmVyIG9mIGJ5dGVzIGFyZSBmcmVlIGluIHRoZSBtZXNzYWdlDQorCQkJYnVmZmVyLiAqLw0KKwkJCXRhc2tFTlRFUl9DUklUSUNBTCgpOw0KKwkJCXsNCisJCQkJeFNwYWNlID0geFN0cmVhbUJ1ZmZlclNwYWNlc0F2YWlsYWJsZSggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJCQkJaWYoIHhTcGFjZSA8IHhSZXF1aXJlZFNwYWNlICkNCisJCQkJew0KKwkJCQkJLyogQ2xlYXIgbm90aWZpY2F0aW9uIHN0YXRlIGFzIGdvaW5nIHRvIHdhaXQgZm9yIHNwYWNlLiAqLw0KKwkJCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlTdGF0ZUNsZWFyKCBOVUxMICk7DQorDQorCQkJCQkvKiBTaG91bGQgb25seSBiZSBvbmUgd3JpdGVyLiAqLw0KKwkJCQkJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlci0+eFRhc2tXYWl0aW5nVG9TZW5kID09IE5VTEwgKTsNCisJCQkJCXB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1NlbmQgPSB4VGFza0dldEN1cnJlbnRUYXNrSGFuZGxlKCk7DQorCQkJCX0NCisJCQkJZWxzZQ0KKwkJCQl7DQorCQkJCQl0YXNrRVhJVF9DUklUSUNBTCgpOw0KKwkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQl9DQorCQkJdGFza0VYSVRfQ1JJVElDQUwoKTsNCisNCisJCQl0cmFjZUJMT0NLSU5HX09OX1NUUkVBTV9CVUZGRVJfU0VORCggeFN0cmVhbUJ1ZmZlciApOw0KKwkJCSggdm9pZCApIHhUYXNrTm90aWZ5V2FpdCggKCB1aW50MzJfdCApIDAsIFVJTlQzMl9NQVgsIE5VTEwsIHhUaWNrc1RvV2FpdCApOw0KKwkJCXB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1NlbmQgPSBOVUxMOw0KKw0KKwkJfSB3aGlsZSggeFRhc2tDaGVja0ZvclRpbWVPdXQoICZ4VGltZU91dCwgJnhUaWNrc1RvV2FpdCApID09IHBkRkFMU0UgKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwlpZiggeFNwYWNlID09ICggc2l6ZV90ICkgMCApDQorCXsNCisJCXhTcGFjZSA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHB4U3RyZWFtQnVmZmVyICk7DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJeFJldHVybiA9IHBydldyaXRlTWVzc2FnZVRvQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgcHZUeERhdGEsIHhEYXRhTGVuZ3RoQnl0ZXMsIHhTcGFjZSwgeFJlcXVpcmVkU3BhY2UgKTsNCisNCisJaWYoIHhSZXR1cm4gPiAoIHNpemVfdCApIDAgKQ0KKwl7DQorCQl0cmFjZVNUUkVBTV9CVUZGRVJfU0VORCggeFN0cmVhbUJ1ZmZlciwgeFJldHVybiApOw0KKw0KKwkJLyogV2FzIGEgdGFzayB3YWl0aW5nIGZvciB0aGUgZGF0YT8gKi8NCisJCWlmKCBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApID49IHB4U3RyZWFtQnVmZmVyLT54VHJpZ2dlckxldmVsQnl0ZXMgKQ0KKwkJew0KKwkJCXNiU0VORF9DT01QTEVURUQoIHB4U3RyZWFtQnVmZmVyICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkRfRkFJTEVEKCB4U3RyZWFtQnVmZmVyICk7DQorCX0NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyU2VuZEZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkgY29uc3Qgdm9pZCAqcHZUeERhdGEsDQorCQkJCQkJCQkgc2l6ZV90IHhEYXRhTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkgQmFzZVR5cGVfdCAqIGNvbnN0IHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKQ0KK3sNCitTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyID0gKCBTdHJlYW1CdWZmZXJfdCAqICkgeFN0cmVhbUJ1ZmZlcjsgLypsaW50ICFlOTA4NyAhZTkwNzkgU2FmZSBjYXN0IGFzIFN0cmVhbUJ1ZmZlckhhbmRsZV90IGlzIG9wYXF1ZSBTdHJlYW1idWZmZXJfdC4gKi8NCitzaXplX3QgeFJldHVybiwgeFNwYWNlOw0KK3NpemVfdCB4UmVxdWlyZWRTcGFjZSA9IHhEYXRhTGVuZ3RoQnl0ZXM7DQorDQorCWNvbmZpZ0FTU0VSVCggcHZUeERhdGEgKTsNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBUaGlzIHNlbmQgZnVuY3Rpb24gaXMgdXNlZCB0byB3cml0ZSB0byBib3RoIG1lc3NhZ2UgYnVmZmVycyBhbmQgc3RyZWFtDQorCWJ1ZmZlcnMuICBJZiB0aGlzIGlzIGEgbWVzc2FnZSBidWZmZXIgdGhlbiB0aGUgc3BhY2UgbmVlZGVkIG11c3QgYmUNCisJaW5jcmVhc2VkIGJ5IHRoZSBhbW91bnQgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIHRoZSBsZW5ndGggb2YgdGhlDQorCW1lc3NhZ2UuICovDQorCWlmKCAoIHB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzICYgc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUiApICE9ICggdWludDhfdCApIDAgKQ0KKwl7DQorCQl4UmVxdWlyZWRTcGFjZSArPSBzYkJZVEVTX1RPX1NUT1JFX01FU1NBR0VfTEVOR1RIOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXhTcGFjZSA9IHhTdHJlYW1CdWZmZXJTcGFjZXNBdmFpbGFibGUoIHB4U3RyZWFtQnVmZmVyICk7DQorCXhSZXR1cm4gPSBwcnZXcml0ZU1lc3NhZ2VUb0J1ZmZlciggcHhTdHJlYW1CdWZmZXIsIHB2VHhEYXRhLCB4RGF0YUxlbmd0aEJ5dGVzLCB4U3BhY2UsIHhSZXF1aXJlZFNwYWNlICk7DQorDQorCWlmKCB4UmV0dXJuID4gKCBzaXplX3QgKSAwICkNCisJew0KKwkJLyogV2FzIGEgdGFzayB3YWl0aW5nIGZvciB0aGUgZGF0YT8gKi8NCisJCWlmKCBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApID49IHB4U3RyZWFtQnVmZmVyLT54VHJpZ2dlckxldmVsQnl0ZXMgKQ0KKwkJew0KKwkJCXNiU0VORF9DT01QTEVURV9GUk9NX0lTUiggcHhTdHJlYW1CdWZmZXIsIHB4SGlnaGVyUHJpb3JpdHlUYXNrV29rZW4gKTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQltdENPVkVSQUdFX1RFU1RfTUFSS0VSKCk7DQorCX0NCisNCisJdHJhY2VTVFJFQU1fQlVGRkVSX1NFTkRfRlJPTV9JU1IoIHhTdHJlYW1CdWZmZXIsIHhSZXR1cm4gKTsNCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBzaXplX3QgcHJ2V3JpdGVNZXNzYWdlVG9CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJICAgY29uc3Qgdm9pZCAqIHB2VHhEYXRhLA0KKwkJCQkJCQkJCSAgIHNpemVfdCB4RGF0YUxlbmd0aEJ5dGVzLA0KKwkJCQkJCQkJCSAgIHNpemVfdCB4U3BhY2UsDQorCQkJCQkJCQkJICAgc2l6ZV90IHhSZXF1aXJlZFNwYWNlICkNCit7DQorCUJhc2VUeXBlX3QgeFNob3VsZFdyaXRlOw0KKwlzaXplX3QgeFJldHVybjsNCisNCisJaWYoIHhTcGFjZSA9PSAoIHNpemVfdCApIDAgKQ0KKwl7DQorCQkvKiBEb2Vzbid0IG1hdHRlciBpZiB0aGlzIGlzIGEgc3RyZWFtIGJ1ZmZlciBvciBhIG1lc3NhZ2UgYnVmZmVyLCB0aGVyZQ0KKwkJaXMgbm8gc3BhY2UgdG8gd3JpdGUuICovDQorCQl4U2hvdWxkV3JpdGUgPSBwZEZBTFNFOw0KKwl9DQorCWVsc2UgaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgPT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCS8qIFRoaXMgaXMgYSBzdHJlYW0gYnVmZmVyLCBhcyBvcHBvc2VkIHRvIGEgbWVzc2FnZSBidWZmZXIsIHNvIHdyaXRpbmcgYQ0KKwkJc3RyZWFtIG9mIGJ5dGVzIHJhdGhlciB0aGFuIGRpc2NyZXRlIG1lc3NhZ2VzLiAgV3JpdGUgYXMgbWFueSBieXRlcyBhcw0KKwkJcG9zc2libGUuICovDQorCQl4U2hvdWxkV3JpdGUgPSBwZFRSVUU7DQorCQl4RGF0YUxlbmd0aEJ5dGVzID0gY29uZmlnTUlOKCB4RGF0YUxlbmd0aEJ5dGVzLCB4U3BhY2UgKTsgLypsaW50ICFlOTA0NCBGdW5jdGlvbiBwYXJhbWV0ZXIgbW9kaWZpZWQgdG8gZW5zdXJlIGl0IGlzIGNhcHBlZCB0byBhdmFpbGFibGUgc3BhY2UuICovDQorCX0NCisJZWxzZSBpZiggeFNwYWNlID49IHhSZXF1aXJlZFNwYWNlICkNCisJew0KKwkJLyogVGhpcyBpcyBhIG1lc3NhZ2UgYnVmZmVyLCBhcyBvcHBvc2VkIHRvIGEgc3RyZWFtIGJ1ZmZlciwgYW5kIHRoZXJlDQorCQlpcyBlbm91Z2ggc3BhY2UgdG8gd3JpdGUgYm90aCB0aGUgbWVzc2FnZSBsZW5ndGggYW5kIHRoZSBtZXNzYWdlIGl0c2VsZg0KKwkJaW50byB0aGUgYnVmZmVyLiAgU3RhcnQgYnkgd3JpdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhLCB0aGUgZGF0YQ0KKwkJaXRzZWxmIHdpbGwgYmUgd3JpdHRlbiBsYXRlciBpbiB0aGlzIGZ1bmN0aW9uLiAqLw0KKwkJeFNob3VsZFdyaXRlID0gcGRUUlVFOw0KKwkJKCB2b2lkICkgcHJ2V3JpdGVCeXRlc1RvQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB1aW50OF90ICogKSAmKCB4RGF0YUxlbmd0aEJ5dGVzICksIHNiQllURVNfVE9fU1RPUkVfTUVTU0FHRV9MRU5HVEggKTsNCisJfQ0KKwllbHNlDQorCXsNCisJCS8qIFRoZXJlIGlzIHNwYWNlIGF2YWlsYWJsZSwgYnV0IG5vdCBlbm91Z2ggc3BhY2UuICovDQorCQl4U2hvdWxkV3JpdGUgPSBwZEZBTFNFOw0KKwl9DQorDQorCWlmKCB4U2hvdWxkV3JpdGUgIT0gcGRGQUxTRSApDQorCXsNCisJCS8qIFdyaXRlcyB0aGUgZGF0YSBpdHNlbGYuICovDQorCQl4UmV0dXJuID0gcHJ2V3JpdGVCeXRlc1RvQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgKCBjb25zdCB1aW50OF90ICogKSBwdlR4RGF0YSwgeERhdGFMZW5ndGhCeXRlcyApOyAvKmxpbnQgIWU5MDc5IFN0b3JhZ2UgYnVmZmVyIGlzIGltcGxlbWVudGVkIGFzIHVpbnQ4X3QgZm9yIGVhc2Ugb2Ygc2l6aW5nLCBhbGlnaG1lbnQgYW5kIGFjY2Vzcy4gKi8NCisJfQ0KKwllbHNlDQorCXsNCisJCXhSZXR1cm4gPSAwOw0KKwl9DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzaXplX3QgeFN0cmVhbUJ1ZmZlclJlY2VpdmUoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCSB2b2lkICpwdlJ4RGF0YSwNCisJCQkJCQkJIHNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCSBUaWNrVHlwZV90IHhUaWNrc1RvV2FpdCApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK3NpemVfdCB4UmVjZWl2ZWRMZW5ndGggPSAwLCB4Qnl0ZXNBdmFpbGFibGUsIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoOw0KKw0KKwljb25maWdBU1NFUlQoIHB2UnhEYXRhICk7DQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJLyogVGhpcyByZWNlaXZlIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYm90aCBtZXNzYWdlIGJ1ZmZlcnMsIHdoaWNoIHN0b3JlDQorCWRpc2NyZXRlIG1lc3NhZ2VzLCBhbmQgc3RyZWFtIGJ1ZmZlcnMsIHdoaWNoIHN0b3JlIGEgY29udGludW91cyBzdHJlYW0gb2YNCisJYnl0ZXMuICBEaXNjcmV0ZSBtZXNzYWdlcyBpbmNsdWRlIGFuIGFkZGl0aW9uYWwNCisJc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCBieXRlcyB0aGF0IGhvbGQgdGhlIGxlbmd0aCBvZiB0aGUNCisJbWVzc2FnZS4gKi8NCisJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gMDsNCisJfQ0KKw0KKwlpZiggeFRpY2tzVG9XYWl0ICE9ICggVGlja1R5cGVfdCApIDAgKQ0KKwl7DQorCQkvKiBDaGVja2luZyBpZiB0aGVyZSBpcyBkYXRhIGFuZCBjbGVhcmluZyB0aGUgbm90aWZpY2F0aW9uIHN0YXRlIG11c3QgYmUNCisJCXBlcmZvcm1lZCBhdG9taWNhbGx5LiAqLw0KKwkJdGFza0VOVEVSX0NSSVRJQ0FMKCk7DQorCQl7DQorCQkJeEJ5dGVzQXZhaWxhYmxlID0gcHJ2Qnl0ZXNJbkJ1ZmZlciggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJCQkvKiBJZiB0aGlzIGZ1bmN0aW9uIHdhcyBpbnZva2VkIGJ5IGEgbWVzc2FnZSBidWZmZXIgcmVhZCB0aGVuDQorCQkJeEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggaG9sZHMgdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIGhvbGQNCisJCQl0aGUgbGVuZ3RoIG9mIHRoZSBuZXh0IGRpc2NyZXRlIG1lc3NhZ2UuICBJZiB0aGlzIGZ1bmN0aW9uIHdhcw0KKwkJCWludm9rZWQgYnkgYSBzdHJlYW0gYnVmZmVyIHJlYWQgdGhlbiB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCB3aWxsDQorCQkJYmUgMC4gKi8NCisJCQlpZiggeEJ5dGVzQXZhaWxhYmxlIDw9IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkNCisJCQl7DQorCQkJCS8qIENsZWFyIG5vdGlmaWNhdGlvbiBzdGF0ZSBhcyBnb2luZyB0byB3YWl0IGZvciBkYXRhLiAqLw0KKwkJCQkoIHZvaWQgKSB4VGFza05vdGlmeVN0YXRlQ2xlYXIoIE5VTEwgKTsNCisNCisJCQkJLyogU2hvdWxkIG9ubHkgYmUgb25lIHJlYWRlci4gKi8NCisJCQkJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlci0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlID09IE5VTEwgKTsNCisJCQkJcHhTdHJlYW1CdWZmZXItPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSA9IHhUYXNrR2V0Q3VycmVudFRhc2tIYW5kbGUoKTsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJCX0NCisJCX0NCisJCXRhc2tFWElUX0NSSVRJQ0FMKCk7DQorDQorCQlpZiggeEJ5dGVzQXZhaWxhYmxlIDw9IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkNCisJCXsNCisJCQkvKiBXYWl0IGZvciBkYXRhIHRvIGJlIGF2YWlsYWJsZS4gKi8NCisJCQl0cmFjZUJMT0NLSU5HX09OX1NUUkVBTV9CVUZGRVJfUkVDRUlWRSggeFN0cmVhbUJ1ZmZlciApOw0KKwkJCSggdm9pZCApIHhUYXNrTm90aWZ5V2FpdCggKCB1aW50MzJfdCApIDAsIFVJTlQzMl9NQVgsIE5VTEwsIHhUaWNrc1RvV2FpdCApOw0KKwkJCXB4U3RyZWFtQnVmZmVyLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgPSBOVUxMOw0KKw0KKwkJCS8qIFJlY2hlY2sgdGhlIGRhdGEgYXZhaWxhYmxlIGFmdGVyIGJsb2NraW5nLiAqLw0KKwkJCXhCeXRlc0F2YWlsYWJsZSA9IHBydkJ5dGVzSW5CdWZmZXIoIHB4U3RyZWFtQnVmZmVyICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJeEJ5dGVzQXZhaWxhYmxlID0gcHJ2Qnl0ZXNJbkJ1ZmZlciggcHhTdHJlYW1CdWZmZXIgKTsNCisJfQ0KKw0KKwkvKiBXaGV0aGVyIHJlY2VpdmluZyBhIGRpc2NyZXRlIG1lc3NhZ2UgKHdoZXJlIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoDQorCWhvbGRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBzdG9yZSB0aGUgbWVzc2FnZSBsZW5ndGgpIG9yIGEgc3RyZWFtIG9mDQorCWJ5dGVzICh3aGVyZSB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCBpcyB6ZXJvKSwgdGhlIG51bWJlciBvZiBieXRlcw0KKwlhdmFpbGFibGUgbXVzdCBiZSBncmVhdGVyIHRoYW4geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggdG8gYmUgYWJsZSB0bw0KKwlyZWFkIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlci4gKi8NCisJaWYoIHhCeXRlc0F2YWlsYWJsZSA+IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkNCisJew0KKwkJeFJlY2VpdmVkTGVuZ3RoID0gcHJ2UmVhZE1lc3NhZ2VGcm9tQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgcHZSeERhdGEsIHhCdWZmZXJMZW5ndGhCeXRlcywgeEJ5dGVzQXZhaWxhYmxlLCB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCApOw0KKw0KKwkJLyogV2FzIGEgdGFzayB3YWl0aW5nIGZvciBzcGFjZSBpbiB0aGUgYnVmZmVyPyAqLw0KKwkJaWYoIHhSZWNlaXZlZExlbmd0aCAhPSAoIHNpemVfdCApIDAgKQ0KKwkJew0KKwkJCXRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFKCB4U3RyZWFtQnVmZmVyLCB4UmVjZWl2ZWRMZW5ndGggKTsNCisJCQlzYlJFQ0VJVkVfQ09NUExFVEVEKCBweFN0cmVhbUJ1ZmZlciApOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCXRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZBSUxFRCggeFN0cmVhbUJ1ZmZlciApOw0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXJldHVybiB4UmVjZWl2ZWRMZW5ndGg7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3NpemVfdCB4U3RyZWFtQnVmZmVyUmVjZWl2ZUZyb21JU1IoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsDQorCQkJCQkJCQkJdm9pZCAqcHZSeERhdGEsDQorCQkJCQkJCQkJc2l6ZV90IHhCdWZmZXJMZW5ndGhCeXRlcywNCisJCQkJCQkJCQlCYXNlVHlwZV90ICogY29uc3QgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK3NpemVfdCB4UmVjZWl2ZWRMZW5ndGggPSAwLCB4Qnl0ZXNBdmFpbGFibGUsIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoOw0KKw0KKwljb25maWdBU1NFUlQoIHB2UnhEYXRhICk7DQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJLyogVGhpcyByZWNlaXZlIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYm90aCBtZXNzYWdlIGJ1ZmZlcnMsIHdoaWNoIHN0b3JlDQorCWRpc2NyZXRlIG1lc3NhZ2VzLCBhbmQgc3RyZWFtIGJ1ZmZlcnMsIHdoaWNoIHN0b3JlIGEgY29udGludW91cyBzdHJlYW0gb2YNCisJYnl0ZXMuICBEaXNjcmV0ZSBtZXNzYWdlcyBpbmNsdWRlIGFuIGFkZGl0aW9uYWwNCisJc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCBieXRlcyB0aGF0IGhvbGQgdGhlIGxlbmd0aCBvZiB0aGUNCisJbWVzc2FnZS4gKi8NCisJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gMDsNCisJfQ0KKw0KKwl4Qnl0ZXNBdmFpbGFibGUgPSBwcnZCeXRlc0luQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBXaGV0aGVyIHJlY2VpdmluZyBhIGRpc2NyZXRlIG1lc3NhZ2UgKHdoZXJlIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoDQorCWhvbGRzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBzdG9yZSB0aGUgbWVzc2FnZSBsZW5ndGgpIG9yIGEgc3RyZWFtIG9mDQorCWJ5dGVzICh3aGVyZSB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCBpcyB6ZXJvKSwgdGhlIG51bWJlciBvZiBieXRlcw0KKwlhdmFpbGFibGUgbXVzdCBiZSBncmVhdGVyIHRoYW4geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggdG8gYmUgYWJsZSB0bw0KKwlyZWFkIGJ5dGVzIGZyb20gdGhlIGJ1ZmZlci4gKi8NCisJaWYoIHhCeXRlc0F2YWlsYWJsZSA+IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICkNCisJew0KKwkJeFJlY2VpdmVkTGVuZ3RoID0gcHJ2UmVhZE1lc3NhZ2VGcm9tQnVmZmVyKCBweFN0cmVhbUJ1ZmZlciwgcHZSeERhdGEsIHhCdWZmZXJMZW5ndGhCeXRlcywgeEJ5dGVzQXZhaWxhYmxlLCB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCApOw0KKw0KKwkJLyogV2FzIGEgdGFzayB3YWl0aW5nIGZvciBzcGFjZSBpbiB0aGUgYnVmZmVyPyAqLw0KKwkJaWYoIHhSZWNlaXZlZExlbmd0aCAhPSAoIHNpemVfdCApIDAgKQ0KKwkJew0KKwkJCXNiUkVDRUlWRV9DT01QTEVURURfRlJPTV9JU1IoIHB4U3RyZWFtQnVmZmVyLCBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXRyYWNlU1RSRUFNX0JVRkZFUl9SRUNFSVZFX0ZST01fSVNSKCB4U3RyZWFtQnVmZmVyLCB4UmVjZWl2ZWRMZW5ndGggKTsNCisNCisJcmV0dXJuIHhSZWNlaXZlZExlbmd0aDsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHNpemVfdCBwcnZSZWFkTWVzc2FnZUZyb21CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICpweFN0cmVhbUJ1ZmZlciwNCisJCQkJCQkJCQkJdm9pZCAqcHZSeERhdGEsDQorCQkJCQkJCQkJCXNpemVfdCB4QnVmZmVyTGVuZ3RoQnl0ZXMsDQorCQkJCQkJCQkJCXNpemVfdCB4Qnl0ZXNBdmFpbGFibGUsDQorCQkJCQkJCQkJCXNpemVfdCB4Qnl0ZXNUb1N0b3JlTWVzc2FnZUxlbmd0aCApDQorew0KK3NpemVfdCB4T3JpZ2luYWxUYWlsLCB4UmVjZWl2ZWRMZW5ndGgsIHhOZXh0TWVzc2FnZUxlbmd0aDsNCisNCisJaWYoIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoICE9ICggc2l6ZV90ICkgMCApDQorCXsNCisJCS8qIEEgZGlzY3JldGUgbWVzc2FnZSBpcyBiZWluZyByZWNlaXZlZC4gIEZpcnN0IHJlY2VpdmUgdGhlIGxlbmd0aA0KKwkJb2YgdGhlIG1lc3NhZ2UuICBBIGNvcHkgb2YgdGhlIHRhaWwgaXMgc3RvcmVkIHNvIHRoZSBidWZmZXIgY2FuIGJlDQorCQlyZXR1cm5lZCB0byBpdHMgcHJpb3Igc3RhdGUgaWYgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZSBpcyB0b28NCisJCWxhcmdlIGZvciB0aGUgcHJvdmlkZWQgYnVmZmVyLiAqLw0KKwkJeE9yaWdpbmFsVGFpbCA9IHB4U3RyZWFtQnVmZmVyLT54VGFpbDsNCisJCSggdm9pZCApIHBydlJlYWRCeXRlc0Zyb21CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCAoIHVpbnQ4X3QgKiApICZ4TmV4dE1lc3NhZ2VMZW5ndGgsIHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoLCB4Qnl0ZXNBdmFpbGFibGUgKTsNCisNCisJCS8qIFJlZHVjZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGp1c3QNCisJCXJlYWQgb3V0LiAqLw0KKwkJeEJ5dGVzQXZhaWxhYmxlIC09IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoOw0KKw0KKwkJLyogQ2hlY2sgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIHRoZSBidWZmZXIgcHJvdmlkZWQgYnkgdGhlDQorCQl1c2VyLiAqLw0KKwkJaWYoIHhOZXh0TWVzc2FnZUxlbmd0aCA+IHhCdWZmZXJMZW5ndGhCeXRlcyApDQorCQl7DQorCQkJLyogVGhlIHVzZXIgaGFzIHByb3ZpZGVkIGluc3VmZmljaWVudCBzcGFjZSB0byByZWFkIHRoZSBtZXNzYWdlDQorCQkJc28gcmV0dXJuIHRoZSBidWZmZXIgdG8gaXRzIHByZXZpb3VzIHN0YXRlIChzbyB0aGUgbGVuZ3RoIG9mDQorCQkJdGhlIG1lc3NhZ2UgaXMgaW4gdGhlIGJ1ZmZlciBhZ2FpbikuICovDQorCQkJcHhTdHJlYW1CdWZmZXItPnhUYWlsID0geE9yaWdpbmFsVGFpbDsNCisJCQl4TmV4dE1lc3NhZ2VMZW5ndGggPSAwOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJCX0NCisJfQ0KKwllbHNlDQorCXsNCisJCS8qIEEgc3RyZWFtIG9mIGJ5dGVzIGlzIGJlaW5nIHJlY2VpdmVkIChhcyBvcHBvc2VkIHRvIGEgZGlzY3JldGUNCisJCW1lc3NhZ2UpLCBzbyByZWFkIGFzIG1hbnkgYnl0ZXMgYXMgcG9zc2libGUuICovDQorCQl4TmV4dE1lc3NhZ2VMZW5ndGggPSB4QnVmZmVyTGVuZ3RoQnl0ZXM7DQorCX0NCisNCisJLyogUmVhZCB0aGUgYWN0dWFsIGRhdGEuICovDQorCXhSZWNlaXZlZExlbmd0aCA9IHBydlJlYWRCeXRlc0Zyb21CdWZmZXIoIHB4U3RyZWFtQnVmZmVyLCAoIHVpbnQ4X3QgKiApIHB2UnhEYXRhLCB4TmV4dE1lc3NhZ2VMZW5ndGgsIHhCeXRlc0F2YWlsYWJsZSApOyAvKmxpbnQgIWU5MDc5IERhdGEgc3RvcmFnZSBhcmVhIGlzIGltcGxlbWVudGVkIGFzIHVpbnQ4X3QgYXJyYXkgZm9yIGVhc2Ugb2Ygc2l6aW5nLCBpbmRleGluZyBhbmQgYWxpZ25tZW50LiAqLw0KKw0KKwlyZXR1cm4geFJlY2VpdmVkTGVuZ3RoOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJJc0VtcHR5KCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyICkNCit7DQorY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK3NpemVfdCB4VGFpbDsNCisNCisJY29uZmlnQVNTRVJUKCBweFN0cmVhbUJ1ZmZlciApOw0KKw0KKwkvKiBUcnVlIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFibGUuICovDQorCXhUYWlsID0gcHhTdHJlYW1CdWZmZXItPnhUYWlsOw0KKwlpZiggcHhTdHJlYW1CdWZmZXItPnhIZWFkID09IHhUYWlsICkNCisJew0KKwkJeFJldHVybiA9IHBkVFJVRTsNCisJfQ0KKwllbHNlDQorCXsNCisJCXhSZXR1cm4gPSBwZEZBTFNFOw0KKwl9DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJJc0Z1bGwoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIgKQ0KK3sNCitCYXNlVHlwZV90IHhSZXR1cm47DQorc2l6ZV90IHhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoOw0KK2NvbnN0IFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCS8qIFRoaXMgZ2VuZXJpYyB2ZXJzaW9uIG9mIHRoZSByZWNlaXZlIGZ1bmN0aW9uIGlzIHVzZWQgYnkgYm90aCBtZXNzYWdlDQorCWJ1ZmZlcnMsIHdoaWNoIHN0b3JlIGRpc2NyZXRlIG1lc3NhZ2VzLCBhbmQgc3RyZWFtIGJ1ZmZlcnMsIHdoaWNoIHN0b3JlIGENCisJY29udGludW91cyBzdHJlYW0gb2YgYnl0ZXMuICBEaXNjcmV0ZSBtZXNzYWdlcyBpbmNsdWRlIGFuIGFkZGl0aW9uYWwNCisJc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSCBieXRlcyB0aGF0IGhvbGQgdGhlIGxlbmd0aCBvZiB0aGUgbWVzc2FnZS4gKi8NCisJaWYoICggcHhTdHJlYW1CdWZmZXItPnVjRmxhZ3MgJiBzYkZMQUdTX0lTX01FU1NBR0VfQlVGRkVSICkgIT0gKCB1aW50OF90ICkgMCApDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gc2JCWVRFU19UT19TVE9SRV9NRVNTQUdFX0xFTkdUSDsNCisJfQ0KKwllbHNlDQorCXsNCisJCXhCeXRlc1RvU3RvcmVNZXNzYWdlTGVuZ3RoID0gMDsNCisJfQ0KKw0KKwkvKiBUcnVlIGlmIHRoZSBhdmFpbGFibGUgc3BhY2UgZXF1YWxzIHplcm8uICovDQorCWlmKCB4U3RyZWFtQnVmZmVyU3BhY2VzQXZhaWxhYmxlKCB4U3RyZWFtQnVmZmVyICkgPD0geEJ5dGVzVG9TdG9yZU1lc3NhZ2VMZW5ndGggKQ0KKwl7DQorCQl4UmV0dXJuID0gcGRUUlVFOw0KKwl9DQorCWVsc2UNCisJew0KKwkJeFJldHVybiA9IHBkRkFMU0U7DQorCX0NCisNCisJcmV0dXJuIHhSZXR1cm47DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK0Jhc2VUeXBlX3QgeFN0cmVhbUJ1ZmZlclNlbmRDb21wbGV0ZWRGcm9tSVNSKCBTdHJlYW1CdWZmZXJIYW5kbGVfdCB4U3RyZWFtQnVmZmVyLCBCYXNlVHlwZV90ICpweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICkNCit7DQorU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciA9ICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXI7IC8qbGludCAhZTkwODcgIWU5MDc5IFNhZmUgY2FzdCBhcyBTdHJlYW1CdWZmZXJIYW5kbGVfdCBpcyBvcGFxdWUgU3RyZWFtYnVmZmVyX3QuICovDQorQmFzZVR5cGVfdCB4UmV0dXJuOw0KK1VCYXNlVHlwZV90IHV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXM7DQorDQorCWNvbmZpZ0FTU0VSVCggcHhTdHJlYW1CdWZmZXIgKTsNCisNCisJdXhTYXZlZEludGVycnVwdFN0YXR1cyA9ICggVUJhc2VUeXBlX3QgKSBwb3J0U0VUX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCk7DQorCXsNCisJCWlmKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvUmVjZWl2ZSAhPSBOVUxMICkNCisJCXsNCisJCQkoIHZvaWQgKSB4VGFza05vdGlmeUZyb21JU1IoICggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9SZWNlaXZlLA0KKwkJCQkJCQkJCQkgKCB1aW50MzJfdCApIDAsDQorCQkJCQkJCQkJCSBlTm9BY3Rpb24sDQorCQkJCQkJCQkJCSBweEhpZ2hlclByaW9yaXR5VGFza1dva2VuICk7DQorCQkJKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1JlY2VpdmUgPSBOVUxMOw0KKwkJCXhSZXR1cm4gPSBwZFRSVUU7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJeFJldHVybiA9IHBkRkFMU0U7DQorCQl9DQorCX0NCisJcG9ydENMRUFSX0lOVEVSUlVQVF9NQVNLX0ZST01fSVNSKCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzICk7DQorDQorCXJldHVybiB4UmV0dXJuOw0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitCYXNlVHlwZV90IHhTdHJlYW1CdWZmZXJSZWNlaXZlQ29tcGxldGVkRnJvbUlTUiggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciwgQmFzZVR5cGVfdCAqcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApDQorew0KK1N0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIgPSAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyOyAvKmxpbnQgIWU5MDg3ICFlOTA3OSBTYWZlIGNhc3QgYXMgU3RyZWFtQnVmZmVySGFuZGxlX3QgaXMgb3BhcXVlIFN0cmVhbWJ1ZmZlcl90LiAqLw0KK0Jhc2VUeXBlX3QgeFJldHVybjsNCitVQmFzZVR5cGVfdCB1eFNhdmVkSW50ZXJydXB0U3RhdHVzOw0KKw0KKwljb25maWdBU1NFUlQoIHB4U3RyZWFtQnVmZmVyICk7DQorDQorCXV4U2F2ZWRJbnRlcnJ1cHRTdGF0dXMgPSAoIFVCYXNlVHlwZV90ICkgcG9ydFNFVF9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUigpOw0KKwl7DQorCQlpZiggKCBweFN0cmVhbUJ1ZmZlciApLT54VGFza1dhaXRpbmdUb1NlbmQgIT0gTlVMTCApDQorCQl7DQorCQkJKCB2b2lkICkgeFRhc2tOb3RpZnlGcm9tSVNSKCAoIHB4U3RyZWFtQnVmZmVyICktPnhUYXNrV2FpdGluZ1RvU2VuZCwNCisJCQkJCQkJCQkJICggdWludDMyX3QgKSAwLA0KKwkJCQkJCQkJCQkgZU5vQWN0aW9uLA0KKwkJCQkJCQkJCQkgcHhIaWdoZXJQcmlvcml0eVRhc2tXb2tlbiApOw0KKwkJCSggcHhTdHJlYW1CdWZmZXIgKS0+eFRhc2tXYWl0aW5nVG9TZW5kID0gTlVMTDsNCisJCQl4UmV0dXJuID0gcGRUUlVFOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXhSZXR1cm4gPSBwZEZBTFNFOw0KKwkJfQ0KKwl9DQorCXBvcnRDTEVBUl9JTlRFUlJVUFRfTUFTS19GUk9NX0lTUiggdXhTYXZlZEludGVycnVwdFN0YXR1cyApOw0KKw0KKwlyZXR1cm4geFJldHVybjsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHNpemVfdCBwcnZXcml0ZUJ5dGVzVG9CdWZmZXIoIFN0cmVhbUJ1ZmZlcl90ICogY29uc3QgcHhTdHJlYW1CdWZmZXIsIGNvbnN0IHVpbnQ4X3QgKnB1Y0RhdGEsIHNpemVfdCB4Q291bnQgKQ0KK3sNCitzaXplX3QgeE5leHRIZWFkLCB4Rmlyc3RMZW5ndGg7DQorDQorCWNvbmZpZ0FTU0VSVCggeENvdW50ID4gKCBzaXplX3QgKSAwICk7DQorDQorCXhOZXh0SGVhZCA9IHB4U3RyZWFtQnVmZmVyLT54SGVhZDsNCisNCisJLyogQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgYWRkZWQgaW4gdGhlIGZpcnN0IHdyaXRlIC0NCisJd2hpY2ggbWF5IGJlIGxlc3MgdGhhbiB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgbmVlZCB0byBiZSBhZGRlZCBpZg0KKwl0aGUgYnVmZmVyIHdpbGwgd3JhcCBiYWNrIHRvIHRoZSBiZWdpbm5pbmcuICovDQorCXhGaXJzdExlbmd0aCA9IGNvbmZpZ01JTiggcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggLSB4TmV4dEhlYWQsIHhDb3VudCApOw0KKw0KKwkvKiBXcml0ZSBhcyBtYW55IGJ5dGVzIGFzIGNhbiBiZSB3cml0dGVuIGluIHRoZSBmaXJzdCB3cml0ZS4gKi8NCisJY29uZmlnQVNTRVJUKCAoIHhOZXh0SGVhZCArIHhGaXJzdExlbmd0aCApIDw9IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICk7DQorCW1lbWNweSggKCB2b2lkKiApICggJiggcHhTdHJlYW1CdWZmZXItPnB1Y0J1ZmZlclsgeE5leHRIZWFkIF0gKSApLCAoIGNvbnN0IHZvaWQgKiApIHB1Y0RhdGEsIHhGaXJzdExlbmd0aCApOyAvKmxpbnQgIWU5MDg3IG1lbWNweSgpIHJlcXVpcmVzIHZvaWQgKi4gKi8NCisNCisJLyogSWYgdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHdhcyBsZXNzIHRoYW4gdGhlIG51bWJlciB0aGF0IGNvdWxkIGJlDQorCXdyaXR0ZW4gaW4gdGhlIGZpcnN0IHdyaXRlLi4uICovDQorCWlmKCB4Q291bnQgPiB4Rmlyc3RMZW5ndGggKQ0KKwl7DQorCQkvKiAuLi50aGVuIHdyaXRlIHRoZSByZW1haW5pbmcgYnl0ZXMgdG8gdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIuICovDQorCQljb25maWdBU1NFUlQoICggeENvdW50IC0geEZpcnN0TGVuZ3RoICkgPD0gcHhTdHJlYW1CdWZmZXItPnhMZW5ndGggKTsNCisJCW1lbWNweSggKCB2b2lkICogKSBweFN0cmVhbUJ1ZmZlci0+cHVjQnVmZmVyLCAoIGNvbnN0IHZvaWQgKiApICYoIHB1Y0RhdGFbIHhGaXJzdExlbmd0aCBdICksIHhDb3VudCAtIHhGaXJzdExlbmd0aCApOyAvKmxpbnQgIWU5MDg3IG1lbWNweSgpIHJlcXVpcmVzIHZvaWQgKi4gKi8NCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwl4TmV4dEhlYWQgKz0geENvdW50Ow0KKwlpZiggeE5leHRIZWFkID49IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICkNCisJew0KKwkJeE5leHRIZWFkIC09IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXB4U3RyZWFtQnVmZmVyLT54SGVhZCA9IHhOZXh0SGVhZDsNCisNCisJcmV0dXJuIHhDb3VudDsNCit9DQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIHNpemVfdCBwcnZSZWFkQnl0ZXNGcm9tQnVmZmVyKCBTdHJlYW1CdWZmZXJfdCAqcHhTdHJlYW1CdWZmZXIsIHVpbnQ4X3QgKnB1Y0RhdGEsIHNpemVfdCB4TWF4Q291bnQsIHNpemVfdCB4Qnl0ZXNBdmFpbGFibGUgKQ0KK3sNCitzaXplX3QgeENvdW50LCB4Rmlyc3RMZW5ndGgsIHhOZXh0VGFpbDsNCisNCisJLyogVXNlIHRoZSBtaW5pbXVtIG9mIHRoZSB3YW50ZWQgYnl0ZXMgYW5kIHRoZSBhdmFpbGFibGUgYnl0ZXMuICovDQorCXhDb3VudCA9IGNvbmZpZ01JTiggeEJ5dGVzQXZhaWxhYmxlLCB4TWF4Q291bnQgKTsNCisNCisJaWYoIHhDb3VudCA+ICggc2l6ZV90ICkgMCApDQorCXsNCisJCXhOZXh0VGFpbCA9IHB4U3RyZWFtQnVmZmVyLT54VGFpbDsNCisNCisJCS8qIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgY2FuIGJlIHJlYWQgLSB3aGljaCBtYXkgYmUNCisJCWxlc3MgdGhhbiB0aGUgbnVtYmVyIHdhbnRlZCBpZiB0aGUgZGF0YSB3cmFwcyBhcm91bmQgdG8gdGhlIHN0YXJ0IG9mDQorCQl0aGUgYnVmZmVyLiAqLw0KKwkJeEZpcnN0TGVuZ3RoID0gY29uZmlnTUlOKCBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCAtIHhOZXh0VGFpbCwgeENvdW50ICk7DQorDQorCQkvKiBPYnRhaW4gdGhlIG51bWJlciBvZiBieXRlcyBpdCBpcyBwb3NzaWJsZSB0byBvYnRhaW4gaW4gdGhlIGZpcnN0DQorCQlyZWFkLiAgQXNzZXJ0cyBjaGVjayBib3VuZHMgb2YgcmVhZCBhbmQgd3JpdGUuICovDQorCQljb25maWdBU1NFUlQoIHhGaXJzdExlbmd0aCA8PSB4TWF4Q291bnQgKTsNCisJCWNvbmZpZ0FTU0VSVCggKCB4TmV4dFRhaWwgKyB4Rmlyc3RMZW5ndGggKSA8PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApOw0KKwkJbWVtY3B5KCAoIHZvaWQgKiApIHB1Y0RhdGEsICggY29uc3Qgdm9pZCAqICkgJiggcHhTdHJlYW1CdWZmZXItPnB1Y0J1ZmZlclsgeE5leHRUYWlsIF0gKSwgeEZpcnN0TGVuZ3RoICk7IC8qbGludCAhZTkwODcgbWVtY3B5KCkgcmVxdWlyZXMgdm9pZCAqLiAqLw0KKw0KKwkJLyogSWYgdGhlIHRvdGFsIG51bWJlciBvZiB3YW50ZWQgYnl0ZXMgaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXINCisJCXRoYXQgY291bGQgYmUgcmVhZCBpbiB0aGUgZmlyc3QgcmVhZC4uLiAqLw0KKwkJaWYoIHhDb3VudCA+IHhGaXJzdExlbmd0aCApDQorCQl7DQorCQkJLyouLi50aGVuIHJlYWQgdGhlIHJlbWFpbmluZyBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgYnVmZmVyLiAqLw0KKwkJCWNvbmZpZ0FTU0VSVCggeENvdW50IDw9IHhNYXhDb3VudCApOw0KKwkJCW1lbWNweSggKCB2b2lkICogKSAmKCBwdWNEYXRhWyB4Rmlyc3RMZW5ndGggXSApLCAoIHZvaWQgKiApICggcHhTdHJlYW1CdWZmZXItPnB1Y0J1ZmZlciApLCB4Q291bnQgLSB4Rmlyc3RMZW5ndGggKTsgLypsaW50ICFlOTA4NyBtZW1jcHkoKSByZXF1aXJlcyB2b2lkICouICovDQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwkJfQ0KKw0KKwkJLyogTW92ZSB0aGUgdGFpbCBwb2ludGVyIHRvIGVmZmVjdGl2ZWx5IHJlbW92ZSB0aGUgZGF0YSByZWFkIGZyb20NCisJCXRoZSBidWZmZXIuICovDQorCQl4TmV4dFRhaWwgKz0geENvdW50Ow0KKw0KKwkJaWYoIHhOZXh0VGFpbCA+PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApDQorCQl7DQorCQkJeE5leHRUYWlsIC09IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoOw0KKwkJfQ0KKw0KKwkJcHhTdHJlYW1CdWZmZXItPnhUYWlsID0geE5leHRUYWlsOw0KKwl9DQorCWVsc2UNCisJew0KKwkJbXRDT1ZFUkFHRV9URVNUX01BUktFUigpOw0KKwl9DQorDQorCXJldHVybiB4Q291bnQ7DQorfQ0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBzaXplX3QgcHJ2Qnl0ZXNJbkJ1ZmZlciggY29uc3QgU3RyZWFtQnVmZmVyX3QgKiBjb25zdCBweFN0cmVhbUJ1ZmZlciApDQorew0KKy8qIFJldHVybnMgdGhlIGRpc3RhbmNlIGJldHdlZW4geFRhaWwgYW5kIHhIZWFkLiAqLw0KK3NpemVfdCB4Q291bnQ7DQorDQorCXhDb3VudCA9IHB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoICsgcHhTdHJlYW1CdWZmZXItPnhIZWFkOw0KKwl4Q291bnQgLT0gcHhTdHJlYW1CdWZmZXItPnhUYWlsOw0KKwlpZiAoIHhDb3VudCA+PSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aCApDQorCXsNCisJCXhDb3VudCAtPSBweFN0cmVhbUJ1ZmZlci0+eExlbmd0aDsNCisJfQ0KKwllbHNlDQorCXsNCisJCW10Q09WRVJBR0VfVEVTVF9NQVJLRVIoKTsNCisJfQ0KKw0KKwlyZXR1cm4geENvdW50Ow0KK30NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBwcnZJbml0aWFsaXNlTmV3U3RyZWFtQnVmZmVyKCBTdHJlYW1CdWZmZXJfdCAqIGNvbnN0IHB4U3RyZWFtQnVmZmVyLA0KKwkJCQkJCQkJCQkgIHVpbnQ4X3QgKiBjb25zdCBwdWNCdWZmZXIsDQorCQkJCQkJCQkJCSAgc2l6ZV90IHhCdWZmZXJTaXplQnl0ZXMsDQorCQkJCQkJCQkJCSAgc2l6ZV90IHhUcmlnZ2VyTGV2ZWxCeXRlcywNCisJCQkJCQkJCQkJICBCYXNlVHlwZV90IHhJc01lc3NhZ2VCdWZmZXIgKQ0KK3sNCisJLyogQXNzZXJ0IGhlcmUgaXMgZGVsaWJlcmF0ZWx5IHdyaXRpbmcgdG8gdGhlIGVudGlyZSBidWZmZXIgdG8gZW5zdXJlIGl0IGNhbg0KKwliZSB3cml0dGVuIHRvIHdpdGhvdXQgZ2VuZXJhdGluZyBleGNlcHRpb25zLCBhbmQgaXMgc2V0dGluZyB0aGUgYnVmZmVyIHRvIGENCisJa25vd24gdmFsdWUgdG8gYXNzaXN0IGluIGRldmVsb3BtZW50L2RlYnVnZ2luZy4gKi8NCisJI2lmKCBjb25maWdBU1NFUlRfREVGSU5FRCA9PSAxICkNCisJew0KKwkJLyogVGhlIHZhbHVlIHdyaXR0ZW4ganVzdCBoYXMgdG8gYmUgaWRlbnRpZmlhYmxlIHdoZW4gbG9va2luZyBhdCB0aGUNCisJCW1lbW9yeS4gIERvbid0IHVzZSAweEE1IGFzIHRoYXQgaXMgdGhlIHN0YWNrIGZpbGwgdmFsdWUgYW5kIGNvdWxkDQorCQlyZXN1bHQgaW4gY29uZnVzaW9uIGFzIHRvIHdoYXQgaXMgYWN0dWFsbHkgYmVpbmcgb2JzZXJ2ZWQuICovDQorCQljb25zdCBCYXNlVHlwZV90IHhXcml0ZVZhbHVlID0gMHg1NTsNCisJCWNvbmZpZ0FTU0VSVCggbWVtc2V0KCBwdWNCdWZmZXIsICggaW50ICkgeFdyaXRlVmFsdWUsIHhCdWZmZXJTaXplQnl0ZXMgKSA9PSBwdWNCdWZmZXIgKTsNCisJfQ0KKwkjZW5kaWYNCisNCisJbWVtc2V0KCAoIHZvaWQgKiApIHB4U3RyZWFtQnVmZmVyLCAweDAwLCBzaXplb2YoIFN0cmVhbUJ1ZmZlcl90ICkgKTsgLypsaW50ICFlOTA4NyBtZW1zZXQoKSByZXF1aXJlcyB2b2lkICouICovDQorCXB4U3RyZWFtQnVmZmVyLT5wdWNCdWZmZXIgPSBwdWNCdWZmZXI7DQorCXB4U3RyZWFtQnVmZmVyLT54TGVuZ3RoID0geEJ1ZmZlclNpemVCeXRlczsNCisJcHhTdHJlYW1CdWZmZXItPnhUcmlnZ2VyTGV2ZWxCeXRlcyA9IHhUcmlnZ2VyTGV2ZWxCeXRlczsNCisNCisJaWYoIHhJc01lc3NhZ2VCdWZmZXIgIT0gcGRGQUxTRSApDQorCXsNCisJCXB4U3RyZWFtQnVmZmVyLT51Y0ZsYWdzIHw9IHNiRkxBR1NfSVNfTUVTU0FHRV9CVUZGRVI7DQorCX0NCit9DQorDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwlVQmFzZVR5cGVfdCB1eFN0cmVhbUJ1ZmZlckdldFN0cmVhbUJ1ZmZlck51bWJlciggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorCXsNCisJCXJldHVybiAoICggU3RyZWFtQnVmZmVyX3QgKiApIHhTdHJlYW1CdWZmZXIgKS0+dXhTdHJlYW1CdWZmZXJOdW1iZXI7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwl2b2lkIHZTdHJlYW1CdWZmZXJTZXRTdHJlYW1CdWZmZXJOdW1iZXIoIFN0cmVhbUJ1ZmZlckhhbmRsZV90IHhTdHJlYW1CdWZmZXIsIFVCYXNlVHlwZV90IHV4U3RyZWFtQnVmZmVyTnVtYmVyICkNCisJew0KKwkJKCAoIFN0cmVhbUJ1ZmZlcl90ICogKSB4U3RyZWFtQnVmZmVyICktPnV4U3RyZWFtQnVmZmVyTnVtYmVyID0gdXhTdHJlYW1CdWZmZXJOdW1iZXI7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwl1aW50OF90IHVjU3RyZWFtQnVmZmVyR2V0U3RyZWFtQnVmZmVyVHlwZSggU3RyZWFtQnVmZmVySGFuZGxlX3QgeFN0cmVhbUJ1ZmZlciApDQorCXsNCisJCXJldHVybiAoICggU3RyZWFtQnVmZmVyX3QgKiApeFN0cmVhbUJ1ZmZlciApLT51Y0ZsYWdzIHwgc2JGTEFHU19JU19NRVNTQUdFX0JVRkZFUjsNCisJfQ0KKw0KKyNlbmRpZiAvKiBjb25maWdVU0VfVFJBQ0VfRkFDSUxJVFkgKi8NCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvdGFza3MuYyBiL0ZyZWVSVE9TL1NvdXJjZS90YXNrcy5jCmluZGV4IGVkNDg1MWYuLjBlMzA2OWQgMTAwNjQ0Ci0tLSBhL0ZyZWVSVE9TL1NvdXJjZS90YXNrcy5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS90YXNrcy5jCkBAIC0xLDcxICsxLDMwIEBACiAvKg0KLSAgICBGcmVlUlRPUyBWOS4wLjEgLSBDb3B5cmlnaHQgKEMpIDIwMTcgUmVhbCBUaW1lIEVuZ2luZWVycyBMdGQuDQotICAgIEFsbCByaWdodHMgcmVzZXJ2ZWQNCi0NCi0gICAgVklTSVQgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcgVE8gRU5TVVJFIFlPVSBBUkUgVVNJTkcgVEhFIExBVEVTVCBWRVJTSU9OLg0KLQ0KLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVJUT1MgZGlzdHJpYnV0aW9uLg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyDQotICAgIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKHZlcnNpb24gMikgYXMgcHVibGlzaGVkIGJ5IHRoZQ0KLSAgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gPj4+PiBBTkQgTU9ESUZJRUQgQlkgPDw8PCB0aGUgRnJlZVJUT1MgZXhjZXB0aW9uLg0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgPj4hICAgTk9URTogVGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgR1BMIGlzIGluY2x1ZGVkIHRvIGFsbG93IHlvdSB0byAgICAgITw8DQotICAgID4+ISAgIGRpc3RyaWJ1dGUgYSBjb21iaW5lZCB3b3JrIHRoYXQgaW5jbHVkZXMgRnJlZVJUT1Mgd2l0aG91dCBiZWluZyAgICE8PA0KLSAgICA+PiEgICBvYmxpZ2VkIHRvIHByb3ZpZGUgdGhlIHNvdXJjZSBjb2RlIGZvciBwcm9wcmlldGFyeSBjb21wb25lbnRzICAgICAhPDwNCi0gICAgPj4hICAgb3V0c2lkZSBvZiB0aGUgRnJlZVJUT1Mga2VybmVsLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgITw8DQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBGcmVlUlRPUyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkNCi0gICAgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUw0KLSAgICBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBGdWxsIGxpY2Vuc2UgdGV4dCBpcyBhdmFpbGFibGUgb24gdGhlIGZvbGxvd2luZw0KLSAgICBsaW5rOiBodHRwOi8vd3d3LmZyZWVydG9zLm9yZy9hMDAxMTQuaHRtbA0KLQ0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgRnJlZVJUT1MgcHJvdmlkZXMgY29tcGxldGVseSBmcmVlIHlldCBwcm9mZXNzaW9uYWxseSBkZXZlbG9wZWQsICAgICoNCi0gICAgICogICAgcm9idXN0LCBzdHJpY3RseSBxdWFsaXR5IGNvbnRyb2xsZWQsIHN1cHBvcnRlZCwgYW5kIGNyb3NzICAgICAgICAgICoNCi0gICAgICogICAgcGxhdGZvcm0gc29mdHdhcmUgdGhhdCBpcyBtb3JlIHRoYW4ganVzdCB0aGUgbWFya2V0IGxlYWRlciwgaXQgICAgICoNCi0gICAgICogICAgaXMgdGhlIGluZHVzdHJ5J3MgZGUgZmFjdG8gc3RhbmRhcmQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgSGVscCB5b3Vyc2VsZiBnZXQgc3RhcnRlZCBxdWlja2x5IHdoaWxlIHNpbXVsdGFuZW91c2x5IGhlbHBpbmcgICAgICoNCi0gICAgICogICAgdG8gc3VwcG9ydCB0aGUgRnJlZVJUT1MgcHJvamVjdCBieSBwdXJjaGFzaW5nIGEgRnJlZVJUT1MgICAgICAgICAgICoNCi0gICAgICogICAgdHV0b3JpYWwgYm9vaywgcmVmZXJlbmNlIG1hbnVhbCwgb3IgYm90aDogICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvRG9jdW1lbnRhdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0ZBUUhlbHAuaHRtbCAtIEhhdmluZyBhIHByb2JsZW0/ICBTdGFydCBieSByZWFkaW5nDQotICAgIHRoZSBGQVEgcGFnZSAiTXkgYXBwbGljYXRpb24gZG9lcyBub3QgcnVuLCB3aGF0IGNvdWxkIGJlIHdyb25nPyIuICBIYXZlIHlvdQ0KLSAgICBkZWZpbmVkIGNvbmZpZ0FTU0VSVCgpPw0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9zdXBwb3J0IC0gSW4gcmV0dXJuIGZvciByZWNlaXZpbmcgdGhpcyB0b3AgcXVhbGl0eQ0KLSAgICBlbWJlZGRlZCBzb2Z0d2FyZSBmb3IgZnJlZSB3ZSByZXF1ZXN0IHlvdSBhc3Npc3Qgb3VyIGdsb2JhbCBjb21tdW5pdHkgYnkNCi0gICAgcGFydGljaXBhdGluZyBpbiB0aGUgc3VwcG9ydCBmb3J1bS4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvdHJhaW5pbmcgLSBJbnZlc3RpbmcgaW4gdHJhaW5pbmcgYWxsb3dzIHlvdXIgdGVhbSB0bw0KLSAgICBiZSBhcyBwcm9kdWN0aXZlIGFzIHBvc3NpYmxlIGFzIGVhcmx5IGFzIHBvc3NpYmxlLiAgTm93IHlvdSBjYW4gcmVjZWl2ZQ0KLSAgICBGcmVlUlRPUyB0cmFpbmluZyBkaXJlY3RseSBmcm9tIFJpY2hhcmQgQmFycnksIENFTyBvZiBSZWFsIFRpbWUgRW5naW5lZXJzDQotICAgIEx0ZCwgYW5kIHRoZSB3b3JsZCdzIGxlYWRpbmcgYXV0aG9yaXR5IG9uIHRoZSB3b3JsZCdzIGxlYWRpbmcgUlRPUy4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvcGx1cyAtIEEgc2VsZWN0aW9uIG9mIEZyZWVSVE9TIGVjb3N5c3RlbSBwcm9kdWN0cywNCi0gICAgaW5jbHVkaW5nIEZyZWVSVE9TK1RyYWNlIC0gYW4gaW5kaXNwZW5zYWJsZSBwcm9kdWN0aXZpdHkgdG9vbCwgYSBET1MNCi0gICAgY29tcGF0aWJsZSBGQVQgZmlsZSBzeXN0ZW0sIGFuZCBvdXIgdGlueSB0aHJlYWQgYXdhcmUgVURQL0lQIHN0YWNrLg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9sYWJzIC0gV2hlcmUgbmV3IEZyZWVSVE9TIHByb2R1Y3RzIGdvIHRvIGluY3ViYXRlLg0KLSAgICBDb21lIGFuZCB0cnkgRnJlZVJUT1MrVENQLCBvdXIgbmV3IG9wZW4gc291cmNlIFRDUC9JUCBzdGFjayBmb3IgRnJlZVJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuT3BlblJUT1MuY29tIC0gUmVhbCBUaW1lIEVuZ2luZWVycyBsdGQuIGxpY2Vuc2UgRnJlZVJUT1MgdG8gSGlnaA0KLSAgICBJbnRlZ3JpdHkgU3lzdGVtcyBsdGQuIHRvIHNlbGwgdW5kZXIgdGhlIE9wZW5SVE9TIGJyYW5kLiAgTG93IGNvc3QgT3BlblJUT1MNCi0gICAgbGljZW5zZXMgb2ZmZXIgdGlja2V0ZWQgc3VwcG9ydCwgaW5kZW1uaWZpY2F0aW9uIGFuZCBjb21tZXJjaWFsIG1pZGRsZXdhcmUuDQotDQotICAgIGh0dHA6Ly93d3cuU2FmZVJUT1MuY29tIC0gSGlnaCBJbnRlZ3JpdHkgU3lzdGVtcyBhbHNvIHByb3ZpZGUgYSBzYWZldHkNCi0gICAgZW5naW5lZXJlZCBhbmQgaW5kZXBlbmRlbnRseSBTSUwzIGNlcnRpZmllZCB2ZXJzaW9uIGZvciB1c2UgaW4gc2FmZXR5IGFuZA0KLSAgICBtaXNzaW9uIGNyaXRpY2FsIGFwcGxpY2F0aW9ucyB0aGF0IHJlcXVpcmUgcHJvdmFibGUgZGVwZW5kYWJpbGl0eS4NCi0NCi0gICAgMSB0YWIgPT0gNCBzcGFjZXMhDQotKi8NCisgKiBGcmVlUlRPUyBLZXJuZWwgVjEwLjAuMA0KKyAqIENvcHlyaWdodCAoQykgMjAxNyBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisgKg0KKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkgb2YNCisgKiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgdG8gZGVhbCBpbg0KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8NCisgKiB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZg0KKyAqIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywNCisgKiBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoNCisgKg0KKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbA0KKyAqIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuIElmIHlvdSB3aXNoIHRvIHVzZSBvdXIgQW1hem9uDQorICogRnJlZVJUT1MgbmFtZSwgcGxlYXNlIGRvIHNvIGluIGEgZmFpciB1c2Ugd2F5IHRoYXQgZG9lcyBub3QgY2F1c2UgY29uZnVzaW9uLg0KKyAqDQorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUw0KKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUg0KKyAqIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUg0KKyAqIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElODQorICogQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCisgKg0KKyAqIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnDQorICogaHR0cDovL2F3cy5hbWF6b24uY29tL2ZyZWVydG9zDQorICoNCisgKiAxIHRhYiA9PSA0IHNwYWNlcyENCisgKi8NCiANCiAvKiBTdGFuZGFyZCBpbmNsdWRlcy4gKi8NCiAjaW5jbHVkZSA8c3RkbGliLmg+DQpAQCAtODAsNyArMzksNyBAQAogI2luY2x1ZGUgIkZyZWVSVE9TLmgiDQogI2luY2x1ZGUgInRhc2suaCINCiAjaW5jbHVkZSAidGltZXJzLmgiDQotI2luY2x1ZGUgIlN0YWNrTWFjcm9zLmgiDQorI2luY2x1ZGUgInN0YWNrX21hY3Jvcy5oIg0KIA0KIC8qIExpbnQgZTk2MSBhbmQgZTc1MCBhcmUgc3VwcHJlc3NlZCBhcyBhIE1JU1JBIGV4Y2VwdGlvbiBqdXN0aWZpZWQgYmVjYXVzZSB0aGUNCiBNUFUgcG9ydHMgcmVxdWlyZSBNUFVfV1JBUFBFUlNfSU5DTFVERURfRlJPTV9BUElfRklMRSB0byBiZSBkZWZpbmVkIGZvciB0aGUNCkBAIC03MTksNyArNjc4LDcgQEAKICNlbmRpZiAvKiAoIHBvcnRVU0lOR19NUFVfV1JBUFBFUlMgPT0gMSApICYmICggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkgKi8NCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiANCi0jaWYoICggcG9ydFVTSU5HX01QVV9XUkFQUEVSUyA9PSAxICkgJiYgKCB0c2tTVEFUSUNfQU5EX0RZTkFNSUNfQUxMT0NBVElPTl9QT1NTSUJMRSAhPSAwICkgKQ0KKyNpZiggKCBwb3J0VVNJTkdfTVBVX1dSQVBQRVJTID09IDEgKSAmJiAoIGNvbmZpZ1NVUFBPUlRfRFlOQU1JQ19BTExPQ0FUSU9OID09IDEgKSApDQogDQogCUJhc2VUeXBlX3QgeFRhc2tDcmVhdGVSZXN0cmljdGVkKCBjb25zdCBUYXNrUGFyYW1ldGVyc190ICogY29uc3QgcHhUYXNrRGVmaW5pdGlvbiwgVGFza0hhbmRsZV90ICpweENyZWF0ZWRUYXNrICkNCiAJew0KQEAgLTc0MCwxMCArNjk5LDE0IEBACiAJCQkJLyogU3RvcmUgdGhlIHN0YWNrIGxvY2F0aW9uIGluIHRoZSBUQ0IuICovDQogCQkJCXB4TmV3VENCLT5weFN0YWNrID0gcHhUYXNrRGVmaW5pdGlvbi0+cHV4U3RhY2tCdWZmZXI7DQogDQotCQkJCS8qIFRhc2tzIGNhbiBiZSBjcmVhdGVkIHN0YXRpY2FsbHkgb3IgZHluYW1pY2FsbHksIHNvIG5vdGUNCi0JCQkJdGhpcyB0YXNrIGhhZCBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIHN0YWNrIGluIGNhc2UgaXQgaXMNCi0JCQkJbGF0ZXIgZGVsZXRlZC4gIFRoZSBUQ0Igd2FzIGFsbG9jYXRlZCBkeW5hbWljYWxseS4gKi8NCi0JCQkJcHhOZXdUQ0ItPnVjU3RhdGljYWxseUFsbG9jYXRlZCA9IHRza1NUQVRJQ0FMTFlfQUxMT0NBVEVEX1NUQUNLX09OTFk7DQorCQkJCSNpZiggY29uZmlnU1VQUE9SVF9TVEFUSUNfQUxMT0NBVElPTiA9PSAxICkNCisJCQkJew0KKwkJCQkJLyogVGFza3MgY2FuIGJlIGNyZWF0ZWQgc3RhdGljYWxseSBvciBkeW5hbWljYWxseSwgc28gbm90ZQ0KKwkJCQkJdGhpcyB0YXNrIGhhZCBhIHN0YXRpY2FsbHkgYWxsb2NhdGVkIHN0YWNrIGluIGNhc2UgaXQgaXMNCisJCQkJCWxhdGVyIGRlbGV0ZWQuICBUaGUgVENCIHdhcyBhbGxvY2F0ZWQgZHluYW1pY2FsbHkuICovDQorCQkJCQlweE5ld1RDQi0+dWNTdGF0aWNhbGx5QWxsb2NhdGVkID0gdHNrU1RBVElDQUxMWV9BTExPQ0FURURfU1RBQ0tfT05MWTsNCisJCQkJfQ0KKwkJCQkjZW5kaWYNCiANCiAJCQkJcHJ2SW5pdGlhbGlzZU5ld1Rhc2soCXB4VGFza0RlZmluaXRpb24tPnB2VGFza0NvZGUsDQogCQkJCQkJCQkJCXB4VGFza0RlZmluaXRpb24tPnBjTmFtZSwNCkBAIC0zMTkzLDYgKzMxNTYsNyBAQAogCQl9DQogCQllbHNlDQogCQl7DQorCQkJKnB4VGlja3NUb1dhaXQgPSAwOw0KIAkJCXhSZXR1cm4gPSBwZFRSVUU7DQogCQl9DQogCX0NCkBAIC0zMjY5LDcgKzMyMzMsNyBAQAogCXRoZSBpZGxlIHRhc2sgaXMgcmVzcG9uc2libGUgZm9yIGRlbGV0aW5nIHRoZSB0YXNrJ3Mgc2VjdXJlIGNvbnRleHQsIGlmDQogCWFueS4gKi8NCiAJcG9ydFRBU0tfQ0FMTFNfU0VDVVJFX0ZVTkNUSU9OUygpOw0KLQkNCisNCiAJZm9yKCA7OyApDQogCXsNCiAJCS8qIFNlZSBpZiBhbnkgdGFza3MgaGF2ZSBkZWxldGVkIHRoZW1zZWx2ZXMgLSBpZiBzbyB0aGVuIHRoZSBpZGxlIHRhc2sNCkBAIC0zNjAwLDcgKzM1NjQsNyBAQAogCQl9DQogCQllbHNlDQogCQl7DQotCQkJcHhUYXNrU3RhdHVzLT5lQ3VycmVudFN0YXRlID0gZVRhc2tHZXRTdGF0ZSggeFRhc2sgKTsNCisJCQlweFRhc2tTdGF0dXMtPmVDdXJyZW50U3RhdGUgPSBlVGFza0dldFN0YXRlKCBweFRDQiApOw0KIAkJfQ0KIA0KIAkJLyogT2J0YWluaW5nIHRoZSBzdGFjayBzcGFjZSB0YWtlcyBzb21lIHRpbWUsIHNvIHRoZSB4R2V0RnJlZVN0YWNrU3BhY2UNCmRpZmYgLS1naXQgYS9GcmVlUlRPUy9Tb3VyY2UvdGltZXJzLmMgYi9GcmVlUlRPUy9Tb3VyY2UvdGltZXJzLmMKaW5kZXggYWFlOTAyZS4uYjg2ZTFiYSAxMDA2NDQKLS0tIGEvRnJlZVJUT1MvU291cmNlL3RpbWVycy5jCisrKyBiL0ZyZWVSVE9TL1NvdXJjZS90aW1lcnMuYwpAQCAtMSw3MSArMSwzMCBAQAogLyoNCi0gICAgRnJlZVJUT1MgVjkuMC4xIC0gQ29weXJpZ2h0IChDKSAyMDE3IFJlYWwgVGltZSBFbmdpbmVlcnMgTHRkLg0KLSAgICBBbGwgcmlnaHRzIHJlc2VydmVkDQotDQotICAgIFZJU0lUIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnIFRPIEVOU1VSRSBZT1UgQVJFIFVTSU5HIFRIRSBMQVRFU1QgVkVSU0lPTi4NCi0NCi0gICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEZyZWVSVE9TIGRpc3RyaWJ1dGlvbi4NCi0NCi0gICAgRnJlZVJUT1MgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcg0KLSAgICB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICh2ZXJzaW9uIDIpIGFzIHB1Ymxpc2hlZCBieSB0aGUNCi0gICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uID4+Pj4gQU5EIE1PRElGSUVEIEJZIDw8PDwgdGhlIEZyZWVSVE9TIGV4Y2VwdGlvbi4NCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgID4+ISAgIE5PVEU6IFRoZSBtb2RpZmljYXRpb24gdG8gdGhlIEdQTCBpcyBpbmNsdWRlZCB0byBhbGxvdyB5b3UgdG8gICAgICE8PA0KLSAgICA+PiEgICBkaXN0cmlidXRlIGEgY29tYmluZWQgd29yayB0aGF0IGluY2x1ZGVzIEZyZWVSVE9TIHdpdGhvdXQgYmVpbmcgICAhPDwNCi0gICAgPj4hICAgb2JsaWdlZCB0byBwcm92aWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgcHJvcHJpZXRhcnkgY29tcG9uZW50cyAgICAgITw8DQotICAgID4+ISAgIG91dHNpZGUgb2YgdGhlIEZyZWVSVE9TIGtlcm5lbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE8PA0KLSAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCi0NCi0gICAgRnJlZVJUT1MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZDQotICAgIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MNCi0gICAgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgRnVsbCBsaWNlbnNlIHRleHQgaXMgYXZhaWxhYmxlIG9uIHRoZSBmb2xsb3dpbmcNCi0gICAgbGluazogaHR0cDovL3d3dy5mcmVlcnRvcy5vcmcvYTAwMTE0Lmh0bWwNCi0NCi0gICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEZyZWVSVE9TIHByb3ZpZGVzIGNvbXBsZXRlbHkgZnJlZSB5ZXQgcHJvZmVzc2lvbmFsbHkgZGV2ZWxvcGVkLCAgICAqDQotICAgICAqICAgIHJvYnVzdCwgc3RyaWN0bHkgcXVhbGl0eSBjb250cm9sbGVkLCBzdXBwb3J0ZWQsIGFuZCBjcm9zcyAgICAgICAgICAqDQotICAgICAqICAgIHBsYXRmb3JtIHNvZnR3YXJlIHRoYXQgaXMgbW9yZSB0aGFuIGp1c3QgdGhlIG1hcmtldCBsZWFkZXIsIGl0ICAgICAqDQotICAgICAqICAgIGlzIHRoZSBpbmR1c3RyeSdzIGRlIGZhY3RvIHN0YW5kYXJkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIEhlbHAgeW91cnNlbGYgZ2V0IHN0YXJ0ZWQgcXVpY2tseSB3aGlsZSBzaW11bHRhbmVvdXNseSBoZWxwaW5nICAgICAqDQotICAgICAqICAgIHRvIHN1cHBvcnQgdGhlIEZyZWVSVE9TIHByb2plY3QgYnkgcHVyY2hhc2luZyBhIEZyZWVSVE9TICAgICAgICAgICAqDQotICAgICAqICAgIHR1dG9yaWFsIGJvb2ssIHJlZmVyZW5jZSBtYW51YWwsIG9yIGJvdGg6ICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL0RvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQotICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KLQ0KLSAgICBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZy9GQVFIZWxwLmh0bWwgLSBIYXZpbmcgYSBwcm9ibGVtPyAgU3RhcnQgYnkgcmVhZGluZw0KLSAgICB0aGUgRkFRIHBhZ2UgIk15IGFwcGxpY2F0aW9uIGRvZXMgbm90IHJ1biwgd2hhdCBjb3VsZCBiZSB3cm9uZz8iLiAgSGF2ZSB5b3UNCi0gICAgZGVmaW5lZCBjb25maWdBU1NFUlQoKT8NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvc3VwcG9ydCAtIEluIHJldHVybiBmb3IgcmVjZWl2aW5nIHRoaXMgdG9wIHF1YWxpdHkNCi0gICAgZW1iZWRkZWQgc29mdHdhcmUgZm9yIGZyZWUgd2UgcmVxdWVzdCB5b3UgYXNzaXN0IG91ciBnbG9iYWwgY29tbXVuaXR5IGJ5DQotICAgIHBhcnRpY2lwYXRpbmcgaW4gdGhlIHN1cHBvcnQgZm9ydW0uDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3RyYWluaW5nIC0gSW52ZXN0aW5nIGluIHRyYWluaW5nIGFsbG93cyB5b3VyIHRlYW0gdG8NCi0gICAgYmUgYXMgcHJvZHVjdGl2ZSBhcyBwb3NzaWJsZSBhcyBlYXJseSBhcyBwb3NzaWJsZS4gIE5vdyB5b3UgY2FuIHJlY2VpdmUNCi0gICAgRnJlZVJUT1MgdHJhaW5pbmcgZGlyZWN0bHkgZnJvbSBSaWNoYXJkIEJhcnJ5LCBDRU8gb2YgUmVhbCBUaW1lIEVuZ2luZWVycw0KLSAgICBMdGQsIGFuZCB0aGUgd29ybGQncyBsZWFkaW5nIGF1dGhvcml0eSBvbiB0aGUgd29ybGQncyBsZWFkaW5nIFJUT1MuDQotDQotICAgIGh0dHA6Ly93d3cuRnJlZVJUT1Mub3JnL3BsdXMgLSBBIHNlbGVjdGlvbiBvZiBGcmVlUlRPUyBlY29zeXN0ZW0gcHJvZHVjdHMsDQotICAgIGluY2x1ZGluZyBGcmVlUlRPUytUcmFjZSAtIGFuIGluZGlzcGVuc2FibGUgcHJvZHVjdGl2aXR5IHRvb2wsIGEgRE9TDQotICAgIGNvbXBhdGlibGUgRkFUIGZpbGUgc3lzdGVtLCBhbmQgb3VyIHRpbnkgdGhyZWFkIGF3YXJlIFVEUC9JUCBzdGFjay4NCi0NCi0gICAgaHR0cDovL3d3dy5GcmVlUlRPUy5vcmcvbGFicyAtIFdoZXJlIG5ldyBGcmVlUlRPUyBwcm9kdWN0cyBnbyB0byBpbmN1YmF0ZS4NCi0gICAgQ29tZSBhbmQgdHJ5IEZyZWVSVE9TK1RDUCwgb3VyIG5ldyBvcGVuIHNvdXJjZSBUQ1AvSVAgc3RhY2sgZm9yIEZyZWVSVE9TLg0KLQ0KLSAgICBodHRwOi8vd3d3Lk9wZW5SVE9TLmNvbSAtIFJlYWwgVGltZSBFbmdpbmVlcnMgbHRkLiBsaWNlbnNlIEZyZWVSVE9TIHRvIEhpZ2gNCi0gICAgSW50ZWdyaXR5IFN5c3RlbXMgbHRkLiB0byBzZWxsIHVuZGVyIHRoZSBPcGVuUlRPUyBicmFuZC4gIExvdyBjb3N0IE9wZW5SVE9TDQotICAgIGxpY2Vuc2VzIG9mZmVyIHRpY2tldGVkIHN1cHBvcnQsIGluZGVtbmlmaWNhdGlvbiBhbmQgY29tbWVyY2lhbCBtaWRkbGV3YXJlLg0KLQ0KLSAgICBodHRwOi8vd3d3LlNhZmVSVE9TLmNvbSAtIEhpZ2ggSW50ZWdyaXR5IFN5c3RlbXMgYWxzbyBwcm92aWRlIGEgc2FmZXR5DQotICAgIGVuZ2luZWVyZWQgYW5kIGluZGVwZW5kZW50bHkgU0lMMyBjZXJ0aWZpZWQgdmVyc2lvbiBmb3IgdXNlIGluIHNhZmV0eSBhbmQNCi0gICAgbWlzc2lvbiBjcml0aWNhbCBhcHBsaWNhdGlvbnMgdGhhdCByZXF1aXJlIHByb3ZhYmxlIGRlcGVuZGFiaWxpdHkuDQotDQotICAgIDEgdGFiID09IDQgc3BhY2VzIQ0KLSovDQorICogRnJlZVJUT1MgS2VybmVsIFYxMC4wLjANCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorICoNCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5IG9mDQorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4NCisgKiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvDQorICogdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YNCisgKiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sDQorICogc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQorICoNCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwNCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLiBJZiB5b3Ugd2lzaCB0byB1c2Ugb3VyIEFtYXpvbg0KKyAqIEZyZWVSVE9TIG5hbWUsIHBsZWFzZSBkbyBzbyBpbiBhIGZhaXIgdXNlIHdheSB0aGF0IGRvZXMgbm90IGNhdXNlIGNvbmZ1c2lvbi4NCisgKg0KKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SDQorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MNCisgKiBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1INCisgKiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVINCisgKiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTg0KKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQorICoNCisgKiBodHRwOi8vd3d3LkZyZWVSVE9TLm9yZw0KKyAqIGh0dHA6Ly9hd3MuYW1hem9uLmNvbS9mcmVlcnRvcw0KKyAqDQorICogMSB0YWIgPT0gNCBzcGFjZXMhDQorICovDQogDQogLyogU3RhbmRhcmQgaW5jbHVkZXMuICovDQogI2luY2x1ZGUgPHN0ZGxpYi5oPg0KQEAgLTEwODksNiArMTA0OCwyNiBAQAogI2VuZGlmIC8qIElOQ0xVREVfeFRpbWVyUGVuZEZ1bmN0aW9uQ2FsbCAqLw0KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KIA0KKyNpZiAoIGNvbmZpZ1VTRV9UUkFDRV9GQUNJTElUWSA9PSAxICkNCisNCisJVUJhc2VUeXBlX3QgdXhUaW1lckdldFRpbWVyTnVtYmVyKCBUaW1lckhhbmRsZV90IHhUaW1lciApDQorCXsNCisJCXJldHVybiAoICggVGltZXJfdCAqICkgeFRpbWVyICktPnV4VGltZXJOdW1iZXI7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmICggY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZID09IDEgKQ0KKw0KKwl2b2lkIHZUaW1lclNldFRpbWVyTnVtYmVyKCBUaW1lckhhbmRsZV90IHhUaW1lciwgVUJhc2VUeXBlX3QgdXhUaW1lck51bWJlciApDQorCXsNCisJCSggKCBUaW1lcl90ICogKSB4VGltZXIgKS0+dXhUaW1lck51bWJlciA9IHV4VGltZXJOdW1iZXI7DQorCX0NCisNCisjZW5kaWYgLyogY29uZmlnVVNFX1RSQUNFX0ZBQ0lMSVRZICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQogLyogVGhpcyBlbnRpcmUgc291cmNlIGZpbGUgd2lsbCBiZSBza2lwcGVkIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBub3QgY29uZmlndXJlZA0KIHRvIGluY2x1ZGUgc29mdHdhcmUgdGltZXIgZnVuY3Rpb25hbGl0eS4gIElmIHlvdSB3YW50IHRvIGluY2x1ZGUgc29mdHdhcmUgdGltZXINCiBmdW5jdGlvbmFsaXR5IHRoZW4gZW5zdXJlIGNvbmZpZ1VTRV9USU1FUlMgaXMgc2V0IHRvIDEgaW4gRnJlZVJUT1NDb25maWcuaC4gKi8NCg==